What you lose when leads stay in Ads Manager
The ad form gives you a name and a phone. Download it to a sheet and by the next day nobody knows who called, who showed up, or if the same person also filled the site form. Source disappears when someone retypes the row in Excel.
In RIVIL CRM the lead stays in the funnel with source, campaign, ad set, and ad. History stays on the person: the Meta form, a phone note, a status change.
How the lead enters the funnel
The lead comes in through the CRM API with your company key. The key defines which company receives it, so you do not send a separate identifier. We send at least phone or email, plus name, campaign, ad set, ad, and Meta’s lead id.
Meta’s lead id stops duplicates. If the same lead arrives twice, CRM recognizes it and does not open a new record. The person is also matched by phone or email within the same company: three forms from one number stay one record with three history entries.
We connect the form to CRM at go-live. If you add a question later, we map it to a CRM field or keep it in form data so it shows in history.
| Source | Form / campaign | When | Lead |
|---|---|---|---|
| Site form (WordPress) | Quote request | 2 min ago | New |
| Meta Lead Ads | Spring 2026 | 14 min ago | New |
| API intake | Partner app | 1 h ago | Existing |
| Form rivil.app | Request a demo | yesterday | New |
UTM for site leads
Lead Ads does not go through your site, so there is no UTM. Attribution comes from Meta fields: campaign, ad set, and ad. UTM is for site forms, where a script keeps source from first and last visit.
We keep the two sources separate so they do not mix. If the ad sends someone to your page and they submit there, the lead leaves with UTM preserved by the script.
Conversions API: CRM status reaches Meta
Meta learns what happens after the form only if you tell it. In CRM you add the dataset from Events Manager and the access token; from there go events for lead created, deal opened, and each status change. The event name is your funnel status.
Email and phone leave hashed (SHA-256), not in plain text. You can set a test code so events show in Test Events, then remove it for production. Integration can be switched off without losing settings.
We do not promise Meta will cut cost per lead by a fixed percent. We send the events you chose. What the algorithm does depends on the ad account, budget, and how clean your statuses are.
| Campaign | Source | Spent | Leads | Revenue | ROAS |
|---|---|---|---|---|---|
| Spring 2026 | Meta | $4,200 | 62 | $18,900 | 4.5x |
| Search brand | $2,800 | 41 | $15,400 | 5.5x | |
| Retargeting | Meta | $900 | 19 | $6,100 | 6.8x |
| Winter sale | Meta | $1,500 | 12 | $2,300 | 1.5x |
ROAS when status is not enough
A “won” status only says the lead closed. To know if the ad brought money, tie ad spend to leads and payments. Cost per lead and ROAS then break down by campaign, source, and ad.
Conversions API and ROAS are different: the first tells Meta what happened to the lead, the second shows you revenue against spend. If you also use RIVIL ERP, bookings and payments there can move CRM status automatically.
What to prepare before the call
You need Business Manager access so we can create the dataset and Conversions API token together, and your Lead Ads form with its questions. You also need an active funnel, at least with starting stages, no answer, scheduled, and won or lost.
We verify with a test lead: you see it in CRM with campaign filled, change a status, and see the event in Test Events. If you also have WordPress forms, they connect separately with the dedicated plugin.