> For the complete documentation index, see [llms.txt](https://docs.flowretail.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flowretail.com/docs/integrations/crm/klaviyo.md).

# Klaviyo

Sync Flow Retail customers and their marketing consents with Klaviyo.

Klaviyo sync keeps your Flow Retail customers and Klaviyo profiles in step, including marketing consent for email and SMS.

***

## What is Klaviyo?

Klaviyo is a marketing automation platform and customer data platform. You use it to send email and SMS campaigns to customer profiles it stores.

***

## How does it work?

The integration syncs in three ways.

**Flow Retail → Klaviyo.** When a customer is created or changed in Flow Retail, their Klaviyo profile is created or updated. This runs in the background, so saving a customer never waits for Klaviyo or fails because of it. The profile gets:

* Name, email, mobile and company name
* Address, city, postal code and country
* Customer type, VAT number, loyalty ID, customer groups and default store, as custom properties

When a mapped consent changes, the customer is subscribed to or unsubscribed from the matching Klaviyo channel.

**Klaviyo → Flow Retail, as it happens.** When someone subscribes or unsubscribes in Klaviyo, the change is recorded as a consent on the Flow Retail customer. This part is optional and needs a webhook (see step 5).

**Klaviyo → Flow Retail, every night.** At 04:00, Klaviyo profiles are imported:

* A profile that matches an existing customer updates that customer's consents where they differ.
* A profile with no match becomes a new customer, if it has a first name, a last name, and an email or mobile. Other profiles are skipped.
* Profiles that were never subscribed, or are waiting for double opt-in, don't count as a "no". Flow Retail records only explicit choices.

{% hint style="info" %}
Consent sync only works for the channels you map in step 4. With no consents mapped, only profile data syncs.
{% endhint %}

***

## Before you start

* A Klaviyo account.
* The Klaviyo extension enabled for you. Contact Flow Retail support to have it added.
* A consent in Flow Retail for each Klaviyo channel you want to sync: email marketing, SMS marketing and SMS transactional.

***

## Set up Klaviyo step by step

{% stepper %}
{% step %}

#### Create a private API key in Klaviyo

In Klaviyo, create a private API key with access to profiles and subscriptions.
{% endstep %}

{% step %}

#### Open the extension

Go to **Admin → Settings → Extensions** and select **Klaviyo**.
{% endstep %}

{% step %}

#### Add the API key

Paste the key into **Klaviyo Private API Key**. Make sure <kbd>Active</kbd> is switched on.
{% endstep %}

{% step %}

#### Map your consents

Choose a Flow Retail consent for each channel you want to sync:

* **Consent UID for email marketing**
* **Consent UID for SMS marketing**
* **Consent UID for SMS transactional**

Each consent can be used for one channel only. Missing a consent? Create it under **Admin → Settings → Consents → New Consent**.

Leave **Klaviyo Profiles Reverse-Sync Cursor** as it is — the nightly import manages it. Select **Save**.
{% endstep %}

{% step %}

#### Optional: receive consent changes from Klaviyo

To get subscribes and unsubscribes from Klaviyo straight away, rather than overnight, create a webhook in Klaviyo for subscription events. Point it to:

```
https://api.flowretail.com/v2/tenants/<your tenant ID>/callbacks/klaviyo
```

Paste the webhook's signing secret into **Klaviyo Webhook Signing Secret**. It must be at least 16 characters. Without it, Flow Retail ignores the webhook.

Klaviyo webhooks require a Klaviyo plan that includes them. Contact Flow Retail support if you need your tenant ID.
{% endstep %}
{% endstepper %}

***

## Good to know

* **Two customers, one email.** Each Flow Retail customer gets their own Klaviyo profile, even if two customers share an email address.
* **Only the right contact gets a channel.** Customers without an email aren't subscribed to email marketing, and customers without a mobile aren't subscribed to SMS.
* **Imported customers are marked.** Customers created by the nightly import have Klaviyo as their origin.

*Last updated 24.09.2026*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.flowretail.com/docs/integrations/crm/klaviyo.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
