I listed every event the business cared about and every place it could fire, then wrote one spec: five funnel events, one name each, one set of parameters. Legal and compliance reviewed it once, before a single tag existed.
FIELD REPORT 14 · TRACKING INFRASTRUCTURE · NEWTON CRYPTO
Measurement from zero
in two months
Newton, a regulated Canadian crypto trading platform, had no MMP, no server events and no single source of truth when I joined. Two months later every channel ran on clean data, from the app SDK to one table everyone read.
measurement stack
- APP PATH
- BROWSER PATH
- SERVER PATH
- INTO THE TABLE
- NOT BUILT YET
Build order is my reconstruction of the sequence. The two month total is the record.
WEEK 8 · ONE TABLESpend from every platform joined to app and web events under one taxonomy. Every channel review started from this table.
Every platform was grading its own homework.
I joined Newton Crypto in June 2024 as Senior Manager. Newton is a Canadian crypto trading platform, regulated, with apps on iOS and Android and a web platform.
There was no mobile measurement partner, no server side events and no single source of truth. Each ad platform reported its own conversions, and nobody could line those numbers up against each other or against the business.
Consumer paid growth ran on Meta, Google, TikTok and Apple Search Ads at six figures a month. Before any of it could scale, the numbers had to be real. So the first job was the plumbing.
a month
June 2024 to June 2025
The bet: an ad platform can only optimize on the events it receives. In a regulated funnel the events that matter happen after the app closes. Identity gets approved, funds settle, the first trade fills. Those had to reach every platform from the server, under one name each.
Five events, one name each, on every platform.
The regulated funnel from account to first trade: where each event fires and which platforms receive it. Colors match the paths on the wiring map.
| # | EVENT | FIRES IN | SENT TO | |||||
|---|---|---|---|---|---|---|---|---|
| APP SDK | WEB TAG | SERVER | META | TIKTOK | APPLE SEARCH ADS | |||
| 01 | Sign upsign_upAccount created. Browser and server copies share one event_id. |
|||||||
| 02 | KYC startedkyc_startedIdentity check opened. |
|||||||
| 03 | KYC approvedkyc_approvedIdentity verified, often after the user has left the app. |
|||||||
| 04 | First depositfirst_depositFirst funds settled. |
|||||||
| 05 | First tradefirst_tradeFirst order filled. |
|||||||
Every event goes to Meta, Google and TikTok. Apple Search Ads is attributed through AppsFlyer and read in the table.
- 01Sign up
sign_upAccount created. Browser and server copies share one event_id.APP SDKWEB TAGSERVER - 02KYC started
kyc_startedIdentity check opened.APP SDKWEB TAGSERVER not fired here - 03KYC approved
kyc_approvedIdentity verified, often after the user has left the app.APP SDK not fired hereWEB TAG not fired hereSERVER - 04First deposit
first_depositFirst funds settled.APP SDK not fired hereWEB TAG not fired hereSERVER - 05First trade
first_tradeFirst order filled.APP SDK not fired hereWEB TAG not fired hereSERVER
- APP SDK
- WEB TAG
- SERVER
- SENT TO THE PLATFORM
- ATTRIBUTED THROUGH APPSFLYER, READ IN THE TABLE
- NOT FIRED HERE
Illustrative spec. The funnel steps and the routing follow how the stack worked. Exact event names and parameters stayed with Newton.
Eight weeks, in the order the data needed.
I did the AppsFlyer integration myself: the SDK in the iOS and Android apps, the in app events from the spec, and SKAN conversion values for iOS mapped to the same funnel steps.
Front end web events in GTM, a server container, and server side events for every advertiser. The backend fed KYC approvals, deposits and trades into the same container. Every event that could arrive twice carried an event_id from its first version.
AppsFlyer postbacks to each network, then the checks below. No number reached a report until its count reconciled with the source it came from.
One reporting table joined ad spend from every platform with app and web events under the same names. From then on, every budget call started from it.
Week by week split: my reconstruction of the sequence. The two month total is the record.
Three platforms can claim the same deposit.
One illustrative journey, default attribution windows. Every platform's own report counts the deposit. The table counts it once.
Illustrative. Windows are each platform's defaults. Dots are clicks, the ring is a view, a coral diamond is a platform counting the deposit as its conversion. This is why the sum of platform reports is never the business number.
Four checks ran before a number reached a report.
AppsFlyer against App Store Connect and the Google Play Console. A gap outside tolerance pointed to an SDK or attribution problem, fixed before anyone read the report.
App and web events against accounts and verifications in the backend. When they disagreed, the backend won.
Server events against the platform's own records. These were the events budgets moved on, so they got the tightest check.
The table against each platform's billing, so cost per result used the same dollars finance saw.
Two months to clean data. Nine months to VP.
What happened after the stack went live, in the order it happened.
- MONTH 0Joined as Senior Manager, June 2024
- MONTH 2Full measurement stack live
- MONTH 3Promoted to Director
- MONTH 4UGC and influencer campaigns launch with strong ROI. On pace for the best quarter in company history.
- MONTH 6Company MVP award, 2024
- MONTH 9Promoted to VP of Marketing
UGC and influencer campaigns launched with strong ROI and put the company on pace for the best quarter in its history. They were read off the same table as every other channel.
Company MVP for 2024, despite joining halfway through the year.
Director at month three. VP of Marketing at month nine. I owned consumer paid growth across Meta, Google, TikTok and Apple Search Ads.
I scaled the marketing team from 2 to 7 and built the SEO and ASO strategy that lifted keyword rankings and organic traffic. Legal and compliance were close partners throughout.
Dates, titles and the award are from my own records. Newton's volumes, revenue and growth multiples stay private. The week by week build order is my reconstruction; the two month total is the record.
Write the names down before anyone opens a tag manager.
Name every event once, with its parameters, before the first tag ships. Every tag, postback and report after that inherits the same names.
Any event that can arrive twice, from the browser and the server, carries an event_id from its first version. Retrofitting dedup means rereading months of doubled data.
Spend and outcomes, web and app, one set of names. When two teams quote two numbers, the table settles it.