Appearance
Meta lead forms
Meta Instant Forms (the form that opens inside Facebook or Instagram when someone taps a lead ad) flow into Adsidian automatically. Every submission lands in the Leads tab with the ad, ad set and campaign that produced it, and is delivered on to whatever CRM you use.
This is not the same as landing-page forms
A form on your own website posts to Prism — see Lead form submissions. This page is about forms hosted inside Meta, which the visitor never leaves Facebook to fill in.
What you get
- Every lead, kept first-party. Stored the moment we receive it, before any delivery is attempted. If your CRM is down, the lead is queued and retried — not lost.
- Real attribution. Meta's own
ad_idcomes with each submission, so cost per lead is ground truth rather than an inferred click match. - Delivery to your CRM. GoHighLevel, a signed webhook (which covers HubSpot, Zapier and Make), or email.
- Leads that reach no CRM are visible. The Leads tab shows them explicitly, rather than letting them disappear between Meta and your CRM.
Setup
1. Connect the ad account
Follow Meta Ads onboarding first. Nothing here works without it.
Two things in that guide matter especially for lead forms:
- The system-user token needs
leads_retrievalandpages_manage_ads. - The Page must be assigned to the system user in Business Settings. Ad-account access alone is never enough for leads — this is the single most common cause of "the form works but no leads appear".
2. Grant Lead Access
In Business Settings → Integrations → Lead Access, assign your system user (or the Adsidian app) to each Page whose leads you want.
This is a separate permission
Lead Access is not the same as Page access, and it's not covered by the token's permissions. Without it, Meta returns an empty list rather than an error — so a misconfigured Page looks exactly like a Page with no leads yet.
3. Tell Adsidian which Page
On the client record, set the Facebook Page. Lead forms live on Pages, not ad accounts, so this is what Adsidian uses both to create forms and to collect submissions.
While you're there, make sure the client's website is set — Meta rejects any lead form without a working privacy policy URL, and Adsidian infers it from the site.
4. Test it, then switch on real-time delivery
On the client's page in Adsidian, under Meta lead forms:
Test permissions makes the real calls against Meta and tells you what's wrong if anything is — including which of the three places to fix it. It's worth running even when you think setup is complete, because the most common failure returns an empty list rather than an error.
Enable real-time delivery subscribes the Page to the webhook. Without it, leads are collected hourly; with it, seconds. Speed matters more than it sounds — responding within minutes rather than an hour is usually the difference between a lead answering and going cold.
The same card shows leads collected and when the last one arrived. A client that's been live for a week showing zero is the signal to run the test.
Creating a form
Either build it in Meta Ads Manager as usual, or ask the Adsidian agent:
Create a lead form for Ridgeline asking for full name, email and phone, with the privacy policy at https://example.com/privacy
Nothing downstream depends on Adsidian having created the form — Adsidian collects from any Instant Form on a Page it can see.
Two options worth knowing:
- Higher intent adds a review step before submission. Fewer leads, better ones.
- A custom disclaimer is where TCPA consent text goes. Adsidian stores the exact text the person accepted alongside the lead, which is what you'd need if a consent claim is ever challenged.
Where leads go
Leads tab — every lead from every source, with status, notes, and every answer the form captured.
Your CRM — configured per client. Delivery is retried with backoff for about 17 hours; if it still fails, the lead is flagged for a human rather than silently dropped.
Your reporting — each lead also fires a conversion event, so lead-form leads appear in True ROAS alongside website conversions.
Restricted categories
If your data source is in a restricted category — health especially — Meta silently drops standard event names like Lead. Those clients need a custom event name configured, or the reporting event never registers and nothing tells you. Set one under Meta lead forms on the client's page — the field flags when a custom name is required.
Troubleshooting
| Symptom | Cause |
|---|---|
| Form works, no leads in Adsidian | Lead Access not assigned, or the Page not assigned to the system user. Both fail silently by returning an empty list. |
| Some leads appear, older ones don't | Meta only serves a limited window of lead history (around 90 days). Anything older than that predates collection and can't be recovered. |
| Leads appear in Adsidian but not in your CRM | Check the Leads tab — if they show as delivered, the CRM has them under a different contact. If they show as "In no CRM", delivery is failing and the error is on the lead. |
| Leads arrive up to an hour late | The Page isn't subscribed to the webhook — hit Enable real-time delivery. |
| A lead has no ad attached | An organic submission — someone found the form without clicking an ad. Expected, and it's why cost-per-lead ignores them. |
Next
- Meta Ads onboarding — the connection this depends on
- Meta (Facebook) CAPI — server-side conversion tracking
- Customer data & privacy — what's stored, for how long, and how deletion requests are handled