How to Set Up Bi-Directional Sync Between a Meeting Tool and Salesforce

Learn how to set up bi-directional sync between a meeting tool and Salesforce without loops.

Table of Contents
See how Weflow writes meeting activity and field updates straight to Salesforce, one record per meeting.
Book a demo
Or use our free web app.
See how Weflow syncs meeting data to Salesforce without duplicates, loops, or stale opportunity fields.
See it live

Bi-directional sync between a meeting tool and Salesforce is really two flows, and they need opposite settings.

  • Calendar events sync one way: from the calendar into Salesforce.
  • Record and field data syncs both ways: live through the Salesforce API, under your org's own validation rules and permissions.

If you set events to sync both ways, you build a loop. The meeting logs to Salesforce, gets pushed back to the calendar, and logs again. That loop is where most duplicate meetings come from.

You're probably here because some reps' meetings never reach Salesforce, or they land twice and your activity counts stop agreeing. The seven steps below fix that whatever tool you run:

  • Audit every tool that already writes meetings.
  • Set Einstein Activity Capture to sync events in one direction.
  • Create a least-privilege integration user.
  • Turn on Shared Activities and fill Opportunity Contact Roles.
  • Connect your meeting tool directly to the Salesforce API.
  • Set write controls before you enroll users.
  • Verify that one meeting lands as one record.

We use Weflow as the worked example. Weflow is the Revenue AI Orchestration platform for sales, customer success, and RevOps teams, built for Salesforce teams. The end goal is the same with any tool: deal hygiene in Salesforce you can trust, with opportunity records kept current from every meeting you capture.

Sync meetings one way and record data both ways

Set two-way sync on record and field data. Set one-way sync on calendar events.

The two flows fail in different ways. That's why one "bi-directional" checkbox can't cover both.

Calendar eventsRecord and field data
DirectionOne way, calendar to SalesforceBoth ways
MechanismThe calendar is the source of truth for the meeting itselfLive writes through the Salesforce API, not a copy or a polling job
WhyEach side can edit the meeting, so you need a conflict winner and loop preventionReps update fields wherever they work, and Salesforce rules have to judge every write
What breaks if you get it backwardsLoops, duplicate Events and inflated meeting countsStale fields, silent failures and writes that collide with validation rules

Why two-way event sync duplicates your meetings

Two-way event sync means both systems can edit the same meeting. That needs a rule for who wins, and it creates a loop as soon as a second tool is writing too:

  1. The meeting syncs from the calendar into Salesforce as an Event.
  2. The Salesforce-to-calendar direction pushes that Event back out to the calendar.
  3. The calendar copy gets logged to Salesforce again, and you now have two Events for one meeting.

Einstein Activity Capture (EAC) documents this itself. Its recommended event direction is Microsoft or Google to Salesforce, which typically syncs within 5 minutes. Changes made in Salesforce take 15 minutes or more to reach the external calendar. When the same meeting is edited in both places, the calendar's version wins.

Most teams create meetings in their calendar, not in Salesforce. For those teams, one-way sync captures every meeting and gives up nothing.

Why record data needs live two-way sync through the API

Field and record data is where two-way sync belongs. A rep changes a next step, a stage or a close date, and that change has to reach Salesforce and come back without anyone reconciling two versions.

The mechanism matters more than the label. "Real-time" and "two-way" on a vendor page often hide one of these:

  • Salesloft syncs with Salesforce by polling through one connector user every 1, 5 or 10 minutes, with 10 as the default, and it spends your org's API allowance to do it.
  • Revenue Grid markets its Salesforce integration as real-time, but email auto-saving runs on a 30-minute sync cycle.
  • EAC event sync can take a day or more when many users start syncing at once, and it doesn't sync custom fields.

Some tools also set direction per field. Avoma, for example, syncs an imported field out to Salesforce when a Smart Topic is mapped to it, in when the field is read-only, and typically both ways when it's editable and unmapped.

That level of detail is the right way to think about it. Ask what moves each field, how often, and what happens when a validation rule says no.

