Why Facebook leads go cold
When someone fills in a Facebook lead form, the lead is stored by Meta. Unless something fetches it, it stays in Ads Manager (or the Page's Leads Center) until a person downloads it, opens the spreadsheet and imports or re-types it into the CRM.
That gap is where leads are lost:
- Delay. Downloads happen once a day, or once a week. The person who wanted a call back this morning has already spoken to someone else.
- Errors. Copying and pasting phone numbers and emails introduces typos you only discover when the call fails.
- Duplicates. The same person fills in two forms and is called twice by two different people.
- Forgotten leads. Meta only makes leads available for download for a limited period (90 days). Forms nobody checks quietly lose their leads.
Your four options
| Option | Speed | Effort | Good for |
|---|---|---|---|
| Download CSV from Ads Manager | Whenever someone remembers | Manual, every day | One-off campaigns with a handful of leads |
| Meta's built-in CRM integrations | Fast | Low, if your CRM is on Meta's list | Teams whose CRM Meta supports directly |
| Custom development (Graph API webhooks) | Instant | High: a Meta app, app review, hosting and maintenance | Companies with developers to spare |
| A lead sync tool like LeadAdd | Every 5 minutes | About 10 minutes to set up, no code | Teams that want every form, every Page and any CRM handled |
Generic automation tools (Zapier, Make and similar) can also move leads, usually one "zap" or scenario per form and priced per task. LeadAdd is built for this one job. It finds every Page and form a token can reach, removes duplicates across forms and channels, and keeps opt-in records, without per-form setup.
Set it up step by step
Create a free LeadAdd account
Go to app.leadadd.co.za, add your name and email and tick one consent box. You land straight on the Lead Sources page.
Generate a Meta access token
Use a system user token so it doesn't expire:
- Open Meta Business Settings and go to Users → System users. Create a system user (Admin) if you don't have one.
- Under Assign assets, give the system user access to every Facebook Page whose lead forms you want to sync.
- Click Generate new token, choose your app, and tick these permissions:
leads_retrieval,pages_show_list,pages_read_engagement,pages_manage_metadata,pages_manage_ads,ads_managementandbusiness_management. - Copy the token and paste it into LeadAdd. System user tokens don't expire after an hour like the ones from the Graph API Explorer.
Find your lead forms
Paste the token and click Find my lead forms. LeadAdd lists every Page the token can reach, including Pages owned by or shared with your Business, and every lead form on them. Active forms are ticked for you. Untick any you don't want and click Connect.
Choose where each lead goes
Create a notification and pick a destination:
- Freshworks CRM (Freshsales): creates a lead using your Freshsales API key.
- Webhook: POSTs the lead as JSON to any URL, such as your own system, Zapier, Make or n8n.
- HTTP GET: calls a URL with the lead's details in the query string.
- Email: sends the lead to one or more people.
Run it when a lead is created or updated, for every source or only the forms you choose.
Test and go live
Submit a test lead with Meta's Lead Ads Testing Tool. LeadAdd syncs every 5 minutes, so it appears on your dashboard and in your CRM shortly afterwards.
Which fields are synced
Every answer on the form is kept. Standard fields fill the lead's main details, and everything else is stored as a custom field you can use in any payload:
| Facebook lead form field | Where it goes in LeadAdd | Payload tag |
|---|---|---|
| Full name, or First name + Last name | Lead first and last name | {{firstname}} {{lastname}} |
| Lead email (used for duplicate matching) | {{email}} | |
| Phone number | Lead mobile (used for duplicate matching) | {{mobile}} |
| Any other question (custom or prefilled) | Custom field on the lead | {{custom.fieldname}} |
| Lead ID, ad ID and form ID | Custom fields facebook_lead_id, facebook_ad_id, facebook_form_id | {{custom.facebook_ad_id}} etc. |
| Source | Lead channel | {{channel}} |
Tip: custom field tags are lowercase. A form question saved as preferred_campus becomes {{custom.preferred_campus}}.
Tips for faster follow-up
- Route by form. Give each product or region its own notification so the right team gets the lead.
- Ask for a phone number. Matching on email or mobile catches repeat enquiries across forms and channels.
- Watch for updates. Run a notification on updated as well as created if you want your CRM told when a known person enquires again.
- Keep consent. LeadAdd keeps opt-in and opt-out records per contact that you can export for POPIA.
Frequently asked questions
How often does LeadAdd check Facebook for new leads?
Every 5 minutes, automatically. You don’t need to keep a browser open or press a button.
Does it work with lead forms on several Pages and ad accounts?
Yes. One token can cover every Page assigned to it, including Pages owned by or shared with your Business Manager. LeadAdd lists them all so you can choose.
What happens to leads submitted before I connected?
LeadAdd syncs the leads Meta still holds for each connected form. Meta keeps leads available for a limited period (90 days), so connect forms early.
My CRM isn’t Freshworks. Can I still use LeadAdd?
Yes. Any CRM or system that accepts a webhook (HTTP POST with JSON) or an HTTP GET request can receive leads. Many teams also connect a webhook tool such as Zapier, Make or n8n to reach CRMs that need extra authentication.
Do I need a developer?
No. Connecting Facebook Lead Ads and sending leads to Freshworks, email or a webhook is point-and-click. You only need a developer if you want to build your own webhook receiver.

