Skip to content

What Is Two-Way Sync? How It Works and 3 Examples

Understand two-way sync, field ownership, conflict handling, and recovery with CRM, ERP, and database examples plus a practical mapping workbook.

Author
Ruben Burdin · Founder & CEO
Published
Updated
Read time
7 min read
What Is Two-Way Sync? How It Works and 3 Examples
DATA ENGINEERING

Two-way sync keeps approved changes moving in both directions

Two-way sync, also called bidirectional sync, propagates selected data changes from system A to system B and from B to A. The integration matches records, maps fields, and applies rules about which changes each system may make. Its purpose is to keep the agreed data consistent across two editing surfaces.

Two-way describes direction, not speed or universal write access. The integration may be event driven or scheduled. Some fields can flow in both directions while others have a single owner. A finance-owned credit status, for example, can flow from the ERP to the CRM while a sales-owned account note travels the other way.

Temporary differences are possible while a change is in transit or a destination rejects it. A useful specification says what should eventually agree, how quickly it should agree under the expected workload, and what happens when it cannot. “Both systems are always identical” is not a workable acceptance test.

Use this guide for the concepts, the Stacksync two-way sync overview for the product, and the field mapping workbook to document your own integration.

Start with identity and ownership

Identity determines whether a destination row is the same customer, order, or contact as the source record. Names, email addresses, and domains can change or collide. Establish a matching rule, keep the paired system identifiers, and test what happens when a record is merged, converted, or created again after a timeout.

Identity, ownership, transformation, lifecycle rules, and acceptance evidence define the scope of a two-way sync.
Identity, ownership, transformation, lifecycle rules, and acceptance evidence define the scope of a two-way sync.
DecisionExampleFailure to test
Record identityPersist the CRM and ERP customer IDs togetherA repeated create makes a second customer
Field ownerERP controls billing statusAn older CRM value overwrites finance
TransformationTranslate explicit status codesAn unknown code is silently discarded
Null behaviorAn intentional clear differs from an omitted fieldA partial update erases a useful value
LifecycleRemoving a relationship preserves its recordsA removed association deletes a customer

A mapping should include the API field name, type, allowed values, ownership, and a test. A lossy transformation needs a deliberate policy: converting a timestamp to a date cannot reconstruct its original time on the return trip. Make that mapping one-way or preserve the missing information separately.

How a synchronization cycle works

  • 01Detect a selected source change through an event, database change stream, or polling.
  • 02Find the destination record using the agreed identity.
  • 03Validate and transform only the permitted fields.
  • 04Apply the ownership or conflict rule if changes compete.
  • 05Write the intended value and record the outcome.
  • 06Recognize reflected writes so the integration does not repeat its own work.
  • 07Expose rejected records and reconcile the resulting state.
An illustrative update passes through detection, conflict handling, delivery, and echo suppression before the mapped values agree.
An illustrative update passes through detection, conflict handling, delivery, and echo suppression before the mapped values agree.

The diagram is an architectural example, not a guarantee that every connector uses the same implementation. A product might track origins, prior values, versions, or another form of shared state. Evaluate the observed behavior: a change should arrive once in the business sense, and its reflection should not create another unintended action.

Choose a conflict policy the business understands

A conflict occurs when competing changes cannot both be accepted under the data model. Two edits to the same phone number are an obvious example. Different fields can also conflict through a business constraint, such as a country and tax identifier that must remain compatible.

PolicyUse whenTradeoff
One system owns the fieldThe business has a clear authorityThe other application is not an independent editor
Last accepted write winsRecency is an acceptable deciding ruleAn accidental later edit may replace a correct value
Merge independent editsField changes are compatibleCross-field constraints still need validation
Request reviewThe outcome needs business judgmentAn unresolved record needs an owner and deadline

These are design options, not a claim that every integration exposes all four. HubSpot’s Salesforce documentation is a concrete example of product-specific field rules. Confirm the actual setting and test simultaneous edits before relying on it.

Keep direction separate from freshness

PatternDirectionPrimary question
One-way synchronizationA to BCan B treat the synchronized fields as read-only?
Two-way synchronizationA to B and B to AHow are independent edits coordinated?
ETL or ELTSources into a processing or analytics destinationWhen is the prepared dataset available?
Reverse ETLPrepared data into business applicationsWhich derived fields may overwrite application values?

