Skip to main content
2-way HubSpot-Klaviyo sync

Sync contacts and engagements between HubSpot and Klaviyo

Updated over 2 weeks ago

Klaviyo only offers a Zapier/Make connection which is universal but difficult to configure, maintain and can get expensive rather quickly. For each contact added, field updated, contact deleted or engagement created you'd need to set up a separate Zap, with multiple steps to ensure no duplicates are created and the information is synced with the right contacts.

Outfunnel's HubSpot-Klaviyo sync is designed for B2B companies who want 2 key things from a sales-marketing integration:

  1. Keep sales and marketing contacts in sync bi-directionally and

  2. Automatically record Klaviyo email opens, clicks, and unsubscribes in HubSpot for the salespeople to see.


Connect HubSpot and Klaviyo, deeply and easily

Get started in 10 minutes. 14-day free trial. No credit card required


How it works

  • Bi-directional contact sync. Make all contacts or a subset(s) available on either platform along with your custom contact and company fields and keep them in sync going forward.

  • Sync email engagement to your CRM. Give your sales team full context on email opens, clicks, unsubscribes and more.

  • Comprehensive field Mapping. Sync any default or custom field two-way or in a single direction so you always have the right information available in any app. If any data conflicts arise, you can easily select the conflict winner.

  • Deduplication built-in. Outfunnel creates links based on the email address and we'll automatically cross-reference contacts to prevent duplicate contact entries. If a contact already exist we'll simply link it. If it doesn't we'll create a new contact.

  • Near instant data sync. Outfunnel syncs most data instantly and some within 2 hours.

  • Monitor sync status. Clear overview of the sync health which includes actionable error messages so you can fix them as they happen.

  • Historical sync. Sync all of your customer data, no matter when it was created. Outfunnel sync not only new contacts, but also existing ones.

  • Transparent pricing. Each contact that's part of the sync only counts once, regardless of how many updates get synced or to how many apps.

  • Reliable and secure data. Outfunnel uses advanced authentication methods, such as OAuth, and deploys encryption measures to make sure the data is secure in transit.


Set up contact sync

Set up the sync two-way or in a single direction, based on your specific use case.

1. Choose your apps

Outfunnel syncs data two-way or in a single direction. To get started head to Outfunnel > App connector and select your apps.

2. Select the connection type

Click on Connect and choose Contact sync as the connection type

3. Authenticate your apps

Most apps can be authenticated with a secure, one-click, no-code OAuth authentication.

4. Set the sync direction and database

Choose to sync data two-way or in a single direction.

5. Define contact sync rules

If you chose to sync contacts in a single direction you'll only see a single ruleset. If you chose to sync contacts two-way then you'll see two rulesets where the first set syncs contacts from CRM > Marketing tool and the second rulesets syncs contacts the other way around.

  • HubSpot contacts: Choose whether to sync all HubSpot contacts or only contacts you’ve defined with HubSpot static/active lists. Learn how to set up HubSpot Lists.

  • Klaviyo contacts: You can choose to sync Klaviyo lists and segments

If this is your first sync we recommend syncing a limited number of (test) contacts to get a feel for the sync.

🏁 Initial sync

  • Contacts are linked based on the email address. If an existing contact is not found a new contact is created. If multiple contacts are found with the same email address then the link is made with the oldest contact and no duplicates will be created.

  • Initial sync actions in Klaviyo.

    • Contact gets created in the database.

    • Contacts are added to the list and can be marketed to.

    • Contacts can also be subscribed. This can enabled under the connection settings

      • Before enabling we strongly recommend turning off double opt-in for the lists in Klaviyo as otherwise all contacts that get added to the list through Outfunnel receive a list subscription confirmation email.

      • When enabled, manually unsubscribed contacts are by default not resubscribed but this setting can be changed under the connection settings. Suppressed contacts never get resubscribed.

  • Initial sync actions in HubSpot.

    • Contact gets created in the database

🔄 Continuous sync

  • Contact changes. As long as the contact matches the rule any changes to it's profile in the source app will be synced to the destination app.

  • When contact stops matching rules. When a contact stops matching the rules all updates will stop but they will not be deleted from the destination app. In Klaviyo, the contact will be removed from the list but can also be unsubscribed (please reach out to support to enable)

💡 Other things to keep in mind

  • Contacts do not get removed/unsubscribed from Klaviyo if you remove the contact sync rule or change the target segment.

  • Multiple email addresses on a contact. Outfunnel creates a link with the first email address on a contact profile. Other addresses on the profile will be ignored.

  • Merging contacts. Outfunnel supports merging contacts with the same email. After you've merged a contact you may see the contact getting unsubscribed from Klaviyo if the contact you merged to was not in sync but they will get resubscribed in the next sync given that the email address is the same.

6. Set up field mapping

First, choose the default fields and/or custom fields you’d like the sync and in which direction. Then, choose the app that will be used in case of any conflicts.

Data conflicts

Data conflicts usually happen during the initial sync when a mapped field value is different on both apps. For example, when the name is different for the same contact then Outfunnel will use the selected app as the conflict winner. Most companies use their CRM as a system of record. Reach out to support if you are having doubts or want to talk through your use case.