What to have in place in Salesforce before you start

Settle access and decisions before you touch configuration, so no later step stalls:

  • Edition: You're on a Salesforce edition with API access. Enterprise and Unlimited include it. Professional typically needs the API add-on.
  • Integration user: You can create an integration user and assign the API Integration permission set license.
  • Sandbox: You have a sandbox to test in before production.
  • Native sync: You know whether EAC or Lightning Sync is active. The two can't run in the same org.
  • Shared Activities: You've raised the change request now. In a large org it's a change request, not a toggle, and it takes time.
  • Security review: Your security reviewer is in the loop. With Weflow, you can finish technical setup before legal review closes, because Weflow reads nothing until you enroll users.
  • Admins: A Salesforce admin and a Google Workspace or Microsoft admin are both available. Weflow's technical setup takes 30 to 45 minutes with the two of them in the room.

Step 1: List every tool that writes meetings to Salesforce

Start by finding every existing writer. Stacked tools are the main source of duplicates, and each one has its own mapping logic and its own target object.

Fill in a table like this one for your org:

ToolWhat it logsObject it writesKeep, reconfigure or turn off
Calendar capture (EAC or Lightning Sync)Meetings, contacts, emailsEventReconfigure to one direction (Step 2)
Conversation intelligence tool (Chorus, for example)Recorded meetingsTask or Event, whichever the admin choseDecide whether it should write a record at all
Sequencer (Outreach, Salesloft)Emails, calls, sequence stepsUsually TaskKeep for sequence activity, and check that it doesn't also log meetings
CS platformCustomer meetings and emailsVaries by toolCheck against the calendar writer
Routing or scheduling toolBooked meetingsVaries by toolCheck against the calendar writer
The new tool you're addingAsk what it writes and what it stops writingShould be Event for meetingsBecomes the single meeting writer

Your target state is one writer per meeting, on the Event object.

Listen to #71 Salesforce Activity Capture Masterclass on the RevOps Lab podcast.

Step 2: Set Einstein Activity Capture to sync events one way

Set EAC event sync to calendar-to-Salesforce. This stops the loop at its source, and it's the fix most teams with duplicate meetings need.

  1. Open each Einstein Activity Capture configuration that your users are assigned to.
  2. Set event sync to Microsoft or Google to Salesforce.
  3. Save the change and test it in your sandbox (see Step 7).

After the change, new meetings stop duplicating. Two things carry over from before:

  • Old duplicates stay. Duplicates EAC already wrote aren't cleaned up automatically. A rep can show 13 meetings a week in one view and 8 in another until you remove them.
  • Permissions don't stop the loop. Removing the EAC permission from users isn't enough. The direction setting is what fixes it.

You don't have to switch EAC off to adopt Weflow. With EAC set to one direction, Weflow adds call summaries onto the events EAC already creates.

If you run Lightning Sync instead, EAC isn't active in that org, because the two can't run together. Apply the same rule to whatever syncs your events: one direction, calendar into Salesforce. If nothing native syncs events today, skip this step.

Step 3: Create a least-privilege Salesforce integration user

Use a dedicated integration user with the API Integration permission set license and a purpose-built permission set. Don't grant Modify All Data or System Administrator, and don't repurpose a normal user.

Since a 2026 Salesforce policy change, a normal platform user can't double as the integration user. A full user license pressed into service as an integration user also tends to time out.

  1. Create a dedicated integration user and assign the API Integration permission set license.
  2. Create a new permission set for the integration. Don't edit an existing one, so the access stays auditable.
  3. Grant the object and system permissions below.
  4. Assign the permission set to the integration user.

Here's the Weflow integration user as the worked example:

Object or permissionAccessWhy it's neededWhat breaks without it
Account, Contact, Opportunity, LeadRead and editLets the sync match activity to the right recordsActivity can't attach to the record it belongs to
Opportunity Contact RoleRead and editThis is how activity reaches the dealEmails and meetings land on the account instead of the opportunity
EventFull access, including deleteWrites meetings. Delete lets calendar deletions propagateThe most common day-one failure: meetings appear to log, then never land in Salesforce
Weflow's three custom objectsEditStores Weflow's conversation dataWeflow can't write its own data
System permissionsUpdate email messages, edit tasks, access activities, edit eventsLets the background sync write activityActivity writes fail

