Proje vitrini hazırlanıyorPreparing project showcaseПодготавливаем витрину проекта

Integrations

Two-way data sync: handling conflicts with clear rules

A practical guide to two-way sync: pick a source of truth, set clear conflict rules, and stop duplicates before they quietly wreck your reports.

Rocketly · 2026-07-18

A contact's phone number gets corrected in your accounting app on Monday morning. That same afternoon, a sales rep fixes the same contact in your CRM, with a slightly different number. By Tuesday, two systems disagree about one small fact, and nobody can say which one is right. That is the quiet drama behind every two-way sync, and it plays out in thousands of small businesses that assumed connecting two tools would simply work.

This article is about keeping two systems in step without silently corrupting your data. We will cover what two-way sync actually means, how to choose a source of truth, the conflict rules that decide who wins, why deduplication matters more than it sounds, and, honestly, when a full bidirectional setup is more trouble than it is worth.

One-way, two-way, and why the difference bites

A one-way sync is a mirror. One system is the master, the other is a read-only copy that updates whenever the master changes. Your website pushes new orders into the CRM, but the CRM never pushes anything back. Simple, predictable, hard to break.

A two-way sync lets both sides create and edit the same records, and the changes flow in both directions. Fix a phone number in either place and, within a minute or two, the other side matches. It feels magical the first week. The trouble starts the moment both systems can write to the same field, because now they can disagree.

That is the whole game. One-way sync can be wrong, but it is never confused. Two-way sync is more powerful and introduces a brand-new failure mode: the conflict. Whether you build this yourself or lean on a connector, the choice between native and third-party integrations mostly comes down to how well each one handles that conflict on your behalf.

The collision: two systems, one record, two edits

Picture a small candle shop. On the same morning, the owner updates a wholesale customer's delivery address in the online store, while her assistant updates the same customer's address in the CRM after a phone call. Two edits, one record, and the sync engine now has to pick a winner.

If nobody decided the rule in advance, the tool falls back to whatever its default is, usually "whichever change arrived last." That default is fine until the day it silently overwrites the correct address with an old one, and a pallet of candles ships to a warehouse the customer moved out of six months ago.

The lesson is not "avoid two-way sync." It is that a conflict is a normal, expected event, not a rare accident. If you have two systems that can both edit the same thing, you will get conflicts. The only question is whether you decided how to resolve them, or let a default decide for you.

Pick a source of truth: per field, not per system

The instinct is to crown one system "the master" and be done. That rarely survives contact with reality, because different systems are authoritative about different things. The honest answer is to assign a source of truth field by field.

Think about who actually owns each piece of information. Your accounting software owns the tax ID, the billing address, and invoice totals; it is where those are legally correct. Your CRM owns the pipeline stage, the lead score, and the date of last contact. Your online store owns order status and stock. Nobody argues with the system that genuinely owns the field.

Once you map ownership this way, most conflicts disappear before they happen. A clean CRM and accounting integration lets billing data flow one direction and sales data flow the other, so the two systems rarely fight over the same field. The same logic applies when you connect an online store to your CRM: the store owns the order, the CRM owns the relationship around it.

CRMAccountingOnline storeCalendarInbox
Each connected system owns the fields it is genuinely authoritative about.

Conflict rules: who actually wins?

When two edits do land on the same field, you need a rule you can explain in one sentence. There are four common ones, each with a real trade-off.

  • Last write wins. The most recent change overwrites the older one. Easy to build and easy to reason about, but it trusts clocks and can quietly bury a correct value under a later, sloppier one.
  • Source of truth wins. The system that owns the field always wins, regardless of timing. This is usually the safest default, provided you did the field-ownership work above.
  • Newest non-empty value wins. A gentler version that refuses to overwrite real data with a blank. Useful when one system tends to send incomplete records.
  • Send it to a human. Genuine conflicts drop into a review queue instead of auto-resolving. Safest of all, and the first thing people switch off when the queue gets noisy.

Most small businesses land on a blend: source-of-truth-wins for the fields that matter (money, legal, contact details) and last-write-wins for low-stakes notes. Write the rule down. A sync you cannot explain in plain language is a sync you cannot trust.

1Change detected2Match record3Apply rule4Write and log
Every synced change should pass through the same four steps, in the same order.
A conflict rule you cannot say out loud in one sentence is not a rule; it is a hope.

