Skip to main content

Set Up the Salesforce Integration

How do I sync meeting notes, transcripts, and AI insights from tl;dv to Salesforce?

Written by Mioko Nakayama

The Salesforce integration pushes meeting data from tl;dv into Salesforce — no copy-pasting required. Build workflows that update fields on contacts, leads, accounts, and opportunities, or log meetings as tasks, events, or calls against those records.

There are two ways to get data across:

  • Automatically — a workflow runs on every new recording that matches the conditions you set.

  • On demand — pick a meeting, pick a workflow, and click Trigger now.

tl;dv also tags each meeting with the Salesforce records it belongs to, so you can see the CRM context right on the meeting page, filter your library by it, and use it in AI template automation.


Part 1 — How tl;dv matches meetings to Salesforce records

Everything else in this article depends on this step, so read it first.

🚨 The matching key is the calendar invitee's email address. Before you build a workflow, make sure the people on your calendar event exist as contacts (or leads) in Salesforce — otherwise the workflow has nothing to update or attach to.

When a recording finishes, tl;dv looks at the email addresses of the invitees on the calendar event and finds the matching record in Salesforce.

  • Contact / Lead — the record whose email matches an invitee is updated, or used to anchor a new activity.

  • Account / Opportunity — updates and activities are attached through the matched contact's related account or opportunity.

  • No matching contact? Turn on Create new Contact if no existing option is available in the action configuration. tl;dv creates a minimal Contact with the invitee's email and display name from the calendar event, then runs the rest of the workflow against that Contact.

When there are no invitees at all

Meetings that were joined through a share link only, or recorded in person, often carry no invitee data. Nothing matches, and no workflow runs.

You can fix this after the fact — see Part 6: Add invitees to a meeting after it's recorded — and then sync the meeting with Trigger now.


Part 2 — Connect Salesforce and turn on CRM tagging

Connecting Salesforce takes more steps than other integrations, because tl;dv needs a managed package installed in your Salesforce org. The whole flow is: pick an account type → install the package → authorize your account.

🚨 A Salesforce admin has to install the package. If you're not an admin, you can still start the flow and hand the install link to someone who is — see Step 2 below.

1. Choose an account type

In tl;dv, click Integrations in the left sidebar, click the Salesforce tile, then click Connect. You'll be asked which kind of org to connect:

  • Salesforce Production Account — your live, production org.

  • Salesforce Sandbox Account — a sandbox environment, useful for testing before rolling out to production.

💡 If you're trying the integration out, connect Sandbox first and verify the results in a non-production org. Build against Production once you're confident in your field mappings and prompts.

2. Install the tl;dv package into your Salesforce org

Next you'll see the Install Package screen in tl;dv.

Click Install to open the Salesforce package install page in a new tab.

💡 Not a Salesforce admin? Click Copy link instead and send the install URL to your admin. Once they've installed the package, come back to this screen and continue from step 3.

In Salesforce, you'll land on the install (or upgrade) screen for the tldvapp-eca package, published by tl;dv.

  1. Choose Install for All Users. This is required if anyone in your org besides the admin will connect their own account to the integration — picking Install for Admins Only will block them later.

  2. Tick the acknowledgement box for the non-AppExchange application notice, then click Install (or Upgrade, if an earlier version is already there — existing data is preserved).

  3. When Salesforce asks you to Approve Third-Party Access, tick Yes, grant access to these third-party web sites and click Continue. The two sites listed are ravioli.tldv.io and ravioli.tldv.tech, both tl;dv endpoints.

3. Authorize your Salesforce account

Return to the tl;dv tab. You'll still be on the Install Package screen — this is expected.

Click I've installed the package → and the Connect your Salesforce Account screen appears.

  1. Click Connect. You'll be redirected to Salesforce.

  2. On the Allow Access? screen, review the permissions tl;dv is requesting and click Allow.

