What HighLevel records without any setup
HighLevel keeps two attribution records on each contact. First Attribution is set at the first recorded touch and stays fixed. Latest Attribution updates as new interactions are recorded. Both sit in the activity area of the contact record.
They're filled by HighLevel's own capture points: forms, surveys, calendar bookings, chat contact capture and order forms. A supported external form can feed them too, through External Tracking.
To classify a visit, HighLevel reads the page URL and the referring domain. When neither carries anything useful, the visit is filed as Direct Traffic.
Where native attribution runs out
Native attribution describes the web visit that captured the lead. Leads that arrive another way, through an integration platform, an email that triggers a workflow, or a person typing them in, don't pass through those capture points. Check each route you use against the list above.
That gap is why our builds add a small set of fields. They sit beside native attribution and answer questions it can't. They don't replace it.
Native attribution covers the web visit. Your own fields cover every other route in.
The fields we add
This is our house set. It's a recommendation, not something HighLevel requires, and each field earns its place only if someone will report on it.
- source: where the lead came from, in your own names, such as a referral partner, an event or a paid ad. On every contact.
- source method: how the lead arrived. We use four values: native (a HighLevel form, booking or chat), integration platform, email trigger, and manual.
- utm_source, utm_medium, utm_campaign: added when a paid or otherwise trackable source exists.
- utm_term: added for Google search campaigns, where the keyword matters.
- first touch time: added only when multi-touch attribution is part of the job. Skip it otherwise.
Setting it up
Look before you add. Most of the work is finding out which routes HighLevel already covers.
- Open Contacts, pick a recent lead from each source, and read its First Attribution and Latest Attribution.
- List every route leads take into the account, and mark which ones pass through a supported capture action.
- For the routes that don't, create the source and source method fields, and set them in the workflow or integration that creates the contact.
- Add the UTM fields only for sources whose links carry tracking parameters.
- For Facebook ads, use the paid-social parameters HighLevel documents. The source value is fb_ad, and the parameters are case-sensitive.
- Decide which reports read first touch and which read latest touch, and label them, so nobody compares one against the other.
Why a contact shows the wrong source
The usual cause is a link without tracking, or a visit that lost its referrer. With nothing to read, HighLevel files the visit as Direct Traffic.
For Facebook, check the ad links themselves. Paid-social classification is case-sensitive, and the older utm_source=facebook convention is deprecated in favor of fb_ad, so links still using the old value or the wrong case may not be read as paid social. HighLevel has changed this convention before, so check its current attribution article before a campaign launches.
Remember too that the two records answer different questions. First Attribution never changes; Latest Attribution moves with each new interaction. A report that mixes them will disagree with itself.
Rather have it set up for you?
We'll add the source, source method and UTM fields your routes need and check that each route fills them. Start with a 30-minute 1:1 with Rob.