Deduplication: the silent data killer

Before two records can conflict, the sync has to decide they are the same record. Get that wrong and you get the opposite problem: duplicates. The same customer appears twice, each copy holding half the story, and your reports quietly drift away from reality.

Deduplication hinges on a matching key, a field stable enough to say "these two are the same person." Email is the usual choice, phone number works, and a shared external ID is best of all. Names alone are a trap, because "Ahmet Yılmaz" and "Ahmet Yilmaz" look different to a computer and identical to you.

This is exactly why connecting your inbox to the CRM pays off: when every email is logged against one matched contact, you stop creating a fresh half-empty record every time someone writes in. Decide your matching key early, and prefer a stable ID over fuzzy name-matching wherever you can.

Decide what flows where, and what shouldn't

The most common mistake is syncing everything because you can. You do not need every field in both systems. You need the fields each team actually uses, flowing in the direction that makes sense.

Map it out on one page: field, direction, owner. Order status flows from store to CRM. Contact details flow from CRM to store. Appointment times flow both ways, because both your calendar and your CRM can legitimately create them, which is exactly where a calendar and CRM integration earns its keep by preventing double-booked slots.

Everything you leave out of the sync is one fewer thing that can break. Narrow scope is not a limitation here; it is a feature.

Sync smarter, not harder

Rocketly keeps your contacts, orders, and invoices in step with clear conflict rules built in.

See how it works

When two-way sync isn't worth it

To be honest, plenty of small businesses do not need bidirectional sync at all. If one system is clearly the master and the other only needs to read the data, a one-way sync is simpler, cheaper, and far less likely to bite you at 2 a.m.

Two-way sync roughly doubles your failure surface. Every field that can be written from both sides is a field that can conflict, loop, or overwrite. Reporting is the clearest example: when you push CRM data into a dashboard or a data warehouse for reporting, that flow should be strictly one-way. Your warehouse reads; it never writes back.

A good rule of thumb: turn on two-way sync only for the handful of fields where both teams genuinely edit the same thing. Everything else can stay one-way, and your future self will thank you.

Rolling it out without breaking things

Never point a fresh sync at your live data and hope. Treat the rollout like plumbing you test before you turn on the water.

  • Start in a sandbox. Run the sync against test records first, and deliberately create a conflict to watch how it resolves. If you cannot predict the outcome, do not go live.
  • Do a dry run. Many tools can show what they would change without changing it. Read that list before you commit.
  • Sync a small batch first. Ten records, then a hundred, then everything. Duplicates and mis-mappings show up fast and cheaply at small scale.
  • Keep a log and a backup. Every synced change should be recorded, and you should be able to export both systems before you begin.

If your sync runs on webhooks, the instant messages fired between systems, build in a little skepticism. Retries, deduping repeated events, and basic webhook signature verification keep a hiccup from turning into a data mess. Real-time is lovely until a message arrives twice.

Frequently asked questions

What is the difference between one-way and two-way sync?

One-way sync copies data from a master system into a read-only mirror; only one side can change a record. Two-way sync lets both systems create and edit the same records, with changes flowing in both directions. Two-way is more flexible but introduces conflicts, so it needs clear resolution rules.

What does "source of truth" mean?

It is the system you trust to hold the correct value for a given field. The trick is to assign it per field rather than per system: accounting owns invoice totals, the CRM owns pipeline stage, the store owns order status. When ownership is clear, most conflicts never happen.

How do I stop duplicate contacts?

Choose a stable matching key (email, phone, or a shared external ID) so the sync can recognise the same person across systems. Avoid matching on names alone. Logging email and calls against one matched contact also stops new half-empty records from piling up.

Is two-way sync always better than one-way?

No. If one system is clearly the master and the other only needs to read, one-way is simpler and safer. Reserve two-way sync for the specific fields both teams genuinely edit, and keep reporting or analytics flows strictly one-way.

Two-way sync is not really a technical problem; it is a decision problem wearing technical clothes. Decide who owns each field, write down the rule for who wins, pick a stable key to match records, and start small. Tools like Rocketly can handle the mechanics, matching, resolving, and logging every change, but the rules are yours to set, and they are what keep your data honest. Get those right, and the sync fades into the background, exactly where a good one belongs.