Skip to content
Fresh 2026

Data Sync Flow

How Merge keeps normalized Common Model data current and how you consume changes incrementally.

Merge syncs data from the third-party platform on a schedule, normalizes it into Common Models, and exposes it through list endpoints. You pull changes incrementally with modified_after and react in real time with webhooks.

flowchart TD
    A[Linked Account connected] --> B[Initial full sync]
    B --> C[Common Models populated]
    C --> D{New change at source?}
    D -- Scheduled sync --> E[Merge re-syncs on cadence]
    E --> F[Data normalized + diffed]
    F --> G[Webhook fired: changed data]
    G --> H[Your app: GET with modified_after]
    H --> I[Process only changed records]
    I --> D
    D -- Force needed --> J[POST /sync-status/resync]
    J --> E

Patterns

  • Incremental syncing. Store the timestamp of your last successful pull. On the next pull pass modified_after=<timestamp> so you only receive records changed since then, instead of re-fetching everything. See Syncing Best Practices.
  • Webhooks. Subscribe to change events so your app is notified the moment Merge detects new or updated records, rather than polling. See Webhooks.
  • Sync frequency. How often Merge re-syncs depends on the integration and your plan tier. See Sync Frequency.
  • Force a resync. Trigger an on-demand sync with the resync endpoint when an end user expects immediate freshness.

Why incremental matters

ApproachCostFreshnessUse when
Full re-fetchHighSnapshotFirst load only
modified_after pollingLowNear real timeDefault
WebhooksLowestReal timeEvent-driven apps

Unofficial documentation reference. Built for internal use.