To find which ad creative drives revenue, tag every ad with its ad ID, carry that ID onto the lead record in your CRM, and join closed deals back to the creative. Then rank creatives by cost per sale and revenue per dollar spent, not by CTR or cost per lead. In Meta that means adding {{ad.id}} to the ad's URL parameters; in Google Ads, the {creative} ValueTrack parameter returns a unique ID for the ad. Once revenue sits next to each creative, the ranking often flips: the ad with the cheapest leads is frequently not the one that sells.
This guide explains why platform metrics mislead at the creative level, how to set up creative-level attribution, a worked example, and where the method stops working.
Why can't Ads Manager tell you which creative drives revenue?
Meta and Google report what happens on their side: impressions, clicks, leads, and the conversions they claim. For a lead-gen or sales-led business, the revenue happens later, in the CRM, after a salesperson qualifies and closes the lead. Ad platforms don't see that unless you send it back. So the creative that "wins" in Ads Manager is the one that produces the most cheap form fills or chats, which is not the same as the one that produces customers.
Two common distortions:
- Curiosity creatives (big discounts, free offers, vague hooks) attract many low-intent leads. Cost per lead looks great; close rate is poor.
- Specific creatives (price shown, testimonial, clear qualifier) attract fewer leads who already know what they want. Cost per lead is higher; cost per sale is often lower.
Platform conversion numbers also overlap across channels and include view-through conversions, which our post on view-through conversions covers in detail.
Which metrics tell you what at the creative level?
| Metric | Source | What it tells you | What it hides |
|---|---|---|---|
| Thumb-stop / hook rate, CTR | Ad platform | Whether the creative earns attention | Whether the attention buys |
| Cost per lead | Ad platform or CRM | How cheaply the creative fills the funnel | Lead quality |
| Cost per qualified lead | CRM | Whether leads match your buyer | Close rate and deal size |
| Cost per sale | CRM + spend | What a customer costs from this creative | Deal value differences |
| Revenue (or gross profit) per $1 of spend | CRM + spend | Which creative actually pays back | Incrementality; small samples |
Use the top rows to diagnose and iterate, and the bottom rows to decide where budget goes.
How do you set up creative-level attribution?
- Use IDs, not just names. In Meta, add parameters such as utm_content={{ad.id}} or a separate ad_id={{ad.id}} in the ad's URL parameters field. Kommo's documentation on WhatsApp ad UTMs lists the supported placeholders: {{campaign.name}}, {{campaign.id}}, {{adset.name}}, {{adset.id}}, {{ad.name}} and {{ad.id}}. IDs survive renaming; names can change and break joins.
- Do the same in Google Ads. Google's ValueTrack documentation describes {creative} as a unique ID for your ad and {campaignid} as the campaign ID. Note that Performance Max doesn't list {creative}; it uses {assetgroupid} instead.
- Capture the ID on the lead. Store it in a hidden form field or, for WhatsApp, in the lead's tracking data. Our guide to passing UTM parameters into your CRM walks through the setup.
- Keep a creative register. One row per ad ID with concept, hook, format, offer, talent and launch date. This lets you group results by idea, not only by individual ad.
- Join CRM outcomes to the ID. Qualified, won, lost, deal value. Pull spend per ad ID from the platform.
- Rank by cost per sale and revenue per dollar, with a minimum sample before you call a winner.
- Send the outcome back. Push qualified leads and sales to Meta and Google through their conversion APIs so delivery learns from revenue, not form fills. See how to optimize Meta ads for qualified leads.
Worked example: three creatives, one budget
Example (hypothetical numbers, not customer data): a real estate developer runs three Meta creatives for the same project, $4,000 each over 60 days. Each sale is worth $6,000 in commission.
| Creative | Leads | Cost per lead | Qualified | Sales | Cost per sale | Revenue per $1 |
|---|---|---|---|---|---|---|
| A: "From $0 down payment" | 400 | $10 | 40 | 2 | $2,000 | $3.00 |
| B: Walkthrough video with price | 160 | $25 | 64 | 6 | $667 | $9.00 |
| C: Buyer testimonial | 200 | $20 | 50 | 4 | $1,000 | $6.00 |
In Ads Manager, A is the winner: 2.5 times cheaper leads than B. In the CRM, B produces three times more revenue per dollar. The sales team also spent time on 360 unqualified leads from A, a cost that never shows up in the ad account.
A caution about sample size: 2, 4 and 6 sales are small numbers. One extra sale for A would change its cost per sale by a third. Before moving most of the budget, let the test run until each creative has enough sales to be stable for your business, or judge on qualified leads (40, 50, 64) as a leading indicator while sales accumulate.
How do you attribute revenue to creative concepts, not just single ads?
Individual ads fatigue and get replaced. Concepts last longer. Tag each ad in your register with attributes such as:
- Angle: price, speed, social proof, fear of missing out, education.
- Format: static, carousel, talking-head video, UGC, demo.
- Hook: the first line or first three seconds.
- Offer: discount, free consultation, none.
Then sum spend and CRM revenue by attribute. You may find that testimonial-angle ads in any format close at twice the rate of discount-angle ads. That is a brief for the next round of production, which is more useful than knowing one ad won.
Where creative-level attribution breaks down
- Automated creative mixing. When Meta assembles ads from several assets (dynamic or flexible formats), one ad ID can contain many combinations. You can attribute revenue to the ad, but not always to a specific headline or image inside it.
- Name parameters are fixed at launch. Vendor documentation such as Airbridge's Meta guide notes that name-based values like {{ad.name}} are set when the ad first runs, so renaming later doesn't update them. Use IDs.
- Multiple touches. A buyer may see three creatives before converting. Last-touch credits only the final one. A multi-touch model spreads credit, but the result depends on the model you choose.
- Views without clicks. Creatives that build awareness may never get the click that carries the ID. Their value shows up only in incrementality tests or brand search trends.
- Small budgets. If you close five deals a month in total, creative-level revenue will be noise. Work at the concept or campaign level instead.
Where Admira fits
Admira joins Meta, Google Ads, TikTok and Click-to-WhatsApp ad data with closed revenue in your CRM and reports ROAS, ROI and CAC from that joined data, so you can build the table above in its report builder instead of a spreadsheet. Its AI ad creative generator (on the Growth plan) can then produce new variations based on what is closing. It is a young product with few public reviews, so ask for a demo on your own data before committing. For a pure Shopify store with online checkout, an ecommerce-focused tool may be a better fit.
Who this is for, and who it isn't
For: lead-gen and sales-led teams running several creatives per campaign, agencies reporting creative performance to clients, and anyone whose cheapest leads don't seem to buy.
Not for: accounts with one or two ads and a handful of monthly sales, where campaign-level reporting is all the data can support.
FAQ
What is creative-level attribution?
Linking each sale or revenue amount to the specific ad creative that produced the lead, so you can compare creatives on cost per sale and revenue instead of clicks or leads.
Which URL parameter should I use for Meta ad creatives?
{{ad.id}}, placed in utm_content or a dedicated ad_id parameter. IDs stay stable if you rename the ad.
Does this work with Google Performance Max?
Only partly. Google's ValueTrack docs don't list {creative} for Performance Max; it uses {assetgroupid}, so you attribute to asset groups rather than individual ads.
How many sales do I need before picking a winning creative?
There is no universal number. Small counts swing a lot, so use qualified leads as an early signal and wait for sales to stabilize before shifting most of the budget.
Why does the cheapest-lead creative often lose?
Broad hooks and big discounts attract people with low intent. They fill the form but rarely buy, so the cost per sale ends up higher.
Can I attribute WhatsApp leads to a creative?
Yes. Add dynamic parameters to the Click-to-WhatsApp ad; CRMs like Kommo save them on the lead card. Our WhatsApp ads attribution page explains the setup with Admira.






%20(2).png)