Messages
A message is a push notification sent to a group of users. The Messages section is where you create campaigns: one-time and scheduled broadcasts with flexible audience and content settings.
Message statuses
Each message goes through several statuses. Understanding statuses helps you track what stage a broadcast is at.
Message is saved but not sent. Saved as a historical artifact in some scenarios.
Message is waiting for the specified time. Automatically transitions to sending when the worker polls the queue (every 15 seconds).
Worker is actively dispatching notifications. Audience is split into batches of 500 subscribers.
All batches have been processed. Delivery is complete — analytics are available.
Message was manually cancelled before or during sending.
Creating a message
Click "Create message" in the toolbar. The form consists of three blocks.
Block 1: Audience
Determines who will receive the notification.
All active subscribers of the app will receive the notification (all browsers with permission). Use for important general announcements.
Select one or more Include segments (who receives) and, if necessary, Exclude segments (who to exclude). Audience = union of Include minus intersection with Exclude.
Block 2: Notification content
Choose the content source: manually or from a template.
TitleYesNotification title. Recommended up to 60 characters — long titles are truncated by the browser.BodyYesNotification body. Up to 120–200 characters depending on the platform.URLNoThe page that opens when the notification is clicked. If not specified — the app homepage opens.ImageNoURL of the image displayed in the notification (large photo). Supported in Chrome and Edge on desktop. Recommended size: 1080×565.ButtonsNoUp to 2 action buttons under the notification (text up to 40 characters + link). Personal variables work in both. Shown in Chrome, Edge and Android; Safari and Firefox show the notification without them.TagNoMessage category (slug, e.g. orders or promo). Not shown to the user — used to filter the message feed, a user's message history and unread counters.From template
Switch the source to "From template" and select the desired template from the list. The Title, Body, URL, Image, Buttons and Tag fields will be filled automatically from the template and will not be editable. To change content — create a new template or edit the existing one.
Template variables
The title, body, URL, image and button fields support personal variables. The worker substitutes them for each recipient at send time, so every user can get their own link or text. The Tag field is not processed.
{{ tag.KEY }}Value of the recipient's tag KEY — individual for each userTitle, body, URL, image, buttons{{ user.externalId }}Recipient's external ID (your user ID)Title, body, URL, image, buttons{{ tag.KEY | default: "…" }}Fallback text when the tag (or external ID) is emptyTitle, body, URL, image, buttons// URL — a personal link for each recipient:
https://example.com/account/{{ user.externalId }}/orders
// URL — a tag value with a fallback when the tag is empty:
https://example.com{{ tag.dropped_view_product_url | default: "/catalog" }}
// Title — personalized greeting:
{{ tag.first_name | default: "Hi" }}, your cart is waiting{{ title }}, {{ sendDate }}, {{ messageId }} are substituted only in the UTM settings (Settings → Configuration → UTM), not in message fields. Use them there to put the campaign title, send date or message ID into the UTM parameters of every link.Personal variables from user tags
The most useful variable is the individual user tag — a value stored in each specific subscriber's profile. It works in the URL and the other fields listed above. Syntax:
{{ tag.KEY }}— substitutes the value of tag KEY for each recipient individuallyAt send time, the worker replaces the variable with the tag value for that specific user. Each recipient sees their own personalized link.
Example: abandoned product view
When a user views a product, your site records a tag. You can see it in Users → user profile → Tags block:
// Tag is set automatically by your site
// when the user views a product page.
//
// In Users → user profile → Tags you will see:
//
// Key Value
// dropped_view_product_url /products/iphone-15-pro
// last_category electronicsIn the "Click URL" field of the template, specify the variable:
// "Click URL" field in the message template:
https://example.com{{ tag.dropped_view_product_url }}The worker substitutes the tag value for each user:
// User user-42 (tag = "/products/iphone-15-pro"):
→ https://example.com/products/iphone-15-pro
// User user-99 (tag = "/products/samsung-s24"):
→ https://example.com/products/samsung-s24
// User user-01 (tag not set):
→ https://example.com ← empty string instead of variableWhere user tags are configured
Tags are stored in each user's profile and managed from the Users section:
- Add tag — "+" button in the block header → enter key and value.
- Edit — "⋮" button next to the tag → "Edit" → change key or value → Save.
- Delete — "⋮" button → "Delete".
Block 3: Send mode
The message is immediately queued and begins delivering to active subscribers. Status instantly becomes sending.
Specify a future date and time. The message gets scheduled status and will be sent automatically at the specified moment. A scheduled message can be cancelled before it transitions to sending.
Preview
The creation form shows a live preview of the notification — how it will look on the user's device (with title, body, and URL). Check it before sending.
Message analytics
On the detail page of each sent message, the delivery funnel is available:
Number of subscribers for whom delivery was attempted.
The notification was shown on the device — confirmed by the service worker or the mobile app.
User clicked on the notification.
Delivery failed (expired endpoint, network error).
Clicked ÷ Delivered × 100%. Audience engagement metric.
Cancelling a scheduled message
Open the detail page of a message in scheduled status and click "Cancel". Once it transitions to sending status, cancellation is not possible — delivery has already begun.
Related sections
Create segments in advance to use them in the "By segments" field.
Create message templates for reusable campaign content.
If UTM parameters are enabled, they are automatically added to the URL of all notifications sent from this app.