💡 Things to keep in mind

  • Current limitation. Outfunnel cannot currently empty a field value in HubSpot due to an API limitation from HubSpot. Please reach out to support if this is important for your workflows.

  • Email is a default field that is matched automatically and cannot be changed. This is what Outfunnel uses as the unique identifier to create a link between contacts on two apps.

  • Read-only fields. Some fields are read-only (ie calculated fields) and cannot be edited which means they can only be synced in one direction.

  • Adding new fields. If the field doesn't exist in Klaviyo yet, click on "add new property" in the field mapping flow. If an existing property with the same name exists it will be linked (Case sensitive). For HubSpot, create a new field in HubSpot. Then head back to Outfunnel and click "refresh fields" to see the new field.

  • Single/Multiple option fields. If you are mapping single and multiple option fields please pre-create the values in the source and destination app.

  • Phone field. Klaviyo phone field only accepts numbers that match the following formats: +91xxxxxxxxxx

7. Activate the connection

🏁 Initial sync

After activating the connection Outfunnel will run an initial sync to merge your databases and you should see contacts appearing in the sync status page. The initial sync usually takes a few minutes but can take up to a few hours depending on the number of contacts to sync.

The status page also shows errored contacts and provides actionable feedback on how to fix this.

🔄 Continuous sync

After the initial sync completes Outfunnel starts running a continuous sync that checks for updates with the following logic:

  • Most field changes for in-sync contacts are reflected from HubSpot > Klaviyo immediately. Klaviyo > Hubspot changes are synced every 2 hours.

  • New contacts/removed contacts are checked every 2 hours.

  • You can trigger an instant sync anytime by clicking on Sync now.


Set up engagement sync

If you've already set up a connection, skip to the second step.

1. Authenticate your apps. Head to App connector, select HubSpot and Klaviyo, and authenticate as per on-screen instructions if you haven't done so already. Klaviyo Private API key can be found under Settings > Account > API Keys

2. Select the connection type. Click on Connect and choose Engagement sync as the connection type

3. Choose the list, flow or segment. Choose the Klaviyo list, flow or segment for which you’d like to record email engagement (opens, clicks, unsubscribes, etc).

4. Define how engagement gets recorded. Then define how you’d like email activities like opens, clicks, bounces, or unsubscribes recorded in HubSpot – or simply use our default settings.

🤖 You can also choose to exclude Klaviyo-identified bot opens and clicks from the sync. Please note that Klaviyo detection system may still contain false positives and false negatives. Read more.

5. Set up field mapping

When Outfunnel syncs an engagement for a contact that does not yet exist in Pipedrive, a new contact can optionally be created with the defined field mapping. Navigate to the field mapping step to select which fields or custom fields you’d like the sync to consider. You can turn off creating contacts from email engagements on the same page.

6. Activate

🏁 Initial sync

After activating the connection you can choose whether you'd like to record engagement only from emails that have been sent after activating the connection or also from the last 30-days. The initial sync usually takes a few minutes but can take up to a few hours depending on the number of historical engagements to sync.

The status page shows the number of engagements that have been synced.

💡We also offer retrospective sync on demand for an additional cost. Please refer to this article.

🔄 Continuous sync

After the initial sync completes Outfunnel starts running a continuous sync that syncs engagements instantly, as they occur.

💡 Things to keep in mind

  • Make HubSpot activities visible. The engagements that Outfunnel creates might be hidden at first in HubSpot. Here's how to make them visible:

  1. Make sure you have set up the connection and sent out at least one email campaign from Klaviyo.

  2. Open any contact profile in HubSpot and click on "Filter activity" option on the top of the timeline.

  3. Under the Integrations section, enable "Outfunnel" (if Outfunnel is not yet visible but you have sent out a campaign, the data sync might have not happened yet. Just open the connection and click on "Sync now". The activities will be created in the next 10 minutes.)

  • Unsubscribe recording. When a contact is unsubscribed but they still match a list in HubSpot that is targeted by a contact sync, then Outfunnel will resubscribe them in Klaviyo (if subscribing is enabled). See how to avoid this.

  • First unique URL click per email per contact is recorded. Outfunnel records the first unique URL click per email per contact. For example, if a contact clicks 2 unique URLs, 3 times each then two click activities get created in your CRM.

  • Activities in the CRM. Email activities are linked to a contact, organization and the oldest open deal.


Helpful guides

How to not resubscribe unsubscribed contacts

By default, Outfunnel resubscribes unsubscribed contacts in Klaviyo. This can be avoided if the contact is removed from the Pipedrive filter. Here's how:

If you are just setting up a sync

  1. Choose one-way Klaviyo to HubSpot contact sync

  2. Choose to sync all contacts from Klaviyo to HubSpot

  3. Map the Klaviyo subscription status field to HubSpot.

  4. Activate the sync and let it complete (you should now see the subscription field filled in HubSpot)

  5. Delete the sync

  6. Create a 2-way contact sync

  7. Add the following condition to the targeted HubSpot list to exclude unsubscribed contacts: [HS field you mapped the subscription status to] > is not > unsubscribed​

  8. Repeat steps 2 and 3

  9. Activate the sync

If you already have a sync running

  1. Map the Klaviyo subscription status field to HubSpot.

  2. Add the following condition to the targeted HubSpot list to exclude unsubscribed contacts: [HS field you mapped the subscription status to] > is not > unsubscribed​

  3. Run the sync

  4. To test, simply unsubscribe a contact in Klaviyo and then run the sync again. This contact should get removed from the HubSpot list and not get resubscribed to Klaviyo


Do you use web forms to collect leads to your lists? See the following integrations to automate lead capture sync to HubSpot:

Don't see your preferred web forms listed above? Browse the upcoming connections and sign up for early access.

Did this answer your question?