Home/Features/Facebook Lead Ads

Lead Capture

Facebook Lead Ads to WhatsApp

Connect a Facebook Lead Ads form and every submission lands in WhatsApp CRM in seconds, matched to a contact, placed on the right pipeline and followed up automatically.

By Chirag Darji · Updated 26 Aug 2026 · 11 min read

Plans: All plans, including Free. The pipeline, sequence enrolment and CAPI reporting that turn a lead into a WhatsApp follow-up ship on every tier; Analytics on lead conversion requires Starter or above.

On this page
  1. What you get
  2. How it works
  3. How does a Facebook lead turn into a WhatsApp message?
  4. How does phone number matching handle messy form data?
  5. What does ad-level attribution actually capture?
  6. How does "Sync past leads" avoid creating duplicates?
  7. Who uses it
  8. What Meta allows
  9. Plans and limits
  10. Recent improvements
Integrations settings in VGraple CRM: Facebook Lead Ads, Calendly, Meta Conversion Tracking and payment collection

In short

  • Connect a Facebook Page in Settings and every lead form submission is captured through Meta's webhook, no polling and no manual export
  • A new lead is matched to an existing WhatsApp contact by phone, placed on a pipeline stage and enrolled in a sequence within the same request that Meta sends the webhook
  • Campaign, ad set, ad and form name are stored on every lead and travel into the WhatsApp message as personalisation variables
  • "Sync past leads" backfills historical submissions from before the connection existed, so a form that has been running for months is not treated as new

Facebook Lead Ads to WhatsApp in VGraple CRM connects a Facebook Page's lead-generation forms to your WhatsApp CRM, so a form submission on Instagram or Facebook becomes a lead on your pipeline and a WhatsApp conversation without anyone exporting a CSV. What changes for a business running lead ads is the gap between someone tapping submit and someone from your team reaching out: instead of checking a Meta dashboard once a day, the lead exists in your CRM, matched to a contact, tagged with the exact ad that produced it, and often already messaged, before the person has closed the Facebook app.

What you get

  • Instant capture of every lead form submission through Meta's leadgen webhook, no manual export and no polling delay
  • Automatic matching to an existing WhatsApp contact by phone number, including a suffix match for numbers entered without a country code
  • Pipeline placement and an optional default agent, either from a campaign-specific mapping or your organisation's default pipeline
  • Enrolment into a WhatsApp sequence, immediate if the contact is known, deferred and retried automatically if not
  • Ad-level attribution stored on every lead: campaign, ad set, ad and form name, usable as WhatsApp personalisation variables
  • Deduplication against Meta's lead ID, so a webhook retry or a manual re-sync never creates a duplicate lead
  • A one-click "Sync past leads" backfill for forms that were collecting submissions before the connection existed
  • Custom-question phone detection, for forms that ask "WhatsApp Number" or "Mobile No" instead of the standard phone field

How it works

  1. Connect a Facebook Page. From Settings, go to Channels and connect with Meta through OAuth. VGraple CRM lists every Page your Meta user manages and requests access to leadgen webhooks for the ones you enable, storing the Page access token encrypted.

Leads pipeline Kanban board in VGraple CRM with stages

  1. Enable Lead Ads on that Page. The Leads section under Settings > Integrations lists every connected Page with lead capture available. Turning it on subscribes the Page to Meta's leadgen field, so new form submissions start arriving as webhook events immediately.

  2. Map campaigns to pipelines, if you run more than one. Under Leads, map a Facebook campaign ID to a specific pipeline, a default assigned agent, and a WhatsApp sequence. A lead from a mapped campaign skips your general automation rules and goes straight into that campaign's own flow.

  3. A submission arrives. The moment someone submits your lead form on Facebook or Instagram, Meta calls your leadgen webhook. VGraple CRM fetches the full field data, resolves the phone number (including from a custom question if the standard field is missing), creates the lead on the right pipeline stage, and matches it to an existing contact if one exists.

  4. Follow-up fires automatically. If a campaign sequence is mapped, or a matching automation rule exists, the lead is enrolled in a WhatsApp sequence right away when the contact is known, or marked pending and enrolled the moment that person's first WhatsApp message comes in.

  5. Backfill history if needed. "Sync past leads" pages through every submission Facebook has ever recorded for your connected forms and imports anything not already in your CRM, reporting exactly how many were imported and how many already existed.

How does a Facebook lead turn into a WhatsApp message?

A new lead on its own is just a form submission; the useful part is the reply that goes out before the person has moved on. When a lead is created, VGraple CRM checks two things in order: whether the lead's campaign has a dedicated sequence mapped to it, and if not, whether any of your organisation's automation rules match the lead's source, campaign name, form name, pipeline or chat widget. The first match wins and enrols the lead's contact into a WhatsApp sequence, the same Flow-based drip engine used for any other automated follow-up.

