Built for startups,
scaled for unicorns
Successfully submitted!
Error! Please try again
Tags are the backbone of ActiveCampaign's segmentation and automation system. By tagging contacts based on their GrowSurf referral activity, you unlock the ability to target specific groups with relevant messaging, trigger automations at the right moments, and keep your contact database organized by referral program participation.
This guide covers designing a comprehensive tagging strategy for your referral program, automating tag application from GrowSurf events, using tags to trigger automations and segment contacts, and maintaining tag hygiene as your program scales.
Plan a structured tagging system that covers all referral program states and activities.
ref- for all referral tagsref-participant β joined the referral programref-active-referrer β has made at least one referralref-power-referrer β 5+ successful referralsref-champion β 10+ successful referralsref-referred-lead β this contact was referred by someoneref-organic-participant β joined on their own (no referrer)ref-earned-reward β has earned at least one rewardref-converted-referral β their referral led to a conversionSet up the automation that applies tags when GrowSurf events occur.
PARTICIPANT_CREATED: add ref-participant tag. If referredBy exists, also add ref-referred-leadPARTICIPANT_REFERRED: add ref-active-referrer to the referrer. Check count for ref-power-referrer or ref-championPARTICIPANT_REACHED_REWARD: add ref-earned-rewardref-active-referrer when adding ref-power-referrer)Create ActiveCampaign segments using your referral tags for campaign targeting.
ref-participant tag AND customer = trueref-participant but NOT ref-active-referrerref-active-referrerref-championUse tag additions as automation triggers for the right-time, right-message flow.
ref-participant β start welcome automationref-active-referrer β send first-referral celebrationref-power-referrer β send upgrade notification with new perksref-champion β trigger VIP outreach from account managerref-referred-lead β start referred lead nurture sequenceKeep your tagging system clean and accurate as your program evolves.
ref-participant and ref-champion should only have the highest tier)ref- tagsUse tag distributions to track program health and growth.
ref-participant to ref-active-referrer (activation rate)ref-referred-lead tag// Automated tag management for ActiveCampaign referral program
async function updateReferralTags(contactId, event, participantData) {
const tagActions = [];
switch (event) {
case 'PARTICIPANT_CREATED':
tagActions.push({ action: 'add', tag: 'ref-participant' });
if (participantData.referredBy) {
tagActions.push({ action: 'add', tag: 'ref-referred-lead' });
} else {
tagActions.push({ action: 'add', tag: 'ref-organic-participant' });
}
break;
case 'PARTICIPANT_REFERRED':
const count = participantData.referralCount || 1;
if (count >= 10) {
tagActions.push({ action: 'add', tag: 'ref-champion' });
tagActions.push({ action: 'remove', tag: 'ref-power-referrer' });
tagActions.push({ action: 'remove', tag: 'ref-active-referrer' });
} else if (count >= 5) {
tagActions.push({ action: 'add', tag: 'ref-power-referrer' });
tagActions.push({ action: 'remove', tag: 'ref-active-referrer' });
} else {
tagActions.push({ action: 'add', tag: 'ref-active-referrer' });
}
break;
case 'PARTICIPANT_REACHED_REWARD':
tagActions.push({ action: 'add', tag: 'ref-earned-reward' });
tagActions.push({ action: 'add', tag: 'ref-converted-referral' });
break;
}
// Execute tag changes via ActiveCampaign API
for (const { action, tag } of tagActions) {
const tagId = await getOrCreateTag(tag);
if (action === 'add') {
await ac.api('contactTag/add', { contactId, tagId });
} else {
await ac.api('contactTag/remove', { contactId, tagId });
}
}
}
// Tag hierarchy enforcement
const tagHierarchy = ['ref-champion', 'ref-power-referrer', 'ref-active-referrer', 'ref-participant'];
// When adding a higher-tier tag, remove lower-tier tagsDesign referral tags hierarchically so higher-tier tags replace lower-tier ones. When someone becomes a champion referrer, remove the active-referrer and power-referrer tags. This prevents tag bloat and ensures automations triggered by specific tiers only fire once at the right level.
Using a consistent prefix like ref- makes it easy to find all referral tags, manage them in bulk, and prevent collisions with other marketing tags. It also makes it simple for team members to identify referral-related tags when viewing a contact record.
Add a ref-opted-out tag for contacts who explicitly decline the referral program. Use this tag to suppress them from future referral program invitations while keeping the door open for them to rejoin later. This respects user preferences and prevents annoying opt-out contacts.
Start with 6-8 tags covering the essential states (participant, active referrer, power referrer, champion, referred lead, earned reward, opted out). Add more tags only when you have a specific automation or segment that requires them. Too many tags create maintenance burden without adding value.
Use both strategically. Tags are best for categorical/binary states (is a participant, has referred, earned reward) that trigger automations. Custom fields are best for quantitative data (referral count, join date, referral link) that you want to display and use in personalization. They serve different purposes.
Add the campaign name to your tags: ref-participant-q1-2026, ref-participant-summer-promo. Alternatively, use a single set of tags and store the campaign name in a custom field. The first approach gives you campaign-specific automation triggers; the second keeps your tag list shorter.
Trusted by marketing and product teams at fast-growing B2C, fintech, and SaaS companies
