Platform events reference
Joryio emits these events automatically as part of the platform (message pipeline, wallet passes, store integrations, SDK). They appear in your event stream alongside your own custom events - this page is the canonical reference for what each one means. The AI Assistant knows these definitions and uses the signals when suggesting journeys and segments. For your own events and attributes, add descriptions on the Events and Attributes pages - the AI reads those too.
Messaging
| Event | Description | Signal |
|---|---|---|
message.sent | Joryio sent a message (any channel) to this user. | - |
message.delivered | Provider confirmed delivery. | - |
message.opened | Recipient opened an email. | engagement |
message.clicked | Recipient clicked a tracked link. | strong engagement |
message.bounced | Delivery bounced (hard/soft). | list-hygiene problem |
message.unsubscribed | Recipient unsubscribed via a Joryio link/header. | opt-out |
message.failed | Send failed at the provider. | - |
message.spam_complaint | Recipient marked the message as spam. | deliverability risk |
message.queued | Message accepted and queued at the provider. | - |
message.deferred | Provider temporarily deferred delivery (will retry). | - |
message.skipped | Send skipped by a Joryio gate (suppression, frequency cap, quiet hours, consent). | - |
message.complained | Recipient filed a complaint about the message. | deliverability risk |
message.spamreport | Provider-reported spam complaint (alias of spam_complaint on some providers). | deliverability risk |
Wallet passes
| Event | Description | Signal |
|---|---|---|
pass.issued | A wallet pass was issued to the user (Joryio Wallet Passes). | - |
pass.installed | User added the pass to their Apple/Google wallet. | opt-in to the wallet channel |
pass.updated | A pass content update was pushed to installed passes. | - |
pass.removed | User REMOVED the pass from their wallet (Joryio Wallet Passes). | churn intent - a win-back play triggered on this is high-signal |
pass.downloaded | Pass file was downloaded (pre-install step). | - |
pass.scanned | Pass barcode/QR was scanned (e.g. redemption at the counter). | strong engagement - real-world usage |
pass.expired | Pass reached its expiry date. | renewal opportunity |
pass.update_pushed | A content update was pushed to installed passes (explicit push on edit). | - |
pass.voided | Pass was voided/deactivated by the business. | - |
E-commerce
| Event | Description | Signal |
|---|---|---|
purchase | Completed purchase synced from the connected store. | - |
Order Completed | Completed order from a connected store or the SDK (canonical commerce event). | - |
Checkout Started | Checkout began but is not yet completed. | - |
cart_abandoned | Cart left without checkout (integration-emitted after inactivity). | the classic recovery-journey trigger |
Cart Updated | Items added/removed from the cart. | - |
Product Added | Product added to cart. | purchase intent |
back_in_stock | A product the user recently viewed or added to cart (but did not buy) came back in stock - emitted per user on an out-of-stock → in-stock catalog transition (Shopify + WooCommerce). | high-converting retail trigger |
price_drop | A recently viewed/carted (not bought) product dropped in price beyond the configured threshold - emitted per user on a price-down catalog transition. | high-converting retail trigger |
entity_back_in_stock | Default event from an Entity Relationship Alert (custom-catalog restock, new episode, …) - emitted per user when a watched field on a custom-entity record transitions. Alerts can be configured to emit a custom event name instead. | custom-catalog trigger |
Product Viewed | Product page viewed. | browse interest |
SDK / Web
| Event | Description | Signal |
|---|---|---|
session_start | App/site session started (Joryio SDK). | - |
Page Viewed | Page viewed (web SDK). | - |
signup | User signed up / was identified for the first time. | - |
In-app
| Event | Description | Signal |
|---|---|---|
in_app.served | Server-side marker: an in-app message was delivered to a device for display (one per serve; powers per-session frequency caps). Distinct from in_app.displayed, the client-confirmed impression. | - |
in_app.viewed | An in-app message was displayed to the user. | - |
in_app.clicked | User clicked a CTA inside an in-app message. | engagement |
in_app.displayed | An in-app message was displayed (impression). | - |
in_app.dismissed | User closed the in-app message without acting. | - |
in_app.converted | User performed the in-app message goal action. | conversion |
Recommendations
| Event | Meaning | Signal |
|---|---|---|
recommendation.served | A recommendation model resolved items for this user in a sent message (properties: modelId, itemIds). | personalization impression |