GoHighLevel
Connect GoHighLevel (HighLevel) so affiliates, referred customers and leads land in your sub-account as contacts with the referring affiliate on the record, and send form leads back to Rekomi with a workflow webhook.
Rekomi's GoHighLevel integration works in both directions. Rekomi pushes affiliates (and, if you turn it on, referred customers and leads) into a HighLevel sub-account as contacts with Rekomi custom fields and tags. HighLevel workflows can post form submissions back to Rekomi so a lead captured in a HighLevel funnel is credited to the affiliate whose link brought the visitor.
What syncs
Affiliates (always on)
When an affiliate is approved (or, optionally, when they apply), Rekomi calls POST /contacts/upsert with:
locationId, your sub-accountemail,firstName,lastNamesource: "Rekomi"customFields:Rekomi referral link,Rekomi referral slug,Rekomi campaign,Rekomi affiliate status
Then it adds tags with POST /contacts/{id}/tags: Rekomi affiliate plus any default tags you set. Tags are added, never replaced, so the tags your own workflows applied stay in place.
Referred customers and leads (optional)
Turn on Sync referred customers and leads on the integration page. Every sale or lead Rekomi attributes to an affiliate is upserted as a contact (matched on email) with:
Rekomi referring affiliate,Rekomi referring affiliate slug,Rekomi referring affiliate emailRekomi last event(saleorlead) andRekomi last sale amount(for sales)Rekomi campaign- Tag
Rekomi customer(sale) orRekomi lead(lead-only signup), plus your default tags
Refunded, denied and fraud-quarantined conversions are never pushed. Imported historical conversions are not pushed either.
Custom fields
Rekomi creates any missing Rekomi ... field on first use (text fields on the contact model). HighLevel derives the merge key from the name, so in emails, SMS and workflows you can use for example:
{{contact.rekomi_referral_link}}{{contact.rekomi_referring_affiliate}}{{contact.rekomi_last_event}}
If you prefer to create the fields yourself first, use the exact names above and Rekomi reuses them.
Finding your credentials
In your HighLevel sub-account (not the agency view):
- Settings, then Business Profile. Copy the Location ID (about 20 letters and digits).
- Settings, then Private Integrations, then Create new integration. Name it "Rekomi".
- Scopes: Contacts (view and edit) and Custom Fields (view and edit). Nothing else is needed.
- Copy the token. It starts with
pit-.
Agency API keys and legacy v1 keys do not work with this integration; the connect form rejects them before making any call.
Connecting GoHighLevel in Rekomi
- Go to Integrations in the dashboard sidebar.
- Click the GoHighLevel card.
- Paste the Location ID and the private integration token. Click Connect.
- Rekomi runs a test call against
GET /locations/{locationId}/customFields, which also proves the custom-fields scope. - Once connected, add default tags if you want them, and turn on Sync referred customers and leads if you want customers in HighLevel too.
There is no list picker: in HighLevel the location itself is the audience. Use tags and your own smart lists to segment.
Sending leads from HighLevel to Rekomi
Use this when the signup happens inside a HighLevel form or funnel and you want the lead credited to the affiliate whose link brought the visitor.
- On the landing page, capture the affiliate slug from the URL. Rekomi links look like
https://yoursite.com/?via=slug. Add a hidden field to your HighLevel form namedvia(orrekomi_via) that is filled from the URL parameter. HighLevel forms can read URL parameters into fields when the field's name matches the parameter. - Copy the Inbound webhook URL shown on the GoHighLevel integration page in Rekomi. Treat it like a password: anyone who has it can post leads to your account.
- In HighLevel, open the workflow that runs on that form submission and add a Webhook action. Method
POST, URL = your inbound URL. The default payload already includesemail,first_name,last_nameand your form's custom fields at the root; nothing else to configure. If you use the Custom Data section instead, addemailandviathere.
Rekomi reads email, the name fields and the first of rekomi_via, via, rekomi_affiliate, referring_affiliate, affiliate, ref, referral. A submission without an affiliate slug is acknowledged and ignored. Leads recorded this way behave exactly like leads from the tracking script: they show under the affiliate, and if that person later buys, Rekomi's email-match attribution credits the sale.
The inbound URL only resolves slugs that belong to your account, and every response is a plain 200 so it cannot be used to probe for slugs.
Tags
Enter default tags on the integration page (up to 8, 64 characters each). Rekomi always adds the system tag (Rekomi affiliate, Rekomi customer or Rekomi lead) so you can build smart lists and workflow triggers on it.
When sync fires
- Default: only
Approvedaffiliates sync. - Optional: turn on "Include applicants before approval" to also sync
Pendingaffiliates. - Customers and leads: when the conversion is recorded (Stripe or any other billing source, S2S postback, tracking-script signup, or the inbound webhook above).
Per-campaign overrides
Each campaign can override the account-level configuration. From a campaign's detail page, open the Settings tab and scroll to the CRM sync for this campaign section. Turning a campaign off there stops both affiliate and customer syncs for that campaign.
Per-affiliate sync visibility
Open any affiliate's detail page. The CRM sync panel shows the per-CRM status. Resync clears prior jobs and re-fires the sync.
Troubleshooting
- Connection test fails with 401, The token is not a Private Integration token, was revoked, or belongs to a different sub-account than the Location ID. Re-create the token inside the same sub-account.
- Connection test fails with 403, The token is missing the Custom Fields scope. Edit the integration in HighLevel and add it.
- Contacts arrive without Rekomi fields, The token cannot create custom fields (scope) or the location hit its custom-field limit. Rekomi still syncs the contact; create the fields manually with the exact names and resync.
- Tags missing on a contact, Check the contact was not merged in HighLevel after the sync; merging keeps the tags of the surviving record only.
- HTTP 429, HighLevel allows 100 requests per 10 seconds per location. Rekomi paces syncs and honors
Retry-After; a large bulk approval simply takes a few minutes. - Webhook leads not appearing, Confirm the payload carries
emailand a slug field, that the slug belongs to an approved affiliate on your account, and that the affiliate is not submitting their own email (self-leads are dropped and recorded as a fraud signal). - Sync fails with 401/403 after working before, The token was revoked. Rekomi marks the integration "action needed" and emails you a reconnect prompt once per breakage. Create a new token, reconnect, then use Resync all on the Failed tile.
Disconnecting
From the GoHighLevel connect page, click Disconnect. The integration row, its inbound webhook URL and per-campaign overrides are deleted (the old URL stops working immediately). Historical sync rows are preserved for audit.
See the GoHighLevel integration overview on the marketing site for use-cases, persona fit, and unique automation patterns.