If you’re an agency owner whose clients want to pay partners for customers, HighLevel gives you a built-in Affiliate Manager, and there are two other honest ways to run a GoHighLevel affiliate program for them. This article is that one decision, made per client.
It’s the question I get from agency owners every time, and it never sounds like “what’s an affiliate program.” It sounds like “I’ve got 12 clients on HighLevel, every one of them wants a referral partner program, and I don’t want 12 different setups. What do I actually use?” So here’s one decision with three real options, a table that sorts a client in about a minute, the 10-minute connection, and the math for a 12-client agency.
The one-screen version for agency owners
Here’s the whole decision and the mechanism in one screen, before the detail:
- Three ways to do it: HighLevel’s built-in Affiliate Manager, a script tool like FirstPromoter or Rewardful, or Rekomi. Each one is right for a certain client, and the table further down sorts them in about a minute.
- How Rekomi’s way works: every affiliate link carries a small tag, HighLevel writes it onto the contact when the visitor submits a form, calendar booking, chat or order form, and when a sale arrives Rekomi reads that contact record and credits the partner. Nothing runs in the visitor’s browser.
- Where the sales come from: products billed through the client’s connected Stripe account, recurring and one-time, arrive on their own; Square, NMI, Authorize.net and PayPal sales arrive through a 5-minute HighLevel workflow.
- What you install: a Location ID and a private integration token from each client’s sub-account, pasted into Rekomi. No script.
- What the client sees: their partners and their referred customers land in their HighLevel as tagged contacts, so the client’s own automations can use them.
- Who pays the partners: Rekomi runs the payouts in 165+ countries and collects the tax forms; the client funds the run.
- What it costs: one Rekomi account per client at $29 to $99 a month, plus 3% of commissions paid out. The math for a 12-client agency is below.
Running a GoHighLevel affiliate program for your clients: three honest options
Your client is a med spa, a gym, a coach, or a business you’re reselling HighLevel to under your own brand, and they want to pay partners for customers. You have three real ways to do that, and I mean real: each one is the right answer for somebody. I went back and forth on the order more than once before putting the built-in option first, because if it covers your client, you should use it.
- Option 1 is HighLevel’s built-in Affiliate Manager, which runs campaign by campaign inside the account you already manage.
- Option 2 is a script-based tool like FirstPromoter, Rewardful or Tapfiliate: a script on the page, and the sale matched later through Stripe or a typed code.
- Option 3 is Rekomi, which reads the attribution record HighLevel already keeps on every contact and credits the partner from that, with nothing running in the visitor’s browser. I helped build Rekomi, so weigh option 3 with that in mind.
The goal: pick per client, not per agency. A client whose whole checkout is a HighLevel order form on Stripe has a different answer from one who takes payment on Square or sells from a site you don’t control. And the fun part is that the same three questions sort every client in about a minute – the decision table below is literally built from them.
Option 1: HighLevel’s built-in Affiliate Manager, and where it stops
HighLevel shipped a proper affiliate feature, and I’d rather credit it properly than wave at it.
Each enrolled affiliate gets a unique link (HighLevel calls it a magic link) and a portal showing clicks, conversions and commissions owed in real time. When someone clicks that link and fills out a form or books a calendar appointment, a lead is created under the affiliate. Then the line that matters, quoted from the help article: “When a lead makes a purchase, they are automatically converted to a customer under the affiliate whose link they used.” Rewards can be flat or tiered, and admins can add leads by hand. After you approve commissions, you automate payouts through PayPal or pay manually through Stripe, bank transfer, Wise or check. All of that is from HighLevel’s Affiliate Manager help article and the launch post from October 2025.
For a client whose entire funnel is HighLevel pages and whose checkout is a HighLevel order form on Stripe, that’s a genuinely good setup, and it’s already in the account you manage. HighLevel even publishes a guide for moving a program off FirstPromoter into it, which tells you how seriously they take it.
Here’s where it stops, going by HighLevel’s own pages as of September 2026:
- It tracks with its own link, a tracking script and a cookie, so the visitor’s browser is part of the chain. That’s the same shape as option 2, just built in.
- A campaign for an external website needs that script on the external site (a HighLevel funnel used as the destination needs it too), and HighLevel’s external website article says “Only products sold through Stripe are supported for now.” Re-read that line before you plan around it.
- Sales the link didn’t catch, offline or without the link, become manual sales you enter by hand or add through a workflow action.
- PayPal is the only automated payout rail.
- Each client is its own setup, so 12 clients means 12 setups. To be fair, that’s true of option 3 too.
Note: HighLevel’s own promoter program and this Affiliate Manager share a word and nothing else. One pays you for referring HighLevel; the other pays your partners.
Option 2: a script-based tool like FirstPromoter, Rewardful or Tapfiliate
These are the tools most SaaS founders already know, and every one of them is good software. They all attach to HighLevel the same way.
FirstPromoter’s HighLevel setup is a predefined set of scripts in the head of your website or funnels, per their integration page. From there it does what it’s great at: commissions that update on renewals, upgrades, downgrades and cancellations, a white-labeled portal under your domain, and batch or fully managed payouts through PayPal, Wise or bank transfer. Plans start at $49/mo, tiered by the affiliate revenue you track, and HighLevel’s own promoter portal lives on a firstpromoter.com subdomain, which is about as strong an endorsement as a tool gets.
Rewardful’s HighLevel article puts its tracking script in Head Tracking Code plus a footer script that rewrites your Stripe Payment Links with the referral id after a two-second delay. Plans start at $49/mo, with optional managed payouts at 3%.
Tapfiliate takes a different route. Per their guide, tapfiliate.js goes in the head for clicks, then a workflow HTTP POST sends the conversion server-to-server, matched on a referral code the customer typed into a field. That’s the closest thing to a browser-free sale door in this group, and it still leans on the buyer typing the code.
The shape they share is this: something in the visitor’s browser sets a cookie, and the sale is matched later through Stripe, a rewritten link or a typed code. When a client sells on Square, NMI, Authorize.net or PayPal, or the buyer clears cookies somewhere in a 3-week sales cycle, the chain has a weak link, and that gap is exactly what option 3 is for.
Option 3: Rekomi reads the record HighLevel already keeps
This is the part I love, because the attribution record was already sitting on every contact in HighLevel. Rekomi just reads it back. Here’s how it works:
- Every affiliate link Rekomi hands out carries two extra parameters:
utm_source=rekomiandutm_campaignset to that affiliate’s slug, so Jane’s link looks likehttps://offer.clientdomain.com/consult?via=jane&utm_source=rekomi&utm_campaign=jane. Slugs are lowercase, and HighLevel compares UTM values exactly. - HighLevel does what it already does. When a visitor lands from that link on a HighLevel-hosted page, or an external page running HighLevel’s tracking script, and in that same session submits a form, survey, calendar booking, chat contact or order form, HighLevel writes the arrival onto the contact as First Attribution and updates Latest Attribution on every later one (bottom right of any contact record, under Activity). HighLevel’s attribution doc has one rule worth memorizing: for the UTMs to be recorded, the visitor “cannot move from this page” before submitting.
- A sale reaches Rekomi, either through the Stripe account connected under Setup > Connect payment gateway, since HighLevel bills recurring products as real Stripe subscriptions and one-time order forms as Stripe payments, or through the workflow webhook below. If nothing else names an affiliate, such as a coupon or a lead Rekomi already recorded, Rekomi looks the contact up by email in your location, reads the stored attribution, first arrival then latest, and credits the affiliate it names.
- The Sales view labels that sale “Platform match” beside the coupon and link sales, and the commission and payout follow from there.
Nothing runs in the visitor’s browser for any of this. That’s what GoHighLevel affiliate tracking looks like when the CRM is the source of truth instead of a cookie: the connection reads HighLevel’s record and never writes it, any gateway works as long as the sale reaches Rekomi, and payouts are included. The short version is on the Rekomi integration page for HighLevel.

