Skip to content

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.

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)"]

The Klaviyo integration page

  1. In Klaviyo, create a private API key with Full Access to List, Profiles, Events and Segments.
  2. 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.
  3. 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.
  4. 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.

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.

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.

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.

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

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.

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.

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.

  • 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 referral event so gratitude lands the instant a referral converts.
  • Win-back leavers. Trigger off BLOOP - Left campaign to invite the customer into another campaign — their lifetime stats travel with them.
  • Segmenting off an event instead of a property. An event captures a moment, not a standing fact — use the BLOOP Successful referrals property (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 code silently stops matching.
  • Upgrading while templates still read the dictionaries. An email that looks up BLOOP Campaign Links or BLOOP Campaign Codes goes 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.