---
title: "Linkbreakers + Klaviyo: sync QR code profiles to Klaviyo lists"
description: "Connect Klaviyo with a private API key and every person who scans your QR codes and gives their email or phone becomes a Klaviyo profile, added to the list you choose, with every form answer as a profile property. Visitors who consented are subscribed to email marketing on that list, through the list's double opt-in when it has one. Setup, key scopes, what is synced, and the Assistant and MCP tools."
canonical: "https://linkbreakers.com/help/article/linkbreakers-klaviyo-integration-sync-qr-code-profiles-to-lists"
last-updated: 2026-11-09
---

# Linkbreakers + Klaviyo: sync QR code profiles to Klaviyo lists

> Connect Klaviyo with a private API key and every person who scans your QR codes and gives their email or phone becomes a Klaviyo profile, added to the list you choose, with every form answer as a profile property. Visitors who consented are subscribed to email marketing on that list, through the list's double opt-in when it has one. Setup, key scopes, what is synced, and the Assistant and MCP tools.

:::try-ai-prompt {"prompt":"Connect Klaviyo with my private API key, add synced profiles to my QR signups list, and subscribe only people who ticked my Consent field","description":"Connect Klaviyo with the Assistant.","target":"assistant"}:::

## Short answer

Linkbreakers syncs the people who scan your QR codes to Klaviyo directly. In the dashboard, open **Integrations**, pick **Klaviyo**, paste a Klaviyo private API key (`pk_...`) and select **Connect**. From then on, every person who goes through one of your links or QR codes and whose email or phone Linkbreakers knows, for example after a form, is created or updated as a Klaviyo profile, with their name, phone and every form answer as a profile property, and added to the Klaviyo list you choose.

Adding someone to a list records no consent in Klaviyo. Visitors who said yes to your marketing are subscribed to email marketing on that list, and Klaviyo sends its confirmation email first when the list uses double opt-in. No Zapier, Make or webhook is needed, and the integration is available on every plan.

## Quick summary

- Connect once per workspace with a private API key from **Settings > Account > API keys**
- Profiles are created or updated; Klaviyo matches them on email, then phone
- Visitors known only by a phone in international format are synced too
- Every answer becomes a profile property under its own key: nothing to create in Klaviyo
- Optionally added to one list
- Consent subscribes the email on that list, never over an unsubscribe or a suppression
- Only people's visits: bots, link previews and AI agents never become profiles
- Also set up from the Assistant, the MCP server or the REST API

## How it works

A profile is synced when a visitor goes through a step of a link's workflow and Linkbreakers knows their email or phone. That is usually right after a [form](/help/article/how-to-create-a-form), but it can also come from the chat bot or any step that saves visitor data. Linkbreakers sends the profile to Klaviyo from its servers, once per step, at the moments the connection covers (all of them by default).

Linkbreakers imports the profile (Klaviyo creates it or updates the one with that email, then that phone), adds it to your list, and then, for a visitor who consented, subscribes it to email marketing on that list. Properties the visitor did not give are left as they are on the profile.

## Connect Klaviyo

1. In Klaviyo, open **Settings > Account > API keys** and select **Create Private API Key**. Give it write access to **Profiles**, **Lists** and **Subscriptions**, and read access to **Accounts** if you want the page to show the account name. Subscriptions is used only for visitors who consented.
2. In Linkbreakers, open **Integrations** in the dashboard and pick **Klaviyo**.
3. Paste the key in **Klaviyo private API key** and select **Connect**. Linkbreakers checks it against Klaviyo before storing it. The 6-character public key cannot write profiles and is refused.
4. Under **Add contacts to a list**, choose the Klaviyo list, or **No list: contacts only**.
5. Set the options and the delivery setting below, then save.

The key is encrypted when it is stored and never shown again.

## What gets synced

| Linkbreakers | Klaviyo |
|---|---|
| Email | Profile email |
| Phone, in international format (`+44...`) | Profile phone number |
| First name, last name | First name, last name |
| Form answers and other visitor data | Profile properties under the same key |
| The list you chose | Added to the list |
| Marketing consent (optional) | Email marketing subscription on that list |

Klaviyo creates a profile property the first time it is sent, so every answer reaches the profile under its own key, such as `company` or `rating`, with nothing to set up in Klaviyo. Keys starting with `$` are Klaviyo's own and are left out. Properties are kept within the size Klaviyo accepts in one import.

## Marketing consent in Klaviyo

