Resources
What it takes to build a unified customer view for a client.
Four systems each hold part of a person. Joining them up is a keys problem, not a tooling problem.
- 7 minute read
- 5 sections
Part 1
What you are actually trying to join
A client's ad platforms know that somebody clicked. Their analytics knows what that person did on the site. Their CRM knows who the person turned out to be. Their store or billing system knows what they paid.
None of those four systems shares an identifier with the others by default. That is the entire problem, and it is why a unified customer view is a data modelling exercise rather than a purchase.
Part 2
The keys, from most to least reliable
Pick the strongest key available at each join rather than one key for everything.
An order or invoice identifier
The most reliable key there is, because it is created once by a system the client controls. Where an order ID can carry through to the CRM, that join is exact.
A normalised email address
Strong, and the usual bridge between the store and the CRM. Normalise it first: lower case, trimmed, and with the obvious duplicates resolved, or you will have one person as three records.
A first-party identifier the site sets itself
A value the client's own site assigns and passes into forms and orders. More work to set up and the only key that survives someone changing their email address.
Campaign tags
The join between spend and behaviour rather than between records. Reliable only to the extent that the tagging is consistent, which is why a naming convention is upstream of all of this.
Part 3
Where it quietly goes wrong
The failure is almost never a join that returns nothing. That gets noticed. The failure is a join that returns too much.
One customer with two records joins to their orders twice and their revenue doubles. A join at the wrong grain, such as a customer table against a daily events table, multiplies every figure by the number of days matched. Both produce a total that is larger than reality and looks plausible.
The check is a count, not an eyeball. After every join, count rows before and after. If a join increased the row count and you did not expect it to, stop.
Part 4
Do less than you think
A unified customer view sounds like it means every field about every person in one enormous table. In practice the useful version is narrow: a customer, the campaign that first brought them, what they have spent, and when they were last active.
Those four facts answer most of the questions that made the client want this in the first place, including the one no single platform can answer, which is what they spent to acquire the customers who actually paid. Build that, use it for a quarter, then add fields you find you are missing rather than the ones you can imagine wanting.
Agree that narrow version with the client before starting. It is a project with an end, and every field about everybody is not.
In practice
Where SightShark fits
Each client's ads, analytics, CRM, e-commerce and payments land in one warehouse you own, scoped to that client, which is the precondition for joining them at all. The modelling runs in SQL inside that account, so a join is something you can read and check rather than a setting inside a product.
Row counts and freshness are monitored on a schedule, which is what catches a join that started returning too much before it reaches a report.
See how the platform worksQuestions
Questions people ask
What is a unified customer view?
One record per customer that pulls together what a business's ad platforms, analytics, CRM and store each know about them separately. The difficulty is that none of those systems shares an identifier with the others by default, so building it is a data modelling exercise rather than something you can buy ready made.
How do I join CRM data to advertising data?
Not directly, because they share no identifier. The usual path is a normalised email address or an order identifier to join the store to the CRM, and campaign tags to join spend to behaviour. Pick the strongest key available at each join rather than using one key everywhere.
Why did my revenue double after joining two tables?
Almost always a duplicate on one side or a join at the wrong grain. One customer with two records joins to their orders twice. A customer table joined against a daily table multiplies figures by the number of days matched. Count rows before and after every join, because both failures produce a plausible looking total.
Also worth reading
- 7 min read
Sending warehouse data back out to the ad platforms.
Reporting is data coming in. Activation is the same data going back out, and it fails in different ways.
Read it - 6 min read
Who owns client data: the agency, the client or the vendor.
The question is not who collected it. It is what each party still has the day a contract ends.
Read it - 6 min read
What a first-party data strategy actually involves.
Less a strategy than an inventory, a home and a set of permissions.
Read it
Pricing
Priced by the clients you report on.
Starter
$499 /month
Up to 20 clients
Growth
$999 /month
Up to 50 clients
Enterprise
Custom
No cap on clients
Get started
Want this running on your own data?
Book a call with someone who can answer the technical questions.