Lead capture

How to connect Meta lead ads to Kredoo, step by step

The full setup for sending Facebook and Instagram lead-form submissions straight into Kredoo. Four credentials, three Meta surfaces, and the two switches that silently block delivery.

When someone fills in a lead form on your Facebook or Instagram ad, Meta does not send you the lead. It sends a notification containing the lead's ID. Something has to be listening, verify the signature, and go back to Meta to fetch the answers.

That something is usually Zapier or n8n, which means a monthly bill and a delay. Kredoo does it natively: Meta pings Kredoo, Kredoo fetches the lead, and it lands in your New Lead stage where your WhatsApp flow picks it up.

This is the setup. It takes about 45 minutes the first time, and it is once per Page: every future form and every future campaign on that Page delivers automatically.

If you have not decided whether you want leads coming out of Meta or conversions going back in, read how to connect Meta ads to your CRM first. This page is about the first one.

The three places you will be working

This is the part that makes the setup feel harder than it is. The settings are spread across three different Meta properties, and none of them links to the others.

Where What lives there
developers.facebook.com Your Meta app: use cases, App ID, App Secret, Publish
business.facebook.com Business Settings: Pages, System users, Leads access
Meta Business Suite Instant Forms, the lead form itself

Before you start

  • A Meta Business Manager with your Facebook Page inside it.
  • A Meta app. The same app you already use for WhatsApp is fine.
  • You are an admin of both the Page and the app.
  • A system user in Business Settings. The one holding your WhatsApp token works.
  • An ad account with a working payment method, if you actually plan to run ads.

If the Page is brand new, put a profile photo, a cover and a few posts on it before you spend anything. People tap your Page name to check you are real before handing over their number.

The four values Kredoo asks for

Kredoo's Direct Connect panel, at Automations → Meta Ads → Configure, asks for four things. Here is where each one lives.

Value Where to find it
Meta App ID developers.facebook.com → your app → App settings → Basic. Also in the URL.
App Secret Same screen, press Show. Meta asks for your password.
Facebook Page ID business.facebook.com → Settings → Accounts → Pages. A long number, not the Page name.
Access token business.facebook.com → Settings → Users → System users → Generate new token.

Two warnings on that table, both of which cost real time.

The App Secret signs every webhook. Anyone holding it can forge deliveries into your pipeline. It goes into Kredoo's Connect panel and nowhere else.

The access token field must not be left blank. Blank falls back to your WhatsApp token, which almost certainly does not carry leads_retrieval, and every lead then fails to fetch with no visible cause.

1. Add the use case that unlocks the permission

Meta only offers permissions that a configured use case has unlocked. This is where nearly everyone gets stuck.

  1. developers.facebook.com → My Apps → your app.
  2. Sidebar → Use cases. Find Capture & manage ad leads and add it. In URLs it appears as MARKETING_API_LEADS_CAPTURE.
  3. Click Customise. Check the dropdown at the top left says Capture & manage ad leads and not "Manage Pages" or "Create & manage ads".
  4. Open Permissions and features. The list is alphabetical and lazy-loads, so scroll to the bottom first or find-in-page will swear the permission does not exist.
  5. Every permission the panel needs should read Ready for testing.

leads_retrieval is not under "Manage everything on your Page", and it is not under "Create & manage ads" either. It exists only inside Capture & manage ad leads. Until that use case is on the app, the permission is absent from the token dialog entirely. Not greyed out. Absent.

It also does not work alone. Meta requires the whole dependency chain, and a token carrying only leads_retrieval looks correct and fails.

One more thing worth knowing now rather than later: add only the use cases you need. Every extra one drags its own requirements checklist into the Publish step below and can block your launch for no reason at all.

2. Generate the system-user token

  1. business.facebook.com → Settings → Users → System users.
  2. Select your system user, or create one with the Admin role.
  3. Add assets → Pages → your Page → Full control.
  4. Generate new token → choose your app → expiry Never.
  5. Tick every permission the use case unlocked. Keep any whatsapp_business_* boxes ticked too, so one token stays usable for both.
  6. Copy it immediately. Meta shows it exactly once.

Step 3 is the one everyone misses. A token with perfect scopes but no Page assignment fails in exactly the same way as a completely invalid token, which sends you hunting in the wrong place for an hour.

Do not click Revoke tokens on this screen. If your WhatsApp integration runs on a token from the same system user, revoking takes WhatsApp down across every workspace at once. Generating a new token is additive and safe. Revoking is neither.

3. Publish the app

This is the single most expensive mistake in the whole setup, so it gets its own section.

An app in Development mode reports a perfectly healthy webhook subscription and delivers nothing. There is no error, no failed delivery, and no log entry anywhere in Meta's tooling.

The reason it survives testing is that while the app is unpublished, Meta still delivers leads from people who have a role on the app. You are the admin, so your own test leads work flawlessly. You test, it works, you launch, and real strangers fill the form into a void. The failure only appears in production, with budget running.

  1. developers.facebook.com → sidebar → Publish.
  2. Clear Required actions, usually a Privacy Policy URL and business verification.
  3. Switch the app to Live. The Unpublished badge disappears.

