First-party attribution

First-touch attribution without a third-party analytics account

The useful question was not “can I replace every GA4 report?” It was “which source and landing page introduced this visitor-day, and can that evidence survive after raw events are deleted?” I kept that first observation separate from later journey events and from the fuller click-routing system.

Write-once landing source per visitor-day · later goals stay separate · permanent source rollups

01

Define the identity boundary before the report

The analytics system does not create a durable person profile. It creates a property-scoped visitor-day, records the first observed landing and source context inside that boundary, and relates later pageviews or goals to that same bounded record.

That makes the report useful for comparing entry pages and acquisition sources without pretending a browser-day is a person, a household, or a customer across devices.

  • Property-scoped rather than network-wide
  • First observed landing context kept separate from later events
  • No cookie, browser-storage identifier, raw IP address, or full user agent
  • Unknown and direct traffic remain explicit instead of being repaired with guesses
02

Keep the first touch stable

If a visitor-day enters on one page and later opens another page from an internal link, the later navigation must not overwrite the original acquisition context. Campaign parameters, referrer classification, and the entry path belong to the first observed touch; later events describe the journey.

A goal can therefore be grouped by the first observed landing source while the raw sequence is still available for inspection. That is attribution within a declared window, not proof that the source caused the result.

03

Preserve the decision history before cleanup

First-touch landing-source totals are part of the permanent rollup contract. The cleanup job creates and verifies those rollups before deleting eligible raw rows in bounded, resumable batches.

After cleanup, the operator keeps the dimensions designed into the rollup. Arbitrary raw-event reconstruction is intentionally gone, which is why the retained fields have to be agreed before deletion starts.

04

Use the routing engine when the click itself is the product

Landing-source analytics is enough for many owned sites. It is not enough when a campaign must choose a path, attach a click identifier, send the visitor to a lander or offer, accept a later conversion, and fire an idempotent postback.

That complete chain belongs to the traffic-routing and attribution system. Keeping the two products separate prevents a small analytics tracker from becoming an undeclared redirect platform.

05

What the implementation proves

  • Working multi-property analytics system with campaigns, goals, journeys, and first-touch landing-source rollups
  • Approximately 3 KB gzipped stateless tracker with no cookies or browser storage
  • Permanent rollups created before bounded raw-data cleanup
  • Separate routing alpha for click identity, route decisions, conversions, and postbacks
Attribution boundary

Where the attribution record changes—and where it must not.

The diagram distinguishes observed acquisition context, later behavior, retained aggregates, and the separate full-routing product.

First-touch attribution flow from initial landing and source context through a stable visitor-day record, later journey events, goals, and permanent rollups, with a separate branch for full click routing
The first observed landing source stays stable inside its declared visitor-day. Full route and postback attribution remains a separate system.
Attribution contract

Record, use, and boundary.

The boundary is not a disclaimer after the fact. It defines what each record is allowed to mean.

RecordImplemented useBoundary
First observed touchLanding page and available source context are assigned inside one property-scoped visitor-day.It does not identify the same person across browsers, devices, days, or properties.
Later journey eventsPageviews and goals remain distinct from the first observed acquisition record.Association inside the declared window is not causal proof.
Permanent rollupLanding-source dimensions survive the guarded raw-data cleanup path.Dimensions not designed into the rollup cannot be reconstructed after raw deletion.
Full click attributionA separate system records source → campaign → flow → path → route → lander → offer → conversion → postback.That routing alpha requires its own load, recovery, infrastructure, and acceptable-use gates.

Limits: Visitor-days are estimates, not unique people. · Missing referrers, privacy controls, blockers, and offline activity create unavoidable unknowns. · First-touch attribution assigns credit inside a chosen model; it does not prove incrementality or causality.