When we audited over 1K ads through the public Facebook Ads library, we found that 8% of those ads did not match the content that was delivered on the landing page. Things like missing discount offers, bundles that were very hard to find, and missing products were among that group of 8% that were flagged.
This finding took us by surprise. What if more brands out there are quietly losing ad spend to these mismatches? Based on our research, it appears like it could be a large problem that not many in the ecommerce world are talking about right now.
That’s why we took things a step further and developed this Claude Skill, designed to help you audit your own storefront.
Since you have perfect access to your own data, you can hook that data from Meta into Claude, and give Claude a set of rules to follow so it automatically checks your funnel for mismatches.
We also took the errors that we found from our initial run and incorporated that into what you see below.
Good luck and let us know how it goes!
You want Claude to check these six areas for every ad and its landing page. Offer and product cause the biggest drop-offs.
| Area | What to check | Red flag |
|---|---|---|
| Offer | The same discount, code, bundle or free shipping appears on the first screen, and is applied automatically if the ad promised it | “40% off” in the ad, full price on the page |
| Product | The exact product, colorway or bundle from the ad is the hero of the page | Ad shows one product, click lands on a homepage or a collection where that product isn’t featured. A collection personalized by the ad’s link to show the product first is a match. |
| Creator | The influencer or UGC creator appears with their name, quote, photo or video, ideally the same clip | Creator ad lands on a page with no trace of them |
| Message | The ad’s hook or main claim is repeated in the page headline | Ad leads with a benefit the page never mentions |
| Look and tone | Colors, imagery style and energy feel like the same brand moment | Raw phone-shot ad leads to a glossy studio page |
| Details | Urgency, shipping, language, currency and region match what the ad said | “Ends Sunday” with no timer or mention on the page |
Claude gives each checklist area 2 points for a clear match, 1 for a weak match and 0 if it’s missing, for a total out of 12. Any pairing that scores 0 on Offer or Product goes to the top of the list, whatever its total.
It then ranks the pairings by spend. A simple priority is spend × (12 − score): a high-spend ad with a low score is where you’re losing the most money.
It also uses performance as a cross-check. High click-through with low conversion usually means the ad works but the page breaks its promise. Low click-through points to a problem with the ad itself, not the page.
Give Claude access to three things. After that, no one has to gather data by hand.
| What to connect | Why Claude needs it | How |
|---|---|---|
| Meta Ads account | Active ads, creative, copy, destination URLs, spend, click-through rate | A Meta Ads connector (a custom MCP connector), or a scheduled Ads Manager export to a shared folder |
| Store data | Conversion rate and revenue by landing page | A Shopify connector, or a connector for your analytics tool |
| A browser | To open each landing page like a shopper and take mobile screenshots | Claude in Chrome or Claude’s built-in browser |
Then save the checklist and scoring rules as a Claude skill, so every run uses the same standards. The next sections show how.
Put the audit rules in a skill, and use a scheduled task only to decide when it runs. The skill holds everything Claude needs to know, so the same audit runs whether someone asks for it by hand or a schedule starts it. When your rules change, you update the skill once.
A skill is a folder with a file called SKILL.md in it. That file has a short header with the skill’s name and a description of when to use it, followed by the instructions in plain language.
Copy everything in the box below into SKILL.md. Keep the header between the — lines exactly as formatted, and edit the [bracketed] parts. Keep in mind, some edits will need to be made here before you can go live, so make sure to adjust those [bracketed] sections to fit your brand.
—
name: ad-landing-page-audit
description: Use when auditing paid social ads against their landing pages, checking for offer, product, creator or message mismatches, or when asked for the weekly ad-to-page audit.
—
# Ad-to-landing page audit
Find ads whose landing page doesn’t deliver what the ad promised, rank them by wasted spend, and suggest fixes. Report and draft only. Never change ads, budgets or live pages.
## 1. Gather the data
– From the Meta Ads connector [or the export folder: name it], pull every ad in the ad library that is currently active and delivering, with no spend minimum. Skip paused, archived and deleted ads, and ads in paused campaigns or ad sets. Use the last [14] days of data for each active ad: image or video, headline, primary text, call to action, full destination URL with UTMs, creator name or handle if any, spend, click-through rate.
– From [Shopify / your analytics tool], pull conversion rate and revenue per visitor for each landing page over the same dates.
– If a source can’t be reached, say which one at the top of the report and continue with what you have. Never guess missing numbers.
– Audit every ad, not a sample. For large libraries, work in batches by campaign, highest spend first, and save progress to the results file after each batch. If a run ends early, the next run picks up where it stopped, and the report says how many ads are still unchecked.
## 2. Prepare each ad
– Group ads that share a destination URL and creative concept. Score each group once, but record every ad in it in the results file, so every ad in the library gets a score.
– For video ads, take frames at the start, middle and end, and transcribe the audio. Spoken offers count as part of the ad.
## 3. Capture each landing page
– Use the full destination URL exactly as the ad sends it, with every parameter kept: UTMs, discount codes, and any product, variant or collection parameters. Never shorten or clean up the URL. If the link is wrapped in a Facebook redirect (l.facebook.com), take the real destination from inside it, parameters included.
– Before loading, list the parameters and note any that could change what the page shows, such as a product ID, variant, handle, “featured”, “pin” or sort parameter. Many stores use these to put the clicked product first on a collection page.
– Open that exact URL on a phone-sized screen (390 px wide). Wait until the page has fully loaded, including product grids that load after the page appears, since personalization often happens a few seconds in.
– If a parameter looks like it personalizes the page, also load the same page without it. If the ad’s product moves to the top or is highlighted only with the parameter, the page is personalized: judge the personalized version.
– Close cookie banners. If a pop-up covers the first screen, screenshot it once, close it, then continue.
– Screenshot the first screen without scrolling, then the full page.
– Note redirects, out-of-stock products, errors, and region or currency changes.
## 4. Score each pairing
Score each area 2, 1 or 0, for a total out of 12.
– Offer. 2: the same discount, bundle or free shipping is on the first screen and applied automatically if the ad implied it. 1: present but below the fold, worded differently, or needs a manual code. 0: missing or contradicted.
– Product. 2: the exact product, colorway or bundle from the ad is the hero. 1: on the page but not featured, or a close variant. 0: generic collection or homepage, or out of stock. A collection page scores 2 if its URL parameters put the ad’s product first or feature it on the first screen. Score it on the page as the ad’s own link loads it, never on the plain collection URL.
– Creator (skip and score 2 if the ad has no creator). 2: the creator’s name, quote, photo or video is on the first screen. 1: lower on the page. 0: absent. Identify creators only by the name or handle in the ad’s metadata, never by face.
– Message. 2: the page headline repeats the ad’s hook or main claim. 1: the claim appears but not in the headline. 0: not mentioned.
– Look and tone. 2: same visual style and energy. 1: noticeably different but clearly the same brand. 0: feels like a different company. Mark this score as a judgment call.
– Details. 2: urgency, shipping, price, currency and language all match. 1: one small difference. 0: a promise from the ad is missing or wrong, such as “ends Sunday” with no mention.
Any pairing with 0 on Offer or Product is a priority flag, whatever its total.
## 5. Rank
– Priority = weekly spend x (12 – score).
– Note pairings with above-average click-through but below-average conversion. These are the strongest signs the page is breaking the ad’s promise.
## 6. Compare with last run
– Read [the results file, such as Ad audit results.csv in the shared folder].
– Mark each issue New, Still open or Fixed. If an ad from last run has since been paused, mark it Paused and drop it from the report, rather than counting it as Fixed. Then save this run’s results to the same file.
## 7. Report
Use this format every time:
1. One-sentence summary: active ads in the library, ads checked, priority flags, and estimated spend on mismatched pages.
2. A table of every pairing with a priority flag or a score below [9] out of 12, sorted by priority: ad name, landing page, score, what’s missing, weekly spend, status (New / Still open / Fixed), suggested fix.
3. Ad and first-screen screenshots side by side for each pairing in that table.
4. Fixed since last run.
5. Anything that couldn’t be checked, and why, plus a link to the full results file with a score for every active ad.
Suggested fixes change the page, not the ad: add the offer to the hero, link to the product page, add a creator section, repeat the hook in the headline, or reuse the ad’s own footage.
Send the report to [names or channel].