Skip to content

Push notifications with Shopify Flow

Reskyt adds two actions to Shopify Flow to send push notifications to app users with nothing to code: a trigger, an action and the message text. They are built from Flow in the Shopify admin.

The actions send through the Reskyt push API, so the store needs a key for that API.

  1. In the Reskyt backoffice, in the app’s developer settings, create a push API key.
  2. In the Reskyt app in Shopify, go to Settings, section Push notifications, paste the key into the Push API key field and click Save key.

Settings section of the Reskyt app in Shopify, with customer activity, the push API key field and the tracking pixel (interface in Spanish)

The key is stored encrypted and is not shown again. If a workflow tries to send without a key, the Notifications section of the app shows a notice to add it in Settings.

ActionWho it sends toWhat it is for
Send Reskyt order pushThe device the order was placed fromOrder status updates
Send Reskyt marketing pushThe customer’s registered devicesPromotions and campaigns

The devices for a marketing notification are, in this order, those from their orders placed in the app and the one registered at login. It only reaches customers with a registered device, which have the reskyt-app-push tag, until the days set in Settings pass without them entering from the app.

Order notifications only reach orders placed from the app. If the customer bought on the website there is no device, nothing is sent and Flow records it as “without app”.

FieldRequiredDescription
Order (Order) or customer (Customer)YesDepends on the action. Flow fills it in; on shipping triggers you choose the order the shipment belongs to
MessageYesThe notification text. It accepts Flow variables
HeadingNoShort headline above the message
LinkNoPage opened by the notification: a web URL, a deep link or home. Empty, it opens the store’s home page
ImageNoPreview image, an https URL, for example a file from Shopify Content → Files. Without an image the app icon is shown
Expires in (hours)NoValidity time. Empty or 0 means 7 days

Variables are written with double braces, for example {{order.name}} for the order number.

  1. In Shopify, open Flow and click Create workflow.
  2. Pick the trigger (next table).
  3. Only for “on its way”, “out for delivery” and “delivered”, add a condition on the status of the shipping event.
  4. Add the Send Reskyt order push action and fill in the fields. To open order tracking, put {{order.statusPageUrl}} in Link.
StatusFlow triggerCondition
Order receivedOrder createdNone
Being preparedOrder paidNone
ShippedFulfillment createdNone
On its wayFulfillment event createdThe event status is IN_TRANSIT
Out for delivery (optional)Fulfillment event createdThe event status is OUT_FOR_DELIVERY
DeliveredFulfillment event createdThe event status is DELIVERED

A few notes:

  • Shopify has no “being prepared” event. The usual choice is Order paid: the order is confirmed and goes into preparation. If the store handles it differently, for example with a tag the team adds, pick the Flow trigger that matches that change.
  • “On its way”, “out for delivery” and “delivered” only arrive if the carrier reports the status. Without a carrier with built-in tracking, Shopify does not create those events and those recipes do not run. “Received”, “being prepared” and “shipped” always work.
  • Other shipping statuses that can be used as a condition are READY_FOR_PICKUP, ATTEMPTED_DELIVERY (delivery attempt failed), DELAYED and FAILURE (problem with the shipment).

Copy them into the Message field. All of them use {{order.name}} for the order number.

StatusSpanishEnglish
Order received¡Gracias por tu compra! Hemos recibido tu pedido {{order.name}}.Thanks for your order! We’ve received order {{order.name}}.
Being preparedEstamos preparando tu pedido {{order.name}}. Te avisaremos cuando salga.We’re preparing order {{order.name}}. We’ll let you know when it ships.
Shipped¡Tu pedido {{order.name}} ya ha salido! Puedes seguirlo desde aquí.Order {{order.name}} has shipped! You can track it here.
On its way or out for deliveryTu pedido {{order.name}} está en camino.Order {{order.name}} is on its way.
Delivered¡Tu pedido {{order.name}} ha sido entregado! Esperamos que lo disfrutes.Order {{order.name}} has been delivered! We hope you enjoy it.

The app does not know which language each customer speaks: you decide it inside Flow. Every order stores the customer’s language and Flow offers it as order.customerLocale, for example es, en or fr.

The cleanest way is to add a condition before the action:

  1. After the trigger, add the condition If order.customerLocale contains es.
  2. In the “Yes” branch, put the action with the Spanish text.
  3. In the “No” branch, add another condition for en, fr and the other languages, or simply put the text in the store’s language as a fallback.

With a single language none of this is needed.

The order recipes do not use the customer’s name on purpose: personal data is not read, so there is no need to ask Shopify for extra permissions. For messages with their name, use the Send Reskyt marketing push action, which accepts customer variables, such as their first name, written in Flow.

  1. Turn the workflow on and place a test order from the app.
  2. Trigger the matching event, for example mark the order as prepared and shipped.
  3. In the Reskyt app open Notifications: the Automatic notifications (Shopify Flow) section shows each notification with its status and the devices reached.

“Sent” means Reskyt accepted the notification, not that the customer opened it. Opens are counted when the notification carries a link to a page of the store.

  • Only customers who placed the order from the app are notified.
  • The tracking link (order.statusPageUrl) can be long and, according to Shopify, order status links have a limited number of uses and expire after a few weeks, so it is meant to be opened soon.
  • The message text is not stored in the app, because it may contain customer data.

To send a one-off or scheduled notification without Flow, see Notifications from Shopify.