RekomiRekomiBlogPricing
Rekomi Docs
Rekomi Docs
Welcome to Rekomi
Quickstart for brandsPlans and trialsIntegrationsStripe Connect (sales tracking)Organization settingsTeam managementNotifications

Campaigns and commissions

CampaignsCommission modelsPay per click or lead (CPC & CPL)Coupon-code attributionSub-affiliate recruitingTracking and attribution

Affiliates

Recruit affiliatesManage affiliatesAI co-pilotApply to the curated network

Money flow

SalesPayoutsMulti-currencyTax formsReports

Email

Sending domainBroadcasts
CRM and email integrations

Most popular

MailchimpKlaviyoOmnisendBrevoGetResponse

Creator and SaaS

ConvertKit (Kit)ActiveCampaignbeehiivOntraportMailerLiteMoosend

Specialist platforms

DripSendGridMailjetEmailOctopusFlodeskIterableCampaign MonitorPabbly Email MarketingEmmaMaropostCustomer.ioFreshworks CRMOrttoSendlane

Enterprise and long-tail

SendFoxBenchmark EmailCampaignerCordialE-goiiContactListrakSailthruSelligent (Marigold Engage)SendyVeroVision6Braze
For brandsCRM integrations
|Brands|

Klaviyo

Connect Klaviyo so approved affiliates land in a Klaviyo list automatically.

klaviyo logo

Rekomi's Klaviyo integration subscribes every approved affiliate to a Klaviyo list you pick, then records email marketing consent best-effort.

What syncs

When an affiliate is approved (or, optionally, when they apply), Rekomi runs a three-step sequence:

  1. POST /api/profiles/ creates or matches the profile with email, first_name, last_name (an existing email returns the existing profile's ID, no duplicate is created).
  2. The profile is attached to your chosen list via the list-relationship endpoint. Both steps are synchronous, so a "Succeeded" in Rekomi means the profile really is on the list.
  3. Best-effort: a profile-subscription job records email marketing consent (SUBSCRIBED) for the profile on that list. This step is asynchronous on Klaviyo's side and never fails the sync; if it can't run, the profile is still on the list but without recorded marketing consent, and Klaviyo flows gated on consent will skip it.

Double opt-in interaction: if your Klaviyo list has double opt-in enabled, step 3 triggers Klaviyo's confirmation email and the affiliate must click it before consent is recorded. With single opt-in lists, consent lands immediately. List membership from steps 1-2 happens either way.

Klaviyo handles dedup server-side. Re-subscribing the same email never duplicates the profile; their attributes update in place.

Finding your API key

In Klaviyo:

  1. Click your account name in the top right.
  2. Open Settings → API Keys.
  3. Click Create Private API Key. Give it a name like "Rekomi".
  4. Set the scopes Rekomi needs:
    • Lists: Full Access (needed for the list picker and subscribe-to-list semantics).
    • Profiles: Full Access (needed to create/update profiles).
    • Subscriptions: Full Access (used by the best-effort marketing-consent step; the sync still succeeds without it, but consent won't be recorded).
    • Accounts: Read Only (used by the test-connection ping; if missing, the test falls back to a one-item lists read).
  5. Save and copy the generated key. It starts with pk_.

Important: the public site ID (a 6-character string visible in your Klaviyo URL) is not the same thing. Rekomi will refuse to connect if you paste the public ID, the form validates the pk_ prefix.

Connecting Klaviyo in Rekomi

  1. Go to Integrations in the dashboard sidebar.
  2. Click the Klaviyo card.
  3. Paste your private API key. Click Connect.
  4. Rekomi runs GET /api/accounts/ (with the required revision header pinned to 2025-04-15) to validate the key. Scoped keys without accounts:read are fine; the test falls back to a one-item lists read.
  5. Pick a default list from the List dropdown. The list picker hits Klaviyo's /api/lists/ endpoint, which caps page size at 10, Rekomi paginates via the cursor in links.next and pulls up to 200 lists across pages.

Tags

Klaviyo doesn't have a tag concept in the same shape as Mailchimp. It uses lists + profile properties + segments. Rekomi's tag field is disabled on the Klaviyo card, segment logic happens in Klaviyo, not Rekomi.

To identify Rekomi-sourced profiles in Klaviyo, build a segment filtered on the list you've connected (or on a custom profile property you write yourself via Klaviyo's API). The "Rekomi affiliate" system tag concept from other CRMs doesn't map cleanly to Klaviyo's model.

When sync fires

  • Default: only Approved affiliates sync.
  • Optional: enable "Include applicants before approval" in Advanced to also sync Pending affiliates immediately on apply.

Per-campaign overrides

Each campaign can route to a different Klaviyo list or skip Klaviyo entirely. Open the campaign's Integrations tab to set:

  • A campaign-specific list.
  • A per-campaign disable toggle.

Per-affiliate sync visibility

The affiliate detail page's CRM sync panel shows the per-CRM status for each affiliate, including Klaviyo. The Resync button clears prior job rows and re-fires through the worker.

Troubleshooting

  • "Use the PRIVATE key (starts with 'pk_')", You pasted the public site ID. Re-copy from Klaviyo Settings → API Keys (the private key, not the site ID).
  • "Couldn't load lists: 400, Page size must be an integer between 1 and 10", Old Rekomi build pre-fix. Your current build paginates correctly; if you see this, hard-refresh.
  • 403 on subscribe, Your private API key is missing the Profiles: Full Access scope. Update the scopes in Klaviyo and click Resync on the affected affiliate. Repeated auth failures also mark the integration "action needed" and trigger a reconnect email; after fixing the key, use Resync all on the Failed tile.
  • Profile is on the list but flows don't send to it, The profile landed via the synchronous steps but marketing consent wasn't recorded, either the consent job couldn't run (missing Subscriptions scope) or your list uses double opt-in and the affiliate hasn't confirmed yet. Check the profile's consent status in Klaviyo.

A note on the API

Rekomi uses Klaviyo's JSON:API surface (revision 2025-04-15). Every request must carry:

  • Authorization: Klaviyo-API-Key pk_...
  • revision: 2025-04-15
  • accept: application/vnd.api+json
  • content-type: application/vnd.api+json (for writes)

Brackets in query strings are URL-encoded (%5B and %5D) because Klaviyo's edge rejects literal brackets. None of this affects your usage, it's all internal to Rekomi's provider client.

Disconnecting

Click Disconnect on the Klaviyo connect page. The integration row + any per-campaign overrides are deleted. Historical sync rows are preserved for audit.


See the klaviyo integration overview on the marketing site for use-cases, persona fit, and unique automation patterns.

Mailchimp

Connect Mailchimp so approved affiliates land in a Mailchimp audience automatically, with tags.

Omnisend

Connect Omnisend so approved affiliates are identified in your store account with tags.

On this page

What syncsFinding your API keyConnecting Klaviyo in RekomiTagsWhen sync firesPer-campaign overridesPer-affiliate sync visibilityTroubleshootingA note on the APIDisconnecting