Marketing Event Tracking Setup and Troubleshooting
Signups recorded in one tool never showed up in campaign reports. The funnel numbers didn't add up, so nobody trusted the metrics enough to act on them.
Industry
Small marketing team at a growing online business
Role
Systems consultant — tracking audit, webhook rebuild, verification tooling
Impact
The team went from arguing about which number was right to reading one trusted event log. Tracking issues now surface in minutes instead of at the end of a campaign.
01 - Problem
The problem
The team ran paid and organic campaigns into a Typeform signup flow, but the numbers never reconciled. Signups visible inside Typeform were missing from campaign reports; other days the reports showed more conversions than actual submissions. Every reporting cycle became a debate about which tool was lying, and decisions were made on gut feel.
The cause was structural, not one bug. Tracking had been bolted on in pieces over time, so the same signup could travel two paths into reporting — or none. The fix wasn't more automation on top; it was getting the data flow right underneath. The tracking had to be mapped, simplified, and made verifiable first.
02 - System Flow
How the system moves
Signup submitted
Typeform form completed
Webhook fires
Single Typeform webhook path
Payload checked
Event ID and required fields
Duplicates filtered
Dedupe against logged event IDs
Event logged
Google Sheets event log
Verification view updates
Real-time arrival tab
Reports reconcile
Counts match across tools
03 - Build
What I built
End-to-end tracking audit
I traced a single signup from Typeform submission to final report, documenting every hop. That surfaced the real problems: a legacy integration silently dropped events when a payload field was empty, and a forgotten connection re-sent the same signups, inflating counts on some days. The audit produced a map of every event path — the basis for what to keep and what to kill.
Rebuilt webhook tracking flow
I tore out the overlapping integrations and rebuilt on one webhook path: Typeform fires on submission, the payload is validated, and the event lands in a structured Google Sheets log with a unique event ID, timestamp, campaign source, and form name. Deduplication happens at entry, so retries and double-fires can't inflate the numbers. One path in, one log, one source of truth.
Live verification sheet
Trust needed more than a correct pipeline — the team had to see it working. I added a verification tab showing events arrive in real time, with status flags for missing fields and a daily count to check against Typeform's own numbers. It doubles as a lightweight reporting dashboard, handed over with a short runbook on each column and what to do when a count looks off.
04 - Impact
Business impact
Campaign numbers reconcile across tools, so the team stopped debating reports and started acting on the data.
Tracking problems surface in minutes on the verification sheet instead of weeks later when a report looks wrong.
What used to take an afternoon of cross-checking exports per campaign is now a glance at one event log.
The documented event map and runbook let the team diagnose most tracking issues themselves.
05 - Edge Cases
What had to be handled
Webhook retries and double-fires: every event carries a unique ID and is deduplicated at entry, so a re-sent payload updates the existing row instead of creating a second signup.
Test and internal submissions: entries matching internal email patterns or a test flag are logged but marked excluded, so they stay visible without polluting campaign counts.
Missing or malformed payload fields: the event is captured rather than dropped and flagged on the verification sheet — silently discarding incomplete events was a root cause of the missing signups.
Missed events during an outage: a daily count against Typeform's submission totals catches any gap, with a documented re-sync step in the runbook.
06 - Improvements
What I would improve next
Move the event log from Google Sheets to a proper database as volume grows, keeping the sheet as the team-facing view on top.
Add an automated alert when daily event volume drops well below the usual range, so a broken webhook gets noticed without anyone checking the sheet.
Extend tracking beyond the signup into activation and purchase, so the same trusted log covers the full funnel.
Related capabilities