Delete rights apply to events only. Nothing else in the org can be deleted by the integration.

For comparison, here's what other tools ask for:

  • Attention requires the connecting user to hold Modify All Data, along with API Enabled and Customize Application.
  • Nektar's default setup asks for Modify All Data plus metadata, profile and permission set permissions. Nektar supports reduced-privilege alternatives, though it warns they need considerable Salesforce admin expertise.
  • Backstory asks for View All Data and View All Users, places the user at the top of the role hierarchy, and recommends the System Administrator profile.
  • Revenue Grid's Instant Sync needs an integration user with the System Administrator profile.

Step 4: Relate meetings to every attendee and the opportunity

Getting the meeting into Salesforce is only half the job. Two Salesforce settings decide whether it reaches every attendee and the deal.

Turn on Shared Activities so every attendee gets the meeting

With Shared Activities off, only the primary contact gets the activity. Turning it on makes one parent record with a child record per attendee, so the meeting attaches to everyone who was there.

This is a Salesforce change you make in your org. Weflow can't relate a meeting to every attendee until it's on.

Shared Activities offShared Activities on
How the meeting is storedOne record with one primary contactOne parent record, one child record per attendee
Who gets the activityThe primary contact onlyEvery matched attendee
Contact activity reportsIncomplete for everyone except the primary contactComplete per contact
Multi-threadingYou can't measure itYou can see how many people you're engaging per account

Fill Opportunity Contact Roles so meetings land on the deal

Activities reach the opportunity through Opportunity Contact Roles (OCRs). When OCRs are empty, or the integration ignores them, meetings get stranded on the account.

Chorus, for example, attaches activity to the matched account and opportunity, but OCRs aren't among the objects its Salesforce integration works with. Weflow reads OCRs and can set them automatically.

Run these three checks:

  • Look at how many open deals have OCRs populated. Deals without them won't receive meetings.
  • Confirm the integration user has read and edit on Opportunity Contact Role (Step 3).
  • Confirm your meeting tool reads OCRs when it maps a meeting to a deal.
Philipp Stelzer on LinkedIn: “Opportunity contact roles are rarely correct in SFDC. With multiple open opps (new, renewal, expansion), activities are often mapped wrong. This breaks attribution, next-step signals, and forecast accuracy.”

Step 5: Connect your meeting tool straight to the Salesforce API

Connect the tool directly to Salesforce, with no middleware hop and no vendor-cloud copy in the path. Anything that syncs through a middle layer eventually breaks, and the data quietly stops arriving.

Ask any vendor these five questions before the demo:

  • Is there middleware or a sync service between your tool and Salesforce?
  • Do you write live, or poll on an interval? If you poll, how often?
  • What permission scope does your integration user need?
  • Which object do you write meetings to: Task, Event or Email Message?
  • What will you stop writing that another tool writes today?

In Weflow, the connect sequence looks like this:

  1. Install the Weflow managed package. It takes about 5 minutes.
  2. Connect the integration user you built in Step 3.
  3. Install the workspace app: the Google Workspace Admin App or the Microsoft Entra ID App, for server-side calendar and email access.
  4. Roll out centrally through OAuth. United Fintech had activity capture live in under an hour this way.
  5. Enroll users in an activity capture configuration. Enrollment is the switch that starts capture.

The Admin Console tracks each of these setup steps:

Weflow Admin Console System Overview showing Salesforce managed packages and integration setup steps including Slack.

Installing the package, connecting the integration user and adding the workspace app grant access, but Weflow reads nothing until you enroll users.

When you enroll a team, you set the calendar event logging direction. Pick Workspace to Salesforce.

Weflow Activity Capture setup modal Sync Settings step with email background logging and calendar event logging options.

