Guides
What is a Bidirectional Sync?
Bidirectional Syncs is a pattern to keep your data in-sync with an external data source. Learn when you need bidirectional syncs and how to start building one.

Jack Mu
,
Developer Advocate
3
mins to read
Bidirectional synchronization (or bidirectional sync) is the practice of keeping data sources synchronized with one another. This doesn’t mean both data sources are identical, but it does mean that any meaningful state changes in one data source will be reflected in the other.

Implementing bidirectional sync isn’t trivial. As is the case, it makes sense to know if bidirectional sync is the right method for the use case you’re building for. In this guide, we’ll cover
When to use bidirectional syncs
Real-world examples of bidirectional syncs
How to build bidirectional syncs
When to use bidirectional sync
Breaking down the term “bidirectional synchronization,” we’ll start with the “bidirectional” piece. Bidirectional means that both data sources need to be notified and updated when their counterpart is changed. Let’s give this some color:
Think of an AI meeting assistant like Granola, Otter, or Fireflies. They need to “pull” data from applications like Zoom and Google Meet to provide transcriptions, summaries, and AI-related tasks. This family of use cases is a one-way sync.
Staying within the meeting software sphere, think of a meeting app like Zoom. Zoom “pulls” data from Google Calendar to get your events and blocked times, but also “pushes” data to Google Calendar when you create meetings on Zoom. This is an example of a two-way sync, also known as a bidirectional sync. ****

Moving on to the term “synchronization,” or “sync” for short. Syncs are a practice for keeping a data source continuously up-to-date. If you’re pulling data from a data source ad hoc, you’re really performing a data pull, rather than a sync. Syncs are a more involved implementation that requires not just an initial data pull of historical data, but also a webhook/polling approach to listen for data changes.
An app like ChatGPT has a “file upload” function to do a data pull from a document. Change that file, and ChatGPT will be out of date with those changes. In contrast, ChatGPT’s “connectors” stay synced with an integrated data source like Google Drive or SharePoint, so when changes to a Google Drive document are made, ChatGPT will update its own backend database to serve you with the freshest data.

Bringing it all together, bidirectional syncs fit your use case when:
You need to push and pull data from your database to an external data source
You need to be up-to-date with data changes
Let’s jump into some real-world examples of software that use bidirectional syncs heavily.
Real-world examples
HubSpot
HubSpot, the marketing and sales platform, implemented bidirectional syncs with dozens of integrations. HubSpot’s syncs allow their users to enrich their CRM data from external data sources while pushing data updates made in HubSpot CRM back to those sources.

Perhaps the most used bidirectional sync is HubSpot’s Salesforce integration. Salesforce contacts are synced to HubSpot, and HubSpot syncs lead data, like email opens, back to Salesforce.
Scratchpad

Another popular CRM example is Scratchpad, the Salesforce hygiene and productivity tool. Scratchpad is built on top of Salesforce (pulling Salesforce data) to have a more user-friendly UI/UX with different ways to organize tasks and pipeline.
Scratchpad’s AI features and automations enrich Salesforce data and maintain CRM hygiene practices, pushing Scratchpad data back to Salesforce.
Calendly
Calendly is an easy-to-use scheduling tool built on top of calendar and meeting apps. You can integrate Google Calendar to make sure that your Calendly availability is always up-to-date and synced with meetings and events created in your calendar. And of course, Calendly-created meetings are pushed back to your Google Calendar, completing the two-way sync.

As you may have noticed from these real-world examples, bidirectional syncs suit products that are tightly coupled with an integrated data source.
HubSpot, a CRM, syncs with other CRMs
Scratchpad, a Salesforce automation and hygiene tool, syncs with Salesforce
Calendly, a scheduling tool, syncs with calendar and meeting apps
We have even more bidirectional sync examples as well as market adoption statistics in our Integration Adoption Guide.
Now that we have covered the characteristics and examples of bidirectional sync, you may have decided that bidirectional sync is the right solution for your product. If that’s the case, let’s help you start building!
How to start building bidirectional sync
Pulling data
For bidirectional syncs, in general, you are responsible for just one of the data sources. The other data source is generally external, like your users’ CRM or ticketing system.
To sync external data to your databases, you need a sync engine. The sync engine is responsible for an initial historical data pull and continuously listening for changes.
The initial historical data pull may need to handle high volumes of data, especially for use cases like syncing files, CRMs, or tickets that can go back years in the past.
The continuous, incremental syncs can be more lightweight, as these will usually be just a few records, tickets, or messages that are created on the external integrated data source that you need to update on your end. Subscribe to these updates with webhooks for real-time updates or polling for near real-time.
Paragon’s Managed Sync is a sync engine service that works for 3rd-party data sources like file storage, CRM, or ticketing platforms. You can see that the sync engine interacts with external data APIs first by pulling historical data and then by listening to change events.

Pushing data
The sync engine is generally the hardest part, as you have more control over your own data and what data to push to an integrated data source. Here, you can use the 3rd-party API to push updates as they happen or batch them in bulk for multi-record updates.
Paragon’s ActionKit is a lightweight API that makes it easy to perform CRUD operations in a 3rd-party data source - auth, latency, LLM/human-readable descriptions, and a better developer experience all come out-of-the-box.
With a use case like pushing data to Notion, this would usually require chaining multiple Notion API calls to iterate through their block schemas. ActionKit’s pre-built actions abstract away 3rd-party API specific logic, so you can build faster.
Putting it all together
While bidirectional sync is a two-way process, you can break it down into pull and push components. Because pulling data from a 3rd party can involve high-volume jobs and conforming to how 3rd-party APIs behave, sync engines need to be durable and flexible services.
On the other hand, pushing data is generally lightweight, as you push your updates to an external data source. While you have more control over how you push data to an external data source - be it synchronously for real-time push updates or scheduled batches for bulk updates - 3rd-party APIs can be difficult to work with depending on the integration provider.
Get your sync engine for incoming data and push mechanism for outgoing data, and you have yourself a bidirectional sync!
Wrapping Up
Bidirectional synchronization is a comprehensive practice for keeping two data sources in tune with one another. For use cases where your application needs to be in lockstep with a 3rd-party platform, like a CRM, bidirectional syncs are needed so that the state of your users’ data is always accurate.
Popular SaaS applications like HubSpot, Scratchpad, and Calendly use bidirectional sync effectively to automate and enrich data for their users.
If you’re looking to build your own bidirectional synchronization system, plan your pull and push data mechanisms, and research the APIs that the 3rd-party data source exposes. You can take a look at Paragon’s Managed Sync and ActionKit to see the types of systems you’ll need for bidirectional sync.
While you’re at it, if you’re looking to scale the number of integrations you want to sync with, try Managed Sync and ActionKit in a free trial or talk with a member of our team to get you started with a POC.
Paragon has helped hundreds of customers built integrations for use cases like bidirectional sync. We’d love to talk with you to see if Paragon can help you accelerate your integration roadmap.



