← All integration guides

Send RecordJoy Video Events to Salesforce with n8n

When you finish this guide, every RecordJoy event will find the matching Salesforce Contact by email and log a completed Task with the video link.

flowchart LR A[RecordJoy] -->|"event JSON"| B["n8n Webhook node"] B --> C["Salesforce: find contact"] C --> D["Salesforce: create Task"] D --> E[(Salesforce)]

Shortcut: RecordJoy ships an importable version — docs/recipes/n8n-salesforce.json. The steps below build it by hand with n8n's native Salesforce node (simpler than raw HTTP).

Prerequisites

Estimated time

25 minutes

Steps

Part A — the webhook

  1. In n8n, click + Add workflow and name it RecordJoy → Salesforce.
  2. Add a Webhook node: HTTP Method POST, Path recordjoy-salesforce.
  3. Click Save, then switch the Active toggle on.
  4. Open the Webhook node and copy the Production URL.

🖥️ What you should see: a URL like https://your-instance.app.n8n.cloud/webhook/recordjoy-salesforce.

<!-- SCREENSHOT: n8n-workflow-active-production-url.png -->
  1. In recordjoy.ai → dashboard sidebar → CRM Integration: paste the URL, tick your events, click Save, then Send test event.
  2. In n8n's Executions tab, confirm an execution arrived with "event": "recording.test" under body.

Part B — find the contact

  1. Add a Salesforce node connected to the Webhook node; name it Find Contact.
  2. Create/select your Salesforce OAuth2 API credential and sign in when prompted.
  3. Configure:
    • Resource: Search
    • Query:
=SELECT Id FROM Contact WHERE Email = '{{ $json.body.recording.sentTo || $json.body.recording.createdBy }}'

Contact rule: this maps sentTo with a createdBy fallback. For inbound recording.received events use sentBy (and consider creating a Lead when no contact matches).

  1. Execute the step with a pinned test execution and confirm an Id (starting 003) is returned when the contact exists.

🖥️ What you should see: output rows with an Id field like 0035g00000XXXXX.

<!-- SCREENSHOT: n8n-salesforce-find-output.png -->

Part C — create the Task

  1. Add another Salesforce node connected to Find Contact; name it Create Task.
  2. Configure:
    • Resource: Task
    • Operation: Create
    • Status: Completed
    • Subject: =RecordJoy {{ $('Webhook').item.json.body.event }} — {{ $('Webhook').item.json.body.recording.description }}
    • Under Additional Fields, add:
      • Description: =Watch: {{ $('Webhook').item.json.body.recording.viewUrl }} (watched {{ $('Webhook').item.json.body.recording.watchedTimes }}x)
      • Who ID: ={{ $json.Id }} (the contact id from Find Contact)
  3. Click Save and confirm the workflow is Active.

Verification

  1. In RecordJoy → CRM Integration, click Send test event.
  2. In n8n Executions, confirm a green run through all nodes.
  3. In Salesforce, open the Contact matching your account email → Activity.

🖥️ What you should see: a completed Task titled RecordJoy recording.test — ... with the view link in the description.

<!-- SCREENSHOT: salesforce-task-on-activity.png -->

Troubleshooting

ProblemFix
Find Contact returns nothing and the Task step errorsNo contact has that email. Add an IF node after Find Contact to skip (or create a Lead) when empty — or test with an email that exists in Salesforce.
OAuth connection fails on self-hosted n8nYour n8n callback URL must be HTTPS and whitelisted in the Salesforce Connected App. Check n8n's credential screen for the exact callback to register.
Task created but unassigned to the contactWho ID must come from the Find Contact node ($json.Id), not a webhook field. Remap it.

Ready to connect?

Your webhook settings live in Dashboard → CRM Integration.