You'll be redirected back to tl;dv with Salesforce connected. You only need to do this once per tl;dv account.

4. Turn on "Tag meetings with the CRM info"

Scroll to Additional setup options at the bottom of the Salesforce page and switch on Tag meetings with the CRM info.

This is the setting that links each meeting to its Salesforce contact, account, and opportunity. Turning it on gives you:

  • the CRM Info panel on every meeting page, showing the records the meeting is linked to — see Part 5;

  • that CRM data as filters in your meeting library — including a Meeting deal stage filter, so you can pull up every call that happened at a given point in the pipeline;

  • that CRM data as conditions in AI template automation, so the right notes template is applied based on the CRM record or the opportunity stage;

  • richer AI analysis across meetings.

🚨 Applies to future meetings only. Meetings recorded before you turn this on won't be tagged retroactively.

Turn it on for the whole team at once

Team admins on the Business plan or above can enable tagging for everyone at once, instead of asking each person to do it — the same permission that lets you create team workflows.

  1. On the Salesforce integration page, click the filter icon next to New workflow.

  2. Under Filter by workflow owner, select your team instead of Personal workflow.

  3. The page switches to the team scope. Switch on Tag meetings with the CRM info there.


Part 3 — Build an automated workflow

Workflow types

When you create a workflow, you choose its scope:

Workflow type

Applies to

Individual workflow

Only meetings recorded by you

Team workflow

Meetings recorded by your team members (excludes team admins and billing group admins)

Use an individual workflow for personal experiments, and a team workflow when you want consistent automation across the team.

ℹ️ Team workflows can be created by team admins on the Business plan or above.

The five actions

Action

Type

What it does

Update Contact in Salesforce

Field update

Writes meeting data into fields on the matched contact, including custom fields

Update Lead in Salesforce

Field update

Writes meeting data into fields on the matched lead

Update Account in Salesforce

Field update

Writes meeting data into fields on the account linked to the matched contact

Update Opportunity in Salesforce

Field update

Writes meeting data into fields on the opportunity linked to the matched contact

Create Activity in Salesforce

Activity creation

Logs a task, event, or call on a contact, lead, account, or opportunity

Setup follows the same flow for all five actions. The only differences appear in Step 5 (Configure the action).

1. Open the Salesforce integration

In tl;dv, click Integrations in the left sidebar, then click the Salesforce tile in the Marketplace tab.

2. Choose a workflow type

Select Individual workflow or Team workflow, then click Confirm.

3. Pick an action

Choose one of the five actions and click Try it now.

4. Set the trigger and conditions

  1. Under Trigger this workflow when, select A new meeting recording is ready.

  2. (Optional) Click Add condition to limit when the workflow runs. Available criteria include Meeting type, Role, Personal attendance, Meeting title, Participant email, and Email domain.

  3. If you add multiple conditions, choose All (every condition must match) or Any (one match is enough).

  4. Click Continue.

💡 Use conditions to keep your workflows focused. For example: only run for external customer meetings, or only when the meeting title contains "Discovery".

💡 You can also leave the workflow OFF and run it only when you want it, using Trigger now (Part 4).

5. Configure the action

This step looks different depending on the action you picked. Two limits apply to every action:

🚨 Field mapping supports text and multi-select fields only. Other field types — number, date, single-select picklist, reference and so on — aren't supported yet, so they don't appear in the configuration page at all. A note at the bottom of the page says as much.

🚨 Custom prompts are limited to 3 fields per workflow. You can insert variables into as many fields as you like, but the Custom prompt toggle can only be turned on for up to three. If you need more prompt-driven fields, split the logic across multiple workflows.

