Leads from ads 0, but cost per lead is shown
Area: Ad accounts · Updated: 11 Nov 2026 · Auf Deutsch · All articles
Symptoms
- Sources & campaigns shows „Leads aus Werbung 0“ (leads from ads), but a value next to it under „Kosten pro Lead“ (cost per lead).
- Instant Form leads are in the lead list with „Anzeige laut Meta“ but missing from the campaign's ad cost report (ads_performance: leads 0, no CPL).
- analytics_leads with channel_group paid counts 0 although the leads came from an ad.
Cause
- A lead from an ad platform's own lead form (Meta Instant Form, likewise LinkedIn, TikTok or Google) fills in the form inside the platform's app and never visits your website. Before the X3 update of 11 Nov 2026, leads per ad were counted only through the website visit: without a visit the ad got no lead.
- „Kosten pro Lead“ divides ad spend by all leads of the lead list, those without a visit included, never by the conversions the platform reports. That is why it showed a value while „Leads aus Werbung“ showed 0.
- Since the update X3 credits a lead without a visit directly to the ad it names itself (ad, ad set, campaign of the platform), under every counting rule. A lead with a visit is still counted through its visit: never twice.
- When the lead carries no ad ids (e.g. an organic form without an ad), there is no ad to credit: it counts under „Ohne Werbung“.
How to fix it
1. Check leads per campaign
- In the dashboard: Quellen & Kampagnen › Ebene Kampagnen › Spalte Leads
- With Claude (MCP):
ads_performance{"project":"my-shop","level":"campaign","filter":{"preset":"7d"}} - Since the X3 update of 11 Nov 2026.
The campaign shows the form leads under leads, cpl = spend ÷ these leads. leadRate (leads ÷ visits) counts only leads with a visit, so form leads do not distort the per-visit rate. With level adset or ad you see the ad set and ad.
2. Look at a lead's origin
- In the dashboard: Growth Intelligence › Leads › Lead öffnen › Herkunft
- With Claude (MCP):
leads_get{"project":"my-shop","lead_id":"3f2b7c1e-9a4d-4e8b-b6a1-7c5d2e9f0a21"}
origin names platform, campaign and ad; Instant Forms show „Anzeige laut Meta (Instant Form)“. Needs leads:read. Without an ad the lead lacks ad ids: continue with step 3.
3. Sync the form leads again
- In the dashboard: Einstellungen › Instant Forms › Deine Seite › Jetzt abgleichen
- With Claude (MCP):
instant_forms_sync{"project":"my-shop","page_id":"1234567"}
Fetches the leads since the last sync from Meta. Organic form leads (no ad) stay under „Ohne Werbung“, which is correct.
4. Cross-check the number of ad leads
- In the dashboard: Pulse › Woher Deine Leads kommen
- With Claude (MCP):
analytics_leads{"project":"my-shop","filter":{"preset":"7d","channel_group":"paid"}}
Counts leads with a visit through their visit and leads without one through their own origin (paid, channel, UTM, ad). A filter only a visit can have (device, page, interest …) leaves leads without a visit out.
How to tell it worked
- „Leads aus Werbung“ on Sources & campaigns counts the form leads; „Kosten pro Lead“ and „nur Leads aus Werbung“ match it.
- ads_performance shows
leadsabove 0 and acplfor the campaign. - analytics_leads with channel_group paid counts the form leads.
Related articles
Ad platform lead forms name the ad the form was filled in. That is as sure as a click id. X3 therefore credits such leads directly to that ad, without a visit, and counts them the same everywhere: on Sources & campaigns, in the Pulse under „Leads aus Werbung“ and „Ohne Werbung“, in ads_performance, analytics_leads and analytics_breakdown (channel, channel group, UTM, ad). Per-visit figures (leads ÷ visits, leads ÷ interested visits) count only leads with a visit.