How to Know Which Ad Campaigns Bring Customers
To know which ad campaigns bring customers, link every lead to its campaign, close each deal in the CRM with a value, and compare cost per customer, not clicks.


To know which ad campaigns bring customers, every lead has to keep the campaign it came from, every deal has to be closed in your CRM as won or lost with a value, and you then divide each campaign's spend by the customers it produced, not by its clicks or leads. The ad platform can only count what happens on the platform; the sale happens later, in your CRM, so that is where the two numbers have to meet.
If today you see clicks and cost per lead in Meta or Google Ads but cannot say which campaign paid for itself last quarter, by the end of this guide you will have a working chain from ad spend to signed customer, and a monthly figure to move budget on.
What you need before you start
- Admin access to your ad accounts. For Meta, a profile with full control of the business account and the Page; for Google Ads, edit access to the account. If an agency runs the campaigns, ask for your own login.
- A CRM where deals are closed, not just leads collected. Attribution stops at the last step that gets recorded. If deals are won in a chat and never marked in the CRM, no report can count them.
- A deal value on every won deal. A number, even a rough one, entered when the deal closes. Without it you can count customers but not revenue.
- A naming rule for campaigns. Something like
service_audience_monthwritten the same way everywhere. Names like "Campaign 3 copy" make every report unreadable. - One person responsible for closing deals as won or lost. Attribution depends on outcomes more than on tracking.
The three numbers that matter
Most small teams judge campaigns on the first number in the table below because it is the only one the platform shows. The decision belongs on the second and third.
| Metric | What it measures | Where you read it |
|---|---|---|
| Cost per lead | Spend divided by contacts collected | Ad platform, or the CRM if spend is connected |
| Cost per acquired customer | Spend divided by deals won from that campaign | CRM, once leads keep their campaign and deals are closed |
| Revenue per campaign | Sum of won deal values traced to that campaign | CRM, from the deal values |
| Close rate | Won deals divided by leads from that campaign | CRM pipeline, filtered by source |
An example to make it concrete. Imagine a six-person travel agency running two campaigns at the same monthly spend. The first brings 80 leads at a low cost per lead; the second brings 30. If the first produces 2 bookings and the second 6, the "expensive" campaign costs a third as much per customer. The ad platform would have told you to scale the wrong one.
Facebook and Instagram campaigns with Meta lead forms
This is the case where attribution is closest to automatic, because the lead never leaves Meta before reaching you, and the campaign data can travel with it.
- Connect Meta Business from the CRM settings. In Flusia the connection starts from the Meta Ads integration: you authorise access from the settings with the profile that manages the ad account, with no code involved.
- Choose which campaigns and forms feed the pipeline. Switch on the live ones first, not the whole history: old test forms only add noise to the numbers.
- Check that every new lead carries campaign, ad set and ad. Open the first lead that arrives and look at its source details. In Flusia each Meta lead is linked to its campaign, ad set and single ad, and lands in the pipeline already assigned to a salesperson. If you have not set up the lead flow yet, the field mapping and assignment are covered in the guide on sending Facebook and Instagram leads to a CRM.
- Close every deal with an outcome and a value. Won with the amount, or lost with a reason. This is the step that turns a list of contacts into a measurement.
- Read cost per lead, cost per acquisition and revenue per campaign side by side. Marketing Intelligence in Flusia joins the spend from the connected ad account to the deals closed in the CRM, so for each campaign you see these figures in the dashboard and measure return on the closed deal, not on the click. At this point you will see which campaigns produce customers and which only produce form submissions.
A useful side effect: once your best customers are in the CRM, you can build custom audiences on Meta from CRM segments, so campaigns look for people similar to those who actually bought.
Campaigns that send people to your website
Many campaigns point to a landing page instead of an instant form. Here nobody hands you the source: the visitor arrives at your site and fills in your form, and the campaign has to be carried across.
- Add UTM parameters to every ad destination URL. At minimum
utm_source(for examplefacebookorgoogle),utm_medium(paid) andutm_campaignwith the campaign name following your naming rule. Keep the values lowercase and consistent:Facebookandfacebookcount as two sources in most reports. - Make sure your site form saves the UTM values with the contact. In Flusia the website form creates the lead with its source and UTM already attached. If your form is built differently, the procedure for connecting it is in the guide on connecting your website contact form to the CRM.
- For Meta traffic, check the automatic tracking. Flusia applies automatic UTM tracking to leads that reach the website through Meta campaigns, so they are attributed like form leads. Open a recent contact and confirm the campaign is there.
- Send yourself a test visit through the ad URL. Click the real link, fill in the form with a test address such as test@example.com and check that the lead shows the campaign. Then remove the test contact so it does not count.
- Close the deals and read the same three numbers. From here the work is identical to the Meta form case.
Google Ads campaigns
Search campaigns bring higher intent leads, so they are often the ones where cost per lead looks high and cost per customer looks good. You only find out if the campaign stays attached to the lead.
- Use a consistent UTM scheme on every campaign. You can set the parameters once at account level with the final URL suffix in Google Ads, so every ad inherits them. Use the same
utm_sourceandutm_mediumvalues every time. - Carry the campaign into the CRM. For a landing page, it is the website form reading the UTM values; for Google Ads lead forms and calls, the routes are described in the guide on getting Google Ads leads into your CRM.
- Log phone calls with their source. A call from an ad is still a lead. Whoever answers creates the record and sets the source while talking, otherwise search campaigns will look worse than they are.
- Compare Google and Meta on cost per acquired customer. In Flusia, Marketing Intelligence covers both Meta and Google Ads, so the two channels can be judged on the same figure instead of on their own platform metrics.
Alternative method: a spreadsheet with source and UTM
If you are not ready for a CRM, you can do a simpler version with a shared spreadsheet. It is better than nothing, and it is honest to say where it breaks.
- Create one row per lead with these columns: date, name, source, utm_campaign, outcome (open, won, lost), deal value, close date.
- Fill the campaign from the form email or the ad platform export every day, not at month end.
- Add a second sheet with monthly spend per campaign, copied from Meta and Google Ads.
- Once a month, count won deals and their value per campaign and divide spend by won deals.
The limits are real. Someone has to copy every lead by hand, and the day they forget, the numbers drift. Outcomes are updated late or never, because the spreadsheet is not where the sales work happens. Phone leads are usually missing. And the ad set and single ad are almost always lost, so you can compare campaigns but not the ads inside them. If you find yourself spending an hour a week reconciling the sheet, that is the moment to move it into a CRM.
Who we are and who this is for
Flusia is an Italian CRM for small and medium businesses and agencies that sell services: leads from Meta forms and website forms land in the pipeline with their source, deals are closed with a value, and Marketing Intelligence connects ad spend to closed deals per campaign. It is built for small teams that run their own campaigns or work with an agency. Marketing Intelligence is part of the Matrix plan, described on the pricing page, and you can try Flusia free for 30 days with no card required; during the trial you see everything in Matrix.
Common mistakes
Judging campaigns on cost per lead. It is the cheapest number to read and the easiest to misread. A campaign with cheap leads that nobody reaches is a cost, not a win. Move budget only on cost per acquired customer.
Leaving deals open forever. If half the leads from a campaign have no outcome, the report shows a close rate that is simply missing data. Close them as won, lost or "to revisit" with a date, as you would across the whole sales pipeline.
Changing campaign names halfway through. Renaming or duplicating campaigns with new names splits the history in two. Decide the naming rule before launch and keep it.
Reading results too early. Some services take weeks from lead to signature. Judge a campaign on leads that have had time to close, not on last week's.
How long it takes, and what comes next
Connecting Meta and choosing campaigns and forms takes around fifteen minutes; adding UTM parameters to your ads and testing the site form takes another thirty. The part that takes longer is the habit: closing every deal with an outcome and a value, every week. After one full sales cycle you will have your first trustworthy cost per customer per campaign.
The next step is to see it on your own campaigns: try Marketing Intelligence on your Meta and Google Ads campaigns free for 30 days with no card required, or ask for a demo to see it with your own data first.
Frequently asked questions
Why does Meta show more conversions than I actually got? Ad platforms count conversions with their own rules, including people who saw an ad and converted later. Your CRM counts only the deals you closed. When the two disagree, the CRM is the number to make decisions on.
Can I see which single ad brought a customer? Yes, if the lead arrives with its campaign, ad set and ad and the deal is closed in the CRM. Leads copied in by hand usually lose that detail.
What is a good cost per acquired customer? It depends on what a customer is worth to you. Compare it with the average value of a won deal from that campaign: if acquiring a customer costs a small share of what they pay you, the campaign is worth keeping.
Do I need UTM parameters if I only use Meta lead forms? Not for the form leads themselves, because the campaign travels with the lead. You need them as soon as any campaign sends people to your website.
Share this article
Written by

Luca Bosso
Founder of Flusia
Related articles

How to Get Google Ads Leads Into Your CRM
Three routes for Google Ads leads: the lead form connected to your CRM, a site form that keeps the campaign source, and calls recorded as contacts.

How to Send Facebook and Instagram Leads to a CRM
How to get Facebook and Instagram lead form submissions into your CRM automatically: connecting the Page, mapping the fields and tracking the campaign.

How to Follow Up Trade Show Leads After the Event
How to follow up trade show leads from the drive home to the first call: import them without duplicates, qualify them, assign owners and reply on time.