Xale

Meta Lead Ads · Facebook & Instagram forms

Meta Lead Ads CRM integration for education and study abroad teams

Xale reads the lead forms on every Facebook Page you connect and turns each submission into a student record: answers mapped to fields, duplicates matched on the phone number, campaign and form attached, and — with one automation — an owner assigned before anyone opens the CRM. Leads arrive on a schedule of about 15 minutes, not as an instant push: this page explains exactly what that means and what to build around it.

Updated September 2026 · By the Xale team

Why this matters

The ad money is spent the moment the form is filled

For most Indian study abroad consultancies, Meta lead ads are the busiest channel of the week. A student taps “Sign up” on Instagram at 11 pm and never visits your website. From that moment you have already paid for the lead; everything that follows decides whether it becomes an application.

What usually goes wrong is not the advertising. It is the gap between Meta and the CRM: leads downloaded as CSVs until somebody forgets, answers pasted into a notes box where no filter can reach them, the same student opened twice because one number was saved with +91 and one without, and a monthly budget divided by Ads Manager’s lead count standing in for cost per lead.

Xale closes that gap and is honest about its one real constraint: the sync runs on a timer. Everything below says what happens, how often, and what it does when something fails. For the campaign side of the same problem — form design, qualifying questions and true cost per application — read Meta lead ads for study abroad.

Connecting

How Pages and lead forms connect to Xale

A Meta source in Xale is one connection to your Facebook account, covering every Page on it. Instagram lead forms run through the Facebook Page they belong to, so they come along with it.

1

Sign in with Facebook

Add a Meta source in Xale and sign in with Facebook. Xale asks for the permissions the sync actually needs: your Page list, lead retrieval, Page engagement, Page ads management and ad-account read. A connection that is missing one of them looks fine but returns nothing, so Xale writes the reason into Settings → System Logs instead of leaving you to guess.

Best for: Most teams, including ones with several Pages.

2

Or bring your own Meta app

Prefer to keep the connection in your own developer account? Enter your Facebook App credentials and a long-lived User or System User token. Xale validates the token against your app before it saves the source, then derives the per-Page tokens the lead pull needs.

Best for: Agencies and in-house developers with an existing Meta app.

3

Pages and forms list themselves

Every Page on the connection appears with its own switch and lead count. Every lead form on a switched-on Page appears in the Forms tab with its own switch, its questions and the leads it produced. A form a freelancer created last week shows up on the next sync — you never register form IDs by hand.

Best for: Accounts where campaigns and forms change every intake.

Speed, stated plainly

Leads arrive about every 15 minutes, not instantly

Some integrations receive each submission the second it is made. Xale does not: it asks Meta for new submissions on a timer. That is a real difference and worth knowing before you promise a student anything, so here is precisely how the timer behaves.

A schedule, not a push

Xale polls Meta. Each workspace's sources are re-read about every 15 minutes, so a submission waits somewhere between a few seconds and roughly a quarter of an hour before it exists as a lead.

Overlapping windows

Each run asks every enabled form for submissions since the last successful run, minus a 10-minute overlap, so nothing falls through a boundary. Re-fetched submissions are recognised and stay silent.

90 days on first connect

A brand-new connection pulls up to 90 days of history, which is as far back as Meta keeps lead data. Connect before the campaign, not after it.

A failed run does not skip

If a Page or a form fails mid-run, the sync holds its position and retries the same window next time instead of walking past it. If it still cannot complete after a week, it moves on and records an error you can read, rather than going quietly dark.

How to build a fast process on a 15-minute clock

