3 min read

Four systems, one customer

Dense network of connected nodes and lines, illustrating one customer joined across four systems
Photo by Alina Grubnyak on Unsplash

Someone searched for a problem you solve, read a comparison page, left, came back a week later from a newsletter, signed up with a personal email, invited three colleagues on the work domain, and their finance team paid the invoice from a fourth address.

Ask any single tool in your stack who that customer is and you get a confident, partial answer.

What each system actually knows

  • Search Console knows a query and a landing page. No person attached.
  • Your analytics knows an anonymous visitor id, which becomes a user id at signup, and loses everything before that unless you stitched it.
  • Your product database knows users and the account they belong to. It has no idea where any of them came from.
  • Stripe knows a customer, a subscription and an amount. It does not know which product actions preceded the upgrade, and the email on the card is frequently nobody who has ever logged in.

None of these is wrong. They are each authoritative about their own slice, and none of them can answer a question that spans two slices.

The questions that need the join

Almost all of the useful ones:

  • Which acquisition channel produces accounts that are still paying at month twelve, not which produces the most signups.
  • Did the customers who churned last month share a behaviour eight weeks earlier, and was it voluntary churn or a failed payment?
  • When a deploy broke onboarding for two days, what did it cost in MRR rather than in conversion rate?
  • Is that enterprise account expanding because it is succeeding, or adding seats to solve a problem the product should have solved?

Each requires walking the chain from a query to a session to a user to an account to a billing customer to a dollar amount. Break the chain anywhere and the answer degrades to a correlation you have to squint at.

Why it is hard, honestly

The joins are not clean. A user's email does not match the billing email. One person has three devices and two browsers. An account changes its domain after an acquisition. Someone signs up twice. A subscription moves between customers. The anonymous-to-known stitch is lossy by construction, and gets worse every time a browser tightens storage rules.

Anyone who tells you identity resolution is a solved problem is selling you a deterministic match on email address.

What good looks like

Not certainty. A stated confidence and a visible chain. When a finding says a campaign produced $12,000 of retained revenue, you should be able to open it and see which accounts, which billing records, and which of the links in that chain were exact matches versus inferred.

A number you cannot audit is not evidence. It is a number.

That is the difference between an analytics dashboard and something you would actually let make a recommendation.

Keep reading