Skip to content

Thinking · Newsletter

How do I test the full ad journey, from ad to landing page to purchase?

Map five steps, give each one event in Meta, GA4 and Shopify, find the leakiest step, test it alone and judge the result on purchases.

TL;DR. Treat the journey as five steps (impression, click, landing view, add to cart, purchase), give each step one named event that fires in your ad platform and in your analytics, then read the step-to-step rates per ad to find the step losing the most people. Change that one step, hold everything else constant, and judge the test on purchases, never on the metric of the step you changed. The setup is tagging and checking; the discipline is testing one step at a time.

Why the whole journey, not just the ad

The ad decides who clicks and what they expect; the page decides whether that expectation is met; checkout decides whether the decision survives the payment form. A creative that wins on click-through can lose on purchase because it attracted people the page cannot convert. You only see that if every step is measured for the same visitors.

The five steps and the event for each

Meta's pixel, Google Analytics 4 and Shopify each name the same steps slightly differently. Map them once, in a table like this, and use the same names in every report.

Step Meta pixel standard event GA4 recommended event Shopify conversion report
Impression and click Reported in Ads Manager Session with your UTM tags All sessions
Landing view ViewContent view_item Sessions by landing page
Add to cart AddToCart add_to_cart Sessions with cart additions
Checkout InitiateCheckout begin_checkout Sessions that reached checkout
Purchase Purchase purchase Sessions that completed checkout

Meta's reference describes ViewContent as "A visit to a web page you care about (for example, a product page or landing page)", and warns that it "tells you if someone visits a web page's URL, but not what they see or do on that page." Google's reference says add_to_cart "signifies that an item was added to a cart for purchase", and purchase "signifies when one or more items is purchased by a user."

How to test the full ad journey, step by step

  1. Tag every ad URL with UTMs, with one value per creative. Google's guidance is to "always use utm_source, utm_medium, and utm_campaign", and to use utm_content "to differentiate creatives". Without a creative-level value you can see that a campaign leaks but not which ad caused it.

  2. Fire one event per step, from the browser and the server. Meta says: "For optimal ad performance, we recommend that advertisers implement the Conversions API alongside their Meta Pixel." On Shopify, the Facebook and Instagram channel's Enhanced and Maximum data-sharing levels use the Conversions API as well as the pixel, and Shopify notes that "Data sent from server to server can't be blocked by browser-based ad blockers."

  3. Deduplicate before you trust a single number. If the same purchase arrives from the pixel and the server, Meta says "the eventID from the Meta Pixel must match the event_id in the corresponding event coming from the Conversions API," and the event names must match too. In GA4, send a transaction_id with every purchase; Google says the parameter "helps you avoid getting duplicate events for a purchase."

  4. Walk the journey yourself before any test starts. Click your own ad, add to cart and buy. Watch the events arrive in Meta's Test Events window and in GA4's DebugView, which Google says "displays the events and user properties that Analytics collects from a user in real time." Meta notes that events sent with a test code still flow into Events Manager, and that you need to remove the code from your production payload.

  5. Build the funnel and read it per ad. In GA4, a funnel exploration lets you "visualize the steps your users take to complete a task and quickly see how well they are succeeding or failing at each step", with up to 10 steps. Use a closed funnel, where "users must enter the funnel in the first step", so each drop-off is the same people moving through. Shopify's Conversion rate breakdown report gives a session view, from all sessions to sessions that completed checkout.

  6. Find the leakiest step by comparing rates, not counts. Work out each step's rate from the step before it (click to landing view, landing view to add to cart, add to cart to checkout, checkout to purchase) for each of your top ads. Test first the step where the rate is lowest against your own other ads, or where one ad diverges sharply from the rest. This is our working method, not an industry benchmark: no universal "good" rate for any step survives a different product, price and audience.

  7. Change one step and hold the others. If the leak is click to landing view, test page speed or the redirect chain. If it is landing view to add to cart, test the page: does it repeat the promise the ad made? (Our ad-to-landing-page guide covers how to audit that handoff.) If it is checkout, test the checkout. New creative and a new page in the same test teaches you nothing about either.

  8. Read the result on purchases. A page change that lifts add to cart and leaves purchases flat did not work. Report completed purchases per thousand impressions, which covers the whole journey from the ad onward, and use the step metrics only to explain the result. The reasoning is in measure creative on purchases, not on the ad.

Where each leak usually lives

In our experience, the gap between a click and a landing view is the one teams look at least. Meta introduced a landing page views metric in 2017, saying it was "beginning to rollout a new metric called landing page views" and that "This new metric will help businesses realize the importance of optimizing for a better mobile web experience." If clicks and landing views diverge for one ad and not the others, check that ad's destination before you blame its creative.

In our experience the gap between a landing view and an add to cart is usually a message problem: the ad made a specific promise and the page opened on something else. The gaps after add to cart are usually about cost, shipping and the form, which creative cannot fix.

Three things that make results unreadable

  • Looking for UTMs in the wrong place. Google notes that UTM parameters are omitted from the "Landing page + query string" and "Page path + query string" dimensions and appear in Page location instead. Teams that look in the wrong dimension conclude the tagging failed.
  • Counting a purchase twice. Pixel plus server without a shared event ID inflates the last step and makes every test look better than it was.
  • Reading platform credit as proof. The ad platform's purchase count is what it attributes to itself. To know whether the journey adds sales that would not have happened anyway, run a holdout, as described in incrementality testing for creative.

Flixr makes the ad and the landing page from the same brief and is judged on the client's own numbers, which is why we test the journey as one funnel.

Questions people ask

What is the most important event to set up first? Purchase, with a value, a currency and a unique ID. Meta lists currency and value as required for its Purchase event, and Google's transaction_id is what prevents duplicates; every other step only matters in relation to it.

Should I use GA4 or Meta Events Manager to read the funnel? Both, for different jobs. Events Manager shows what Meta sees; GA4 or Shopify shows the same visitors across every source. When they disagree, check deduplication and UTMs first.

How do I know which step to test first? Pick the step with the lowest rate from the step before it, compared with your own other ads, not with a published average. Test that step alone and read the result on purchases.

Can I test the ad and the landing page at the same time? Not in the same test. Run the creative test against a fixed page, then the page test against a fixed set of ads, so each result has one cause.

Sources: Meta, Meta Pixel reference: standard events; Meta, Deduplicate Pixel and server events; Meta, Conversions API: using the API (Test Events); Meta Newsroom, "Metrics Release: New Ways to Better Understand Interactions", 29 June 2017; Google, GA4 recommended events; Google Analytics Help, Funnel exploration; Google Analytics Help, URL builders: collect campaign data with custom URLs; Google Analytics Help, Monitor events in DebugView; Shopify Help Center, Behavior reports; Shopify Help Center, Facebook data sharing.

Keep reading

All thinking

Let's open the logbook.

Name three rivals. We'll send back a read of your live ads against theirs: what you all say, who's on screen, and what's lasting.

Or email admin@flixrstudios.co.