How It Works?

SyncPenguin is a scalable two-way data synchronization and integration platform. You can use any of the pre-built synchronization connectors, request a new integration or develop your own. It is basically Zapier, but for two-way synchronizations (which they are not supporting). It allows customers to sync or migrate data between any pairs of public cloud (or on-premise) APIs.

The SyncPenguin Dashboard provides sophisticated testing, debugging, logging and monitoring functionality, which ensures your sync's flawless run.


Synchronization in SyncPenguin is defined by two data sources, which are two data entities of cloud business tools.

Here are some examples of synchronizations between data sources:

  1. Sync Exchange Office365 appointments to Google meetings.
  2. Salesforces products to Dynamics365 products.
  3. Sync Freshsales Contacts to an ERP service.
  4. Sync EspoCRM Opportunities to Shopify Orders.

You can synchronize between any pair of pre-built SyncPenguin data sources or add your own. More on that here.

Another important part of the synchronization is field mapping, which defines the way data is transfered from one source to another. More on how mappers are implemented and customized here.

Let's now have a look at how the sync works on a higher level.

Sync Process

SyncPenguin has pre-defined synchronization processes.

There are two types:

  1. Data polling - data sources are periodically (e. g. once every 5 minutes) polled for any changes since the last sync and the found changes are applied.
  2. Webhooks (or callbacks, push notifications) - if a data source supports webhooks that react on data changes, you can setup one so that SyncPenguin listens to the changes and reacts accordingly. This is usually more efficient as no unnecessary API requests are performed.

For both types SyncPenguin provides reliable synchronization framework. You don't have to worry about application architecture, load handling, deployment or scalability. You focus only on the business side of the synchronization.

Synchronization process and other sync settings can be configured in the SyncPenguin Dashboard.

Sync Example

In this section, we'll explain how to set up a two-way sync between two tools that are already supported.

The first step is to sign up to the dashboard. Then navigate to Synchronizations page and click a plus icon to navigate to sync wizard:


Pick the first data source, then the second, and then specify sync directions and click create:


For this example, we’ve chosen to connect EspoCRM and MailChimp contacts.

After that you can open the sync in the Synchronizations section and see the main sync view. On it, you can see overall sync status, buttons to start/pause sync, sync interval, sync derection, etc. And on the bottom you see that there are no connected accounts:

No accounts

An account is a subject unit in SyncPenguin. It can correspond to a single person, company or customer, depending on your case. Usually, each account has a specific set of credentials/settings associated with each data source. For instance, an account can correspond to a person that has specific Salesforce API Key and Exchange Calendar credentials.

Let’s create an account and attach data source credentials with it.

Go to the Accounts section and click on the plus icon. Specify the account name and click Save.

No accounts

Then, if you open the account page you can see that you can add data source settings for this account:

No accounts

In our case we need to do this for both data sources in use: EspoCRM Contacts and Mailchimp Contacts. Specify API keys and additional information in the JSON editor. Note that this setting should be in a valid JSON format. For services that support OAuth authentications there's usually a link to direct sign-in. You can also click the Documentation link for further data source details on the source code repository.

No accounts No accounts

Now go back to your sync page and add the account you created to the sync:

No accounts

That’s it! You are all set now.

The only thing left is to start your sync. To do that, just click the Start button on the sync page. At any time you can click the Pause button to pause the sync. If there’s any problem with your sync you’ll see it on sync page as well.

Additionally, you can configure the update interval — how often should we fetch the APIs for changes. The default value is 10 minutes.

Pre-built Synchronizations

Check out the list of currently supported syncs here.