Back to all integrations
Ads & analytics

Facebook and Instagram

Pulling lead ads, page messages and comments from Facebook and Instagram into the AppBO CRM and inbox.

On this page
What it connectsHow to connect itWhat data movesWorked exampleLimits and gotchas
Need this wired up?

Bring your stack to a call and we will connect it, test every field in both directions, and hand it over documented.

Book a call
01

What it connects

On the Meta side sit a Facebook Page, an Instagram professional account usually linked to that Page, and the Meta Business account that owns both. Through them flow several distinct streams: instant-form submissions from lead ads, Messenger conversations with the Page, Instagram direct messages, comments on posts and ads, and the asset permissions that decide who may read any of it. The Pages and Messenger APIs are the mechanisms, and each stream has its own permission and its own quirks.

On the AppBO side sit the contact record, the unified conversation inbox, and workflows that can respond within seconds of a lead arriving. Connected, a lead-ad submission becomes a contact with its answers mapped to fields rather than a row in Meta's download. A Messenger or Instagram message joins the same inbox as SMS and email, so whoever is on duty answers it. A comment asking the price of something becomes a conversation instead of a missed opportunity.

Speed is the real reason to do this properly. A lead-ad inquiry has a short half-life, and the difference between a webhook-driven workflow that texts someone in ninety seconds and a manual export checked twice a day is most of the value of the ad spend. The work is in getting the asset permissions right once, mapping the form fields deliberately, and accepting that Meta changes its permission model often enough that this connection needs reviewing rather than forgetting.

02

How to connect it

  1. Confirm the Page and the Instagram professional account are owned by the client's own Meta Business account, not by an individual's personal profile or an agency's business account. Sorting ownership out afterwards is far harder than doing it first.
  2. Make sure the person who will authorize the connection has full administrator access to the Page and, where relevant, to the Instagram account and the ad account. Partial access completes the authorization and then silently fails to deliver one of the streams.
  3. Link the Instagram professional account to the Page in Meta's settings, and switch on the Instagram setting that allows access to messages from connected tools. Without that setting, Instagram direct messages will not arrive however correct the rest of the configuration is.
  4. In the sub-account, open the integrations area and start the Facebook connection.
  5. Complete Meta's login and permission dialog as the administrator. Read the permissions listed in the dialog itself: Meta renames and re-scopes these regularly, so the dialog is the authoritative list rather than any written guide.
  6. At the asset-selection step, select every Page, Instagram account and ad account the integration needs. This step is where most incomplete connections are created: a user clicking through quickly often grants access to only one asset.
  7. Back in the platform, confirm which Page and Instagram account are now linked, and that the connection reports healthy.
  8. Subscribe the Page to the event streams you need: lead-form submissions, Messenger messages, Instagram messages, and comments. Where the platform presents these as switches, enable each deliberately rather than all of them by default.
  9. Open the lead-ad form mapping. For each instant form, map each question to a platform field: standard questions to the standard contact fields, and custom questions to custom fields you have created in advance.
  10. Map the hidden context fields too (campaign, ad set, ad and form identifiers) because without them you cannot attribute a closed deal to the ad that produced it.
  11. Decide what happens to an unmapped answer. Dropping it silently is the usual default and the usual regret; map every question you ask.
  12. Set the duplicate-handling rule. Decide whether a submission from an email or phone number already on file updates the existing contact or creates a new one, and make that choice consciously.
  13. Build the speed-to-lead workflow: triggered by the lead-form submission, sending a text and an email within the first minute, creating an opportunity and assigning an owner, with a task if nobody responds.
  14. Configure the inbox side: which users are notified of Messenger and Instagram messages, the response-time expectation, and any auto-reply outside business hours.
  15. Configure comment handling if you use it, including which posts or ads are watched and whether a comment creates a contact or only a notification.
  16. Test the lead path end to end using Meta's lead-ads testing tool, which submits a test lead against a live form. Confirm the contact was created, every field mapped, the attribution fields populated, and the workflow fired.
  17. Test Messenger and Instagram by messaging the Page and the Instagram account from a personal account, confirming each lands in the inbox and is attached to a contact.
  18. Record which administrator authorized the connection and on what date, and set a reminder to re-check the connection after any change of Page admins or any Meta permission announcement.
03

What data moves

Meta to the platform

  • Lead-form submissions: each answer from the instant form, including the standard name, email and phone questions and every custom question.
  • Attribution context on each lead: the form identifier, and the ad, ad set and campaign identifiers where the integration exposes them.
  • Messenger messages to the Page, with the sender's Messenger-scoped identifier and their public profile name.
  • Instagram direct messages, with the sender's Instagram handle.
  • Comments on posts and ads where comment subscription is enabled, with the commenter's name and the comment text.
  • Message read and delivery indicators, where exposed.

Platform to Meta

  • Replies sent from the conversation inbox to Messenger and Instagram threads.
  • Attachments and media in those replies, within Meta's size and type limits.
  • Comment replies and, where enabled, private replies to a commenter.
  • Nothing is written back to the lead form. A lead is a one-way record once submitted.

What does not move

  • Historical leads from before the connection. Submissions already sitting in Meta are not pulled retroactively and must be exported and imported by hand.
  • The commenter's or messenger's email address and phone number. Meta provides a scoped identifier and a profile name, not contact details, so a Messenger contact may have no reachable email until they give you one.
  • Ad spend, impressions, reach and cost figures. Those belong to the ads reporting integration, not this one.
  • Organic post scheduling and performance beyond what the platform's own social publishing feature handles.
  • Audience and custom-audience membership. This connection reads leads and messages; it does not manage audiences.
  • Profile demographics. Age, gender and location from a Meta profile are not available to populate CRM fields.
  • Reactions, shares, story mentions and follows, except where the platform explicitly supports them.
