Integration guide
A Klaviyo Odoo integration connects Odoo Email Marketing to Klaviyo, so contacts, lists, consent status, templates and campaigns stay aligned between the two, and Klaviyo campaign results come back to Odoo. The TeqStars Klaviyo Connector lets a marketing team prepare a campaign in Odoo, have Klaviyo deliver it, and read the opens and clicks in Odoo.
Odoo manages customer and marketing data. Klaviyo runs targeted email campaigns. Keep the two connected without repeatedly moving audiences, templates and campaign activity by hand.
What does a Klaviyo Odoo integration do?
It joins the place where customer data lives, Odoo, with the place where email campaigns are sent, Klaviyo. Audiences go from Odoo to Klaviyo lists, campaigns are prepared in Odoo and delivered by Klaviyo, and each campaign's received, opened, clicked and bounced events return to Odoo.
The TeqStars Klaviyo Connector connects Odoo Email Marketing with Klaviyo so teams can work with supported lists, profiles, templates, campaigns and engagement activity from a controlled Odoo workflow.
The connector supports manual actions and scheduled processing, while queues and logs keep larger synchronization jobs visible instead of turning them into a black box. You can request a demo or see the Klaviyo Connector on the Odoo Apps Store.
One connected marketing workflow
Organize the flow around the way an email marketing team actually works.
Build the audience
Import Klaviyo lists and profiles, export or update Odoo contacts, and keep supported subscription or suppression status aligned.
Prepare the campaign
Work with Klaviyo templates, select included or excluded lists and segments, configure Smart Sending, then send now or schedule the campaign.
Bring activity back to Odoo
Fetch campaign status and supported email activity so received, opened, clicked and bounced events can update Odoo mailing tracking.
Klaviyo or Odoo Email Marketing: which one sends the campaign?
Klaviyo sends it. Odoo Email Marketing is where the team picks the audience, the template, the subject and the sender, and where it reads the results afterwards. Odoo's own mailing queue leaves a Klaviyo campaign alone and refreshes its status from Klaviyo instead, so Odoo does not send it as well.
| Part of the work | In Odoo Email Marketing | In Klaviyo |
|---|---|---|
| Audience | Mailing lists and contacts, each linked to its Klaviyo list or profile | Lists, profiles and segments |
| Campaign setup | Lists or segments to include and exclude, template, subject, preview text, sender, Smart Sending | The campaign is created from what Odoo sends |
| Delivery | Not sent by Odoo | Sent now or at the scheduled time |
| Results | Received, opened, clicked and bounced figures on the mailing | Received Email, Opened Email, Clicked Email and Bounced Email metrics |
What moves between Odoo and Klaviyo?
Direction matters. Not every data type is synchronized in both directions.
| Marketing Data | Klaviyo to Odoo | Odoo to Klaviyo |
|---|---|---|
| Lists | Import Klaviyo lists | Create or update Klaviyo lists |
| Profiles / Contacts | Import profiles and list membership through queued processing | Create or update supported Klaviyo profiles |
| Subscription / Suppression Status | Update Odoo contact and blacklist status from Klaviyo | Apply supported subscribe or suppress actions from Odoo |
| Segments | Import Klaviyo segments | No segment export. Imported segments can be selected for campaign targeting |
| Templates | Import Klaviyo email templates | Create or update supported templates in Klaviyo |
| Campaigns | Import campaign details and status | Create, send or schedule supported Klaviyo campaigns |
| Email Activity | Received, opened, clicked and bounced activity | Not an outbound synchronization flow |
Klaviyo lists become Odoo mailing lists
Each imported Klaviyo list is an Odoo mailing list, with its single or double opt-in setting from Klaviyo and its counts of contacts, subscribers, unsubscribers and cleaned contacts.
Keep audience data useful on both sides
Klaviyo profiles can be fetched from selected lists and processed into Odoo mailing contacts. The connector stores Klaviyo profile references so later updates can target the linked record instead of creating a new profile every time.
For Odoo to Klaviyo exports, a list can be configured to automatically export matching contacts. A domain filter controls which Odoo contacts qualify for that audience, so the scheduled action does not need to send every contact in the database. Each list chooses whether it exports Odoo contacts or mailing contacts, and Check Remaining shows how many still wait to be exported.
Merge-field mappings can carry supported profile information such as name, phone and location fields according to the configuration. Contacts are matched by email address, so a profile that already exists is updated rather than duplicated.
Optional Odoo customer creation
When enabled, imported Klaviyo profiles can create or update related Odoo contacts using the connector's configured mapping and email matching logic.
Subscription and suppression awareness
Klaviyo subscription information can update Odoo mailing status and blacklist records. Supported Odoo-side changes can also trigger Klaviyo subscribe or suppress operations.
Contact changes follow automatically
With Auto Update Contact in Klaviyo switched on, editing a mapped field of an Odoo contact, such as the name, email or address, updates the Klaviyo profile on its own.
Run Klaviyo campaign workflows from Odoo
Use Odoo Email Marketing as the working surface while Klaviyo handles the campaign delivery.
Choose the audience
Select included and excluded Klaviyo lists or imported segments.
Set the template and the sender
Use a Klaviyo template and configure the campaign subject, preview text and sender details.
Send or schedule
Enable Smart Sending when required, then send immediately or schedule the campaign for later.
Read the results in Odoo
Fetch campaign status and supported engagement activity back into Odoo.
Klaviyo receives a campaign once
When a campaign is sent from Odoo, Klaviyo creates it and sends it. Later edits to that mailing in Odoo are not sent to Klaviyo, so check the subject, audience and template before you press Send.
Scheduled work without hiding the process
Five scheduled actions keep audiences, campaigns and their results current. How often each runs is set in Scheduled Actions.
| Work | Scheduled action | What it does |
|---|---|---|
| Audience refresh | Fetch Klaviyo Audience | A scheduled action can fetch Klaviyo profiles that joined the configured lists since the last run, when Auto Sync Member is on. |
| Campaign detail | Fetch Campaigns Detail From Klaviyo | Campaign status can be refreshed in the background. |
| Campaign activity | Fetch Campaigns Reports From Klaviyo | Supported email events can be fetched on a recurring schedule. |
| Automatic contact export | Auto Export Contact to Klaviyo List | Selected lists can use a scheduled action to export Odoo contacts that match the configured domain. |
| Queue processing | Process Queue Jobs (Klaviyo) | Works through the queued contact imports and campaign activity. |
Queue based processing for larger updates
Contact imports and campaign activity processing use queue records so API responses can be staged and processed in manageable jobs.
The included queue processor runs as a scheduled action. Queue items can also be processed manually when required.
- 100Klaviyo profiles read per request during an import
- 5scheduled actions for audiences, campaigns, reports, exports and the queue
- 2 monthsbefore old queue records and logs are cleaned up automatically
Bring key Klaviyo email activity into Odoo
The connector reads the Klaviyo metrics used for campaign reporting and processes related events into Odoo mailing tracking.
Clicked events can also record the related URL so marketing users can review which links received engagement.
| Klaviyo metric | What it shows in Odoo |
|---|---|
| Received Email | The contact received the campaign |
| Opened Email | The contact opened it |
| Clicked Email | The link the contact clicked, in the campaign's link tracking |
| Bounced Email | The email bounced |
The Import Metrics button on the Klaviyo account picks these four metrics for reporting. Reports start from the Last Campaign Report Imported Date set on the account.
Set up the connection around your marketing process
Have these ready before the first import:
- Odoo 16.0 to 20.0, Community or Enterprise, on Odoo.sh or on-premise: Odoo Online cannot install third-party apps
- The Odoo Email Marketing app, where lists, contacts and campaigns live
- A Klaviyo private API key with full access, created in your Klaviyo account
- One Klaviyo account for the Odoo database: a second account cannot be added
Connect the account
Add the Klaviyo API key and confirm the account connection in Odoo.
Fetch what the workflow needs
Fetch the Klaviyo lists, segments, templates and campaigns needed by the Odoo workflow.
Map the profile fields
Define profile merge-field mappings and decide whether Klaviyo profiles should create or update Odoo contacts.
Choose the automatic lists
Choose which lists should refresh audiences or automatically export matching Odoo contacts.
Where the Klaviyo Odoo integration fits, and where it stops
A good fit when
- Contacts and customer data are kept in Odoo, and email campaigns go out through Klaviyo.
- The marketing team wants to plan campaigns in Odoo Email Marketing.
- Opens, clicks and bounces should be visible on the campaign in Odoo.
- Unsubscribes and blacklisted addresses must stay in step in both systems.
Look at it again when
- Klaviyo flows need Odoo order, checkout or website events: none are sent.
- SMS campaigns or SMS consent must sync: the connector covers email only.
- Several Klaviyo accounts must connect to one Odoo database.
- Segment members must be copied into Odoo: segments arrive as audiences to target, without their members.
Frequently asked questions
Does Klaviyo integrate with Odoo?
Not out of the box: neither Odoo nor Klaviyo ships a connector for the other. An Odoo app such as the TeqStars Klaviyo Connector adds it, linking Odoo Email Marketing with Klaviyo for contacts, lists, consent, templates, campaigns and campaign results.
Can Odoo contacts be synchronized with Klaviyo?
Yes. Supported Odoo mailing contacts can be created or updated as Klaviyo profiles, and Klaviyo profiles can be imported into Odoo. The exact profile fields depend on the configured merge-field mappings.
Can Klaviyo segments be exported from Odoo?
No. In this connector, segments are imported from Klaviyo into Odoo. Those imported segments can then be selected as included or excluded audiences when working with a Klaviyo campaign in Odoo.
Can I send or schedule a Klaviyo campaign from Odoo?
Yes. Supported campaigns can be prepared in Odoo with Klaviyo lists or segments, a Klaviyo template, sender details and Smart Sending. The campaign can then be sent immediately or scheduled.
Are opens, clicks and bounces visible in Odoo?
Supported Klaviyo activity includes received, opened, clicked and bounced email events. These events are processed into Odoo mailing tracking, and clicked URLs can be recorded for click reporting.
Can Klaviyo contacts create Odoo customers?
Yes, when the optional setting is enabled. The connector can create or update related Odoo contacts from imported Klaviyo profile data using email matching and the configured field mappings.
Does this connector synchronize Odoo sales orders with Klaviyo?
No sales-order synchronization is implemented in this module build. Its verified scope focuses on marketing data such as contacts, audiences, templates, campaigns and email activity.
Does it work with Klaviyo flows or SMS?
No. The connector works with Klaviyo email campaigns: it imports and sends email campaigns, and handles email subscription and suppression. It does not create Klaviyo flows, send website or order events that would trigger them, or sync SMS campaigns and SMS consent.
Can multiple Klaviyo accounts be configured in the same Odoo database?
No. The current module enforces a single Klaviyo account configuration per Odoo database.