The delay you can control is much bigger than the one you cannot. In most consultancies the wait is not the sync: it is the hours a lead sits unassigned, or the evening nobody watches the queue. Fix those and the 15 minutes stops mattering.

  1. 1

    Start the clock from the lead, not the form

    An automation on Lead created runs the moment the lead lands, so the first WhatsApp template goes out within a minute of arrival — through Wati, Gallabox or UrbanChat, filled from the student's own answers.

  2. 2

    Never let a lead wait for a manager

    Assign at creation: to a named person, or to the least-loaded member of a role, optionally inside the lead's branch and optionally kept fair per country. A lead that already has an owner when it appears has lost no time at all.

  3. 3

    Measure the real delay

    The response-time report takes the median and the share contacted within your target across calls, WhatsApp and email, and counts never-contacted leads separately instead of dropping them. Send yourself a test lead and time it end to end.

For the routing rules, templates and measurement behind that, see our playbook on responding to Meta leads fast. If seconds genuinely matter more than anything else, use click-to-WhatsApp ads alongside lead forms: the student opens a conversation themselves and it reaches your shared WhatsApp inbox straight away, with the campaign’s spend still reported here.

Field mapping

Every answer lands in a field you can filter on

Qualifying questions are only worth asking if the answers are usable. In Xale they become fields, not a paragraph in a notes box.

On the Meta formWhere it lands in Xale
Full nameThe lead's name.
Phone numberThe lead's phone, normalised to one canonical international form. This is the field the duplicate check runs on.
EmailThe lead's email.
City or stateThe lead's location. It is only filled when empty, so a counsellor's correction is never overwritten by a later submission.
Country questionThe Country custom field, so country filters and country reporting see it. Meta's built-in country question and custom wordings (“Which country do you want to study in?”) both resolve, and when a form asks no country at all Xale tries to read one from the form, campaign or ad name against your own country options.
Any other questionOff by default. Switch a question on in the campaign drawer and it becomes a custom field; from then on every lead carries its answer as a filterable value.
Campaign, form, Page, ad account, Meta lead IDAttribution fields on the lead itself, plus the campaign and form records behind them.

Switched-on questions behave like fields you built yourself. One question name resolves to one field across every form and campaign that asks it, so “Which intake?” on four forms is one filter, not four. If a student’s answer is not one of the options the form declared, the option is added to the field rather than the answer being thrown away. A question can also be pointed at a field you already keep, and that fill only happens when the lead’s value is empty — a sync never overwrites what a counsellor typed.

From there the answers are ordinary CRM data: filters and saved views on the leads page, columns in an export, conditions inside automations, and breakdowns in reports.

Duplicates

One student, one record — matched on the phone number

Study abroad leads repeat constantly: a UK form in March and a Canada form in August, a parent and the student, last year’s walk-in tapping today’s ad. Xale reduces every incoming number to one canonical international form before it decides anything, and checks older formats too, so “+91 98…”, “098…” and “98…” are the same student.

What happensWhat Xale does
The same submission is re-fetched by an overlapping windowRecognised and ignored. No second lead, no re-enquiry, nothing in the activity log.
A student already in your CRM fills a new formLogged as a re-enquiry on the original lead, with a dated row carrying that submission's campaign and form, so the new campaign gets credit for the re-enquiry while the original keeps the lead. The lead floats back to the top of the list and its assignees get an alert in the CRM.
The student had been archivedA genuine new submission brings the lead back out of the archive, and the restore is written into its activity trail.
Two syncs, or a sync and a webhook, race on the same numberA lock on that number in that workspace makes the second wait for the first, so one number cannot become two leads.
The number belongs to a lead in TrashThe submission does not resurrect it as a new lead. Restore the lead first if you want its enquiries back.

Assignment

Auto-assign Facebook leads to counsellors as they arrive

A new Meta lead fires the Lead created trigger, and a re-enquiry from an existing student fires its own. An automation on either one runs the instant the record is written, before a manager opens the CRM.

For distribution, Xale can hand the lead to a named person, or to the member of a role who has taken the fewest leads today. That pool can be restricted to the lead’s branch, kept fair per country so a UK lead never lands on a Canada desk, and narrowed to an allowlist of counsellors who are actually on shift. Who can receive what follows your roles and branches.

