ManyChat and Zapier → amoCRM: turning Instagram and WhatsApp leads into deals instantly
September 23, 2026
In short. To keep Instagram and WhatsApp leads from getting lost between a chatbot and the CRM, they are sent to amoCRM straight from a ManyChat flow or a Zapier scenario. The most reliable option is a small gateway that creates the deal, the contact and the source tag in one request. Below is how we built such a gateway for a client in 2024 and the pitfalls we hit.
The task
Ads send people to Instagram Direct and WhatsApp, where a ManyChat bot greets them; some leads come from forms via Zapier. Managers work in amoCRM, and every lead must appear there as a deal — with a name, a phone number and a clear source, so the marketer can see which ad worked.
How the gateway works
- Three entry points. Separate endpoints for Zapier, ManyChat from WhatsApp and ManyChat from Instagram: each source has its own format — form data from Zapier, JSON with different field names from ManyChat.
- One normalisation function. Name, phone and tag are brought to a common shape; with no name the contact is called “Contact” plus the phone, with no tag it gets “default”.
- The source tag in a request header. Every ManyChat flow sends its own tag, so amoCRM shows which ad the person came from.
- One request instead of three. The leads/complex method of the amoCRM v4 API creates the deal, the contact and the tag in a single call — no orphaned contacts if a second request fails.
Pitfalls worth avoiding
- Cyrillic in headers. HTTP headers have historically been read as ISO-8859-1, so a tag such as “Реклама_март” arrives as garbage. The value has to be re-decoded from Latin-1 to UTF-8 — one line of code without which the sources in the CRM become unreadable.
- Answer 200 even to bad data. If a lead without a phone gets an error response, ManyChat or Zapier will keep retrying. The gateway logs such a lead and answers 200.
- amoCRM tokens. An OAuth access token lives for a day; it must be renewed with the refresh token rather than a new authorisation code — otherwise the integration quietly stops working after a day.
What we would do today
The 2024 gateway did its job, but today we would add a contact lookup by phone before creating one to avoid duplicates, a secret in the webhook URL, a retry queue for when amoCRM is unavailable, and respect for the limit of 7 requests per second per integration. That is how our later amoCRM integrations are built — for example, the lead-source report.
Sources
This material was prepared with AI from the sources listed above. Spotted an inaccuracy? Write to info@105.kz.