Klaviyo Setup
This guide is for brand managers connecting a Klaviyo account to io.tt. Once setup is complete, every experience signup will create or update a Klaviyo profile automatically. Opted-in participants will be subscribed to the list configured for each experience.
For developer documentation on the SDK fields and Klaviyo property mapping, see the Klaviyo Developer Guide.
Overview
The Klaviyo integration is configured at two levels:
| Level | What's configured | Who sets it |
|---|---|---|
| Organisation | Klaviyo API key | io.tt account manager (once per brand) |
| Experience | Klaviyo list ID | io.tt account manager (once per experience) |
No dashboard access is required from your side — you provide the credentials and list IDs to your io.tt account manager, who configures the integration on your behalf.
What You Need to Provide
1. Klaviyo API Key (once per organisation)
The Klaviyo API key is set once at the organisation level and applies to all experiences for that brand.
| What to provide | Where to find it in Klaviyo |
|---|---|
| Private API Key | Klaviyo → Settings → API Keys → Create Private API Key |
When creating the API key, ensure it has the following scopes enabled:
| Scope | Required for |
|---|---|
| Profiles (read + write) | Creating and updating profiles |
| Lists (read + write) | Subscribing profiles to lists |
| Subscriptions (write) | Managing email subscriptions |
Use a dedicated API key for io.tt rather than a shared one. This makes it easy to revoke access without affecting other integrations.
2. List ID (once per experience)
Each experience is linked to a specific Klaviyo list. Opted-in participants are subscribed to this list on signup.
| What to provide | Where to find it in Klaviyo |
|---|---|
| List ID | Klaviyo → Lists & Segments → select the list → Settings → List ID (e.g. XaBcD1) |
You will need one list ID per experience. It is common to:
- Use a single master marketing list across all experiences for the brand
- Use separate lists per experience type (e.g. one for competitions, one for loyalty)
- Use separate lists per campaign for more granular segmentation
Discuss the list structure with your marketing team before setup — it determines how you segment and reach participants in Klaviyo.
What Happens After Setup
Once the integration is live for an experience:
- Every signup creates or updates a Klaviyo profile using
emailas the unique identifier - Participants who granted
marketingConsent: trueare subscribed to the experience's configured list - Participants who did not grant consent have a profile created but are not subscribed to any list — they will appear in your Klaviyo profiles but not in list-based segments
- io.tt context data (experience name, experience type, brand name) is written to custom profile properties and available for segmentation
No action is required per signup — once the integration is configured, all experience registrations flow to Klaviyo automatically.
Profile Identity and Deduplication
Klaviyo deduplicates profiles on email. If a participant registers again — either through the same experience or a different one — their existing Klaviyo profile is updated rather than a new one created. Their io.tt context properties (experience name, type) will reflect the most recent registration.
io.tt also sets externalId on the Klaviyo profile using the io.tt participant ID, which allows cross-referencing between platforms.
Checklist
Before going live, confirm the following:
- Klaviyo Private API Key created with Profiles, Lists, and Subscriptions scopes
- API key shared with io.tt account manager
- Klaviyo list(s) created for the experience(s)
- List ID(s) shared with io.tt account manager, mapped to the correct experience(s)
- io.tt account manager has confirmed the integration is active