Meta Lead Ads or your own form: what each delivers and how to track both
Meta’s instant form converts more and delivers a lead who never touched your site. Your own form converts less and delivers a person with history. Both can live in the same base — but tracking each is different, and mixing the numbers is the most common mistake.

Two campaigns, same product, same audience. One sends to the site page, with a form. The other opens Meta’s instant form, without leaving Instagram. The second usually has a lower cost per lead and higher volume. The first usually sells more per lead. Both numbers are true, and whoever looks at only one makes the wrong decision.
The difference is not audience quality; it is INFORMATION. The site lead arrived with a story — ad, page, video watched, time on page — and the Lead event goes out identified and attributed. The instant-form lead arrives ready, from Meta to your base, without ever setting foot on your domain.
What each path delivers
| Instant form (Lead Ads) | Form on the site | |
|---|---|---|
| Where the person fills it | Inside Facebook / Instagram | On your page |
| Data filled | Auto-filled from the profile (e-mail, phone, name) | Typed by the person |
| Contact quality | Old signup e-mail is common; phone is usually good | Whatever the person chose to give; typos exist |
| History in your CDP | None before the lead | Page, video, time, UTMs, cookies |
| How it reaches you | Meta webhook (leadgen) or export | Pixel + form capture |
| Attribution | Given by Meta (form, ad) | Rebuilt by your pixel (fbc, UTMs) |
| Event to Meta | Meta already knows; no CAPI needed | Needs the Lead via CAPI to optimize well |
Tracking Lead Ads: the leadgen webhook
Meta notifies each instant-form lead by webhook, with the form id, the ad id and the answers. Whoever receives that webhook and turns it into an event on the person’s timeline gains three things: the lead enters the base within seconds (not in the next day’s export), ad attribution comes ready, and the person starts to exist so they can match the purchase that comes through Hotmart.
The caution is identity: the Facebook profile e-mail may be one the person has not opened in years. The phone is usually better. If the form asked for both, both become identifiers and the merge rule does the rest when the purchase arrives with either.
Tracking your own form: pixel + capture
Here the work belongs to your pixel: capture the fields on submit (name, phone and e-mail, never password or ID), store the identity in the domain cookie, and emit the Lead once — with the whole session behind it. Meta does not know about this lead until you tell it, which is why CAPI matters on this path and not on the other.
Lead Ads needs no CAPI for the Lead. Your own form requires it. Whoever sends the instant-form Lead back through CAPI counts the same lead twice.
Comparing the two without fooling yourself
- 01Do not compare cost per lead. Compare cost per lead who REPLIED, then cost per sale. The CRM (via webhook) and Hotmart (via connector) give both numbers per origin.
- 02Mark the origin on the lead: Lead Ads gets the origin from Meta’s webhook; the site lead gets it from the pixel. Without the mark, the comparison does not exist.
- 03Give both the same window. The site lead converts faster (they already saw the offer); the Lead Ads lead needs more days of contact.
- 04Look at the invalid-contact rate per origin. That is where Lead Ads usually loses — and where your own form with phone validation wins.
In an account we followed, Lead Ads had a 40% lower cost per lead and a 2.3 times higher cost per sale. Neither number appears in Ads Manager — the second only exists when the Hotmart sale and the Meta lead are the same person in your base.
In CrazyLeads both paths enter the same project: the site form through the pixel with capture, and Lead Ads through the Meta source — each lead with its origin marked, on the same timeline, matching the purchase through the same resolver. The question “cost per sale by origin” becomes one sentence to the MCP connector.