Ad tracking for a subscription business we built and run

We run the Instagram and Facebook ads of a subscription business we built and run. Here is how we saved where each paying customer came from, what the ad platform missed and what we learned.

The starting point.

Ads on Instagram and Facebook

New customers arrive from short video ads, seen on the phone.

Paid by card, every week, month or 3 months

Customers subscribe online and pay through the payment system, with a free trial first.

The click and the money days apart

Because of the trial, the first payment comes days after the click on the ad.

Only the ad platform's numbers

At first we only looked at the ad platform's count, and it didn't match our own records.

01

Every sale reaches the ad platform once, even when it is reported twice.

The visitor's browser and our website both report the sale. Both use the same receipt number, so the ad platform keeps one and drops the copy.

Try it · example data

One sale, two reporters

The browserSale · $29Receipt A17
Our websiteSale · $29Receipt A17

What the ad platform counts

0sales
  • Nothing reported yet.
The payment confirms the saleThe sale is reported when the payment system confirms the money, not when someone taps Pay.
Each confirmation is noted firstEvery confirmation is written down before anything happens, so a repeated one is ignored.
A slow ad platform never blocks a saleIf the ad platform doesn't answer within 3 seconds, the checkout goes on anyway.
02

The ad a customer came from is saved with their payment.

The link in each ad carries the campaign and the ad. At checkout it is saved with the payment, so we know where paying customers came from, not only who clicked.

Try it · example data

The link the customer tapped

oursite.com/start

StripePayment record

The payment appears here.

Campaign and ad in the linkEach ad's link names its campaign and its group of ads, out of sight for the customer.
Three groupsEvery customer is sorted as coming from a paid ad, an unpaid post, or somewhere else.
Customers who paidThe source sits next to the payment, so the weekly view counts customers who paid, not clicks.
03

Our own visitor count found 76% more people than the ad platform showed.

Every hour, our website's own visit records are read, robots are left out and each person is counted once. Privacy settings on phones and ad blockers hide some visits from the ad platform, but not from our own records.

Try it · example data

Our website's visit records · one hour

  • 10:02 /start · Android phone
  • 10:04 search robot
  • 10:05 /start · same Android phone
  • 10:09 /start · iPhone
  • 10:11 link preview robot
  • 10:14 /start · laptop with ad blocker

People this hour

The count appears here.

The ad platform showed871visits to the page our ads send people to
We counted1,536people on the same page, 76% more

Source: our website's own visit records compared with the ad platform's count, 10 to 24 August 2026.

Every hourThe count runs every hour, so it is never more than an hour old.
Robots left outSearch engines and link previews visit too. They are removed before counting.
Each person onceRepeat visits are merged using a scrambled code, so nobody is counted twice.
04

One weekly view, from the ad to the payment.

Saw the ad, arrived, clicked to buy, added a card, paid. When a number is missing, the view says so instead of showing zero.

From the ad to the payment · example figures

Five steps, one screenFrom the people who saw the ad to the people who paid, side by side, every week.
No data is not zeroA missing number shows as missing, so nobody reads a gap as a bad week.
Spend next to paying customersThe week's ad spend sits next to the week's first payments, in the same view.

The project in numbers.

871visits the ad platform showed in two weeks
1,536people we counted on the same page
76%more than the ad platform showed, over the same two weeks

Source: our website's own visit records compared with the ad platform's count, 10 to 24 August 2026.

What we learned.

01Count where the money is.

The source saved with the payment shows which ads bring customers who pay.

02Keep a second count.

Your website's own visit records are a steady check on the ad platform's numbers.

03One receipt number per sale.

It lets two reporters speak about the same sale without counting it twice.

04Show missing as missing.

A gap in the data reads as a gap, so decisions rest on real numbers.

05Tracking never slows a sale.

The checkout always comes first, and the reports follow.