Field Manual · Practical AI Series · SW-05
← Field manual index
FM-02 / Paid social operations
FM-02 of 05

Measure Meta lead ads against your sales

Meta tells you what a lead cost. It can't tell you what the lead was worth. Five steps to find out, a checklist you can lift, and what turned up when I ran it on four real campaigns.

The short version

Lead ads on Facebook and Instagram get judged on cost per lead because that's the number Ads Manager shows, and it says nothing about sales. Take spend from Meta and join every lead to your CRM by its lead ID. Follow each lead past the product in the ad, judge each campaign on a conservative floor, then send the sales back to Meta so it can find more people like the ones who bought.

Required inputs.

  • Campaign spend from Ads Manager
  • Lead export with Meta lead IDs
  • CRM export with sales and values
  • Lead report by status

Operator sequence.

01

Reconcile

Take spend from Ads Manager and check it against Meta's invoice.

02

Match

Join every lead to the CRM by lead ID, then hashed email and phone.

03

Follow

Count what each lead went on to buy, not only the product in the ad.

04

Judge

Score each campaign on a floor you can defend, then make the call.

05

Feed back

Send sale stages back to Meta so delivery chases buyers.

The account in this guide: the same Australian education provider as in my Google Ads audit guide. I do this work inside someone else's business. Four Meta campaigns advertised short courses through instant forms, Meta's built-in lead forms. The business also sells full qualifications that cost up to two or three times as much. I can't name it, but the numbers are real.

01 Take spend from Meta, not the CRM

Return on ad spend is revenue divided by spend. Most people worry about the revenue. Check the spend first.

On this account the business's own spreadsheet took spend from the CRM, where each lead carried a cost. When duplicate leads were merged, that cost was lost. Across the four campaigns Meta had charged 11% more than the spreadsheet showed. On one campaign it was 39% more, which made that campaign's return look more than a third better than it was.

Ads Manager is the record of what you were charged. Pull spend from there, for complete days, and check the monthly total against Meta's invoice. Any figure built on CRM costs is an estimate.

02 Match every lead to the CRM

Every instant form lead gets a lead ID from Meta. It's the best join key you have, and it's worth storing in its own CRM field from day one. Most CRM connectors can carry it across.

Match on the lead ID first, then on email and phone for the rest. Hash those (convert them to a fixed code) before they go anywhere near an analysis tool or an AI model, so the analysis tool never receives raw details. Hashed details are still personal information under privacy law, so treat the files that way.

Then write down the match rate. On this account 85% of the exported leads matched. The lead ID did nearly all the work: 92% of the matches came from it, and email and phone found the rest.

Lead exports aren't always complete either. Downloading form by form captured between 85% and 94% of the leads Ads Manager reported. Against every lead Meta reported, 77% matched, so nearly a quarter of leads couldn't be followed at all. Some of them will have bought, so treat every result below as a floor. The real figures can only be higher. Meta only keeps leads available to download for about 90 days, so connect your CRM or export on a schedule.

03 Follow the lead past the product in the ad

Cost per lead couldn't have shown that, and nor could Meta. Ads Manager saw a cheap form fill. The sale happened on a call, for a different product, and reached the CRM weeks later.

To find upgrades, look for matched leads whose course or product of interest changed, then check which of them have a confirmed sale and a value. Count only confirmed sales. On this account another 95 matched leads had moved to a full qualification in the CRM but weren't yet recorded as enrolled. Report them separately, as pipeline.

If you sell an entry product and a bigger one, assume this is happening until you've checked. The opposite mistake is just as easy. A campaign that sells the expensive product directly can look better than it is if its leads were going to buy anyway.

04 Judge on a floor you can defend

Use a window long enough for the sale to happen. If leads take weeks to buy, a two-week view will tell you every campaign is failing. I used 90 days.

Score each campaign on confirmed sales only: Meta spend, matched leads, direct sales, upgrade sales, total revenue and return. That's your floor. Put the pipeline next to it, clearly labelled, but don't add it in.

On this account the bar for adding budget was 8 times return. On the floor, two of the four campaigns cleared it, at about 9 times each. The other two came in at 4.5 and 5.1 times, with large numbers of leads already moving towards a full qualification. I recommended more budget for all four, the first two on confirmed sales and the other two on their pipelines. If you do that, discount the pipeline by the share of past pipeline that actually turned into sales, and move budget in steps of about 20% so you can still tell what caused what.

On the advertised product alone, none of the four came near the bar. One returned less than half its cost and another came in just under break-even.

05 Send the sales back to Meta

Optimise lead ads for leads and Meta finds people who fill in forms. Instant forms make that very easy, because Meta fills the name, email and phone from the person's profile. Some people submit one without much thought.

The fix is to tell Meta which leads became sales. Meta's Conversions API for CRM takes your sale stages (contacted, qualified, enrolled) with the lead ID, and its conversion leads goal then optimises towards the stage you choose instead of the raw lead. Meta's own fit criteria are worth checking before you start:

  1. The leads come from Meta's own lead forms.
  2. You get at least 200 leads a month.
  3. You can upload stage updates at least once a day.
  4. The stage you optimise for usually happens within 28 days of the lead.
  5. Roughly 1% to 40% of leads reach that stage.