In the same automation you can send an approved WhatsApp template through Wati, Gallabox or UrbanChat with variables filled from the student’s own answers, set a field or custom field, and move the lead’s stage or status. Automated sends over Meta’s WhatsApp Cloud API are not supported yet; the WhatsApp page sets out what each provider can do.

Whoever ends up owning the lead keeps their own follow-up on it, with Overdue, Today and Later on India calendar days and a reminder when it comes due — see follow-up management.

A typical intake automation

  1. 1
    When a lead is created from the Meta source
  2. 2
    Give it to the least-loaded counsellor in the branch that runs that country desk
  3. 3
    Send the approved first-touch WhatsApp template, filled with the student's country and intake
  4. 4
    Set the follow-up so the first call is on somebody's list, not in somebody's memory

Attribution & control

Source, campaign, form, Page and ad account on every lead

Attribution is written at intake, not reconstructed later from a spreadsheet.

  • Campaigns are created from Meta's own campaign name and keyed on Meta's campaign ID, so renaming a campaign in Ads Manager does not split it into two rows in your reports.
  • Forms are stored with their question list, which is what the per-question custom-field switches read.
  • Ad accounts are discovered from the lead's own ad, so you do not paste account IDs. Each gets a switch, and while it is off its leads are refused at intake and counted, not quietly ingested.
  • On the leads page you can filter by Meta Page, by ad account and by campaign — and the campaign filter also matches leads whose re-enquiry came from that campaign.
  • A campaign or form drawer shows the leads it produced, the re-enquiries and the sources those leads sit on, and its numbers open the leads behind them.

A switch in Xale is a stop, not a pause

Switching off a Page, a form or an ad account inside Xale stops collecting from it immediately, and submissions made while it is off are not gathered later when you switch it back on. To pause a campaign for a fortnight and keep every lead, pause it in Ads Manager instead: submissions stop at the source, and anything already submitted is still collected on the next sync.

Spend & cost per lead

Real ad spend beside the leads it bought

Cost per lead is only useful when both halves are true: spend from Meta’s own figures for the dates you are looking at, and the leads that genuinely reached the CRM.

Actual spend, pulled daily

A daily job reads campaign spend from Meta's Marketing API into the same campaigns your leads already carry. You can also press Sync from Meta in Settings → Marketing Spend to pull the last 12 months on demand.

Two grains, on purpose

A month total per campaign, plus per-day rows for the current and previous month. A report over part of a recent month uses the real days. Part of an older month is pro-rated from the month figure and labelled an estimate — never presented as fact.

Manual spend for everything else

Fairs, print, Google and offline channels take a manual monthly figure per source or campaign. For a month that has a synced Meta figure, reports use the synced one and dim the manual cell rather than adding the two together.

Two cost-per-lead numbers

Meta cost per lead divides spend by every lead the campaign produced, wherever those leads now sit. CRM cost per lead divides it by the ones on the Meta source, which is what your leads page returns. The card shows the split between them, so the gap is explained instead of argued about.

Click-to-WhatsApp kept separate

Click-to-WhatsApp campaigns produce conversations, not form leads, so their spend is broken out in its own section instead of hiding inside the lead-form total.

A reconciliation you can audit

Every submission the sync fetched is recorded with what became of it: created, re-enquiry, duplicate re-fetch, invalid phone, blocked by a switched-off ad account, deferred or failed. “Ads Manager says 120, the CRM shows 106” becomes a list, not an argument.

Campaign numbers open the leads behind them, down to the stage, status and rejection reason, so “which campaign produced applications” is a click rather than an export. See reports and analytics for the rest of the reporting, and pricing for what a Xale workspace costs — your Meta ad spend is billed by Meta, never by Xale.

In the CRM

You find out when a lead lands, without refreshing

  • A fresh submission pushes a live alert to the workspace admin's open CRM and refreshes the lead lists and board without a reload. A first-connect backfill of 90 days deliberately stays quiet instead of announcing three months of old leads.
  • When an automation assigns the lead, the counsellor who received it gets their own assignment alert and notification tone, and their lists refresh.
  • A re-enquiry raises a recapture alert for the people currently assigned to that student, so the counsellor who already knows them hears first.
  • A follow-up set on the lead rings its owner when it comes due, by web popup, Android push and the in-app inbox.

