How to connect Klaviyo
Connecting Klaviyo lets your referral program feed into your broader email strategy. Bloop keeps Klaviyo in the loop automatically: who your advocates are, which campaigns they belong to, and what their referral link and code are — so you can segment customers, send broadcasts, and build automations without exporting a CSV.
Set it up under Settings → Integration → Klaviyo. The page has one connection and two sections, Referral program and Affiliate program, each with its own on/off switch and re-sync. The Referral program section is available on the Premium plan (Scale on older plans); on lower plans its switch stays locked. The Affiliate program section isn’t plan-locked, see syncing affiliates.
How it works
Section titled “How it works”Everything that happens in your referral program is reflected in Klaviyo on three layers:
flowchart LR A["A customer joins your<br/>referral program"] --> B["Bloop updates their<br/>Klaviyo profile"] B --> C["They appear in each<br/>campaign's segment"] B --> D["Events are sent along the way<br/>(join, share, purchase...)"] C --> E["You: filter customers and send<br/>campaign-specific broadcasts"] D --> F["You: build Klaviyo flows<br/>(welcome, thank-you, win-back)"]
Connecting Klaviyo
Section titled “Connecting Klaviyo”
- In Klaviyo, create a private API key with Full Access to List, Profiles, Events and Segments.
- In Bloop, open the Klaviyo page and turn on the Referral program section, the Affiliate program section, or both. Until one is on, Connect is disabled.
- Press Connect, paste the key, and press Verify. If the key lacks any of these permissions, Bloop names the ones that are missing. Klaviyo keys can’t be edited, so create a new key instead of changing the old one.
- Press Connect to save. Bloop immediately runs a full profile sync, so your existing advocates carry their properties from day one — without it, a segment like “all referrers” misses your existing base.
While a sync runs, the page shows its progress as N of M profiles, then a summary of how many synced and how many failed. A large audience takes a while; the sync continues server-side, and Bloop stops polling after about 30 minutes.
Turning a section off pauses that program’s sync without removing the key. Connected reopens the same modal if you need to view or replace the key.
Disconnect stops all syncing with Klaviyo and removes the saved API key. Profiles, segments and events already in Klaviyo stay there, and you can connect again at any time.
Keeping Klaviyo in step
Section titled “Keeping Klaviyo in step”Bloop updates a profile whenever something about that customer changes. Re-sync profiles rebuilds every profile from scratch. Use it when something looks missing or out of date in Klaviyo, after a bulk audience change, or after you disable a campaign.
Only active campaigns sync, and referrers without an email address are skipped. Disabling a campaign does not update Klaviyo by itself: its link, code and name stay on your advocates’ profiles until you click Re-sync profiles, which clears them.
What’s on an advocate’s profile
Section titled “What’s on an advocate’s profile”| Property | What it holds |
|---|---|
BLOOP Campaigns |
The campaigns they currently belong to (a list — one advocate can be in several) |
BLOOP Campaign Link {id} / BLOOP Campaign Code {id} |
Their personal referral link and code, one pair per campaign, where {id} is the campaign’s number. Insert them into your emails |
BLOOP Hub Portal |
A permanent link to their referral hub, so it’s safe to drop into a flow email that sends days later |
BLOOP Referral revenue / BLOOP Successful referrals |
Lifetime totals across all campaigns — never reduced when someone leaves a campaign |
BLOOP Is referrer / BLOOP Is referee |
Who’s an advocate, who was referred (referee-only profiles get just the identity fields) |
BLOOP Joining date / BLOOP Joining source |
When and how they joined |
BLOOP Purchases needed for next reward / BLOOP Next reward description |
Where they stand against the next tier, when tier rewards are on |
To insert a campaign’s link into an email template, look up the property for that campaign. For the campaign with id 123:
{{ person|lookup:'BLOOP Campaign Link 123' }}Use BLOOP Campaign Code 123 the same way for the code. The id is the number at the end of the property name: open the Klaviyo profile of someone in that campaign and read their BLOOP properties. It is also the BLOOP - Campaign id on every event Bloop sends, and the number after campaignId= in the address of the campaign page in Bloop.
A ready-made segment for every campaign
Section titled “A ready-made segment for every campaign”Once a campaign leaves draft, open Klaviyo and the segment BLOOP - {campaign name} is already there:
- Membership updates itself. Someone joins → they enter. Someone leaves → they exit. Zero maintenance.
- Broadcasts per campaign. Pick the segment as the recipient list — only that campaign’s advocates get the email.
- Flow trigger. Use Klaviyo’s Added to segment trigger to welcome customers into a specific campaign.
- Renames handled. Rename the campaign and the segment follows. Bloop creates a segment when a campaign leaves draft and when you upgrade the profile format, not on a plain Re-sync profiles. If you delete a segment by accident, renaming the campaign recreates it.
Events Bloop sends
Section titled “Events Bloop sends”Each event appears in Klaviyo as a metric you can use as a flow trigger. Every event carries the campaign name and id, so a flow can target one specific campaign.
| Bloop metric | Fires when | Flow ideas |
|---|---|---|
BLOOP - Join program |
A customer joins your program | Welcome email with their referral link |
BLOOP - Referral sharing |
An advocate shares their link by email | Thank them, restate the reward |
BLOOP - Referral purchase pending |
A friend purchased; the reward is under review | “Your reward is on its way” |
BLOOP - Successful referral |
A referral converts (carries the reward type and code) | Congratulations + the reward code |
BLOOP - Referral made ineligible |
A referral is rejected | A tactful heads-up with the reason |
BLOOP - Referee receives discount |
The referred friend gets their discount | Remind them before the code expires |
BLOOP - Left campaign |
A customer leaves one campaign | Stop share reminders · send a win-back email |
BLOOP - Removed from program |
A customer is removed from the program | Exclude them from all related automations |
When a customer leaves a campaign
Section titled “When a customer leaves a campaign”Say your campaign targets VIP-tier customers only, and Anna drops out of that tier:
flowchart TD A["Anna no longer qualifies<br/>for the VIP Program campaign"] --> B["Her referral link and code<br/>for this campaign stop working"] B --> C["Her profile updates: VIP Program<br/>disappears from her campaign list"] C --> D["She automatically exits the<br/>'BLOOP - VIP Program' segment"] C --> E["The 'BLOOP - Left campaign'<br/>event fires"] E --> F["Your flows can react: stop share<br/>reminders · send a win-back email"] D -.-> G["Revenue and referrals she<br/>brought in are KEPT — forever"]
Three things to know:
- The Left campaign event carries no link or code — they were just deactivated, so your flows can never send a dead link by mistake.
- If she’s still in another campaign, everything about that campaign stays untouched.
- When you change a campaign’s audience (moving many customers at once): profiles and segments still update correctly, but no events fire — your flows never mass-email by accident.
Sync your affiliates
Section titled “Sync your affiliates”Turn on the Affiliate program section to send your affiliates to Klaviyo on the same connection. Its Re-sync profiles pushes every affiliate in your store and refreshes their segments.
Affiliate properties all start with BLOOP Affiliate (plus BLOOP Is affiliate), so they never collide with the referral properties above:
| Property | What it holds |
|---|---|
BLOOP Is affiliate |
Marks the profile as an affiliate |
BLOOP Affiliate status |
Their application status |
BLOOP Affiliate joined date |
When they joined |
BLOOP Affiliate coupon / BLOOP Affiliate link |
Their affiliate coupon and link |
BLOOP Affiliate portal |
A link to your affiliate portal |
BLOOP Affiliate Campaigns |
The affiliate campaign they belong to |
BLOOP Affiliate total sales / BLOOP Affiliate commission / BLOOP Affiliate sale count |
Their sales and commission totals |
Bloop keeps two kinds of segment up to date: BLOOP - All affiliates, and one BLOOP Affiliate - {campaign name} segment per affiliate campaign.
| Bloop metric | Fires when |
|---|---|
BLOOP - Affiliate joined program |
Someone signs up through your registration form |
BLOOP - Affiliate added manually |
You add an affiliate yourself |
BLOOP - Affiliate approved / BLOOP - Affiliate rejected |
You approve or reject an application |
BLOOP - Affiliate new coupon |
An affiliate gets a new coupon |
BLOOP - Affiliate new sale |
A sale is recorded for an affiliate |
BLOOP - Affiliate sale approved / BLOOP - Affiliate sale declined |
You approve or decline a sale |
BLOOP - Affiliate payout paid |
You mark a payout as paid |
The same rule applies as for referrals: if a Klaviyo flow replaces one of Bloop’s affiliate emails, turn that email off in Bloop.
Upgrading from the legacy setup
Section titled “Upgrading from the legacy setup”The way Bloop writes referral links to a profile has changed twice. A connection keeps working in the format it was created in, and the Klaviyo page shows an Upgrade available badge next to Re-sync profiles until you move to the current one. New connections start on the current format.
| Format | How a profile holds referral links and codes |
|---|---|
| Legacy | One link and one code on the profile |
| Earlier campaign-based | The BLOOP Campaign Links and BLOOP Campaign Codes dictionaries, keyed by campaign name, next to the per-campaign properties |
| Current | One pair of properties per campaign, BLOOP Campaign Link {id} and BLOOP Campaign Code {id}, and no dictionaries |
flowchart LR V1["Legacy setup<br/>1 link + 1 code on the profile<br/>your current flows keep working"] V2["Earlier campaign-based setup<br/>link and code dictionaries<br/>keyed by campaign name"] V3["Current setup<br/>one link and one code per campaign<br/>+ segments and the Left campaign event"] V1 -->|"Re-sync profiles and confirm"| V3 V1 -->|"Create an additional campaign"| V3 V2 -->|"Re-sync profiles and confirm"| V3
When you’ll be asked: when you press Re-sync profiles on the Klaviyo page, or, on the legacy format only, when you create an additional campaign - one profile-level link and code can’t represent several campaigns, so a second campaign requires the upgrade. Either way you get a confirmation first, and Upgrade & sync (on the Klaviyo page) or Upgrade & continue (when creating a campaign) is what commits it. Cancel and nothing changes - on the campaign screen, cancelling also means no campaign is created. Upgrading is one-way.
If you are on the earlier campaign-based format, the confirmation also offers Sync without upgrading. It re-syncs your profiles, keeps the format and properties you have now, and leaves the upgrade for later.
What changes — profile properties move to the per-campaign format:
| Old property | Use instead |
|---|---|
BLOOP Referral link |
BLOOP Campaign Link {id} (per campaign). The old property now points to the advocate’s Hub |
BLOOP Referral code |
BLOOP Campaign Code {id} (per campaign) |
BLOOP Campaign Links / BLOOP Campaign Codes (earlier campaign-based format) |
BLOOP Campaign Link {id} / BLOOP Campaign Code {id}. The upgrade clears both dictionaries on every profile, so an email or segment still reading them comes back empty |
| (new) | BLOOP Campaigns — the list your campaign segments are built on |
What you get: a ready-made segment for every campaign, per-campaign links and codes for your broadcasts, and the BLOOP - Left campaign event.
What never changes: the metric names your flows trigger on, and all revenue and referral statistics.
Before you upgrade from the earlier campaign-based format, switch every email template and segment that reads the dictionaries to the per-campaign properties. Those profiles already carry them, and the upgrade clears the dictionaries. After upgrading from legacy, update any segments or email templates that used the old properties. That’s the one piece of work the upgrade leaves you.
Three high-value plays
Section titled “Three high-value plays”- Top-referrer VIP segment. Build on
BLOOP Successful referrals≥ your threshold — give richer rewards or early access. - Reward thank-you flow. Trigger off the
BLOOP - Successful referralevent so gratitude lands the instant a referral converts. - Win-back leavers. Trigger off
BLOOP - Left campaignto invite the customer into another campaign — their lifetime stats travel with them.
Common mistakes to avoid
Section titled “Common mistakes to avoid”- Segmenting off an event instead of a property. An event captures a moment, not a standing fact — use the
BLOOP Successful referralsproperty (or the ready-made campaign segments) for durable segments. - Triggering a flow off a property. Properties don’t “happen” — use the event to start a flow.
- Upgrading and leaving old segments in place. A segment built on
BLOOP Referral codesilently stops matching. - Upgrading while templates still read the dictionaries. An email that looks up
BLOOP Campaign LinksorBLOOP Campaign Codesgoes out without its link or code once the upgrade clears them. - Keeping Bloop’s built-in email on after building the equivalent flow. Your advocates get two emails.
Related
Section titled “Related”- Mailchimp integration — the equivalent integration for Mailchimp.
- Referral analytics — the in-app view of the same performance.