Lead automation rules settings in VGraple CRM

If the phone number on the lead already matches a WhatsApp contact, enrolment happens in the same process that created the lead, so the first message can go out within seconds of the form submit. If no contact exists yet, the enrolment is stored as pending against that sequence, and the moment the person's first WhatsApp message reaches your number, the pending enrolment resolves and the sequence starts.

Example

A real-estate agency runs three parallel campaigns, "2BHK Enquiries," "3BHK Enquiries" and "Site Visit Booking," each mapped to its own pipeline and its own opening WhatsApp message referencing the campaign name. A visitor who fills the "Site Visit Booking" form gets a WhatsApp message inviting them to pick a slot, not a generic "thanks for your interest" that has to be re-qualified by an agent.

How does phone number matching handle messy form data?

Lead ad forms are not consistent about how they ask for a phone number, and a lead your team cannot reach is worse than no lead at all. VGraple CRM checks the standard phone_number field first, then a set of common aliases (phone, mobile, mobile_number, contact_number), then any custom question whose label reads as a phone request, "WhatsApp Number," "Contact No," "Whatsapp No." When none of those match, it falls back to scanning every custom answer for one that is unmistakably a phone number by its digit pattern, so a form with an oddly worded question like "Best number to reach you on WhatsApp" still produces a usable phone field.

The resolved number is normalised to E.164 using your organisation's default country, so a 10-digit Indian mobile number entered without a country code still matches an existing contact stored as 91XXXXXXXXXX. If normalisation is not possible, the raw value is kept so it still displays on the lead card, rather than being silently dropped.

What does ad-level attribution actually capture?

A lead without its source is a lead you cannot use to judge whether the ad spend behind it was worth it. Every lead created from Facebook Lead Ads carries ad_id, ad_name, adset_id, adset_name, campaign_id and campaign_name exactly as Meta reports them at the moment of submission, plus the form's own name and ID. These fields are stored on the lead record, shown on the lead card in the pipeline view, and passed as personalisation variables (campaign_name, ad_name, adset_name, form_name) into whichever WhatsApp sequence the lead is enrolled in.

FieldWhere it comes fromWhere it is used
ad_id, ad_nameMeta leadgen webhook payloadLead card, sequence variables
adset_id, adset_nameMeta leadgen webhook payloadCampaign-to-pipeline mapping, sequence variables
campaign_id, campaign_nameMeta leadgen webhook payloadPipeline routing, sequence variables
form_id, form_nameMeta leadgen webhook payloadLead card, sequence variables
is_organic, platformMeta leadgen webhook payloadDistinguishing paid leads from organic form fills, Facebook vs Instagram

Example

A clinic's "Free Health Checkup" ad on Instagram and the identical offer running on Facebook both feed the same lead form. platform on each lead tells the front desk which channel actually produced the booking, without running two separate forms.

How does "Sync past leads" avoid creating duplicates?

Connecting a Page that has been collecting leads for months should not flood your pipeline with old submissions treated as brand new, and re-running the sync should never double an already-imported lead. Every lead is deduplicated against lead_ad_id, Meta's own unique identifier for that specific submission, which is set as a unique constraint on the lead table. A webhook that Meta retries, or a manual "Sync past leads" run over a form that was already partially imported, is checked against this ID before a new row is created, so the operation is safe to run more than once.

The sync itself pages through Facebook's /leads endpoint for every connected form, using cursor-based pagination so a form with thousands of historical submissions completes without hitting a request limit, and reports imported and skipped counts plus any per-form errors, including an expired Page token that needs reconnecting.

Who uses it

Real-estate agencies run Lead Ads for specific projects or unit types, mapping each campaign to its own pipeline so a lead for a 2BHK enquiry never gets the same follow-up message as a lead asking about a commercial property. See WhatsApp CRM for real estate.

Clinics and diagnostic centres capture health-camp and checkup enquiries through Lead Ads, with the phone number auto-matched against existing patient contacts so a returning patient's WhatsApp thread continues instead of starting a new one. See WhatsApp CRM for clinics.

Coaching institutes run parallel campaigns for different courses and batches, each with its own sequence that sends the syllabus, batch timing and a counsellor's WhatsApp number automatically. See WhatsApp CRM for coaching institutes.

D2C stores use Lead Ads for pre-launch waitlists and giveaway campaigns, where the volume of submissions in a single day would be unmanageable to export and message by hand. See WhatsApp CRM for D2C.

What Meta allows

Meta policy