For Update Contact / Lead / Account / Opportunity

  1. (Recommended, for Update Contact) Turn on Create new Contact if no existing option is available. When no matching contact exists, tl;dv creates a minimal Contact using the invitee's email address and display name from the calendar event, then runs the workflow against that contact.

  2. Email is pre-filled with Participants email — leave this as-is.

  3. For each field you want to populate — standard fields plus any custom fields — choose how to fill it:

    • Insert tl;dv data — drop variables like Meeting title, AI Notes, Transcript, Participants email, or items under More data into the field.

    • Custom prompt — switch on the Custom prompt toggle in the top-right of the field, then write a free-text instruction. tl;dv runs the prompt against the meeting and writes the result into the field.

💡 New values are appended below existing content in open-text fields, so the most recent meeting appears at the bottom.

For Create Activity

  1. Under Activity type — what type of activity do you want to create?, choose Task, Event, or Call.

  1. Under Linked record — which record this activity should be logged on?, choose Contact, Lead, Account, or Opportunity. tl;dv uses the participant's email to find the matched Contact, then attaches the activity to the related Account or Opportunity if you picked one of those.

  1. Email is pre-filled with Participants email — leave this as-is.

  2. Fill in Subject and Description using inserted variables, custom prompts, or both. A common pattern is the Meeting title variable as the Subject, and Meeting URL + AI Notes as the Description.

  3. (Optional) Fill in any custom fields. Custom prompts are especially useful here — a 3–5 sentence overall summary, or a structured action-items list. Remember the three-field limit.

💡 Use a custom prompt when you want activity content that differs from your tl;dv meeting notes — for example, a shorter summary for the activity feed, or a structured list of action items in a specific format.

What it looks like in Salesforce

The activity lands on the record's timeline, and anything you mapped shows up on the activity itself.

Open the activity and you'll see the fields your workflow filled in — here, an Overall summary and an Action Items list written by custom prompts, with the Meeting URL in the Comments field linking back to the recording.

6. Test the workflow

  1. Click Continue to reach the Test step.

  2. Select a recent meeting and click Test workflow. tl;dv runs the workflow once so you can verify the result in Salesforce before going live.

  3. When the test completes successfully, click Activate workflow.

7. (Optional) Rename your workflow

Click the workflow title at the top of the page (e.g., Integration 22) and rename it to something descriptive like Sales — Contact sync, Sales — Opportunity stage update, or CS — Activity log. This makes the workflow easier to find later, and easier to pick from the Trigger now menu.


Part 4 — Run a workflow on demand (Trigger now)

The next three sections all happen on the meeting page in tl;dv, not on the Integrations page.

Automatic workflows run on everything that matches their conditions. Trigger now lets you run a workflow on one specific meeting, whenever you want.

  1. Open the meeting in tl;dv.

  2. In the top-right toolbar, click Trigger now.

  1. Pick one of your existing workflows from the list.

Trigger now works with every native tl;dv integration — Salesforce, HubSpot, Slack, Notion, and the rest.

When to use it

  • Keep automation selective. Leave your workflows OFF and sync only the meetings you choose.

  • Retry a meeting that didn't match. If a meeting had no invitee data, add the participants (Part 6), then trigger the workflow manually.

  • Sync a meeting you didn't record. Automatic workflows only trigger for the person who created the recording. Trigger now also works on meetings recorded on someone else's tl;dv account that you have access to.

💡 The workflow must already exist on the Integrations page. Trigger now runs existing workflows; it doesn't create them.

Trigger now runs individual and team workflows alike, and the workflow's conditions still apply. You're running the same workflow you built for automation — manual triggering only changes when it runs, not what it checks. If the meeting doesn't match the workflow's conditions, nothing happens.

Triggering twice creates duplicates

🚨 tl;dv does not check whether a workflow has already run on a meeting. If you trigger a workflow that already ran — automatically or manually — it runs again from scratch: a second activity is created on the record, and field values are written a second time. Nothing is skipped, matched up, or overwritten.

So before you re-run a workflow on a meeting, delete whatever the previous run wrote in Salesforce. This matters most when you're fixing a bad CRM link (see Part 5).


Part 5 — Check and fix the CRM link (CRM Info)

