Skip to main content

Two-way CRM sync

Two-way CRM sync where a person approves every batch before it leaves

Two-way sync here means your CRM changes go back to the other system only after a person reads the exact list and approves it. Nothing moves as a side effect of an edit. It covers nine systems, sends the fields your mapping names, and records what the vendor answered. Changes coming the other way arrive through a repeat import.

Not switched on yet

This is built and tested in our own environment. It has not run against a live account at any vendor, and it stays off until it has. If you want to be among the first, write to us and we will tell you when it can open for your account.

9 systems
HubSpot, Pipedrive, Dynamics 365, Salesforce, Zoho, Fireberry, monday.com, Zebra and MyBusiness
3 locks
the service switch, the opt-in on that connection, and a person approving the list
0 tools
that can send: an API key or an AI agent can read the waiting list and nothing more
  1. Opt inAn owner or admin turns it on for one connection
  2. ScanChanged records are listed, nothing is sent
  3. ReadThe exact fields each record would send
  4. ApproveYour approval is bound to that exact list
  5. SendEach row records the vendor's answer

What does two-way sync send back?

Every field the connection's saved mapping names, custom ones included, and nothing it does not.

Fields from your mapping

The mapping you built for the import is read backwards to decide what goes. There is no second list to keep up to date, and a field you never mapped cannot leave.

Contacts, companies and deals

HubSpot, Pipedrive, Dynamics 365, Salesforce, Zoho and Fireberry take all three. monday.com, Zebra and MyBusiness take contacts.

Not email, stage, owner or amounts

These stay out on purpose. They are identity, relationships and money, and the same boundary applies on the way in, so a sync cannot reassign a customer or change a deal's value.

No blanks

An empty value is never sent. Clearing a field here does not wipe it in the other system, so a half-finished record cannot erase the good data sitting beside it.

A list you can read

Each waiting row shows the record and the fields it would send. Editing a record that is already waiting refreshes the row, so what goes is its current value.

A record of every answer

Every row keeps what was sent and how the vendor replied. A failed row stays visible with its reason, and it can be retried without starting over.

The EmailPro connections screen, listing connected CRM systems with the state of each connection and the next step for a workspace admin
Two-way sync is set per connection, on the same screen as the import. Real EmailPro screen with example data; the names and numbers are not a customer's.

What can be sent to each CRM?

Coverage follows what each vendor's API accepts. A record type that is absent here cannot be written at all.

SystemRecords it receivesHow a record is foundCustom fields
HubSpotContacts, companies, dealsThe link from your importYes, from the mapping
PipedriveContacts, companies, dealsThe link from your importYes, from the mapping
Microsoft Dynamics 365Contacts, companies, dealsThe link from your importIf your mapping names one
SalesforceContacts, companies, dealsThe link from your importYes, from the mapping
Zoho CRMContacts, companies, dealsThe link from your importYes, from the mapping
FireberryContacts, companies, dealsThe link from your importIf your mapping names one
monday.comContactsThe link from your importIf your mapping names one
ZebraContactsA field you choose, such as emailNot yet
MyBusinessContactsEmail, one exact match onlyNot yet

Zebra and MyBusiness can receive changes but cannot be imported from. On Fireberry, monday.com and MyBusiness, the update path still has to be confirmed on a first live run, and MyBusiness needs an app ID from the vendor.

How does one sync batch work?

  1. Turn it on for one connection

    An owner or admin opts in. The first scan starts from that moment, so turning it on does not list everything an import ever touched.

  2. Scan for changes

    A scan lists the linked records changed since the last one, up to two hundred at a time, and carries on where it stopped. It sends nothing.

  3. Read the list and approve

    A person reads the rows and approves. The approval is bound to a fingerprint of that exact list, so a list that changed afterwards needs a new approval.

  4. Check the results

    Each row shows the vendor's answer. Failed rows stay on the list with a code, so you fix the cause and retry them.

Why sync waits for a person instead of running by itself

A continuous sync feels effortless until the day a bad import or a wrong mapping rewrites thousands of records in a system another team depends on. By the time anyone notices, the old values are gone and the two systems agree on the wrong answer. Writing into another company's system is the riskiest thing an integration does, so here it is treated like sending a campaign: prepared by software, released by a person.

That is why there are three locks rather than one. The service has to allow it, the connection has to opt in, and a person has to approve a list whose fingerprint matches what they read. There is no API route and no MCP tool that sends. An assistant can show you what is waiting and help you decide, and it stops there.

The other direction is deliberate too. Changes made in the other system come in when you run the import again. Empty fields are filled, your existing values stay, and a contact name that differs goes to the conflict queue. So you get two systems that stay close, with people in charge of the differences, rather than two systems racing to overwrite each other.

When is this not the sync you need?

If you need any of these, it is better to know now.

You need changes to appear within seconds

This is batch work with an approval in the middle. If a change must reach another system immediately, use the signed webhooks and the API, and build that flow on your side.

You want to sync email, deal stage or amounts

These are excluded by design and the exclusion is not a setting. If your process needs them changed in the other system, change them there.

You need it live today

It is not switched on, and no vendor has been tested against a live account. We would rather say that than have your first batch be the test.

Clear answers

Two-way CRM sync: common questions

Tell us which CRM you need to stay in step with

Name the system and the records that matter. We will tell you what is tested, what is not, and when it can open for you.