Choose the answer where people agree to hear from you under **Marketing consent**: the **Linkbreakers consent** (a Consent field on your form, or the marketing consent goal of the [chat bot](/help/article/how-to-add-an-ai-chat-bot-to-a-qr-code)), or any other answer, such as a checkbox of your own.

For a visitor who said yes, with an email and a list chosen:

- **Not subscribed yet**: subscribed to email marketing on your list. On a double opt-in list, Klaviyo sends its confirmation email and subscribes them on the click
- **Already subscribed**: added to the list, so no second confirmation is sent
- **Unsubscribed, or suppressed** (globally or from this list): only added to the list, never subscribed again

For a visitor who did not say yes, or without a list, the profile's consent is never touched: the profile is imported and added to the list. Consent is only recorded for email, and only with a list, since Klaviyo subscribes people to a list.

**Confirm by email first (Klaviyo's double opt-in).** In Klaviyo, double opt-in is a setting of the list. With this option on, Linkbreakers checks the list first: on a single opt-in list, which would subscribe without a confirmation, the profile is added to the list but not subscribed, and the page says why. Turn on double opt-in in the list's settings in Klaviyo, or turn the option off. Without the option, a double opt-in list still confirms by email: Linkbreakers never weakens Klaviyo's setting.

You can also tick **Add to the list only those who consented**. Klaviyo profiles have no tags, so the tags option is not shown.

## Which visitors and which links

The Klaviyo page has the same three settings as the other Linkbreakers integrations:

- **Where**: every link, or only some links, directories and tags
- **When**: the moments of a visit (Entry, Interaction, Routing, Exit), or specific steps
- **What is sent**: all visitor data, only some, or just the visit. Email and phone are always sent

Only visits by people are synced. Visits past your plan's tracked visits allowance are not synced.

## What is not synced

- Visitors with neither an email nor a phone
- A phone that is not in international format (`+` and the country code): it is left off the profile, and a visitor known only by such a number is refused by the sync, which shows as the last error on the page
- SMS consent: only email marketing consent is recorded
- Anything back from Klaviyo

## Set it up from the Assistant, MCP or the API

**Assistant**: in the dashboard, ask "Connect Klaviyo with my private API key and add new profiles to my QR signups list".

**MCP server**: an agent connected to the [Linkbreakers MCP server](/help/article/mcp-server-setup) has `contact_integration_connect`, `contact_integration_lists`, `contact_integration_update`, `contact_integration_test`, `contact_integration_get`, `contact_integrations_list` and `contact_integration_disconnect`, with the tool `CONTACT_TOOL_KLAVIYO`.

**REST API**, with a token that has the `integrations:write` scope:

```bash
curl -X POST https://api.linkbreakers.com/v1/integrations/contacts/CONTACT_TOOL_KLAVIYO/connect \
  -H "Authorization: Bearer $LINKBREAKERS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "pk_..."}'

curl -X PATCH https://api.linkbreakers.com/v1/integrations/contacts/CONTACT_TOOL_KLAVIYO \
  -H "Authorization: Bearer $LINKBREAKERS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"contactListId": "AbC123", "options": {"consentAttributeKey": "$marketingConsent"}}'
```

## Limits and caveats

- **One Klaviyo account and one list per workspace**
- **Consent needs a list and an email**: without them, nobody is subscribed
- **Double opt-in follows the Klaviyo list's setting**
- **Phones must be international** to be synced
- **No retries.** A profile Klaviyo refuses is reported as the last error on the page, not sent again

## Frequently asked questions

### Do I need to create custom properties in Klaviyo first?

No. Klaviyo creates a profile property the first time it receives one, so every answer arrives under its own key.

### Which scopes does the private API key need?

Write access to Profiles, Lists and Subscriptions. Subscriptions is only used to subscribe visitors who consented. Accounts read is optional and only shows the account name on the Linkbreakers page.

### Are profiles added to my list subscribed to marketing?

Only those who said yes on the consent answer you chose. Adding a profile to a list records no consent in Klaviyo.

### Will someone who unsubscribed be subscribed again?

No. Unsubscribed and suppressed profiles are added to the list but never subscribed by Linkbreakers.

### What happens when I disconnect Klaviyo?

Visitors stop being synced and the stored key is deleted. Profiles already in Klaviyo stay there.

## Sources

- Linkbreakers Klaviyo integration page, API and MCP tools, checked in the product on 2026-11-09.
- Klaviyo API overview: https://developers.klaviyo.com/en/reference/api_overview

## Last reviewed

2026-11-09 by Laurent Schaffner.