Try it on one client first. Start a 14-day free trial, connect that client’s HighLevel location and Stripe account, and run one affiliate link through a real form. If the contact shows the tag and the Sales view shows a Platform match, you have your answer for the other 11.
Start a free trialThe decision table: which option for which client
So, which one do you pick for a given client? You ask three questions: where is the money taken, is the checkout on a page HighLevel tracks, and who’s going to pay the partners. The table answers them for each option.
| For this client… | Affiliate Manager | Script tool | Rekomi |
|---|---|---|---|
| What does the tracking? | Its own link, script and cookie | A head script, then a Stripe match or typed code | The attribution HighLevel stores on the contact |
| Anything in the visitor’s browser? | Yes | Yes | No |
| Products billed on Stripe, recurring or one-time | Yes | Yes, its strongest case | Yes, on arrival |
| Square, NMI, Authorize.net, PayPal | Manual sales for anything not captured | Stripe-centered; Tapfiliate’s typed code is the exception | A workflow webhook with four fields |
| Payouts | PayPal automated, the rest by hand | PayPal, Wise, bank; managed options | Included, 165+ countries, tax forms, 3% on paid commissions |
| What it costs | Built in | $49 or $99/mo for the first two tiers | $29 to $99/mo plus 3% on payouts |
Definitely use the Affiliate Manager when the client’s whole world is HighLevel pages and PayPal payouts by hand are fine. Pick a script tool when the client bills on Stripe and every checkout is a page you control. Pick Rekomi when a client takes payment on something other than Stripe, or when you want the sale credited from the CRM record rather than a cookie.
Connecting a client’s location: one ID, one token, one switch
The connection is per sub-account, which is the right shape for an agency: one client, one location, one brand account in Rekomi. It’s a 10-minute job.
- In the client’s sub-account, not the agency view, open Settings, then Business Profile, and copy the Location ID.
- Still in Settings, open Private Integrations and create one named “Rekomi” with two scopes: Contacts and Custom Fields, both view and edit. Copy the token; it starts with
pit-. Agency API keys are rejected. - In Rekomi, open Integrations, click the GoHighLevel card, paste both, and click Connect. Rekomi test-reads the location’s custom fields and contacts, so the status line fills in immediately.
- Leave both switches on. Sync affiliates into GoHighLevel and Credit sales through GoHighLevel are on from the moment you connect, and the status line shows the last check time and the credited-sales count.
- Connect the client’s Stripe account under Setup > Connect payment gateway if their recurring products bill there.
Then test it: open one affiliate link, submit a HighLevel form with a fresh email, and paste that address into Check a subscriber’s email on the integration page. It tells you whether the contact exists, whether its attribution names an affiliate, and whether a sale from that email would be credited. Three greens and this client is done! The troubleshooting list is in the setup docs.
Order forms and non-Stripe gateways: the workflow webhook
This is the door that makes option 3 different for the Square and NMI clients. Anything that isn’t billed through the connected Stripe account, meaning any sale on Authorize.net, NMI, PayPal or Square, reaches Rekomi through a HighLevel workflow. It’s a 5-minute build.
- Copy the Inbound webhook URL from the integration page in Rekomi. Treat it like a password.
- In HighLevel, create a workflow with the trigger Payment Received, or Order Form Submission for order forms, and add a Webhook action: method POST, URL set to your inbound URL.
- In the Webhook action’s Custom Data section, add four fields from the trigger’s merge fields:
email,amount,currencyandorder_id(totalworks in place ofamount, andtransaction_idorpayment_idin place oforder_id). - You can also send the slug in the payload, but Rekomi reads the contact’s attribution itself, which is the whole point, so skip it.
Rekomi records the purchase once per order id, so a workflow that fires twice never creates two sales. If both triggers post the same order, send the same order_id from both and it still lands once. Two more things to know: a purchase for an email HighLevel has no contact for isn’t recorded, and purchases only record while Credit sales through GoHighLevel is on.
One thing I’d flag: don’t post sales that already arrive through the connected Stripe account, or the same sale is recorded twice. An order form billed through Stripe already arrives on its own through that connection, one-time and recurring alike, so keep the workflow for the Square, NMI, Authorize.net and PayPal sales and leave the Stripe-billed ones out of it.

