Blog / Analytics & attribution
Know which channel, post and offer brings clients: every lead should arrive with its source
How we made every lead on evdevs.com carry where it came from, what the person needs and when they want to start, so marketing spend and content can be judged by the clients they produce.
A lead that arrives as just a name and a message answers one question: someone wants to talk. It leaves out the questions that decide where the next hour and the next dollar go. Which channel sent them? Which article convinced them? Which offer were they reading? Are they ready now or in six months?
When we rebuilt our own site, the first funnel step we shipped was making every lead arrive with those answers attached.
Remember where the visitor came from
On every page, the site notes how the visitor arrived: campaign tags (utm_* parameters and ad click IDs) or, when there are none, the referring site, plus the first page they saw. It keeps two records:
- The first visit: what introduced them to us.
- The latest tagged visit: the campaign, newsletter or post that brought them back most recently.
Both live in the visitor’s own browser and nowhere else until they choose to send the form. People rarely contact a company on their first visit, so keeping only the last click would credit whatever happened to bring them back and hide what found them in the first place. With both, you can see the channel that introduces people and the one that closes.
Two questions that make triage instant
The contact form asks two short questions:
- What do you need? A build for a funded startup, winning back a site’s lost revenue, AI in product or operations, or something else.
- When do you want to start? Optional, so it never stands between a person and the send button.
The answers decide who replies and with what, before anyone has read the message.
The lead arrives complete
Each lead email states the need, the timing, the page it was sent from and both sources, and the subject line reads “New lead — need — name”, so the inbox itself is sorted. The same lead creates or updates a contact in HubSpot with the need, the timing, the self-check score if there is one and both sources, and the message is attached as a note. The person gets an auto-reply in their language. Email and CRM are independent: if one is down, the lead still arrives through the other.
After sending, the visitor lands on a thank-you page that sets expectations and points to our case studies. It is kept out of search results and the sitemap, so it only ever counts real submissions.
Every stage is measured
A funnel you cannot measure stage by stage is a guess. Google Analytics 4 now records each step as an event:
contact_open: the contact form was opened.form_start: the person started filling it in.generate_lead: the lead was sent. This is the conversion, and it carries the need, the timing and the page.check_startandcheck_complete: a free self-check was started and finished.book_call_click: the person clicked to book a call.
With these, the drop-off between steps becomes visible. Many forms opened and few started points to the form. Many started and few sent points to a question that asks too much. Many checks finished and few leads points to the offer that follows the result.
Test with a known answer
We tested the whole path end to end with a visit we had tagged ourselves, then checked that the lead carried exactly that tag. That test caught a real bug: a campaign tag without a medium was being recorded as “direct”. Left alone, it would have quietly credited a campaign’s leads to nobody. We fixed it before launch.
Why it matters
Without a source on each lead you cannot tell which channel, post or offer produces clients, so budget and writing time follow opinion. With it, every decision about what to publish, promote or drop can be checked against the leads it actually brought in. The qualifying questions mean faster, better first replies. And because the data stays in the visitor’s browser until they choose to contact you, none of it costs their trust.
This is the same discipline we bring to client work: get the real data in first, then decide. It is the first stage of our method, and it applies to a sales funnel as much as to an AI system.
Written from our engineers’ work on production systems. Want a second opinion on your project? Talk to an engineer.
See the work →