Any of these patterns can have different timing choices. Event delivery still includes capture, queueing, validation, and destination processing. Polling adds a detection interval. Stacksync’s Salesforce documentation describes trigger and polling modes, so freshness should be tested for the selected object and permissions.

Set a business target, then measure from the original edit to the usable destination value. Include peak activity and backlog recovery. A fast API response only measures one step; it does not prove that the returned data includes the latest business change.

Three practical two-way sync examples

1. Marketing CRM and sales CRM. HubSpot can own qualification while Salesforce owns the sales process. The integration must preserve identity through lead conversion and match companies to the right accounts. A useful test changes a qualification field, converts a lead, and confirms the same person remains linked. See the HubSpot–Salesforce setup guide.

2. CRM and ERP. Salesforce captures commercial intent while NetSuite controls accounting state. A customer handoff needs stable IDs; an order needs valid customer and item references. A returned invoice status should not make the CRM the authority for posting a financial transaction. The Salesforce–NetSuite guide separates supported object writes from the business workflow.

3. CRM and an operational database. An application can read selected HubSpot records in PostgreSQL and write an approved subset back. Preserve the HubSpot ID separately from the local database key, and model associations explicitly. Start read-only if reporting is the only requirement; add write-back when the application has a real editing responsibility. Follow the HubSpot–PostgreSQL blueprint.

These are illustrative designs. They are not customer case studies or measured performance results. Each becomes an implementation only after the selected object coverage, permissions, mappings, and failure behavior are verified.

Two systems, one record, no batch window
See your own stack synced live. Book a demo with the engineers who built it.
Book a demo

Plan for failed and repeated writes

A timeout does not establish that a destination rejected a write. It may have applied the change and lost the acknowledgment. AWS’s idempotent API guidance explains why a stable operation identity matters when repeating requests. Verify both duplicate records and downstream side effects.

Also distinguish replaying a historical event from reading the latest source value again. Stacksync documents current-state retry, revert, and ignore actions in its Issues dashboard. The retry and replay deep dive explains how to choose an action and verify the outcome.

Evaluate a tool with your own records

Shortlist methods that support the required systems and objects. A native connector can be appropriate when its rules fit; a managed platform can simplify a broader topology; a custom implementation may justify ongoing engineering when its behavior is specialized. A connector count alone does not establish fit.

If you hire dedicated Node.js developers for a custom implementation, use the same acceptance criteria as for a managed product. Assign responsibility for API changes, incident response, and the identity and recovery state after the initial build.

Complete the integration evaluation worksheet with evidence for normal updates, simultaneous edits, initial load, invalid values, deletes, and recovery. Use the production-readiness checklist to assign owners and decide whether the tested configuration can ship.

For a Stacksync evaluation, bring your system pair and mapping workbook to a demo. Include one difficult relationship and one failed-write scenario so the discussion leads to a reviewable integration design.

Start with one sync and see it hold
Connect two systems, watch a record move both ways, then decide.
Start syncing

FAQ

Frequently asked questions

Is two-way sync the same as bidirectional sync?
Yes. Both terms describe selected changes flowing in both directions between connected systems.
Does two-way sync require instant updates?
No. Direction and timing are separate. A bidirectional integration can use events or a schedule; measure whether its freshness meets your workflow.
Does every field need to be writable in both systems?
No. An overall two-way integration can contain fields with different one-way ownership rules. Shared fields need an explicit policy for competing edits.
Are two one-way pipelines sufficient?
They can implement a reliable two-way system if they coordinate identity, field ownership, reflected writes, recovery, and reconciliation. Adding a reverse pipeline alone does not supply those behaviors.

About the author

Ruben Burdin
Ruben Burdin
Founder & CEO

Ruben Burdin is the Founder and CEO of Stacksync, the first real-time and two-way sync for enterprise data at scale. Ruben is a Y Combinator alumni with a strong background in software engineering and business.

All posts by Ruben Burdin

About Stacksync

Stacksync powers real-time, two-way sync between CRMs, ERPs, and databases. Engineers sync data at scale and automate workflows, not dirty API plumbing.

Coworkers laughing in front of a laptop in a casual office setting

You just read how it should work.
See it run on your own data.