Your partners and their customers land in HighLevel as tagged contacts
The connection runs the other direction too, and for an agency this is the half that makes the client say “oh, nice.” When an affiliate is approved, Rekomi upserts them into the client’s location as a contact with custom fields for the referral link, slug, campaign and status, and the tag Rekomi affiliate plus any default tags you set. Tags are added, never replaced.
Turn on Sync referred customers and leads, and every sale or lead Rekomi credits, Platform match sales included, lands as a contact matched on email. It carries Rekomi referring affiliate, Rekomi last event and Rekomi last sale amount, plus the tag Rekomi customer or Rekomi lead. Refunded, denied and fraud-quarantined conversions are never pushed.
The bit I like most is that HighLevel derives merge keys from the field names, so the client’s own automations can say {{contact.rekomi_referral_link}} in a partner welcome email. One smart list per tag and the client has a partner CRM without a new login.
Twelve clients, twelve partner programs: the math
Let me run the agency owner’s scenario with numbers. Every Rekomi brand account connects to one HighLevel location and one Stripe account, so a 12-client agency runs 12 brand accounts under one login (the switcher’s dialog is titled “Create another brand account”). Each client keeps its own affiliates, rules and payout run.
Here are two of them:
- Client A is a boutique gym selling a $149/mo membership through a two-step order form on their Stripe account, paying partners a flat $30 per new member. Recurring Stripe products arrive on their own, so A needs no webhook. Six partners bring in 8 new members in a month: $240 in commissions.
- Client B is a coach selling a $1,200 program through an order form on Square, paying partners 15% per sale. Square never reaches Rekomi by itself, so B gets the Payment Received workflow. Four partners bring 3 sales: $540 in commissions.
The math: say the 12 clients average $300/mo in credited commissions, which is $3,600/mo paid to partners across the agency. Rekomi’s 3% on that is $108. Twelve Starter accounts at $29/mo is $348. So the agency pays $456/mo in total, $38 per client, and Rekomi runs every payout batch, collects the W-9 and W-8 forms, and hands you the 1099-NEC candidates list at year end; the client files as payer of record. If you bill each client $199/mo for partner program management, that’s $2,388/mo of new agency revenue on $456 of software, and nobody on your team is pasting PayPal batches!
On the plans: Starter is $29/mo with 1 campaign and unlimited affiliates, Growth is $49/mo with unlimited campaigns, and Pro is $99/mo with a white-label affiliate space on your own domain, so the client’s partners see the client’s brand, never ours. Every plan starts with a 14-day free trial, none is priced per affiliate, and the 3% is the only usage charge – it pays for payouts in 165+ countries and the tax forms. Next to a spreadsheet, a PayPal login and a January of chasing W-9s, that’s a no-brainer.

