This action sends a push notification to a customer's loyalty card in Apple Wallet or Google Wallet. It lands on the lock screen, like a message, so it's a good fit for order updates, reminders, and personal offers sent at the right moment.

Each notification goes to one customer. To send a message to a whole group at once, use a scheduled campaign instead.

What happens

  • The notification is sent to every loyalty card the customer has installed, a few seconds after the action runs.
  • Google Wallet shows the title and the message. Apple Wallet only shows the message, so make sure it reads well on its own.
  • If you add a link, the customer opens it by tapping the notification.

The notification is not sent when:

  • Marketing notifications are turned off for your program.
  • The customer turned off marketing notifications, hasn't installed their loyalty card, or has removed it.

Keep the text short. The lock screen only shows a few lines, and nothing shortens long text for you. For more on timing and personalization, see Notification delivery strategies.

Set it up

Use the JeriCommerce Send push notification action in any Shopify Flow workflow, for example after a purchase or when a customer gets a tag.

1

Add the action

In Shopify, open Flow, create or edit a workflow, and add the JeriCommerce Send push notification action after your trigger.

2

Fill in the fields

  • Email: the customer's email. Use Add variable to pick it from the trigger, such as the customer's email.
  • Push title: the title. Only Android devices show it.
  • Push content: the message, shown on every device.
  • Push URL (optional): the page the notification opens.
3

Turn on the workflow

Save and turn on the workflow. A notification is sent each time the trigger runs.

JeriCommerce triggers and actions in Shopify Flow
JeriCommerce triggers and actions in Shopify Flow

If marketing notifications are turned off for your program, or the email doesn't belong to a customer, the step fails and Shopify Flow shows the error in the workflow's run history.

Add a Webhook action to your Klaviyo flow. Fill in the builder below and copy each value into the webhook settings: the Destination URL, the api-key header, and the JSON body.

Your details

Find it in Settings > Technical > Program Information.

Create one in Settings > Technical > API Keys. It stays in your browser.

Action details

Copy and paste into Klaviyo

Webhook settings
Destination URL
https://api.jericommerce.com/v1/programs/your-program-slug/send-push
Headers
Key
api-key
Value
your-api-key
JSON body
[
  {
    "email": "{{ person.email|default:'' }}",
    "header": "",
    "body": ""
  }
]

The body is always a JSON array (wrapped in [ ]), even for a single notification.

Webhook configuration in Klaviyo Flows
Example of a webhook configuration in Klaviyo Flows

Klaviyo and JeriCommerce both use {{ }} for variables. To avoid conflicts, write JeriCommerce variables with <% %> inside a Klaviyo webhook:

System Syntax Example
Klaviyo {{ variable }} {{ person.first_name }}
JeriCommerce <% variable %> <% first_name %>
On-device (wallet) %%variable%% %%balance%%

Use Klaviyo's syntax for profile data (email, name) and JeriCommerce's syntax for loyalty data (balance, tier).

POST https://api.jericommerce.com/v1/programs/{program_slug}/send-push

Send your API key in the api-key header. See Authentication through the API. The body is an array of up to 100 notifications:

[
  {
    "email": "customer@example.com",
    "header": "Your order is on its way",
    "body": "Track it from your loyalty card.",
    "link": "https://yourstore.com/account/orders"
  }
]
Field Type Required Notes
email string Yes Email of the customer who receives the notification.
header string Yes The notification title.
body string Yes The notification text.
link string No The page the notification opens when the customer taps it.

The API answers 201 with an empty body as soon as the request is valid, and the notifications go out about 10 seconds later. Skipped notifications are not reported. See queued endpoints.

Code Status Meaning
MAX_ITEMS_PER_REQUEST_EXCEEDED 400 The array has more than 100 items.
Validation errors 400 email, header, or body is missing or empty.

Build a ready-to-run request with your own values:

Your details

Find it in Settings > Technical > Program Information.

Create one in Settings > Technical > API Keys. It stays in your browser.

Action details

Your request

curl --request POST \
  --url 'https://api.jericommerce.com/v1/programs/your-program-slug/send-push' \
  --header 'api-key: your-api-key' \
  --header 'Content-Type: application/json' \
  --data '[
  {
    "email": "customer@example.com",
    "header": "",
    "body": ""
  }
]'

Paste it in a terminal to test the request with your program.