Skip to content

Automation · Customer service and scheduling

Answer a Shopify order-status question over WhatsApp

Look up a Shopify order over WhatsApp, verify it belongs to the contact, and return real status and tracking without exposing another customer's purchase.

How do I answer where a Shopify order is without exposing another customer's order?

A Met opens the record of the contact who is writing and fixes the email or phone that was already stored. It searches by the exact order number or, when that is missing, by the pre-existing email; it pages the results, compares the literal match, and opens one GID. Before answering, it matches the order email or phone against that same record again. Only then does it report Shopify's financial and fulfillment display states, keeping each fulfillment and its real carrier, tracking number, and URL separate. It does not turn SUCCESS into delivered or REFUNDED into a banking promise. It can leave a minimal internal note and schedule a future invitation to check again when the customer asks.

What starts it

When the customer writes

It starts when a contact in a WhatsApp conversation asks about their order. No webhook or background watcher runs this flow. Every answer begins with a new read initiated by that message.

Nothing to set up. The Met assigned to that channel picks up the conversation and runs the procedure inside it.

Who runs it

After-sales support Met

Customer service team

The work happens inside a support conversation and ends in a verifiable answer. The Met does not operate the sale or the carrier. It protects buyer identity, reads Shopify, and escalates what the order itself cannot prove.

Channels: WhatsApp

What you need connected

6 steps · 6 tools

The procedure, step by step

Each step shows the tool that runs. They belong to the real connector: if one of them stopped existing, this page would not build.

  1. 1

    Fix the conversation contact

    The Met calls crm_get_contact with the contact_id supplied by the channel context. The handler ignores a different id written by the model and returns the record as private data. It fixes the email and phone that existed before this lookup. A similar name or an identifier supplied during the same attempt does not authorize disclosure of an order.

  2. 2

    Search only bounded candidates

    When the customer supplies the number, shopify_list_orders uses an escaped name filter, pages the results, and compares the literal returned name. Without a number, it can only use the record's pre-existing email in an escaped email filter. It never scans recent store orders by name or product. Zero exact matches means not verified; more than one means disclose nothing and escalate.

  3. 3

    Open one order and prove ownership

    With one candidate it calls shopify_get_order with the exact GID. Before reading any status aloud, the normalized email or complete normalized phone from the contact must literally match order, customer, shippingAddress, or billingAddress. It never compares only the last digits and never uses the name. With no pre-existing identifier match, it stops.

  4. 4

    Return literal states and packages

    The Met returns the name and keeps displayFinancialStatus separate from displayFulfillmentStatus. For each fulfillment it reports status and displayStatus, and cites company, number, and url only when that trackingInfo entry contains them. SUCCESS means Shopify completed the fulfillment, not physical delivery. Only deliveredAt or an explicit delivery displayStatus supports “delivered.” Return and refund states are reported without promising an amount, date, or bank credit.

  5. 5

    Leave a minimal internal note

    When the business privacy policy calls for traceability, crm_add_note records the order number and the states that were answered on the current contact. The note is optional and does not copy email, phone, address, Shopify notes, or the full order. It changes neither the order nor the conversation.

  6. 6

    Schedule an invitation only on request

    If the customer asks for a later message, the Met agrees on a future instant and explains that the notice neither watches Shopify nor confirms a change. crm_list_reminders first checks this contact's pending reminders: one exact time-and-message match is reused and several stop the flow. Only zero matches allow one crm_schedule_reminder call. The approved template invites the person to write back so a fresh order read can run.

Before you start

What you need ready

The Met solves none of these for you. If one is missing, the automation stops there.

The limits

What this automation does NOT solve

Better said here than discovered halfway through the rollout.

FAQ

Questions about this automation

No. Names repeat and do not prove ownership. A number or pre-existing email must bound the search, then an email or phone from the record must match the order before any status is disclosed.

No. It says that Shopify completed the fulfillment. The recipe says delivered only when the same record includes deliveredAt or an explicit delivery displayStatus.

It says Shopify does not yet return tracking for that fulfillment. It does not guess a carrier, build a URL from the number, or promise when one will appear.

No. It is an approved template sent at a fixed time to remind you that you can check again. The status is read only after you write back and identity is verified again.

Keep going

Other automations built on the same tools

Want this automation running on your own data?

We will show it to you with your accounts connected, not with a canned demo.