Step 6: Decide what can write to Salesforce before enrolling users

Decide what's allowed to change records before you go live. This is how you pilot without anything editing your data, and it's what lets you set the integration up once.

In Weflow, you have four controls on the write path:

ControlWhat it doesWhen to use it
Read-only modeBlocks every record creation and field update from Weflow into Salesforce. Capture keeps running, so tasks, notes, events, emails and recordings still syncPilots, and any freeze where nothing may edit existing records
New-record toggleControls whether Weflow may create new Salesforce records at allOrgs that only want activity on records that already exist
Per-field AI Field Updates settingSets each field to write automatically or wait for reviewAuto-write unambiguous fields like a website, and review interpretive ones like pain or champion
100-day field change reviewKeeps field changes made through Weflow reviewable for 100 daysAuditing what changed during and after a pilot

Read-only mode and the new-record toggle sit side by side under Admin Console, Salesforce Permissions.

Step 7: Check that one meeting lands as one Salesforce event

A test meeting should produce one Event, related to every attendee and to the opportunity, with field writes still obeying your validation rules. Run this script in the sandbox first, then again in production:

  1. Book an external meeting with a contact on an open deal, and invite two internal attendees.
  2. Confirm Salesforce holds a single Event record for it, not two.
  3. Confirm the Event relates to every matched attendee.
  4. Confirm the Event relates to the opportunity.
  5. If your tool records calls, confirm the AI summary sits on that same Event, not on a second record.
  6. Try a write that a validation rule should block, such as a stage change that needs other fields filled first. Confirm it stays blocked.
  7. Compare that rep's meeting count across two views, such as an activity report and the record timeline. The numbers should match.

If you test EAC in a sandbox, note that one user can't sync to several orgs at once. Remove the user from the sandbox configuration before you add them in production.

In Weflow, a capture health component inside Salesforce flags the data conditions that make capture fail quietly:

  • Contacts with no email address
  • Duplicate accounts
  • Duplicate contacts
  • Unconverted leads that already have a matching contact

It also checks your Shared Activities, Enhanced Email and EAC settings. When a rep says capture isn't working, the component shows whether the fault is in the capture or in the CRM data underneath.

Weflow Analytics Activity Capture Health tab listing data quality issues and Salesforce settings checks including Einstein Activity Capture

Fix the Salesforce meeting sync failures admins hit most

Each common symptom traces back to one cause and one fix. Use this table when a ticket comes in.

SymptomCauseFix
Meetings show in the calendar but never land in SalesforceThe integration user lacks full access on Event, or EAC can't relate the event and parks it in Unresolved ItemsGrant full access on Event (Step 3), and work through the Unresolved Items list
Two meetings appear when two people joinEAC follows the organizer's settings, so attendees of an organizer outside a syncing configuration each get a standalone copyPut organizers in a syncing configuration, and turn on Shared Activities (Step 4)
Meeting counts disagree between viewsBidirectional event sync or several tools writing the same meetingAudit the writers (Step 1), and set EAC to one direction (Step 2)
The meeting is on the account, not the dealOCRs are empty, the integration user can't access them, or the tool ignores themFill OCRs and grant access (Step 4)
Only the primary contact gets the meetingShared Activities is offTurn on Shared Activities (Step 4)
A new Salesforce field doesn't appear in the meeting toolThe tool needs manual mapping (Attention maps forward-only), doesn't sync custom fields (EAC), or refreshes field definitions on a scheduleUse a tool that reads field definitions from Salesforce. In Weflow, new fields appear within 8 hours, and support can sync sooner
The sync stopped and nobody noticedMiddleware or polling failures surface late. Salesloft, for example, emails one alert contact every 48 hours until a failure is resolvedConnect directly to the API (Step 5), and watch the capture health component (Step 7)
Attendee-less blockers flood in as external meetingsEvent sync can treat breaks and reminders with no attendees as external meetingsNarrow event sync filters so these events don't sync. In Weflow, leave internal meeting logging off and exclude resource calendar domains

