Ideas for better growth
Setting Up Conversion Tracking Properly
Chris Content · · 5 min read
Wrong conversion data leads to confidently wrong decisions. How to define conversions, implement them reliably, handle consent, and verify the numbers.
Conversion tracking is treated as a setup task and then trusted forever. In practice it breaks quietly - a template change, a new consent banner, a duplicated tag - and the reports keep producing numbers that look plausible and are wrong.
Wrong conversion data is worse than none, because it produces confident decisions in the wrong direction.
Step 1: Define conversions as business outcomes
Start by writing down what actually matters:
- Primary - a completed order, or a qualified enquiry
- Secondary - a started checkout, a quote request, a booking
- Supporting - a newsletter signup, a call tap, a WhatsApp click
The common failure is optimising toward a proxy. If you optimise ad spend toward "button click", the platform will reliably find people who click and do not buy. Optimise toward the outcome you actually want.
For lead businesses, the honest conversion is a qualified enquiry, not a form fill. That means the qualification result has to flow back - see website to CRM workflow.
Step 2: Assign a value
A conversion without a value cannot be compared against cost:
- For commerce, use real order value, excluding tax and delivery if that is how you judge margin
- For leads, use an expected value: average deal value multiplied by your historical close rate for that source
- Review the assumed values quarterly
Without values, every channel report is a volume report.
![]()
Step 3: Implement so it fires once
Most tracking bugs are duplication or omission:
- Fire the conversion at the point the outcome is confirmed, not when a button is pressed
- Guard against double-firing on page refresh and back navigation - use the order identifier for deduplication
- Do not fire on a thank-you page that can be revisited or bookmarked
- Check single-page navigation, where events commonly fire on every route change
- Confirm the tag exists on every relevant template, not just the one you tested
For your most important conversions, recording server-side is more reliable: it survives ad blockers, script failures, and the page being closed. Consent obligations still apply - it is a reliability improvement, not a way around consent.
Step 4: Handle consent deliberately
If measurement is held until consent, you will measure fewer conversions than actually happen:
- Know roughly what share of visitors decline
- Understand which tools are held and which are not
- Do not compare a consent-gated period against an ungated one and call it a trend
- Never bypass consent to preserve numbers - the regulatory and reputational cost far exceeds the reporting benefit
See our cookie consent guide and privacy compliance guide.
Step 5: Verify, do not assume
Test properly before trusting anything:
- Complete a real conversion end to end and confirm it records once
- Refresh the confirmation page and confirm it does not record again
- Navigate back and forward and check the same
- Test on mobile, and with an ad blocker enabled
- Test a failed payment and confirm it does not count
- Check the value recorded matches the actual order value
Then reconcile: compare platform-recorded conversions against your own order or enquiry records for the same period. If analytics says 180 and your order table says 214, you have a measurement gap to explain before you use either number.
Step 6: Expect the platforms to disagree
They will, permanently:
- Analytics undercounts, because of blockers, consent, and lost sessions
- Ad platforms overcount, partly through modelling and their own attribution windows
- Different attribution models credit different touchpoints
- Cross-device journeys are partly invisible
Do not spend weeks reconciling them. Use your own order and CRM data as the source of truth for revenue, and treat platform reports as directional. Our guide on measuring without third-party cookies covers the wider approach.
Step 7: Watch it over time
Tracking degrades:
- Check weekly that conversions are still recording
- Set an alert for a sudden drop to zero, which usually means a broken tag, not a broken business
- Re-verify after every template change, theme update, or consent-tool change
- Include a tracking check in your monthly maintenance routine
- Audit your tag manager quarterly and remove tags nobody owns
Common mistakes to avoid
- Optimising toward clicks. You get clickers, not customers.
- Double-firing on refresh. It inflates everything downstream.
- Never reconciling with your order table. The only real check available.
- Counting form fills as conversions for a lead business. Volume is not qualification.
- Comparing across consent changes. The baseline moved, not the business.
Frequently asked questions
Why do my analytics and ad platform conversion numbers differ?
They measure and attribute differently, and one of them models conversions it cannot observe. Some gap is expected. Use your own order records as the reference and treat both as directional.
What should I count as a conversion?
The business outcome you actually want - a completed order or a qualified enquiry - with a monetary value attached. Button clicks and pageviews are proxies that lead optimisation astray.
How do I know my conversion tracking is working?
Complete a real conversion, confirm it records once, refresh and navigate back to check it does not duplicate, test with an ad blocker, and reconcile the totals against your own order or enquiry records.
Does consent affect conversion tracking?
Yes. Where measurement is held until consent, some conversions go unrecorded. Know roughly what share that is so you interpret the numbers correctly, and never bypass consent to improve reporting.
Next steps
Complete one real order on your own site and verify the conversion records exactly once with the correct value. Then reconcile last month's tracked conversions against your order table before making another spend decision.
Start free and capture the source on every enquiry so the loop closes.