Because your Page and your app sit in your own Business Manager, Standard Access is enough here and no App Review is needed. App Review only enters the picture when you connect a Page owned by a different business.

4. Build the instant form

In Meta Business Suite → All tools → Instant Forms → Create form, on your Page.

  • Form type: More volume for lead count, Higher intent to add a review step.
  • Turn Flexible form delivery OFF.
  • Stick to the standard questions: full_name, phone_number, email, city.
  • Add your privacy policy URL. Meta will not save the form without one.
  • Say in the intro that a WhatsApp message is coming. It makes your follow-up expected rather than spam.

Flexible form delivery lets Meta remove fields for individual people. A lead with no phone number cannot enter any WhatsApp flow, so it lands on your board untouchable and looks exactly like broken automation.

Custom questions are dropped unless you map them. Kredoo reads the four standard fields automatically; anything else arrives under a custom name and needs a mapping at Automations → Meta Ads → Field Mapping first, or the answer silently vanishes.

And settle the form before you attach it to a campaign, because a form locks the moment an ad uses it. After that you can only duplicate it into a new form with a new ID.

5. Connect it to Kredoo

Open Automations → Meta Ads → Configure, fill the four values into the blue Direct Connect panel, and press Connect.

Kredoo then does three things for you:

  • registers its webhook on your app, object page, field leadgen
  • trades your system-user token for a Page token, because Meta rejects lead reads made with a user token and returns error #190
  • subscribes your Page to the app

Two green ticks confirm it: App webhook registered and Page subscribed. If either fails, Meta's exact error appears next to it. Credentials are stored encrypted and never sent back to the browser, so reconnecting later, after rotating the App Secret for instance, is safe.

6. The two Page-level switches

These live nowhere near the rest of the setup and each one can block you on its own.

Lead Generation Terms blocks publishing the ad. The first time you build a lead ad, the ad set step shows "Terms of service not accepted (#1815089)" under the Page field. Click View terms there and accept as the Page. A brand new Page has never accepted them.

Leads access blocks delivery. Go to business.facebook.com → Settings → Integrations → Leads access → your Page → CRMs. Your app should be listed under "CRMs with leads access", and usually appears there automatically after Connect. If it is missing, click Assign CRM and add it. With Lead Access Manager enabled, an app can be installed and subscribed and still be blocked from receiving leads without this entry.

7. Test before you spend

Use Meta's Lead Ads Testing Tool, and read the Page Diagnostics panel at the top before anything else. It catches problems the Graph API cheerfully reports as fine, such as "App is not installed by any of the admins".

Then check Kredoo Hub → Meta Logs. Every delivery is recorded there, including the rejected ones. Whether a row exists at all is your first fork in the road: no row means Meta never sent it, and the problem is on Meta's side of the line, not Kredoo's.

Finally, confirm the lead is sitting in CRM Pipeline → New Lead, tagged with its campaign and ad set, and delete the test lead once you have seen it.

If nothing arrives

Work in this order, because it goes from most to least likely:

  1. Is the app Live? Development mode is the cause more often than everything else combined.
  2. Does a row exist in Meta Logs? No row means Meta never called. Go back to Meta.
  3. Is Kredoo listed under Leads access for that Page? Subscribed and blocked look identical from the outside.
  4. Was the Page assigned to the system user with Full control?
  5. Did the token come from the right app, with the use case already added?

There is a longer diagnostic walkthrough in Meta lead ads not syncing to your CRM, and a specific one for the case where Meta insists the webhook is connected and still sends nothing.

Running Google Ads too? The equivalent setup is far shorter: how to connect Google Ads to Kredoo.

Questions people ask

Do I need Zapier or n8n to send Meta lead ads to Kredoo?

No. Kredoo receives Meta's leadgen webhook directly and fetches the lead from Meta itself, so there is no relay tool, no monthly relay bill and no added delay.

Does connecting Meta lead ads to Kredoo require App Review?

Not when your Page and your Meta app are in your own Business Manager. Standard Access is enough. App Review only becomes relevant if you connect a Page owned by a different business.

Why do my test leads work but real leads never arrive?

The app is almost certainly still in Development mode. Meta delivers leads to an unpublished app only for people who have a role on it, so your own tests pass while real strangers vanish. Publish the app and switch it to Live.

Where do I see whether a lead actually reached Kredoo?

Kredoo Hub, Meta Logs. Every delivery is recorded, including rejections. If there is no row at all, Meta never called, which points the investigation back at Meta rather than Kredoo.

Can I edit a Meta instant form after the ad is running?

No. A form locks as soon as an ad uses it, and your only option is to duplicate it into a new form with a new ID. Settle the questions and the intro copy before you attach it to a campaign.

Stop losing leads to the follow-up gap

Kredoo captures leads from Meta and Google Ads, then follows up on WhatsApp automatically. Live in 5 minutes.

Get Started