How Weflow Activity & Contact Capture handles two-way Salesforce sync

Weflow Activity & Contact Capture is one capture layer that writes one meeting record live through the Salesforce API, under your org's rules. Here's what you get, where it stops, and what it costs.

Weflow writes to Salesforce live through the REST API

Weflow writes directly to Salesforce through the REST API. There's no middleware, no nightly batch and no copy in a vendor cloud, and Weflow has worked this way for five years.

That architecture shapes everything below:

  • Speed: Writes land in about 200 milliseconds, so there's no window in which Weflow and Salesforce disagree. Our infrastructure sits close to Salesforce's regional servers for that reason.
  • API usage: The managed package uses webhooks to capture field changes, which cuts API call consumption. Weflow doesn't depend on field history tracking.
  • Your rules apply: Weflow inherits your validation rules, field dependencies, permission sets, role hierarchy and custom objects. A write a validation rule blocks stays blocked.
  • One record per meeting: The meeting goes to the Event object, the AI summary attaches to that same record, and the activity relates to the opportunity.
  • One-way events by default: Weflow can sync calendar events both ways, but we recommend one-way, calendar to Salesforce.

Records in your own org are what make activity reportable. Blacklane and Blockaid both left EAC because they couldn't report on their activities.

To be fair to Salesforce, this has since changed for email. EAC setups made since Summer '25 store captured email as Salesforce records.

Where Weflow falls short and when you don't need it

Weflow has real limits, and for some teams a different path fits better.

If this is your situationThe path that fits
You run a CRM other than SalesforceWeflow works only with Salesforce, so it isn't an option for you
You need Salesforce-created events pushed out to calendarsThat direction is unreliable in Weflow too. A per-direction calendar sync like Cirrus Insight Calendar Sync ($11 per user per month) sets direction per user and has a rule for which version wins
EAC set to calendar-to-Salesforce already works for your teamYou may not need anything else
You add Salesforce fields often and need them instantlyNew fields take up to 8 hours to appear in Weflow, and support can trigger a sync sooner
You want to write relationship lookup fieldsWeflow can't write lookups. Every other field type is in scope
You want AI Field Updates on custom objectsWeflow support sets these up with you
You need every attendee related to the meetingTurning on Shared Activities is your change to make in Salesforce

What Weflow Activity & Contact Capture costs

Weflow Activity & Contact Capture costs $19 per user per month, billed annually. That includes Ask Weflow AI and Agent Builder, with a 10-user minimum, no implementation fees and a 14-day free trial.

If you also want call summaries on the same Event, Revenue AI Foundation adds Weflow Conversation Intelligence for $49 per user per month.

Want a reference you can keep open in Setup? Get the free Salesforce Activity Capture Cheat Sheet.

FAQ: bi-directional meeting sync with Salesforce

Which Salesforce edition does an API-based meeting sync need?

An API-based meeting sync needs an edition with API access. Enterprise and Unlimited include it. Professional typically needs Salesforce's API add-on before any API-based tool can connect.

How many Salesforce API calls does meeting sync use?

API usage depends on the mechanism. Polling tools spend your allowance on every interval, whether anything changed or not. Weflow's managed package uses webhooks to capture field changes, which cuts the calls the sync consumes.

Can I test meeting sync in a Salesforce sandbox first?

Yes. With EAC, one user can't sync to several orgs at once, so you remove them from the sandbox configuration before adding them in production. With Weflow, you can install and connect everything and nothing is read until you enroll users.

Can Einstein Activity Capture and Lightning Sync run together?

No. Einstein Activity Capture and Lightning Sync can't run at the same time in one Salesforce org, so you use one or the other.

How do I clean up duplicate meetings that already exist?

Fix the direction first, so no new duplicates appear. Duplicates that EAC already wrote don't clean themselves up. They stay and distort activity metrics until someone removes them.

What happens when a meeting is edited in both places?

With EAC set to sync both ways, a change made in both places before sync resolves in favor of the external calendar. One-way event sync removes the conflict, because only the calendar edits the meeting.