04

Worked example

Scenario: a fitness studio runs a lead-ad campaign, answers an Instagram message, and attributes a membership sale back to the ad.

  1. The studio's Page and Instagram account are brought under the studio's own Meta Business account, and the owner is confirmed as full administrator of both.
  2. The connection is authorized in the sub-account. At the asset step the owner selects the Page, the Instagram account and the ad account.
  3. Lead-form, Messenger, Instagram-message and comment subscriptions are all switched on.
  4. An instant form is built in Meta with four questions: name, email, phone, and which class time suits best. Three custom fields are created in the platform first, then the form is mapped question by question, including the class-time answer and the campaign and ad identifiers.
  5. A speed-to-lead workflow is built: on submission, create the contact, create an opportunity in the trial pipeline, send a text within sixty seconds offering a trial class, send an email with the timetable, and raise a call task if there is no reply within two hours.
  6. The campaign goes live. A prospect taps the ad, submits the form choosing early-evening classes, and the webhook arrives within seconds.
  7. The contact is created with all four answers mapped and the ad identifier stored. The text goes out immediately: a short message naming the evening class she chose.
  8. She does not reply to the text, but the next morning she sends a direct message to the studio's Instagram asking whether there is parking.
  9. That message lands in the shared inbox. Because her Instagram handle does not match any contact detail on file, the platform opens a conversation against a new contact record carrying only her handle and profile name.
  10. The duty staff member answers, and in the exchange she mentions the same email address she used on the form. The team merges the two records, keeping the ad attribution from the lead submission.
  11. She books the trial class through the link, attends, and signs up for a membership. The opportunity is marked won.
  12. Because the campaign and ad identifiers were mapped at the start, the studio's reporting can tie that membership back to the specific ad, and the separate conversions-upload integration can tell Meta that this lead converted, so the ad platform optimizes toward people like her.
  13. A week later someone comments on the ad asking about class times. The comment arrives as a notification, a team member replies publicly and sends a private reply with the timetable link, which opens a Messenger conversation and a new contact.
05

Limits and gotchas

Rate limiting

Meta applies rate limits per application and per Page, and messaging has its own send limits. Reading leads is rarely the problem; replying at volume in Messenger can be. Meta publishes current rate-limit behavior and the per-Page messaging constraints in its platform documentation, and the Graph API returns throttling information in response headers: read those rather than guessing a number. The practical symptom is a reply that fails or arrives late during a campaign spike.

Retries and idempotency

Webhooks are delivered at least once, so the same lead submission or message can arrive twice, and a workflow that is not guarded will text the person twice. Dedupe on the lead or message identifier, and guard the speed-to-lead workflow with a tag so a replayed webhook is a no-op. Meta also retries a webhook it considers failed, so a handler that is slow to acknowledge will receive duplicates for that reason alone. Messenger has a messaging window of its own after the last user message, so a retry attempted much later can fail on policy rather than on transport.

Field-mapping traps

Instant-form questions can be edited in Meta, and editing a question breaks its mapping, so answers start arriving unmapped while everything appears to work. Re-check mappings whenever a form changes. Phone numbers from Meta frequently arrive in national format or with a country code the contact did not intend, so normalize on arrival. Multiple-choice answers arrive as the option text, which means a reworded option breaks any workflow condition matching the old wording. The Messenger-scoped identifier is specific to your app and the Page; it is not a stable universal identifier and cannot be used to match the person anywhere else.

Duplicate creation

This is the integration where duplicates are hardest to avoid. The same person can arrive as a lead submission with an email, as a Messenger thread with only a scoped identifier, and as an Instagram thread with only a handle, and none of those three match each other. Decide the merge policy early, keep the social identifiers on dedicated fields, and expect to merge by hand when the person volunteers an email. A lead who submits the same form twice is the easy case and should be handled by the duplicate rule.

Sandbox versus live

Meta's lead-ads testing tool submits test leads against a live form and is the right way to prove mapping and workflows. Messenger behavior can be tested with a developer test user or your own personal account. What cannot be tested beforehand is how a real campaign's volume interacts with your rate limits and your team's response time, so watch the first live day closely.

Authentication expiry

This connection breaks more often than any other in the set. The token is tied to the user who authorized it, so it dies when that person leaves the business, loses Page admin rights, changes their password, resets their Meta session, or revokes the app in their security settings. Meta also expires and re-scopes permissions on its own schedule and periodically requires re-authorization after a policy change. The failure is silent: ads keep spending and leads stop arriving. Check the connection weekly during any active campaign, make at least two people Page administrators, and treat a sudden drop in lead volume as an integration problem before assuming it is a creative problem.

What commonly breaks

  • A single asset selected at the permission step, so leads arrive but Instagram messages never do.
  • The Instagram setting for connected-tool message access left off.
  • An instant form edited after mapping, silently orphaning answers.
  • Leads arriving but no workflow firing, because the form was published before the mapping was saved.
  • The authorizing employee leaving, which kills the connection mid-campaign.
  • Page ownership sitting with an agency, so the client cannot reconnect without them.
  • Lead volume assumed to be low when a webhook was simply failing, masked by Meta's own lead download still showing the leads.
  • Comment capture creating a contact for every commenter, filling the CRM with records that have no contact details.
  • A reply attempted outside Messenger's allowed window after the user's last message, which is refused.

Connect it with us.

We wire the integration, map the fields, test both directions and hand it over with the SOPs your team needs to run it.

Book a call