CRM Info shows which Salesforce records a meeting is linked to, and lets you correct the link when the automatic match is wrong.

That link isn't only for reading. Once a meeting carries its CRM data, you can filter your meeting library by it and use it as a condition in AI template automation — so keeping the link accurate is worth the occasional manual fix.

ℹ️ Requires Tag meetings with the CRM info (Part 2).

  1. Open the meeting in tl;dv.

  2. Click CRM Info in the top-right toolbar.

The panel shows:

Field

What it shows

Contact

The Salesforce contact matched to an external invitee

Account

The account linked to that contact

Meeting linked opportunity

The opportunity this meeting is linked to — searchable and changeable from the dropdown

Pipeline

Shows Unavailable for Salesforce. Salesforce organises opportunities by record type and sales process rather than named pipelines, so there's nothing to display here

Opportunity stage — At the time of the meeting

The stage the opportunity was in when the meeting happened

Opportunity stage — Current stage

The stage the opportunity is in right now

💡 View in Salesforce at the bottom of the panel opens the linked opportunity directly in your Salesforce org.

Change the linked records

If the automatic match is wrong, or the meeting should be attached to a different opportunity, open the Meeting linked opportunity dropdown and select the right record.

🚨 Changing the link in tl;dv does not move data that has already synced. Activities and field values already written to Salesforce stay where they are. To move them: delete the data in Salesforce first, fix the link in CRM Info, then re-run the workflow with Trigger now. If you skip the deletion step you'll end up with the data in both places — re-running never cleans up after a previous run.

Opportunity stage: which one is stored, and what you can do with it

The panel shows two stages, and the difference matters:

Stage

What it is

At the time of the meeting

The stage the opportunity was in when the recording was synced to Salesforce. This value is frozen — it doesn't change as the opportunity advances

Current stage

Where the opportunity sits in Salesforce right now

💡 If you link or change the opportunity manually in CRM Info, the stored stage is the one from the moment you made that change — not the stage on the day the meeting happened. tl;dv describes it as "deal stage at the time of the meeting, or when the last synchronization with the CRM was performed."

Because the stage is stored with the meeting, you can use it in two places.

Filter your meeting library by stage

In your meeting library, open the Meeting deal stage filter, pick a pipeline, then pick a stage. The filter covers every connected CRM, so Salesforce records show up here alongside HubSpot ones — which is why it's labelled "deal stage" rather than "opportunity stage".

This pulls up every call that happened at a given point in the pipeline, so you can hear what tends to move opportunities forward from there.

Apply a notes template based on stage

Stage is also available as a condition in AI template automation, so the right template is applied automatically.

  1. Open the notes template you want to automate.

  2. Under Automate this template for future meetings, open the Any CRM Deal Stage dropdown.

  3. Pick the stage that should trigger this template. Stages are listed with their pipeline in brackets.

  4. Click Save and activate.


Part 6 — Add invitees to a meeting after it's recorded

Meetings joined by share link, or recorded in person, often have no invitee data — so there's nothing to match to Salesforce, and nothing to filter by in your library.

You can add the participants yourself after the recording:

  1. Open the meeting in tl;dv.

  2. Hover over the information (ⓘ) button next to the meeting title. It shows the meeting type, date, who created and owns the recording, and the current participants.

  1. Click the pencil next to Participants to open Edit meeting invitees.

  2. Type the email addresses under Add more participants — separate several with commas and press Enter — then click Update participants.

💡 Adding someone as an invitee does not give them access to the recording. It only corrects the participant data that matching, search, reports and analytics rely on. Share the recording separately if they need to watch it.

Once the participants are correct:

  • the meeting appears under the right library filters;

  • the meeting can be matched to Salesforce, so its CRM Info fills in; and

  • you can run the sync with Trigger now.


Use custom prompts effectively

Custom prompts let you generate exactly the text you want for a field or activity. They are useful when a fixed variable mapping doesn't capture the nuance you need.

