Notifications and automations
Customer notifications
Each store has editable templates per event and language:
| Event | Sent when |
|---|---|
order_created | An order is placed (contains bank details and the payment link) |
payment_received | Staff confirms the payment |
order_shipped | A shipment with a tracking number is created |
order_delivered | A shipment is marked delivered |
order_cancelled | An order is cancelled |
refund_issued | A refund is recorded |
invoice_issued | An invoice, pro forma, corrective invoice or credit note is issued for an order (contains {document_name}, {invoice_number} and {invoice_url}) |
customer_welcome | A customer creates an account |
password_reset | A customer asks to reset the password (contains {reset_url}) |
Placeholders
{customer_name}, {store_name}, {order_number}, {order_total}, {order_url}, {bank_details}, {payment_reference}, {carrier}, {tracking_number}, {tracking_url}, {cancel_reason}, {refund_amount}, {document_name}, {invoice_number}, {invoice_url}, {reset_url}. Unknown placeholders are left empty. {{name}} is accepted as an alias of {name}.
{document_name} is the document type in the customer's language (e.g. Faktura VAT, Credit note). {invoice_url} opens a public, printable copy of the document at /invoice/<payment_token>/<invoice_id>. The customer's order page ({order_url}) also lists every issued document of the order.
Delivery
Every message is written to the Outbox with status queued, sent, failed or skipped. Until an email sending domain is connected, staff send queued messages from the Outbox with one click (it opens the message in their mail app) and mark them as sent. All messages remain visible in the customer's communication history.
You can also send a message manually from any order or customer page, and resend any notification through POST /orders/:id/notifications.
Automations
An automation rule has a trigger event, optional conditions (all must match) and one or more actions.
Trigger events
order.created, payment.customer_marked, payment.confirmed, order.cancelled, order.fulfilled, shipment.created, shipment.delivered, refund.issued, customer.created, inventory.low_stock.
Condition fields
order.total, order.currency, order.shipping_country, order.source, order.tags, order.discount_codes, customer.orders_count, customer.total_spent, customer.tags, customer.accepts_marketing, variant.stock, variant.sku.
Operators: eq, neq, gt, gte, lt, lte, contains, not_contains. Money values are compared in minor units.
Actions
| Action | value |
|---|---|
send_notification | Template event, e.g. payment_received |
set_order_status | open, processing, completed or cancelled |
add_order_tag | Tag text |
add_customer_tag | Tag text, e.g. vip |
create_alert | Alert title shown to the team |
issue_invoice | — |
Example rules
{
"name": "Tag VIP customers",
"trigger_event": "payment.confirmed",
"conditions": [{ "field": "customer.total_spent", "op": "gte", "value": "100000" }],
"actions": [{ "type": "add_customer_tag", "value": "vip" }]
}{
"name": "Alert on big orders",
"trigger_event": "order.created",
"conditions": [{ "field": "order.total", "op": "gte", "value": "500000" }],
"actions": [{ "type": "create_alert", "value": "High-value order" }]
}Every execution is logged in Automations → Runs with its result.
Built-in workflows
These run without any rule:
- Payment confirmed → order status
openbecomesprocessing, payment received notification, invoice when Auto-issue invoice is on. - Shipment created with tracking → tracking number and URL recorded, order shipped notification.
- All shipments delivered on a paid order → order
completed, order delivered notification. - Stock crosses the low-stock threshold → team alert.
- Customer marks an order paid → team alert.
- Order total at or above Settings → High-value order threshold → team alert.