Pick the deepest stage that fits. On a long sales cycle that's usually a qualified lead or a booked sales call rather than the sale. Avoid "contacted", because that measures how quickly your sales team works rather than how good the lead is. Meta checks your data within a day or two. It then needs good data covering at least your usual time from lead to that stage, and two to four weeks of learning after that before it works at full strength. The setup is in my guide to sending real sales back to Google and Meta.

Until that's running, two form settings help. Use the higher intent form type, which adds a review screen before the person submits. Add one or two questions that a serious buyer answers easily and a casual one won't bother with. You'll get fewer leads, and more of them should be expecting your call.

Check the queue before you blame the ads

Across every lead source on this account, wrong numbers, disconnected numbers and people who couldn't be reached made up about 38% of the stated reasons a lead was lost. Meta was the largest source of leads and had the lowest rate of booked sales calls. That looks like a lead quality problem, and partly it is.

But twice this year the business's own alerts showed Meta's lead-to-sale rate falling sharply in a week when lead numbers rose. Both alerts also flagged large backlogs of leads waiting in sales queues, and in the second, most of that week's Meta leads hadn't been called yet. Neither proved the queue was the cause, but a lead that waits days for a call has often forgotten the form. Before you change the creative, the audience or the budget, check how many Meta leads are still waiting for a first call and how long they've waited. It's the fastest thing to rule out. And remember the newest week always converts worst, because those leads have had the least time.

Where AI fits

AI wrote the matching scripts for this analysis, and it's good at that work: cleaning exports, joining files, flagging upgrades, drafting the report. It never saw a name, email or phone number. The exports were hashed on my own machine first, and only the hashed files went into the analysis.

It also drafts ad copy well, inside rules: no claims the course page can't back, the right price, the right course code. My workflow puts every variant through a human check before it goes live. I wrote up how I got AI ad creative to a usable standard in a Growth File. AI can't decide that a campaign barely breaking even on its own product is worth more budget. That call came from following the leads.

The checklist.

24 points, in the order I check them. Anything you can't tick is a finding.

Spend and data

  • Spend comes from Ads Manager, not the CRM
  • Monthly spend matches Meta's invoice
  • The window uses complete days only
  • The lead export count matches Ads Manager's lead count

Matching

  • The Meta lead ID is stored in its own CRM field
  • Leads are matched on lead ID first, then hashed email and phone
  • The match rate is measured and written down
  • Duplicate leads are merged without losing source or campaign

Revenue

  • Sales are counted for every product a lead bought, not only the one advertised
  • Only confirmed sales with a value count towards return
  • Pipeline is reported beside the floor, discounted, never added to it
  • The window is longer than your usual time from lead to sale

Decisions

  • Each campaign is judged on cost per sale and return, not cost per lead
  • The return needed before adding budget is set before you look at results
  • Budget changes are made in steps of about 20%
  • The floor is checked again once pending sales land

Feeding Meta

  • Sale stages are sent back with the lead ID at least daily
  • The optimisation stage is reached by 1% to 40% of leads within 28 days
  • Instant forms use the higher intent type
  • Forms ask one or two questions only a serious buyer would answer

Follow-up

  • Time to first contact is measured for Meta leads
  • Leads waiting for a first call are counted every week
  • Lost reasons are recorded, including uncontactable and wrong number
  • A fall in lead-to-sale rate is checked against the queue before the ads

Guardrails.

  • Never cut a campaign on cost per lead alone
  • Hash personal details before any analysis
  • Report the floor, label the pipeline
  • Every ad claim checked by a person

Common questions.

How do I track Facebook lead ads to sales?

Store Meta's lead ID against every lead in your CRM. When a lead becomes a sale, you can join the two by that ID, or by hashed email and phone for leads where the ID is missing. Send the sale stages back to Meta through the Conversions API for CRM so it can optimise towards them.

Why are my Facebook leads low quality?

Usually because the campaign is optimised for form fills and the form is too easy. Meta pre-fills it from the person's profile. Use the higher intent form type, add a qualifying question, and send sale stages back to Meta. Then check your follow-up, because leads that wait days for a call often look like bad leads.

What is a good cost per lead on Meta?

There isn't one worth chasing. A cheap lead that never buys costs more than an expensive lead that does. Work out what you can afford to pay for a sale, then judge campaigns on cost per sale and return.

Should I use instant forms or a landing page?

Instant forms give more leads at a lower cost, and lower intent. A landing page gives fewer leads that have read more before enquiring. If you use instant forms, use the higher intent type and connect them to your CRM so you can judge them on sales.

Can AI run Meta ads?

It can do much of the work around them: writing variants inside your rules, matching leads to sales and drafting reports. It shouldn't publish claims unchecked, and it can't tell you which campaign is worth keeping until someone has followed the leads to the sale.

Working output

A campaign scorecard: Meta spend, match rate, direct and upgrade sales, return on the floor, pipeline beside it, and a keep, grow or cut call for each campaign with its reason.

Prefer to hand it over? I run this as part of a fixed-price paid media audit, $1,500 plus GST.

Privacy notice