Symphony Apps Development logo — teal interlocking S monogram beside the studio wordmark
All writing

Which page produced the lead: first-touch attribution without a tracking circus

We wanted to know which blog post or pricing tier actually starts a conversation. Doing that honestly took one session key, three database columns and no third-party tracker.

Category
Engineering
Reading time
6 min
Published
29 Aug 2026
Topics
Analytics, Attribution, Privacy, Engineering

We write a lot. Some of it produces conversations and some of it produces nothing, and until recently we could not tell the two apart. The usual fix is a tag manager, a marketing platform and a cookie banner that nobody reads. We did not want any of that on a site whose whole argument is that most of the apparatus is waste.

The smallest thing that answers the question

On the first page of a visit, record three values in session storage: the path the visitor landed on, the referring host, and any campaign parameter in the URL. Never overwrite them. When a form is submitted anywhere on the site, send those three values along with the message.

That is the entire mechanism. No identifier survives the session, nothing is shared with a third party, and it works with JavaScript-light pages because it runs on the first render.

Three columns and a dashboard

The submission table gained `landing_path`, `referrer` and `campaign`. An internal, role-gated page groups submissions by landing page and by the kind of form that was filled in — checklist download, pricing tier enquiry, proposal, general contact — with totals and the date of the most recent lead in each bucket.

The value is not in the totals. It is in the shape: a post you thought was a throwaway turns out to start a third of the pipeline, and the polished one you spent a week on starts none.

What it deliberately cannot do

It cannot follow someone across visits, across devices or across sites. Somebody who reads three posts over a fortnight and then enquires from a search for our name is credited to that last session. We accepted that inaccuracy in exchange for not building a surveillance layer, and for our volumes the ranking of pages has stayed stable enough to act on.

Why this is a pattern worth stealing

Most attribution projects fail because they try to be exact. Exactness needs identity, identity needs consent, consent needs infrastructure, and six months later you have a data platform instead of an answer. Ask a narrower question and the honest implementation fits in an afternoon.

Frequently asked

Does this need cookies or consent?

It uses session storage scoped to the visit and stores no identifier that survives the browser session, so nothing follows a person between visits. Any analytics beyond that stays behind the consent gate.

Why first touch rather than last touch?

Because the question we wanted answered was which piece of writing started the conversation. Last touch nearly always credits the contact page, which tells you nothing about what to write next.

What do you do with the data?

Aggregate it in an internal dashboard grouped by blog post, pricing tier and other pages, so content decisions are made against evidence rather than taste.

Tell us what you’re trying to ship

A first call is thirty minutes and costs nothing. Bring the problem, not a spec — working out what to build is the part we are good at.

Or email office@symphonyapps.ro. We reply within one business day, in English or Romanian.