How do I see when a validation rule blocks a write?

Weflow writes under your validation rules, so a blocked write stays blocked until the fields the rule depends on are filled. You can review field changes made through Weflow for up to 100 days, which shows what reached Salesforce.

Will Weflow re-log meetings Outreach or Salesloft already logged?

Weflow runs alongside Outreach and Salesloft through compatibility mode, a logging rule that skips activity another tool already logged. On email, it checks for duplicates created by third-party integrations or Salesforce's native email sending, and you can exclude tracking patterns like click.outreach.io. Our support team's logging-logic panel shows which rule skipped a given item.

Weflow Activity Capture Expert settings showing compatibility mode, a configurable email processing delay and a tracking patterns exclusion list

Does Weflow backfill past meetings into Salesforce?

Yes. Weflow backfills up to 24 months of emails, meetings and contacts as standard, and up to 3 years by arrangement.

What will security review ask about a meeting sync tool?

Security review usually asks how users log in, who can see data, and what the integration can touch. With Weflow:

  • Login: Users sign in only through Salesforce OAuth, with your org's SSO or Salesforce two-factor. Deactivating a user in Salesforce removes their Weflow access immediately.
  • Support visibility: Our support team sees how Weflow decided to log or skip each email, never the email's content.
  • Permissions: The integration user has a defined permission set, with delete rights on events only.
  • Before enrollment: Nothing is read until you enroll users.
By
Weflow

Weflow is a modular Revenue AI platform for RevOps leaders and revenue teams, powering pipeline, forecasting, and deal inspection for 200+ B2B companies. The team behind Weflow also hosts the RevOps Lab podcast and runs RevOps Chat, the Slack community for 1,000+ RevOps practitioners.

More articles by
Weflow

Related articles

How Weflow Backfills Historical Emails and Meetings Into Salesforce: What Comes Across, How Long It Takes, and What It Costs

Learn what Weflow backfills into Salesforce, what won't sync, how long it takes, and what it costs.

How to Set Up Bi-Directional Sync Between a Meeting Tool and Salesforce

Learn how to set up bi-directional sync between a meeting tool and Salesforce without loops.

How to Enforce Contact Role Requirements on Salesforce Opportunities

Learn how to enforce contact role requirements on Salesforce opportunities with flows and validation rules.

How Activity Capture Tools Handle Salesforce Validation Rules, Field Dependencies and Permission Sets

Learn how activity capture tools handle Salesforce validation rules, field dependencies, and permissions.

How to Automate Salesforce Data Completeness Checks Without Making Every Field Required

Learn how to automate Salesforce data completeness checks without making every field required.

EmailMessage vs Task for Logging Emails in Salesforce: Reporting, Storage, and Which Weflow Customers Choose

Learn when to use EmailMessage vs Task in Salesforce for email reporting, storage, and reply analysis.

Fully Automated vs Hybrid vs Manual Activity Capture: Choosing the Weflow Mode for Each Team

Decide when to use Weflow fully automated, hybrid, or manual activity capture for each team.

How to Capture Emails and Meetings From Account Managers and CSMs Who Never Log Into Salesforce

Learn how to capture CSM and AM emails and meetings in Salesforce without logins or extensions.

How to Review Account Activity in Weflow When There Is No Open Opportunity: Where Post-Sale Emails and Meetings Land

Learn where Weflow logs post-sale emails and meetings in Salesforce with no open opportunity.

Weflow Activity & Contact Capture Pricing: What $19 per User Includes, Who It Is For, and What It Pairs With (2026)

Learn Weflow Activity & Contact Capture pricing: what's in $19/user, who it's for, and what to pair it with.

Why activity capture fails in Salesforce: A buyer-evidence audit

Learn 5 Salesforce activity-capture failure modes and how to audit Weflow vs Einstein Activity Capture.

Activity capture evaluation checklist: 5 failure tests to run before rollout

Learn the 5 failure tests for an activity capture pilot before rolling out Weflow or Einstein Activity Capture