Instagram, Messenger and WhatsApp via ManyChat
Your ManyChat bot sends each conversation to CloseUp as a lead, even before the customer shares a phone number.
ManyChat runs the conversation on Instagram, Messenger or WhatsApp. At each key step, the bot sends what it collected to a CloseUp campaign address. CloseUp creates the lead and updates it as the conversation moves on.
Before you start
- A ManyChat account with an Instagram, Messenger or WhatsApp channel connected.
- Permission to manage integrations in CloseUp (usually the company admin).
- A CloseUp campaign that the bot leads will belong to.
Setup
- Pick a campaignIn CloseUp, open Lead Sources and choose Instagram & Messenger DMs. Create a campaign for Instagram or Facebook, or pick an existing one.
- Copy the addressCopy the campaign's address. It identifies your company, so keep it private.
- Add a request to the botIn ManyChat, add an Action → External Request to your flow, using POST with a JSON body, and paste the address.
- Map the fieldsFill the request body using the field list below and ManyChat's variables. Send IDs as quoted strings.
- Send an update at each stepSend a request when the conversation starts, as it progresses, and when it completes, always with the same contact ID. All updates then land on the same lead.
- TestRun the flow from a test account with a dedicated test keyword. Keep Default Reply and ad triggers off until everything works. The lead appears in the campaign.
Anyone who has the campaign address can send leads to it. Do not share it, show it to customers or include it in screenshots. If it leaks, create a new address for the campaign in Lead Sources. The old address stops working immediately, and you must paste the new one into ManyChat.
Fields you can send
Send only the answers the bot collected, not a full contact dump. Leave out fields you have no value for.
| Field | Required when | What to send |
|---|---|---|
source | Always | instagram, messenger or whatsapp |
manychat_account_id | Instagram / Messenger without phone or email, and WhatsApp conversations with stages | Your ManyChat account ID, digits only, as a string |
manychat_contact_id | Instagram / Messenger without phone or email | ManyChat's Contact Id, digits only, as a string. Not a username and not a Meta ID |
name | Optional | Contact name |
phone | WhatsApp: phone or email in the first request | Leave empty until the customer provides it |
email | Optional | Email address |
instagram_username | Optional (Instagram) | Instagram username |
facebook_name | Optional (Messenger) | Facebook name |
message | Optional | The customer's answer, word for word |
intake_status | Recommended | started, partial or completed |
intake_stage | Recommended | The current step, for example "Awaiting phone". For WhatsApp: the steps separated by | |
campaignid, campaign_name, ad_id, ad_name | Optional | Meta ad context, only when verified (see below) |
Instagram
{
"source": "instagram",
"manychat_account_id": "5619482",
"manychat_contact_id": "123456789",
"instagram_username": "example",
"name": "Example Name",
"phone": "",
"message": "Customer's answer, preserved verbatim",
"intake_status": "partial",
"intake_stage": "Awaiting phone",
"campaignid": "123",
"campaign_name": "Example Meta campaign",
"ad_id": "456",
"ad_name": "Example ad"
}Messenger
{
"source": "messenger",
"manychat_account_id": "5619482",
"manychat_contact_id": "123456789",
"facebook_name": "Example Name",
"name": "Example Name",
"phone": "",
"message": "Customer's answer, preserved verbatim",
"intake_status": "partial",
"intake_stage": "Awaiting phone"
}WhatsApp
{
"source": "whatsapp",
"manychat_account_id": "5619482",
"manychat_contact_id": "123456789",
"name": "Example Name",
"phone": "0500000000",
"message": "Customer's answer, preserved verbatim",
"intake_status": "partial",
"intake_stage": "Welcome|Topic|Preferred time"
}How CloseUp matches and updates leads
- Each ManyChat contact gets one lead. Later requests update that lead, and a phone or email sent later fills empty fields.
- If the phone or email matches an existing lead that has no ManyChat identity yet, the identity is added to that lead.
- When details conflict, for example the contact matches one lead and the phone matches another, the request is rejected for manual review. CloseUp never merges two leads automatically.
- Each lead can be linked to one ManyChat Instagram identity.
- Sending the same request again can add another activity entry, so avoid duplicate submissions.
- The activity entry on the lead is a summary of what was collected, not a full chat transcript.
Ad attribution
- Ad fields are optional. Fill them only at the verified ad entry point, such as an Instagram Ads trigger or a tagged Ref URL. A normal keyword test cannot identify an ad.
- Do not reuse a contact's old ad fields for a later, unrelated conversation.
campaignidis the Meta campaign ID. It is separate from the CloseUp campaign address.- Missing ad fields do not prove a lead is organic.
WhatsApp conversations with stages
- The first request must include a phone or an email.
- Send
manychat_account_id,intake_stagewith the steps separated by|, andintake_status. - All updates from one conversation update a single entry on the lead's timeline. After 24 hours without activity, a new conversation starts a new entry.
- You can turn on an automatic follow-up task for conversations that stall. See Paid booking.