Reading Facebook Lead Ads submissions requires the leads_retrieval permission on the Page, granted through Meta's App Review or available to Pages you administer during development. The Page must be subscribed to the leadgen webhook field for submissions to arrive in real time; a subscription lapses if the Page access token expires or is revoked. Meta retains lead data for a limited period on its own servers, which is exactly why importing submissions into your CRM promptly, rather than relying on Meta's dashboard as the system of record, matters.

VGraple CRM requests only leadgen webhook access and the minimum Page permissions needed to read lead field data and manage the subscription; it never creates, edits or deletes your ad campaigns or lead forms. When a Page token expires, the Leads settings page shows a clear reconnect prompt rather than silently dropping submissions.

Plans and limits

Facebook Lead Ads capture is available on every plan, including Free, with no cap on the number of connected Pages or forms. Lead volume that flows into WhatsApp messages counts against your plan's monthly conversation limit the same as any other outbound message: Free includes 100 conversations a month, Starter 2,000, Growth 10,000, Scale is unlimited. Campaign-to-pipeline mapping, sequence enrolment and CAPI purchase reporting back to the ad ship on every tier; conversion analytics on lead source and campaign performance require Starter or above.

Recent improvements

  • 2026-08-15: Fixed a defect in the shared Page webhook handler where a Messenger DM payload arriving in the same batch as a lead form submission could throw and silently drop events; the leadgen handler is now isolated so it can never be affected by a sibling event type in the same webhook batch.
  • 2026-07-12: Lead scoring shipped an explainable 0-100 score with a factor breakdown, weighting referral and Lead Ads-sourced leads higher than an unscored organic contact.
  • 2026-07-11: Custom-question phone detection added, so forms asking for a "WhatsApp Number" as a free-text custom field are matched correctly instead of requiring the standard Facebook phone field.
  • 2026-05-29: Campaign-to-pipeline mapping shipped, letting a specific Facebook campaign route to its own pipeline, default agent and sequence instead of every lead landing on one shared board.

Frequently asked questions

How fast does a Facebook Lead Ads submission reach WhatsApp?
The lead is created the moment Meta's leadgen webhook arrives, in the same request. If a matching WhatsApp contact already exists, sequence enrolment happens immediately after, so the first WhatsApp message from you can go out within seconds of the form submit, not the next polling cycle.
Does VGraple CRM create the Facebook Lead Ads form or the ad itself?
No. You build the lead form and the ad in Meta Ads Manager or Meta Business Suite the way you always have. VGraple CRM connects to the Page, reads new submissions through Meta's leadgen webhook, and takes it from there.
What happens if the lead's phone number does not match an existing contact?
The lead is still created and placed on the pipeline with whatever phone, name and email the form captured. If a sequence enrolment was requested and no contact exists yet, enrolment is marked pending and completes automatically the first time that person messages your WhatsApp number.
Can different ad campaigns route to different pipelines or sequences?
Yes. A campaign-to-pipeline mapping assigns leads from a specific Facebook campaign to a chosen pipeline, a default agent, and a WhatsApp sequence, so a "Free Consultation" campaign and a "Book a Demo" campaign never end up on the same board with the same follow-up.
Will importing my existing lead forms create duplicates?
No. Every lead is deduplicated against Meta's own lead ID, so re-syncing or a Meta webhook retry never creates a second row for the same submission. "Sync past leads" reports how many were imported and how many already existed.
What data does VGraple CRM read from my Facebook Page?
Lead form field answers, the form's question labels, and campaign, ad set and ad metadata attached to each submission, using a Page access token you grant during connection. The token is encrypted at rest and used only to read leads and manage the leadgen webhook subscription.
What if my form asks for "WhatsApp Number" as a custom question instead of the standard phone field?
It is still detected. Custom question labels that read as a phone request, "WhatsApp Number," "Mobile No," "Contact Number" and similar, are matched against the answer format, and a value that looks unmistakably like a phone number is used even when the question label gives no hint.
Does a Facebook lead go through the same automation rules as any other lead?
Yes. A campaign-specific sequence mapping takes priority when one exists; every other Facebook lead runs through your organisation's automation rules exactly like a WhatsApp Flow form submission or a Calendly booking, so one rule set governs every lead source.
My Page access token expired. What breaks?
New leads stop arriving until you reconnect. The Leads section in Settings shows a "connection expired, reconnect in Channels" notice on that Page rather than failing silently, and reconnecting through the Channels page restores the webhook subscription without losing any lead history.
Can I see which ad, ad set and campaign a lead came from?
Yes, on every lead record. Facebook attaches ad_id, ad_name, adset_id, adset_name, campaign_id and campaign_name to each lead, and these are stored as-is and available as personalisation variables in the WhatsApp message that follows up.

Run your WhatsApp on VGraple CRM

Free forever plan, official Meta WhatsApp Business API, set up in 15 minutes. No card needed.