BACK TO BLOG
TOOL HOW-TOOctober 27, 20268 min read

How to Audit Shopify Product Pages Against Your Ads

JH

By Joris van Huët

Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs

Published

2026-10-27

The short answer: the ad sells one colourway at a sale price with free shipping. The Shopify page opens on the default variant, at full price, with shipping worked out at checkout. That is three promises broken before the shopper scrolls, and AdAlign is the tool built for that audit: its e-commerce use case names colourway, offer and shipping mismatches (use cases). Run the ad that spends most through the free Meta Ad Analyzer or the free audit first. The steps: list each ad's promises, deep-link the colourway, show the ad's price, state the shipping condition, pick the page type, score, fix.

Disclosure: I earn a commission if you buy AdAlign through a link on this page, and this page recommends it. Every claim about AdAlign links to AdAlign's own pages.

The arithmetic first, then the store:

  1. The discount the product page does not show. For example, an ad promising 20% off a €110 jacket sets an expectation of €88 (€110 x 0.8). If that discount is an automatic discount, Shopify applies it in the cart and at checkout (discount methods). The product page keeps showing €110 unless a third-party app or a custom build adds a crossed-out price (sale pricing). So the shopper meets a page €22 dearer than the ad, and nobody in the admin did anything wrong.
  2. The IDs you already have. Every variant's ID shows in the address bar when you open it in the Shopify admin (find variant IDs). It is all a colour-specific ad link needs.
  3. The check that says it worked. The pair's score before and after, and the add-to-cart rate for that ad's sessions over the same number of days.

See the AdAlign entry for the product and the Shopify entry for the store.

Four promises, and where Shopify decides each one

Promise in the adWhere Shopify sets itWhat the page has to show on arrival
ColourwayThe variant the product URL opens onThe ad's colour as the selected variant, in the image, the swatch and the price
PriceThe price and compare-at price fieldsThe ad's price next to the product name, not only at checkout
OfferDiscounts, codes and the theme's sale badgeThe percentage or code from the ad, above the fold
ShippingShipping zones, rates and free-shipping tiersThe free-shipping promise and its condition, in words

The audit, product by product

1. Group the ads by the page they send people to

Export each live ad with its destination URL and sort by URL. One product page with eight ads behind it is one audit, not eight. Note the four promises from the table beside each ad.

2. Deep-link the colourway

An ad for the sage jacket that links to the plain product URL opens on whatever variant the theme picks. Unless the link tells it, the theme cannot know which colour the ad showed. Shopify's theme documentation describes variant deep links: product links carrying a ?variant= parameter with the variant's ID. Without one, the theme falls back to the selected or first available variant (Shopify variant docs). Add the parameter, open the link on a phone, and check that image, swatch and price all changed. AdAlign checks whether the ad's variant is the page's active one, not only the model name (the AdAlign Brain).

3. Show the price where the ad shows it

To show a sale on product and collection pages, set the compare-at price above the price. Your theme decides how both display (sale pricing). For an ad-led discount, that makes a sale price the native way to put the ad's number on the page. If the same products run in Shopping ads, Google has its own rule. It asks for a sale price that matches what the landing page and the checkout display, with both prices clear on the page (Merchant Center sale price).

4. State the shipping promise with its condition

Shopify's free shipping applies only when an order falls within a tier that covers its total or weight. Each shipping zone, a group of countries or regions, carries its own rates (shipping rates). "Free shipping" in an ad for a product below the threshold, or for a zone without a free rate, is a promise the checkout will break. Put the condition near the price, in plain words.

5. Choose the product page or the collection page on purpose

A single-product ad belongs on that product's page. There, AdAlign treats the size selector and Add to Cart as the call to action rather than marking one missing (the AdAlign Brain). Range and carousel ads can land on a collection page, with the ad's items on top. A promo ad sent to an evergreen collection with an unrelated offer reads to AdAlign as a likely wrong destination URL. That one is fixed by routing, not by rewriting.

6. Score the pair on a phone-sized page

For Meta ads, the free Meta Ad Analyzer covers Facebook feed, Stories, Reels and Instagram. For other platforms, use the free audit. A free account adds the breakdown and fixes on up to 5 audits a month, which is enough for the five pages with the most spend.

An agent compares, a person opens the cart

On Scale and above, AdAlign's REST API can score each ad against its deep-linked product URL. Pass the ad copy as text, so the price is read exactly.

{
  "adData": {
    "imageUrl": "https://cdn.example.com/ads/field-jacket-sage-1.jpg",
    "platform": "meta",
    "adTextFields": { "headline": "The sage field jacket, 20% off", "ctaType": "SHOP_NOW" }
  },
  "landingPageData": { "url": "https://store.example.com/products/field-jacket?variant=36485954240671" }
}

An agent can run every ad in the export, keep the message comparisons marked as a mismatch, and list product, ad price and page price (analyze-ad reference). The human check: before anyone edits the page, a person takes the product to checkout. AdAlign reads the landing page as captured above the fold (audit page), and a checkout-only discount is invisible to it.

What Shopify's and AdAlign's pages warn about

  • Shareable discount links and QR codes work only while the discount is active (managing discounts). An ad pointing at a discount link stops delivering the offer the day it expires. The companion guide on catching expired promotions in live ads covers that day.
  • Catalogue ads that ship with literal placeholders such as {{product.brand}}. AdAlign caps message match on them and raises a high-priority broken-creative fix (the AdAlign Brain).

Shopify's automatic discount works exactly as documented. The admin applies it in the cart and at checkout, and leaves the crossed-out price on product pages to a third-party discount app or a Partner build (sale pricing). So the default store confirms the ad's discount at the very last step. The fix that makes the page agree with the ad sooner is one you buy from someone else.

By hand first, then AdAlign connected

The table and the six steps cost nothing, and they suit a store with a few dozen ads. Past that, connect Meta and Google Ads to AdAlign read-only. Every live ad is scored against its page, product and collection pages are ranked by spend at risk, and daily checks catch expired promos still being paid for (use cases). On Scale, with the AdAlign tag installed, Variants (labelled beta) drafts missing headline and offer copy for approval. On the pricing page, Growth starts from €590 a month on an annual contract for up to €75k a month of total ad spend. Every plan opens with a €1,500 paid 30-day pilot that comes off the first invoices if you continue (checked on 27 October 2026).

Score the product page with the most spend behind it in the free audit today. If its colourway or price is wrong, it is rarely the only one. AdAlign, which pays me a commission when you buy it, is how to find the rest, and the demo runs on your own accounts.

FAQ

How do I send an ad to one colourway on Shopify?

Add ?variant= and the variant's ID, from the admin address bar, to the product URL in the ad (find variant IDs, variant docs). Then check on a phone that the theme switches image and price.

Does AdAlign see a discount that only applies at checkout?

No. It scores the landing page as captured above the fold (audit page), so a cart-only discount reads as missing. Which is accurate. The shopper cannot see it there either.

Should a single-product ad land on a collection page?

Not if the ad names one product. Deep-link that product's variant instead. Collection pages suit range and carousel ads.

TAGS
AdAlignShopifyEcommerceProduct PagesLanding PagesAd QA

ABOUT THE AUTHOR

I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.

I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.

Senior marketing execution

A senior operator doing the work: campaigns, channels, CRM and AI agents, live from day one.