Email marketing integrations
Sprout Affiliate can keep your affiliates in Mailchimp, Klaviyo, Omnisend, Kit, MailerLite, or HubSpot. Each affiliate lands there with their program, their referral link, their discount code, and a status that changes when you approve or pause them. That status is what makes an integration worth connecting: you can start a welcome series the moment someone is approved, without sending it by hand.
The integrations are in Sprout Affiliate under Settings › Integrations, in the Email marketing group. Each service has a Setup guide link beside it that opens its section on this page.
Before you start
- Plan. The email marketing integrations are on the Professional plan. On a lower plan the rows show the plan name instead of a Connect button. If your store moves off Professional while a service is connected, syncing pauses and the row says so. Nothing waiting is lost, and it carries on when you upgrade again. Disconnect stays available either way.
- Who is synced. An affiliate is sent to your email service only if they have an email address and receive your store's announcements. Announcements are on for every affiliate unless they switch them off, under Notifications in their portal or with the unsubscribe link in any announcement. Someone who switches them off is taken back out, as described under each service below.
- Applicants too. Applicants who have agreed to announcements are included, with the status applied, so you can follow up with someone still waiting for a decision.
- More than one service. You can connect all six at once. Each one is kept up to date separately.
- Your key stays private. Every service connects with an API key or token you create in that service. Sprout Affiliate stores it encrypted and never shows it again, and the box you paste it into hides it, with an eye to show what you typed. You can cancel it in your email service at any time, which stops the connection.
Mailchimp
Mailchimp calls a contact list an audience. You choose one audience, and your affiliates are added to it.
Step 1: Choose or create an audience
You can use an audience you already have. If you want affiliates kept apart from your customers, create one for them first:
- Sign in to Mailchimp.
- Go to Audience and click Create Audience.
- Name it, for example Affiliates, fill in the sender details Mailchimp asks for, and click Save.
Some Mailchimp plans allow only one audience. On those plans, use the one you have. The tags described below keep affiliates easy to find in it.
Step 2: Create an API key
- In Mailchimp, click your name, then Account & billing.
- Click Extras, then API keys.
- In the Your API keys section, click Create a key. Name it Sprout Affiliate so you recognize it later.
- Copy the key. A Mailchimp key ends with a hyphen and your account's data centre, like
-us19.
Step 3: Connect it in Sprout Affiliate
- Go to Settings › Integrations and click Connect on the Mailchimp row.
- Paste the key into Mailchimp API key and click Connect.
- An Audience list appears with the audiences in your Mailchimp account, and how many contacts each has. Pick the one affiliates should go into.
- Click Use this audience.
Connect Mailchimp
Use this audience
The Mailchimp row then shows Connected, and every affiliate who can be synced is queued. See When it syncs for how long that takes.
What Sprout Affiliate adds to Mailchimp
When you connect, Sprout Affiliate adds five fields to the audience, so there is nothing to set up yourself. A field you already have with the same tag is left as it is. Each affiliate's contact is then filled in like this:
| Merge tag | Field | What it holds |
|---|---|---|
FNAME | First Name | The first word of the affiliate's name |
LNAME | Last Name | The rest of their name |
AFFSTATUS | Affiliate status | applied, approved, or paused |
AFFPROG | Affiliate program | The name of their program |
AFFREF | Affiliate ref | Their link name |
AFFCODE | Affiliate discount code | Their discount code, if they have one |
AFFLINK | Affiliate referral link | Their full referral link |
To use one in a Mailchimp email, type its merge tag between *| and |*. For example, *|AFFLINK|* puts each affiliate's own link in the email, and *|AFFCODE|* their code.
Tags
Every synced contact gets the tag Sprout Affiliate, and exactly one status tag:
| Tag | When |
|---|---|
| Affiliate: applied | They have applied and are waiting for your decision |
| Affiliate: approved | You approved them, or resumed them after a pause |
| Affiliate: paused | You paused them |
When the status changes, the old status tag is removed and the new one added in the same step, so a contact never carries two. To send a welcome series when someone is approved, create a Mailchimp automation (a Customer Journey) that starts when the tag Affiliate: approved is added.
Subscriptions and opt-outs
- An affiliate who is new to the audience is added as subscribed, because they receive your store's announcements. Mailchimp does not send them a confirmation email.
- An affiliate who is already in the audience keeps the subscription status they have. Sprout Affiliate updates their fields and tags only.
- An affiliate who switches off your announcements, or unsubscribes from one, is archived in the audience. Archiving is Mailchimp's way of removing a contact while keeping their history.
Klaviyo
Klaviyo calls a contact list a list. Sprout Affiliate's box calls it an audience, but it is the same thing: you choose one list, and affiliates are added to it.
Step 1: Choose or create a list
- Sign in to Klaviyo.
- Click Audience, then Lists & Segments, then Create New, then Create List.
- Name it, for example Affiliates, and create it.
Step 2: Create a private API key
- Click your account name at the bottom left, then Settings.
- Open Account, then API keys, and click Create Private API Key.
- Name it Sprout Affiliate and choose Full Access Key. If you would rather give only what is needed, choose a custom key with full access to Lists, Profiles, and Subscriptions.
- Create the key and copy it. A private key starts with
pk_. The public key (also called the site ID) will not work, and Sprout Affiliate says so if you paste it.
Step 3: Connect it in Sprout Affiliate
- Go to Settings › Integrations and click Connect on the Klaviyo row.
- Paste the key into Klaviyo private API key and click Connect.
- Pick the list from Audience, and click Use this audience.
What Sprout Affiliate adds to Klaviyo
Each affiliate's profile gets their first and last name, and these custom properties. Klaviyo needs no setup for them.
| Property | What it holds |
|---|---|
| Sprout Affiliate | yes |
| Affiliate status | applied, approved, or paused |
| Affiliate program | The name of their program |
| Affiliate ref | Their link name |
| Affiliate discount code | Their discount code, if they have one |
| Affiliate referral link | Their full referral link |
Klaviyo has no tags, so the status is the Affiliate status property. To send a welcome series, build a flow triggered by your list, or by a segment where Affiliate status equals approved. In an email, a property goes in as {{ person|lookup:'Affiliate referral link' }}.
Subscriptions and opt-outs
- An affiliate who is new to Klaviyo is added to your list as subscribed to email marketing, because they receive your store's announcements. If your list uses double opt-in, Klaviyo sends them its confirmation email first.
- An affiliate who is already in Klaviyo keeps the consent they have. Sprout Affiliate updates their properties and adds them to the list, and never re-subscribes someone who unsubscribed in Klaviyo.
- If the subscription is refused, usually because the key has no Subscriptions access, the row says so in Klaviyo's words. The affiliate is still on the list with their properties.
- An affiliate who switches off your announcements is taken off the list. Their profile and its properties stay in Klaviyo.
Omnisend
Omnisend has no lists to choose from. Affiliates are added to your contacts and marked with tags, which Omnisend's segments and automations read.
Step 1: Create an API key
- Sign in to Omnisend, or create an account.
- Open Store settings, then Integrations & API, then API keys, and create a key. Omnisend's own guide to generating an API key has pictures of each step.
- Copy the key.
Step 2: Connect it in Sprout Affiliate
- Go to Settings › Integrations and click Connect on the Omnisend row.
- Paste the key into Omnisend API key and click Connect.
That is all. There is no list to pick, so the row shows Connected straight away and your affiliates are queued.
What Sprout Affiliate adds to Omnisend
Each contact gets the affiliate's first and last name, the tag Sprout Affiliate, one status tag (Affiliate: applied, Affiliate: approved, or Affiliate: paused, the same as Mailchimp), and these custom properties:
| Property | What it holds |
|---|---|
affiliateStatus | applied, approved, or paused |
affiliateProgram | The name of their program |
affiliateRef | Their link name |
affiliateCode | Their discount code, if they have one |
affiliateLink | Their full referral link |
Tags you added to a contact yourself are kept. Only Sprout Affiliate's own tags are changed.
Subscriptions and opt-outs
- An affiliate who is new to Omnisend is added as subscribed to email. An existing contact keeps the status they have.
- An affiliate who switches off your announcements has Sprout Affiliate's tags taken off. The contact stays in Omnisend.
Kit
Kit (formerly ConvertKit) has no lists. You choose one of your forms or one of your tags, and affiliates are added to it. Kit's automations can start from either.
Step 1: Choose a form or a tag
You can use a form you already have. To keep affiliates apart from your other subscribers, create a tag for affiliates in Kit first, for example Affiliates, and choose that. Sprout Affiliate's own tags (below) are not offered as a choice.
Step 2: Create an API key
- Sign in to Kit.
- Click your name at the top right, then Settings, then Developer.
- Under V4 Keys, click Add a new key, name it Sprout Affiliate, and click Create API Key.
- Copy the key. Kit shows it only once.
Step 3: Connect it in Sprout Affiliate
- Go to Settings › Integrations and click Connect on the Kit row.
- Paste the key into Kit API key and click Connect.
- The Audience list shows your forms under Forms and your tags under Tags. Pick one, and click Use this audience.
What Sprout Affiliate adds to Kit
When you connect, Sprout Affiliate adds these custom fields to your Kit account, each with the key shown under it. A field you already have with the same name is used as it is. The affiliate's first name goes in Kit's own First name.
| Field | What it holds |
|---|---|
| Last name | The rest of their namelast_name |
| Affiliate status | applied, approved, or pausedaffiliate_status |
| Affiliate program | The name of their programaffiliate_program |
| Affiliate ref | Their link nameaffiliate_ref |
| Affiliate discount code | Their discount code, if they have oneaffiliate_discount_code |
| Affiliate referral link | Their full referral linkaffiliate_referral_link |
In a Kit email, a field goes in as {{ subscriber.affiliate_referral_link }}.
Every synced subscriber also gets the tag Sprout Affiliate and exactly one status tag, the same three as Mailchimp: Affiliate: applied, Affiliate: approved, or Affiliate: paused. When the status changes, the old status tag comes off. To send a welcome series, build a Kit visual automation that starts when a subscriber is added to the tag Affiliate: approved.
Subscriptions and opt-outs
- An affiliate who is new to Kit is added as an active subscriber, because the affiliate receives your store's announcements.
- An affiliate who is already an active subscriber keeps that state. Sprout Affiliate updates the subscriber's fields and tags.
- An affiliate Kit has as unsubscribed, bounced, complained, or not yet confirmed gets the fields updated and nothing else. Sprout Affiliate does not add that subscriber to your form or tag, or give the subscriber any tags, so nothing in Kit starts mailing that person again.
- An affiliate who switches off your announcements has Sprout Affiliate's tags taken off, and the tag you chose if you chose a tag. Kit has no way to take someone off a form, so if you chose a form the subscriber stays listed under it, but no automation built on the status tags reaches the subscriber. The subscriber stays in Kit.
MailerLite
MailerLite calls a contact list a group. You choose one group, and your affiliates are added to it. This is for the current MailerLite; an API key from MailerLite Classic is refused.
Step 1: Choose or create a group
- Sign in to MailerLite.
- Go to Subscribers, then Groups, and create a group, for example Affiliates. You can also use a group you already have.
Step 2: Create an API token
- Click Integrations in the left menu.
- Next to MailerLite API, click Use, then Generate new token.
- Name it Sprout Affiliate, accept the terms, and click Create token. Leave the IP address restriction off: Sprout Affiliate's requests do not come from one fixed address.
- Copy the token. MailerLite shows it only once.
Step 3: Connect it in Sprout Affiliate
- Go to Settings › Integrations and click Connect on the MailerLite row.
- Paste the token into MailerLite API token and click Connect.
- Pick the group from Audience, and click Use this audience.
What Sprout Affiliate adds to MailerLite
Each subscriber gets the affiliate's first name in MailerLite's Name field and the rest in Last name. When you connect, Sprout Affiliate adds these custom fields, each with the key shown under it. A field you already have with the same name is used as it is.
| Field | What it holds |
|---|---|
| Affiliate status | applied, approved, or pausedaffiliate_status |
| Affiliate program | The name of their programaffiliate_program |
| Affiliate ref | Their link nameaffiliate_ref |
| Affiliate discount code | Their discount code, if they have oneaffiliate_discount_code |
| Affiliate referral link | Their full referral linkaffiliate_referral_link |
MailerLite has no tags, so the status is the Affiliate status field, which a segment can filter on. To send a welcome series, create an automation that starts when a subscriber joins your group. In an email, a field goes in as {$affiliate_referral_link}.
Subscriptions and opt-outs
- An affiliate who is new to MailerLite is added with MailerLite's own default status for new subscribers: active, or, if you turned on double opt-in for the API in MailerLite, unconfirmed until the affiliate confirms by MailerLite's email.
- An affiliate who is already in MailerLite keeps the status MailerLite has for that subscriber. Sprout Affiliate never asks MailerLite to resubscribe anyone, so someone who unsubscribed, bounced, or was marked as junk stays that way.
- An affiliate who switches off your announcements is taken out of the group. The subscriber and the subscriber's fields stay in MailerLite.
HubSpot
Affiliates become HubSpot contacts in a static list you choose, marked as affiliates with a property of Sprout Affiliate's own.
Why a token and not a HubSpot sign-in. An app that any HubSpot account can install has to sign in through HubSpot (OAuth). Sprout Affiliate connects with a token you make in your own HubSpot account instead, which only you can see and you can delete at any time.
Step 1: Create a static list
- Sign in to HubSpot.
- Go to CRM, then Lists, and click Create list.
- Choose Contact-based and Static, name it, for example Affiliates, and save it.
Only static contact lists are offered. HubSpot fills an active list from its own filters, so nothing else can add contacts to one.
Step 2: Create a service key
- Click the settings icon, then Integrations, then Service Keys (on some accounts it is Development, then Keys, then Service Keys).
- Click Create service key and name it Sprout Affiliate.
- Add these scopes:
crm.objects.contacts.read,crm.objects.contacts.write,crm.schemas.contacts.read,crm.schemas.contacts.write,crm.lists.read, andcrm.lists.write. - Create the key and copy it.
The access token of a HubSpot private app works too, if you already have one with those scopes (Development, then Legacy apps, then the app, then Auth, then Show token). HubSpot stops new private apps being made on October 26, 2026, and ones already made keep working.
Step 3: Connect it in Sprout Affiliate
- Go to Settings › Integrations and click Connect on the HubSpot row.
- Paste the key into HubSpot access token and click Connect.
- Pick the list from Audience, and click Use this audience.
What Sprout Affiliate adds to HubSpot
When you connect, Sprout Affiliate adds a contact property group called Sprout Affiliate with these properties, each with its internal name shown under it. A property you already have with the same internal name is left as it is. Each contact also gets the affiliate's first and last name.
| Property | What it holds |
|---|---|
| Sprout Affiliate | Yes while the affiliate is synced, No once the affiliate is taken outsprout_affiliate |
| Affiliate status | Applied, Approved, or Pausedsprout_affiliate_status |
| Affiliate program | The name of their programsprout_affiliate_program |
| Affiliate ref | Their link namesprout_affiliate_ref |
| Affiliate discount code | Their discount code, if they have onesprout_affiliate_code |
| Affiliate referral link | Their full referral linksprout_affiliate_link |
To send a welcome series, build a contact workflow that enrolls contacts when Affiliate status is Approved, or when a contact joins your list. In an email, add a personalization token for Affiliate referral link.
Subscriptions and opt-outs
- Sprout Affiliate never changes a contact's email subscriptions, opt-out, or marketing contact status. Someone who unsubscribed in HubSpot stays unsubscribed, and HubSpot does not email that person.
- Whether a new contact is a marketing contact follows your own HubSpot setting for new contacts, which is also what HubSpot bills marketing contacts by.
- An affiliate who switches off your announcements is taken out of the list, and the contact's Sprout Affiliate property is set to No, so a workflow or an active list built on it stops reaching the affiliate. The contact stays in HubSpot.
When it syncs
Changes are not sent the instant they happen. They wait in a queue that Sprout Affiliate sends to each service once an hour, up to 40 affiliates per service each time. Each hourly run has a time limit shared by every store, so when many stores have changes waiting, a store not reached in one run is among the first in the next. Mailchimp in particular limits how many connections one account can have open at once, including your own browser, and Kit allows 120 requests a minute for each key, so sending in small, spaced batches keeps your account working normally.
- After you connect, a store with up to 40 affiliates is fully synced within the hour. A larger store takes one hour for every 40 affiliates, so 400 affiliates take about ten hours.
- After that, changes go within the hour:
- A new applicant is added, tagged applied, once they confirm their email address.
- An affiliate you approve, pause, or resume gets their new status.
- An affiliate who changes their email address is moved: the old address comes out and the new one goes in.
- An applicant you reject, or an affiliate you delete, is taken out.
- Affiliates you import are added with the status they came in with.
- An affiliate who switches your announcements off is taken out, and one who switches them back on is added again.
- If the service is down or busy, the change is tried again at the next run, up to five times.
A connected row says what it is doing under its name: the audience it syncs to, when it last synced, and how many changes are waiting.
Syncing to Affiliates · Last synced Sep 24, 2026, 4:00 PM · 3 waiting to syncRe-sync
If every change in a run is refused, the row shows Needs attention, with your email service's own words for why. The usual cause is a key that was deleted or cancelled in your email service. Disconnect, create a new key, and connect again.
Re-sync and Disconnect
A connected row has two buttons.
- Re-sync queues every affiliate again for that one service. Use it after you edit a lot of affiliates at once, or if contacts look out of date. Anyone who has switched off your announcements is removed in the same pass. For Mailchimp, Kit, MailerLite, and HubSpot it also puts back any of the Sprout Affiliate fields or properties that were deleted since you connected, and for Kit the four Sprout Affiliate tags.
- Disconnect deletes the stored key and anything still waiting in the queue for that service. It does not remove anyone from your email service: contacts already there stay there, with their fields and tags. Other connected services are not affected.