Is a GHL referral program different from an affiliate program?
No, not really: on HighLevel people use the two words for the same setup, but the distinction is worth 30 seconds because it changes the reward. A referral program usually means existing customers refer friends for a small thank-you (a free month, a discount, a credit, etc.); an affiliate program means partners with an audience earn cash commissions. HighLevel’s Affiliate Manager handles both with flat or tiered rewards. In Rekomi, a referral program is a campaign with a flat reward per sale, and the partner shares the same tagged link. It’s the same tracking and payout run with a different reward table.
The limits, stated where they belong
Every mechanism has edges, and I’d rather you meet these here than in a client meeting.
- The link has to land on a page HighLevel tracks, and the visitor has to submit a form, survey, calendar, chat contact or order form in that same session. An untracked page records nothing, and a form in an iframe on another site records the iframe’s page, not the visitor’s arrival.
- UTM values are case-sensitive in HighLevel. Rekomi’s tags are lowercase, and a link edited by hand with different casing won’t match.
- Your client’s own tagged campaigns overwrite the latest arrival, which is why Rekomi checks the first arrival first.
- The contact has to exist with the buyer’s email, created inside the lookback window (365 days by default). When two contacts share an email, Rekomi reads the one HighLevel returns.
- Refunds on webhook sales are manual; Stripe-billed refunds reverse on their own.
- HighLevel’s rate limit is 100 requests per 10 seconds per location. Rekomi makes a read or two per sale, keeps a short per-email cache, and retries after two minutes if HighLevel answers 429.

Questions agency owners ask about this
These are the ones that come up on almost every call, so here are the short answers.
Does HighLevel have an affiliate program?
Yes. The one for running your own is the Affiliate Manager, a feature inside HighLevel, and the three options above sit around it. HighLevel’s own promoter program, which pays people for referring accounts to HighLevel, is a different thing and not what this article is about.
Do I need a tracking script on the client’s funnel for Rekomi?
No. Every affiliate link carries a tag HighLevel stores on the contact when they submit a form, calendar booking, chat contact or order form on a page it tracks, and Rekomi reads it back by email when the sale arrives. The Rekomi script is optional and adds click counts.
Does this work if my agency sells HighLevel in GHL SaaS mode?
Yes, with the same two conditions as any other client: the signup has to land on a form or order form in the location you connected, and the subscription has to bill through the Stripe account you connected. As of September 2026, HighLevel’s SaaS mode FAQ describes two versions: V1 bills through Stripe at the agency level, and V2 is configured per sub-account on Stripe, NMI, Authorize.net or Square. Plans billing on your connected Stripe account arrive like any recurring Stripe product; anything else needs the Payment Received workflow.
What happens when a customer refunds?
For sales that arrived through the connected Stripe account, the refund reverses the commission on its own. For sales posted by the workflow webhook, HighLevel doesn’t send the refund to Rekomi, so you invalidate the sale from the Sales view and the commission reverses from there.
Will a contact from my client’s own email campaign get credited to an affiliate?
No, not on its own. A contact is credited only when an affiliate link is the first arrival or the latest one. A contact whose first arrival was Jane’s link and whose latest was the newsletter is still credited to Jane; a contact who came from the newsletter both times isn’t credited to anyone, which is correct.
Do this next, the agency version
Pick the client where this is easiest to prove, and run the whole loop once before you touch the other 11.
- Choose a client whose checkout is a HighLevel order form on Stripe, so no webhook is needed for the first test.
- In that sub-account, copy the Location ID and create a private integration token with the Contacts and Custom Fields scopes.
- Start a Rekomi trial, connect the location and the client’s Stripe account, and create one campaign with the reward the client wants.
- Invite two partners, open one of their links yourself, submit a real form with a fresh email, and run Check a subscriber’s email. If it names the partner, the loop is closed.
- If the client sells on Square, NMI, Authorize.net or PayPal, add the Payment Received workflow with the four Custom Data fields.
- Turn on Sync referred customers and leads, build the client a smart list on the
Rekomi customertag, then open the account switcher, create another brand account, and repeat for client two. By client three it’s a super quick 15-minute job.
That’s the whole build, and the client sees their partners, their referred customers and their commissions inside the HighLevel account they already open every morning.
Open dashboard Start a 14-day free trial View pricing


