Send the ManyChat WhatsApp flow automatically after every purchase, whether the subscriber is new or already exists in ManyChat.
What is the problem & what have you tried?
When the buyer already exists in ManyChat, the Create a Subscriber module returns: “[400] Validation error, wa_id: This WhatsApp ID already exists.”
I added an error-handling route with an HTTP module to find the existing subscriber by phone number. The HTTP request returns Status Code 200 and “status: success,” but the data array is empty. Therefore, I cannot obtain the Subscriber ID, and the Send a Flow module fails.
This usually happens because ManyChat requires the phone number format to match strictly (with country code, no + sign, or sometimes vice-versa depending on how the contact was created).
Here are 2 things you should check:
Format the Phone Number: Make sure the phone number passed from your trigger/purchase app matches ManyChat’s expected format. In Make, you can use a formula like replace(1.phone; /[^0-9]/; ) to strip out spaces, dashes, or + signs before querying ManyChat.
Use Search vs Create Logic (Router):
Put a Router after your search module.
Path 1 (Subscriber Exists): If the ManyChat Search module returns a Subscriber ID, send the WhatsApp Flow using that ID.
Path 2 (New Subscriber): If the search returns empty, add a Create/Update Subscriber module first, then trigger the flow using the newly generated Subscriber ID.
If you’re mapping subscriber data from Shopify or Stripe, let me know what format the phone number is coming in—I can help you format the parser string!
Hey, when ManyChat search comes back empty for someone who already messaged on WhatsApp, it’s usually an identity mismatch. Not that the contact is missing.
Stuff that breaks the lookup a lot:
Phone format. E.164 (+countrycode…) vs local vs digits only. Search with the same format ManyChat saved on first contact.
Subscriber id vs phone. Some modules key off the ManyChat / WhatsApp id, not the number sitting in your scenario.
Timing. Search runs before ManyChat finishes creating the subscriber from the inbound message. A short delay, or if empty then create/upsert then search again, usually fixes that.
What I do in practice: normalize the phone once to E.164, save the ManyChat subscriber id on the first good match, and next time search by that id first. Only fall back to phone if the id isn’t there. Split “found” and “not found” clearly so you don’t make duplicates.
If you can say whether you’re searching by phone or subscriber id (and what the raw value looks like, redacted), easier to tell which case you’re in.
I saw your ManyChat issue. The main problem isn’t the duplicate contact error—it’s that the fallback lookup isn’t returning the existing subscriber ID, so the WhatsApp flow stops.
I’d check the phone/wa_id format, lookup endpoint, and response mapping first, then restructure the flow so both new and existing buyers continue automatically.
Happy to review the request if you’re still stuck.
Building on what @venkata_kishore mentioned about identity mismatch and formatting:
To make this completely reliable in Make without hitting that 400 error, here is the exact 2-step setup you can use:
Normalize Phone Format: Strip out all non-numeric characters before querying ManyChat using Make’s regex formula:
{{replace(1.phone; “/[^0-9]/”; “”)}}
Search-First Router Architecture:
Search Subscriber (by phone/E.164).
Router Path A (Subscriber Found): Map the returned subscriber_id directly to “Send a Flow”.
Router Path B (Empty Result): Use “Create/Update Subscriber” → Grab the new subscriber_id → “Send a Flow”.
I have a clean JSON Blueprint of this exact error-handling & upsert workflow ready. I can share the blueprint JSON with you so you can import it directly.