Skip to main content
All posts
Developers5 min read

Send Paid Shopify Order Alerts to Your Team's Phones

Use Shopify Flow's Order paid trigger, a stored webhook secret, and fixed privacy-minimal copy to notify one shared PingRoom Room.

Two PingRoom avatars sort one blank paid-order token beside Pingo at a miniature fulfillment desk.

To send a paid Shopify order alert to a shared group of phones, start a Shopify Flow workflow with Order paid, then use Send HTTP request to post fixed, privacy-minimal copy to a PingRoom incoming webhook. Store the webhook URL as a Flow secret and derive the idempotency key from the order ID so a retry does not create another Ping.

This is a webhook recipe, not a native Shopify integration. Shopify remains the system of record for the order. PingRoom carries one selected state change to the people in a Room.

Check whether Shopify's own alerts already fit

Shopify can already send new-order email notifications and Shopify mobile-app push notifications to eligible staff. Use those when the audience works in Shopify and needs its full order context.

Add a separate shared Room only when the alert belongs to a bounded operational group—such as the people preparing paid orders—and the lock screen should say only that an order is ready for review.

NeedBetter starting point
Store staff need a normal new-order alert in ShopifyShopify staff notifications
A group needs one minimal alert only after payment is confirmedThe Flow recipe below
The team needs customer, item, price, address, or fulfillment detailKeep that detail in Shopify and open the order there
Several systems must enrich, aggregate, or route each eventUse a trusted relay or automation platform before PingRoom

The distinction matters. Shopify's Order paid trigger runs when an order's payment status becomes paid. An authorized-only payment or a partially paid order does not trigger it. Payment capture, or marking an order as paid, can trigger the workflow. That is different from reacting to every new order.

Prepare the Room and Shopify Flow

You need:

  • a private PingRoom Room whose members should receive this operational signal;
  • PingRoom Pro for the Room's incoming webhook;
  • the Shopify Flow app; and
  • a Shopify Grow, Advanced, or Plus plan, because Shopify currently limits Send HTTP request to those plans.

In PingRoom, create or choose the Room, then add an incoming webhook under Settings → Connections → From another app. Copy the complete URL. The final path segment is a credential, so do not paste it into a note, code block, or workflow log. The incoming-webhook walkthrough covers the Room-side setup.

In Shopify admin, open Flow → Settings, create a secret with the handle pingroom_webhook_url, and paste the complete PingRoom webhook URL as its value. Shopify says Flow secret values stay hidden in the interface and are redacted from run logs. Its Liquid variable guide documents secret and hashing syntax.

Configure the exact Flow request

Create a workflow with the Order paid trigger. Add Send HTTP request, then enter these values:

FieldValue
HTTP methodPOST
URL{{secrets.pingroom_webhook_url}}
HeaderContent-Type: application/json
HeaderIdempotency-Key: shopify-order-paid-{{ order.id | sha256 }}
On client error (4xx)Fail
On server error (5xx or 429)Retry

Use this body exactly:

{
  "title": "Paid order ready",
  "message": "Open Shopify to review the order"
}

The message deliberately omits the customer name, order number, items, amount, delivery address, and links. Anyone who is allowed to act can open Shopify and use its permissions and audit trail. The phone alert provides a state change, not a copy of the order.

The sha256 filter turns Shopify's stable order ID into a fixed ASCII value for the request header. It is not encryption and does not make order data safe to publish. Its job here is narrower: an exact Flow retry for the same paid-order event sends the same idempotency key and same body.

Two PingRoom avatars separate one accepted blank order token from a duplicate while Pingo watches a locked secret capsule.

The miniature scene is an example, not Shopify or PingRoom UI. Pingo the Pigeon, PingRoom's fictional CMO, is watching the duplicate stay behind the divider. He cannot see the Flow secret, access a private Room, inspect an order, or send a Ping. People configure and own the workflow.

Choose retry behavior deliberately

Shopify Flow treats 2xx and 3xx responses as success. It can retry configured 4xx, 5xx, and 429 responses for up to 24 hours, and it waits up to 30 seconds for a response.

For this recipe, Fail on 4xx. A missing field, invalid webhook path, or idempotency conflict usually needs a person to correct the configuration. Repeating the same bad request for a day does not help.

Use Retry for 5xx and 429. Those responses can represent temporary service trouble or PingRoom's cooldown. Because the event key and body stay stable, an exact replay can be acknowledged without creating a second Ping.

Test four paths before activation

Use a test Room and a non-sensitive test order:

  1. Run the workflow with a test order that reaches the paid state. Confirm that one Ping says only Paid order ready and Open Shopify to review the order.
  2. Retry the captured HTTP action without changing its body or event identity. Confirm that the Room does not receive a second Ping.
  3. In a controlled test, reuse the old key with changed copy. PingRoom should return 409 idempotency_conflict, and Flow should record a client error rather than inventing a second event.
  4. In a controlled test, temporarily use a deliberately invalid test webhook path that returns 404 and confirm that Flow fails the run. Restore the secret before activation.

Our recorded fixture renders the documented Liquid fields and sends the exact headers and body to a stateful local mock of PingRoom's webhook contract. It checks first acceptance, exact replay, changed-body conflict, and a disabled-webhook response. It does not use a live Shopify store, PingRoom Room, or phone, so the harmless end-to-end test still belongs in your own setup.

Read the result correctly

HTTP 200 means PingRoom accepted and queued the Ping. It does not prove that every phone displayed it. Connectivity, operating-system notification permissions, Focus modes, battery settings, and Room preferences still affect delivery.

Shopify remains the durable order record. Check Flow's recent runs for workflow outcomes, and open Shopify for the order itself. For bursts, PingRoom's incoming webhook accepts one new Ping every five seconds by default and can return HTTP 429; if paid orders frequently arrive faster than that, aggregate them in a relay instead of turning every event into an interruption.

Review the complete webhook contract for current fields, limits, errors, cooldown behavior, and acknowledgements. The incoming webhook feature page describes the supported Room connection without pretending it is a Shopify-native app.

When the four tests pass, open PingRoom, choose the destination Room, and activate only the paid-order signal that the group is prepared to act on.

The two editorial illustrations were created with AI using approved PingRoom character references and reviewed by the PingRoom team.

PingRoom

Short-form communication.

View all posts