💡 Remember: only 3 fields per workflow can have custom prompts turned on. Reserve the slots for fields where the extra flexibility really matters — structured summaries, action items, next steps.

Example: Next steps on a Contact field

Summarize the agreed-upon next steps from this meeting in one or two sentences. If a date is mentioned, include it clearly. If next steps were not discussed, write "Not discussed."

Example: 3–5 sentence summary on an activity custom field

Summarize the meeting in 3–5 sentences. Focus on decisions and outcomes, not discussion recap.

Example: Action items in a fixed format on an activity custom field

Extract all action items from the transcription and list them in the following format:

  • @[owner name] — [task description] — [deadline]

Tips for writing prompts:

  • Be specific about format. Tell the prompt to write a single sentence, a bulleted list, or a specific template.

  • Handle empty cases. Tell tl;dv what to write when the topic isn't discussed (e.g., "If not mentioned, write 'Not discussed.'").

  • Constrain length. Without an instruction, output can run long. Add "no more than 2 sentences" or similar.


Common questions

The Install Package screen keeps showing after I installed the package

That's expected. After installing the package in Salesforce you're returned to the same Install Package screen in tl;dv. Click I've installed the package → to move on to the Connect your Salesforce Account screen, then click Connect to finish authorizing.

I'm not a Salesforce admin. Can I still set this up?

You can start the flow, but someone with admin rights has to install the package. Click Copy link on the Install Package screen and send the URL to your admin. Once they've installed it, come back and click I've installed the package →.

Should I connect Production or Sandbox?

If you're testing the integration end to end, use Sandbox first and verify the results in a non-production org. Once you're confident in your field mappings and custom prompts, build against Production.

Why don't I see all my Salesforce fields in the configuration?

Field mapping currently supports text and multi-select fields only. Other field types — number, date, single-select picklist, reference — aren't supported yet, so they don't appear in the configuration page.

Why is the Custom prompt toggle disabled on some fields?

You can only enable custom prompts on up to 3 fields per workflow. Once three are on, the toggle is disabled on the rest. Turn one off, or split your logic across multiple workflows.

Why can't I set up a team workflow?

Team workflows require a Business plan or above, and the team admin role. On a lower plan you can still build individual workflows for your own meetings.

Why didn't my workflow run on a meeting?

Check that:

  • The workflow toggle at the top right of the workflow page is ON.

  • The meeting matches the conditions you set.

  • The calendar event has at least one external invitee. Invitees from your own email domain are filtered out, so internal-only meetings never match.

  • That invitee's email matches a Salesforce contact or lead, or Create new Contact if no existing option is available is enabled (Contact-update actions only).

  • The recording's creator is in scope for the workflow:

    • Individual workflows only trigger on meetings recorded by you.

    • Team workflows only trigger on meetings recorded by team members. They don't apply to team admins or billing group admins, so if you're an admin, your own meetings won't trigger a team workflow.

If the meeting simply had no invitees, add them manually (Part 6) and then use Trigger now.

Can I log activities against an Opportunity or Account directly?

Yes. Pick Opportunity or Account under Linked record when configuring a Create Activity action. tl;dv uses the participant's email to find the matched Contact, then attaches the activity to the Contact's related Opportunity or Account.

What happens if I trigger a workflow that already ran?

It runs again in full. tl;dv has no memory of previous runs on that meeting, so you get a duplicate activity and a second copy of any field values. Delete the earlier result in Salesforce first if you don't want both.

I turned on CRM tagging — why don't my older meetings show CRM Info?

Tag meetings with the CRM info applies to future meetings only. Meetings recorded before you enabled it aren't tagged retroactively.

Can I have different workflows for different meeting types?

Yes. Create a separate workflow for each scenario and use Conditions to scope it. For example, one workflow for External — Discovery, another for External — Demo.

Did this answer your question?