Honest limits

What this integration does not do

Checked against the product in September 2026. If one of these matters to you, it is better to know now than in week three.

  • Instant delivery. Meta lead forms reach Xale on a schedule of about 15 minutes, not through a per-submission webhook push.
  • Backfilling an off period. Switching a Page, a form or an ad account off stops intake; submissions made while it was off are not collected later. Pause in Ads Manager instead.
  • Automated WhatsApp sends on Meta's Cloud API. Automations send approved templates through Wati, Gallabox or UrbanChat, and broadcasts cannot be scheduled for later.
  • Recovering leads older than Meta keeps them. Meta retains lead data for about 90 days, so a connection made after that cannot reach them.
  • Day-level spend history. Daily rows cover the current and previous month; older part-month windows are pro-rated estimates, and they say so.
  • A custom report builder. The Meta campaign reporting described here lives in the shipped report tabs; the Custom Report Builder is coming soon and is not available yet.

Frequently asked questions

Meta Lead Ads questions from admissions teams

How quickly do Meta leads reach Xale?

On a schedule of about 15 minutes. Xale polls Meta rather than receiving an instant push, asking every switched-on form for submissions since the last successful run with a 10-minute overlap. In practice a submission waits between a few seconds and roughly a quarter of an hour. Design the first touch around that: an automation sends the WhatsApp template within a minute of the lead landing, and the first call target starts from arrival.

Do I have to register every lead form?

No. Xale reads every lead form on every switched-on Page, including forms someone created without telling you, and new forms appear on the next sync. Each form has its own switch if you want to stop collecting from it, and each Page has one too.

What happens when the same student fills two different forms?

They are matched on the phone number, reduced to one canonical form, so the second submission does not create a second lead. It is recorded as a re-enquiry on the original student, stamped with the campaign and form that produced it, and the counsellors assigned to that student get an alert. If the lead had been archived, a genuine new submission brings it back.

Can Meta form answers become fields in the CRM?

Yes. Name, phone, email and city map to lead fields, and a country question fills the Country custom field. Any other question — intake, qualification, English test status — becomes a custom field once you switch that question on in the campaign drawer, and the same question across several forms resolves to one field. An answer that is not one of the form's declared options is added to the field's options rather than dropped.

Can Xale assign Facebook leads to counsellors automatically?

Yes. Creating a lead fires the Lead created trigger, and an automation can assign it to a named person or to the least-loaded member of a role, optionally restricted to the lead's branch and optionally kept fair per country. The same automation can send an approved WhatsApp template through Wati, Gallabox or UrbanChat, set a field or move the lead's stage.

Does Xale show cost per lead from Meta ad spend?

Yes. A daily job pulls actual campaign spend from Meta's Marketing API, and reports show both Meta cost per lead (spend divided by every lead the campaign produced) and CRM cost per lead (spend divided by the leads sitting on the Meta source). Recent part-month windows use real daily spend; older ones are pro-rated and marked as estimates. Spend for other channels can be entered by hand per month.

What happens if I pause a campaign or switch a form off?

Pausing in Ads Manager stops new submissions, and anything already submitted is still collected. Switching a form, Page or ad account off inside Xale is a stop rather than a pause: submissions made while it is off are not backfilled when you switch it back on. Use Ads Manager to pause and the Xale switches to stop collecting for good.

Is there an instant option for Meta ads?

Click-to-WhatsApp ads are the instant route: the student starts a WhatsApp conversation, which reaches your connected number and your shared inbox straight away. Meta lead forms in Xale run on the 15-minute sync, and their spend appears in the same reports.

Connect your lead forms and stop downloading CSVs.

Every Page, every form, with the campaign, the answers and the spend attached to the student they belong to.