In this guide
What the GoHighLevel Integration Does
Ellipsend installs an app inside your GoHighLevel location. That app adds Ellipsend actions to GoHighLevel's workflow builder, so when something happens in GoHighLevel (a call gets booked, a deal is marked won) the workflow records it as an Activity on the right contact in Ellipsend. Because every link sent from Ellipsend carries a tracking token, that Activity is tied back to the exact post, campaign, and conversation it came from.
Before you start, set up your Pipeline Stages and Activities in Ellipsend. Every account starts with a default Campaign, so there's nothing to build. See Pipelines and Activities in the Settings guide.
The GoHighLevel integration is on Pro, Pro+, and Premium. You'll build the tracking inside GoHighLevel's workflow builder, so it helps to be comfortable with workflows there, or to do this with whoever manages your GoHighLevel account.
Step 1: Connect GoHighLevel to Ellipsend
In Ellipsend, go to Settings > Integrations and click the Go High Level tile.
In the GoHighLevel Settings window, click Copy next to Ellipsend API Token.
Click Connect or reconnect at the bottom right. GoHighLevel opens in a new tab.
Choose the location you want to connect. On the Install confirmation screen, review the permissions and click Next.
When GoHighLevel asks for your Ellipsend API token, paste the one you copied.
Important: The token in this window is your Ellipsend API token, not a GoHighLevel API key. It expires one year after it was created (the date is shown under the token). If your workflows stop sending Activities, check whether the token has expired and reconnect.
Once connected, Ellipsend shows under Installed apps in GoHighLevel's Workflows builder with three actions: Add Activity to Contact, Create Status, and Create Label. This guide covers Add Activity to Contact, which is the one that powers tracking.
Step 2: Understand the Ellipsend Token
Every link sent as a button from Ellipsend (in an Automation or from the Inbox) has the Ellipsend tracking token added as a URL parameter. By default that parameter is utm_term.
When a contact clicks that link and lands on a GoHighLevel page, form, or calendar, GoHighLevel stores the value on the contact under Attribution > Latest > UTM Term. That is where you pull the token from in your workflows. In any field that accepts dynamic values, click the tag icon and pick it from the list.
The Add Activity to Contact action uses this token for everything. It identifies the contact, the campaign, and the post. You don't need to map email, phone, or a contact ID.
Step 3: Track a Single Conversion (One Workflow)
Use this when you only want to track the first thing that happens after someone clicks your link, like booking a call or buying from a checkout page.
In GoHighLevel, create a workflow with the trigger for your conversion (for example, an appointment being booked).
Add a condition that checks whether Attribution > Latest > UTM Term has a value. If it's empty, the contact didn't come from Ellipsend, so end the workflow there.
Add the Add Activity to Contact action from the Ellipsend app.
In Ellipsend Token, click the tag icon and insert Attribution > Latest > UTM Term.
In Activity Type, pick the matching Activity from the dropdown. The list mirrors the Activities in your Ellipsend account.
The Activity's custom fields appear below. Map each one to the GoHighLevel data you want in Ellipsend (call time, closer name, amount). Fields marked with an asterisk are required.
Click Save action and publish the workflow.
Step 4: Track Later Conversions (Multi-Touch)
A purchase that happens after a sales call doesn't come from an Ellipsend link, so there's no fresh token to read. You need to save the token when the first conversion happens, then reuse it later. Save it on the Opportunity, not the Contact. A contact can be in more than one Ellipsend Campaign, and each Opportunity keeps its own token.
Set Up Once: Create the Custom Field
In GoHighLevel, go to Settings > Custom Fields and click Create Field.
Set Field type to Single line and Add to object to Opportunity.
Name the field Ellipsend Token. Pick any folder.
Save.
In Your First-Conversion Workflow (For Example, Booked Call)
This is the part most people miss. The token has to be written to the Opportunity here or the later workflow has nothing to send.
Add a Find Opportunity action set to Most recently created opportunity. If you run more than one pipeline, add a field filter for Pipeline so it finds the right one.
Add an Update Opportunity action. Under Fields, choose Ellipsend Token and set its value to Attribution > Latest > UTM Term.
Add Add Activity to Contact for the booking, same as Step 3.
If a separate workflow creates the Opportunity when the call is booked, put a short Wait step before Find Opportunity so the Opportunity exists by the time this workflow looks for it.
In Your Later-Conversion Workflow (For Example, Deal Won)
Use an Opportunity-based trigger such as Pipeline stage changed. The Opportunity is then available to every step in the workflow, so you don't need Find Opportunity here.
Add Add Activity to Contact.
In Ellipsend Token, insert Opportunity > Custom Fields > Ellipsend Token.
Pick the Activity (for example, Purchased) and map its fields. Opportunity fields like Opportunity Value and your own custom fields such as Total Revenue can be mapped dynamically.
Click Save action and publish.
If your trigger isn't Opportunity-based (a payment trigger, for instance), add Find Opportunity before the Ellipsend action so its custom fields are available.
Step 5: Confirm It's Working
Run a test contact through the workflow, then check both sides.
In Ellipsend, go to Settings > Integrations > API. The Api Log shows each call from GoHighLevel with its status. A 200 means the Activity landed.
In Ellipsend, open the contact in the Inbox. The Activity should appear on the contact and they should have moved to the mapped Pipeline Stage.
In GoHighLevel, the workflow's execution log shows the Ellipsend step and any error it returned.
Common Mistakes
Token is empty. The contact was added to a Pipeline Stage after the link was sent, or the link went out as plain text instead of a button. See How Tracking Works for why order matters.
Activity doesn't move the contact. The Activity isn't mapped to a Pipeline Stage. Fix it under Settings > Campaigns > Pipelines in Ellipsend.
Purchase never shows up. The first-conversion workflow never wrote the token to the Opportunity. Open a test contact's Opportunity in GoHighLevel and check the Ellipsend Token field.
Find Opportunity grabs the wrong one. Add a Pipeline filter, and add a Wait step if another workflow creates the Opportunity.
Everything stopped at once. The Ellipsend API token expired. Reconnect from Settings > Integrations > Go High Level.








