Answer Instagram and Messenger DMs with the order on screen

By General Input

Type a customer's email, phone or name and see their Shopify order history next to their Manychat profile, then reply without leaving the screen.

Integrations

  • Manychat
  • Shopify

Type

App

Categories

  • Customer Support

Build me an internal support console for my Shopify store. Most of my customer questions arrive as Instagram and Messenger DMs through Manychat, and my team currently wastes the day flipping between Manychat and the Shopify admin to answer "where is my order". I want one screen, built around a single search box, that joins the DM identity to the order record.

The search box accepts an email, a phone number, or a name. On submit, the app resolves the customer on both sides and shows the results in a two panel layout: Shopify on the left, Manychat on the right.

Left panel, Shopify. Use Search Customers with whatever I typed to find the matching customer, and show name, email, phone, total spend, and order count. If more than one customer matches, show the candidates and let me pick before loading the rest. Then use Get Customer Orders for the selected customer to render the full order history, newest first, with order number, date, items, total, fulfillment status, and financial status. Clicking an order expands it to line items plus shipping detail, using Get Order and List Fulfillments for Order so I can see tracking numbers and carrier when they exist.

Right panel, Manychat. Look the customer up with Find Subscriber by System Field. This operation accepts email OR phone and only one may be set per request, so try email first, and if that comes back empty and the Shopify record has a phone number, retry with the phone. Never send both in one request. When I searched by name rather than an identifier, use Find Subscriber by Name instead. Once you have a subscriber id, call Get Subscriber Info and show the full profile: the channel they subscribed on, their tags, and their custom fields.

Handle the no match case gracefully, because it is common. A customer can exist in Shopify with no matching Manychat subscriber. When that happens, say so plainly, something like "No Manychat subscriber found for this customer", and keep the entire Shopify side fully usable. Do not render an error state, do not show a red banner, and do not block the screen. The reply and labelling controls should be visibly disabled with a one line explanation rather than hidden.

From this same screen my team needs to act, without opening Manychat. A reply box sends a DM with Send Content. Label the conversation using Add Tag to Subscriber by Name for cases like refund requested or VIP, and clear a label with Remove Tag from Subscriber by Name. Be careful to use the subscriber scoped removal here: do not use Remove Tag by Name, which deletes the tag from the page and from every subscriber on the account and cannot be undone. Populate a tag picker from Get Tags so my team picks from the labels we already use, and allow free text for a new one, since adding by name creates the tag if it does not exist.

Record the outcome of a conversation with Set Custom Field by Name, driven by a small form of the fields we actually use. Hand off to an existing sequence with a dropdown populated from Get Flows, triggered with Send Flow.

The 24 hour messaging window needs first class treatment in the UI, not a raw error. Send Content returns error 3021 when the subscriber is outside the 24 hour window without a message tag. When that happens, show plain language along the lines of "This customer last messaged more than 24 hours ago, so Instagram and Messenger will not deliver a normal reply", and put the send a flow option directly in that same message so the fallback is one click away. Error 3011 means the subscriber was not found, which should read as "This subscriber no longer exists in Manychat". Keep the drafted text in the box either way so nothing my team wrote gets thrown away.

Add a "Draft order update" button that kicks off a background agent. The agent reads the customer's most recent order including its fulfillment status and financial status and the actual item names, then drafts a short DM in our brand voice that names the real product and the real shipping state, and writes it into the reply box as editable text for a human to approve. It must never send on its own. The agent should work only from what the order data actually says: if there is no fulfillment yet, it should say the order has not shipped rather than inventing a delivery date, and it should never invent a tracking number. If the order was refunded or partially refunded, the draft should reflect that instead of talking about shipping.

Keep the brand voice instructions editable inside the app as a setting, so I can tune the tone without rebuilding anything. Show each viewer their own list of recently looked up customers so they can jump back to a conversation they were working on.

One performance note: Manychat subscriber read endpoints are limited to 10 requests per second per account, and there is no list all subscribers endpoint, which is why this app is search led rather than a browsable inbox. Fetch subscriber data on demand when a search runs, and do not prefetch or poll in the background.

Related prompts

Explore more prompts
Receiving dock console for inspecting and restocking Loop returnsSee which influencer creators actually drove Shopify salesWork Instagram and Messenger DM leads from one lead boardMorning dispatch board for your local delivery runsSend Messenger campaigns to any slice of your Google SheetWhite glove queue for the VIP customers waiting on youReturns and warranty claim desk that follows your policyFraud lookup desk for any email, phone, IP address or linkReview high risk Shopify orders before anything gets pickedFraud review desk for the Shopify orders you should hold