Blog · Post 02
Build log

How we built attribution that survives the front desk

Most tools lose the ad click the second a sale happens somewhere other than a web checkout. In a gym, that's almost every sale. Here's the tag-on-arrival model we built so a lead stays connected to its ad all the way to a swiped card.

KKuviro Build Log·June 28, 2026·6 min read
One identity, four touchpoints Ad clickInstagram Trial formwebsite Walk-in visitfront desk Card swipedmember

Here's the problem in one sentence: the tools that measure ads assume the sale happens on a webpage. In a gym, it almost never does. Someone clicks an Instagram ad, fills out a trial form, comes in for a class three days later, thinks about it over the weekend, then joins at the front desk on Tuesday while chatting with the person who taught their class. By the time money changes hands, the ad click is four steps and a browser session in the past — and every off-the-shelf pixel has long since lost the thread.

So the first thing we built wasn't a dashboard. It was an identity that refuses to let go of that first click.

Tag on arrival, not on checkout

The standard model waits for a conversion event on the website and tries to match it back to an ad. We flipped it. The moment anyone lands from an ad, we capture the click and attach it to a durable visitor record — before they've done anything. From then on, the job isn't "attribute the sale," it's "keep matching this human to that record as they move through the real world." Four steps:

1
Capture the click parameters on arrival

When a visitor arrives from a paid link, we read the ad identifiers and store them in a first-party visitor record that isn't tied to a single browser tab or a short-lived cookie.

2
Bind identity at the first shared detail

The trial form asks for an email and phone — the same details the front desk will use later. That's the join key. The visitor record and the lead become the same person, on purpose.

3
Carry the tag through the in-person sale

When that email or phone signs a membership at the counter, over the phone, or on a walk-in, the sale is written against the same record — so the ad click is still attached at the exact moment money is collected.

4
Report the real sale back to the ad platforms

We send the confirmed membership back to Meta and Google via their Conversions APIs, so their algorithms optimize on members who actually paid — not just people who clicked.

The trick isn't tracking the click. Everyone can track a click. The trick is not losing it when the sale walks through a physical door.

Why this only works if you own the whole stack

This is the part that convinced us to build the entire platform instead of a marketing add-on. Attribution that survives to the sale requires the sale to happen inside the same system that saw the click. If booking, POS, and check-in are three separate vendors, there's no single record for the tag to ride on — the click dies in the gap between tools, which is exactly why the current stack can't answer the cost-per-member question.

Because Kuviro runs booking, billing, POS, and front-desk check-in on one ledger, a front-desk sale and an Instagram click are events on the same timeline. Nothing has to be reconciled across vendors after the fact. The connection was never broken in the first place.

What it produces

Once the loop is closed, the output is the number owners have never reliably had: true cost per member, by campaign — counting the sales that happened at the counter, not just the ones that happened online. That's the number the whole product is built to protect, and it's why we started here instead of with a prettier calendar.

The 30-second version

Curious what your real cost-per-member is?

We rebuild honest attribution as part of a free 15-minute demo — and show you which ads are actually producing paying members.

Book a demo

Keep reading

Building in public · 01
Why we're building a MindBody alternative

The gap in gym software, and why we're documenting the whole build.

Migration · 03
What it takes to replace MindBody

Memberships, autopays, and history all have to survive the move.

Field note
The attribution gap

Why your front-desk count never matches Facebook — and what it costs you.