Sync your Brevo contacts with ReferralCandy to enroll them in your referral program as advocates — and write each advocate's unique referral link back to Brevo, so you can drop referral links straight into your Brevo campaigns, newsletters, and automations.
With the Brevo integration you can:
Import your contacts from Brevo into ReferralCandy — everyone, a single list, or a single segment — and enroll them as advocates in your referral campaigns.
Write each advocate's referral link back to Brevo as a campaign-specific contact attribute you can use in your emails and segment conditions.
Send real-time referral events (such as
referralcandy_enrolledandreferralcandy_reward_earned) to Brevo, so your own automations can react when someone joins your referral program or earns a reward.Enroll new contacts in real time with a ReferralCandy-managed Brevo webhook, so people join your referral program the moment they're added to a Brevo list.
Note: Connecting Brevo does not change how ReferralCandy's own emails behave — and ReferralCandy never sends emails through Brevo. But contacts you import are enrolled as advocates, so they will start receiving whichever ReferralCandy emails you have turned on (such as the welcome email). Decide before your first sync whether you want both tools emailing your contacts — see Who sends the emails below.
Before you start
To set up the Brevo integration, you'll need access to your ReferralCandy dashboard and a Brevo account where you can create API keys.
Have a Brevo v3 API key ready. ReferralCandy uses it to read your contacts and write referral information back to them, and — if you turn on real-time sync — to register a webhook in your Brevo account. In Brevo, go to Settings → SMTP & API → API keys and select Generate API key, or click Get API key beside the field in ReferralCandy to open that page directly.
Leave the Create MCP server API key option switched off when you generate the key — that’s a separate key for connecting an AI tool to Brevo, and ReferralCandy doesn’t use it. Copy the key when Brevo shows it; Brevo won’t show it again.
You don't need to choose a region or authorize an app — Brevo connects with the API key alone.
Step 1: Connect Brevo
Open the Brevo integration page:
From the ReferralCandy dashboard (my.referralcandy.com), go to Integrations and open Brevo under Email marketing.
From your Shopify admin, go to Integrations and open Brevo under Email marketing.
Under Status you'll see the connection badge — it starts as Not connected.
Paste your Brevo v3 API key into the API key field. If you don't have one yet, click Get API key beside the field to open Brevo's API keys page. The Connect button stays greyed out until you've entered a key.
Click Connect. ReferralCandy checks the key against your Brevo account, and the badge changes to Connected.
Having trouble connecting? A failed Brevo connection is almost always the key. Check that it’s a current v3 API key, that it hasn’t been revoked or expired in Brevo, and that no extra spaces were copied along with it. If you’ve switched on IP restrictions for your Brevo API keys (Settings → Security → Authorized IPs), those block ReferralCandy as well — switch the restriction off (or ask whoever manages your Brevo account to) and try connecting again.
Step 2: Import your contacts
Once connected, an Import contacts section appears below the Status card.
Use the Import from list or segment dropdown to choose which Brevo contacts to import — All contacts, or one of the lists or segments from your Brevo account. Your Brevo lists are shown first, then your segments.
Click Sync now. You'll see a "Brevo sync started" confirmation.
The import runs in the background — larger lists can take a while, so check back a little later.
Imported contacts are added as contacts in ReferralCandy and enrolled into your campaigns as advocates. ReferralCandy imports each contact's email address, and their first and last name from Brevo's FIRSTNAME and LASTNAME attributes when those are set. Contacts without an email address are skipped.
The list or segment you pick applies to that sync only — it isn't saved, so choose it again the next time you import. The sync runs when you click Sync now; it isn't a recurring schedule. You can sync with Brevo as often as you like: existing contacts are updated, never duplicated. To add new contacts automatically without re-syncing, turn on real-time sync in Step 5.
Remember: newly enrolled advocates receive whichever ReferralCandy emails you have turned on — including the welcome email. If you don't want that, turn those emails off before you sync (see the next section).
Who sends the emails — ReferralCandy, Brevo, or both?
Connecting Brevo does not turn off ReferralCandy's own emails, and ReferralCandy never sends emails through your Brevo account. Both tools run independently, so it's up to you how to split the work:
Use both (most common): ReferralCandy keeps sending its referral program emails (welcome, reminder, reward, and payout notifications), while you use Brevo for your newsletters and campaigns — dropping each advocate's referral link in with the
RC_REFERRAL_LINK_<CAMPAIGN SHORT CODE>contact attribute (see Step 3).Send only from Brevo: if you'd rather all emails come from Brevo, turn ReferralCandy's campaign emails off manually. Go to Campaigns, open your campaign, and select Emails — each email type (welcome, reminder, the reward emails, cash payout) has its own toggle, and the one-time win-back email only sends if you schedule it. Repeat for each active campaign. You can then rebuild the notifications you still want as your own Brevo automations triggered by the events in Step 4.
Turning ReferralCandy emails off? Do it before running your first sync — otherwise newly enrolled advocates will receive the ReferralCandy welcome email. It's also manual in both directions: if you later disconnect Brevo, ReferralCandy's emails don't switch back on by themselves, re-enable them yourself.
Step 3: Write referral links back to Brevo
Write-back is always on once you're connected — the same API key that reads your contacts writes their referral links back. ReferralCandy writes two contact attributes in Brevo:
RC_REFERRAL_LINK_<CAMPAIGN SHORT CODE>— the contact's unique referral link for that campaign, stored as a text attribute. If you run more than one campaign, each referral or affiliate campaign writes its own referral-link attribute, soRC_REFERRAL_LINK_FRENandRC_REFERRAL_LINK_VIP2can both sit on the same Brevo contact. Loyalty campaigns don't have referral links, so they don't add one.REFERRALCANDY_ADVOCATE— a yes/no attribute that reads Yes on the contact record. When you build a segment on it, Brevo's filter offers the value as True — same attribute, just labelled differently on the two screens.
Brevo requires a contact attribute to exist in your account before it can be set on a contact, so ReferralCandy creates these attributes for you the first time it writes back. New attributes appearing in your Brevo account is expected — you'll see them under Contacts → Settings → Contact attributes.
Why are the attribute names in capitals? Brevo only allows uppercase letters, numbers and underscores in contact attribute names. ReferralCandy uppercases your campaign's short code and strips anything that isn't a letter or number, so a campaign with the short code "fren" writes to RC_REFERRAL_LINK_FREN.
Your campaign short code is shown under Campaigns → your campaign → Campaign details — it's set when the campaign is created, it's locked once the campaign has been activated, and it's not the same as your campaign name. See [Shopify] Creating a campaign or [Other Platforms] Creating a campaign for more on the short code.
To drop the referral link into a Brevo email, add a text block, then insert it from the editor’s personalization menu and pick the RC_REFERRAL_LINK_<CAMPAIGN SHORT CODE> attribute. Brevo adds it as a personalization field, so you don’t have to write the tag yourself. In the editor it shows as a labelled field rather than a link; when the email goes out, each recipient gets their own referral link in its place.
For example, add it to your newsletter footer after “Share the love and earn rewards:”.
Check it before you send. In the editor, open Preview & test → Preview as recipient and pick a contact you’ve already synced. Their actual referral link should appear in the preview. If it doesn’t — the spot is blank, or shows anything other than a link — that contact has no referral link yet: run Sync now, then preview again.
The referral link is how referred friends claim your friend offer and shop at your store — see friend offer landing page for what friends see when they open it.
Step 4: ReferralCandy events in Brevo
ReferralCandy also sends real-time events to Brevo whenever a connected contact has referral activity. Events are sent automatically for as long as Brevo is connected — you don't need real-time sync (Step 5) turned on for them. You can use them to trigger your own Brevo automations based on referral progress: a follow-up when an advocate joins your referral program, a celebration when they earn a reward, a reminder after a successful referral.
Every ReferralCandy event name in Brevo starts with referralcandy_, in lowercase with underscores — for example referralcandy_enrolled, referralcandy_reward_earned, and referralcandy_purchase_referred_by_profile_detected. The shared prefix means they group together when you pick a trigger. For the full list and the data each event carries, see the event reference at the end of this section.
Also using Klaviyo, Customer.io, or Omnisend? These are the same referral events you see there, written in Brevo's format. Brevo only accepts letters, numbers, underscores and hyphens in an event name, so the names that read ReferralCandy - Reward earned in Customer.io and Omnisend arrive in Brevo as referralcandy_reward_earned instead. Klaviyo keeps its own older RC - Reward earned naming.
Every event carries the name of the campaign it came from, so your automations can tell campaigns apart — if a contact is enrolled in more than one campaign, each campaign sends its own events. Reward events also carry the reward's type, amount and currency, and coupon rewards carry the coupon code. To confirm an event has reached Brevo, open Contacts → Segments, start a segment, click Add filter and look under Custom events — every ReferralCandy event name Brevo has received for your account is listed there. A contact's own activity timeline doesn't show every ReferralCandy event, so an event missing from that timeline doesn't mean it wasn't sent.
To send your own emails from Brevo off the back of these events — for example your own version of the reward notification — create a Brevo automation, add the Custom event trigger (in the builder’s Triggers panel, under Custom), and choose the referralcandy_ event you want to react to. There’s also a Wait until an event happens rule if you’d rather hold a contact in an automation until one arrives. If you rebuild a ReferralCandy email this way, turn the matching ReferralCandy email off (see Who sends the emails above) so advocates don't receive both.
Build your automations so a repeated event is harmless. An event can occasionally be delivered to Brevo more than once. Avoid automations that do something a second delivery would spoil — sending a reward email, or issuing a gift — on every occurrence of the same event.
Building an automation on referralcandy_enrolled? Your first sync enrolls everyone you import, so this event fires for each imported contact. If you don't want an enrollment automation to run for your whole imported list, set it live after your initial import.
Building an automation on a reward event? A milestone tier set up with no incentive still sends referralcandy_reward_earned, carrying only the campaign name. If your automation reads reward fields, check that a reward type is present first, or it will run on rewards that don't exist.
You won't see the ReferralCandy events in Brevo until referral activity has actually happened. Brevo builds its list of custom events from the events it has actually received, so the list of events you can choose from — in the segment builder’s Custom events filter, and inside the Custom event automation trigger — is empty until the first one arrives. On a newly connected store there is nothing to pick yet, and that’s expected rather than a sign the integration isn’t working.
What events does ReferralCandy send to Brevo, and what data does each one carry?
What events does ReferralCandy send to Brevo, and what data does each one carry?
These are the events ReferralCandy sends to Brevo. Every one of them carries the name of the campaign it came from, so an automation can react to a single campaign. If the campaign is running an A/B experiment, most of these events also carry the test name, the group, and the reward variant. Six don’t: reward pending, reward coupon used, the two time-limited reward events, banned, and removed.
referralcandy_enrolled— the contact met a campaign's criteria and joined your referral or affiliate program. Carries the campaign name and whether it's their first enrollment.referralcandy_unenrolled— a contact who was enrolled no longer meets the campaign's criteria. Carries the campaign name.referralcandy_signup_form_submitted— a contact who was never enrolled signed up through one of your forms. Carries the campaign name and the form type — post-purchase popup, referral widget, embedded signup, join page, or Shopify join block.referralcandy_waitlisted— a contact signed up but doesn't meet the campaign's criteria. Carries the campaign name and the form type.referralcandy_purchase_referred_by_profile_detected— ReferralCandy detected a referred purchase through this contact's referral link. Carries the campaign name, purchase amount, and currency. It fires at detection, which can be before the purchase is approved.referralcandy_purchase_referred_by_profile_made_ineligible— a referred purchase was flagged as ineligible. Carries the campaign name and the reason.referralcandy_reward_earned— the advocate earned a reward. Carries the campaign name, the date earned, and the reward type and amount. Coupon rewards add the coupon code and its expiry date; cash and store-credit rewards add a reward percentage (which reads “None” for a fixed-amount reward) and the advocate’s portal sign-in link, and store credit also adds the credit’s expiry date. Most reward types carry a currency too — custom rewards don’t, and their amount is a free-text description rather than a number. If your campaign gives a second reward, its type, amount, currency, coupon code, and description come along too. Loyalty store-credit accruals carry whether it's the first accrual, and send no date earned.referralcandy_reward_pending— a qualifying referral entered the review period and a reward is lined up. Carries the campaign name, the reward type, amount, and currency, the coupon code, the pending date, and the review deadline. The reward type is one ofcash,coupon,customorstore_credit, and the amount is a number for fixed rewards, a percentage such as “10%” for percentage coupons, and a free-text description for custom rewards. The coupon code reads “None” for cash, store-credit, and custom rewards, and for a coupon whose code hasn’t been generated yet; the currency reads “None” for percentage and custom rewards. It also fires again when a referral that was frozen re-enters the review period, so a second one for the same referral isn’t necessarily a repeat.referralcandy_reward_coupon_used— the advocate redeemed a reward coupon. Carries the campaign name, the coupon code, and the date it was used. It only fires for coupons ReferralCandy generated — a reward you fulfilled with your own coupon doesn't trigger it.referralcandy_time_limited_reward_started— a time-limited reward window opened on a campaign. Carries the campaign name, the reward name, and the window's start and end.referralcandy_time_limited_reward_ended— the window closed. Carries the same details.referralcandy_subscribed_to_campaign_emails— the contact was subscribed to that campaign's ReferralCandy emails. Carries the campaign name.referralcandy_unsubscribed_from_campaign_emails— the contact unsubscribed from that campaign's ReferralCandy emails. Carries the campaign name.referralcandy_banned_from_referralcandy— you banned the contact. Carries the campaign name.referralcandy_removed_from_referralcandy— you deleted the contact from ReferralCandy. Carries the campaign name.
Every value arrives as text. Numbers like a reward or purchase amount come through as text rather than as numbers, so an automation that compares them numerically may need to convert them first.
Dates arrive as numbers, not dates. Date earned, Coupon expiry date, Pending date, Review deadline, Used date and the time-limited reward window’s starts at and ends at are all sent as Unix timestamps — a value like 1789669016 rather than a readable date. Put one straight into an email and that number is what your advocate sees, so format it in Brevo first.
Step 5: Enroll new contacts in real time
Instead of re-running the sync to pick up new people, you can let ReferralCandy register and manage a Brevo webhook that enrolls contacts the moment they're added to a list:
After connecting, find the Real-time sync card on the Brevo page. Its badge starts as Disabled.
Click Enable.
ReferralCandy creates a secured webhook in your Brevo account for the “contact added to a list” event — you don’t need to configure anything in Brevo yourself. When setup succeeds, the badge changes to Enabled and you’ll see “Real-time sync turned on”. The webhook itself appears in Brevo as ReferralCandy real-time sync, under Contacts → Settings → Webhooks (that opens the Webhooks tab of Brevo’s Plugins & Integrations page).
From then on, contacts are enrolled in your referral program the moment they're added to a Brevo list. The new contact needs an email address to be enrolled. ReferralCandy manages the webhook for you — if you turn real-time sync off, ReferralCandy removes it from Brevo.
Real-time sync covers list additions only. A contact who only matches a Brevo segment isn't picked up — segments aren't part of the webhook. To enroll the people in a segment, use Import contacts and pick that segment (see Step 2).
Real-time sync failed? If the error mentions permissions, generate a fresh v3 API key in Brevo — signed in as the account owner or an admin — reconnect ReferralCandy with it, and try again. If the error says Brevo rejected the webhook, check your Brevo account settings and try again — and if it keeps failing, let us know and we’ll look into it with you.
Disconnecting Brevo
Go to Integrations, open Brevo, and click Disconnect Brevo in the Status section.
Confirm by clicking Disconnect in the dialog. The badge returns to Not connected.
After disconnecting the Brevo integration:
ReferralCandy stops importing contacts from Brevo, stops updating referral-link attributes on Brevo contacts, and stops sending referral events.
Any real-time sync webhook ReferralCandy registered is removed from Brevo.
Contact attributes already written (the
RC_REFERRAL_LINK_...attributes andREFERRALCANDY_ADVOCATE) stay on your Brevo contacts until you remove them there.Advocates who were already enrolled stay in your referral program — disconnecting doesn't remove them from ReferralCandy.
If you turned ReferralCandy's campaign emails off while using Brevo, remember to turn them back on (Campaigns → your campaign → Emails) — disconnecting doesn't re-enable them for you.
Brevo integration FAQ & troubleshooting
Common questions about the Brevo integration:
Will my contacts get emails when I sync?
Will my contacts get emails when I sync?
Nothing is sent through Brevo when you sync — ReferralCandy never emails your contacts from your Brevo account. However, imported contacts are enrolled as advocates in your ReferralCandy campaigns, so they will receive whichever ReferralCandy emails are turned on — typically the welcome email. If you don't want that, turn those emails off before syncing (see "Who sends the emails" above).
Can I use both ReferralCandy emails and Brevo at the same time?
Can I use both ReferralCandy emails and Brevo at the same time?
Yes — many merchants use both ReferralCandy emails and Brevo together. ReferralCandy handles the referral program emails while Brevo handles newsletters and campaigns, with each advocate's referral link available as an RC_REFERRAL_LINK_... contact attribute (see Step 3 above). If you'd rather send everything from Brevo, turn ReferralCandy's campaign emails off manually under Campaigns → your campaign → Emails — connecting the integration doesn't turn them off for you.
Which Brevo API key do I need?
Which Brevo API key do I need?
You need a Brevo v3 API key — not an older SMTP key. Create it in Brevo under Settings → SMTP & API → API keys, or click Get API key beside the field in ReferralCandy. One key covers everything the integration does: reading your contacts, writing referral links back to them, and registering the real-time sync webhook.
I clicked Connect and got an error
I clicked Connect and got an error
A failed Brevo connection is almost always a credentials issue. Check that the key is a current v3 API key, that it hasn’t been revoked or expired in Brevo, and that no extra spaces were copied along with it. It’s also worth checking whether IP restrictions are switched on for your Brevo API keys, under Settings → Security → Authorized IPs — those block ReferralCandy too. If it still fails after that, our support team can take a look at your account — just let us know.
I clicked Sync now but don't see my contacts yet
I clicked Sync now but don't see my contacts yet
The Brevo import runs in the background and processes your contacts in batches, so a large account can take a while — a growing contact count means it's still working. Keep in mind that only contacts with an email address are imported. If your contact count stays put and the contacts you expect never appear, our support team can check the sync on your account — just let us know, and tell us roughly when you started it.
Can I import from a Brevo segment?
Can I import from a Brevo segment?
Yes. The Import from list or segment dropdown shows your Brevo lists first, then your segments — pick either one and click Sync now. Note that real-time sync doesn't cover segments: it enrolls contacts when they're added to a list, so segment members have to be brought in with Import contacts.
Will new contacts be added automatically?
Will new contacts be added automatically?
The Brevo sync runs only when you click Sync now. To enroll new contacts automatically, turn on real-time sync (see "Enroll new contacts in real time" above) — otherwise, re-run the sync whenever you want to pick up new people.
Can I sync more than once? Will that create duplicates?
Can I sync more than once? Will that create duplicates?
You can sync with Brevo as often as you like — existing contacts are updated, never duplicated. Do pick your list or segment again each time, though: that choice applies to one sync only and isn't saved.
What exactly does ReferralCandy write to my Brevo contacts?
What exactly does ReferralCandy write to my Brevo contacts?
ReferralCandy writes two kinds of data to your Brevo contacts. First, contact attributes: an RC_REFERRAL_LINK_<CAMPAIGN SHORT CODE> referral-link attribute for each referral or affiliate campaign, and REFERRALCANDY_ADVOCATE, a yes/no attribute set to Yes. ReferralCandy creates those attributes in your Brevo account if they don't exist yet. Second, real-time events triggered by referral activity — their names all start with referralcandy_. It never changes your other Brevo attributes, and never sends emails through Brevo.
Where do I find my campaign short code?
Where do I find my campaign short code?
Your campaign short code — the code at the end of the RC_REFERRAL_LINK_... attribute name — is shown under Campaigns → your campaign → Campaign details. It's set when the campaign is created and can only be edited while the campaign is still in setup; once the campaign has been activated, the short code is locked. It's also not the same as your campaign name — renaming a campaign doesn't change its short code. In Brevo the code appears in capitals, with anything that isn't a letter or number removed. See [Shopify] Creating a campaign or [Other Platforms] Creating a campaign for details.
My real-time sync isn't enrolling new contacts
My real-time sync isn't enrolling new contacts
If real-time sync isn't enrolling new Brevo contacts, work through these checks:
The Brevo integration is still connected in ReferralCandy.
The Real-time sync badge shows Enabled.
The contact was added to a Brevo list. Contacts that only match a segment aren't picked up — use Import contacts for those.
The new contact has an email address — contacts without one aren't enrolled.
The ReferralCandy real-time sync webhook still exists and is switched on in Brevo, under Contacts → Settings → Webhooks (the Webhooks tab of Brevo’s Plugins & Integrations page). If it was deleted or switched off there, ReferralCandy may still show real-time sync as Enabled while nothing is being enrolled — switch the webhook back on in Brevo, or click Disable and then Enable in ReferralCandy to register it again.
If it still isn't working after these checks, our support team can dig in — just let us know.
A new contact was enrolled but has no referral link yet
A new contact was enrolled but has no referral link yet
Real-time sync enrolls new contacts as soon as they’re added to a Brevo list. If the RC_REFERRAL_LINK_<CAMPAIGN SHORT CODE> attribute hasn’t appeared on their Brevo contact yet, go to Integrations, open Brevo, choose All contacts (or the list they’re in) and click Sync now — that writes the referral-link attributes back to your Brevo contacts.


