Admin Guide

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.

draft
→
scheduled
→
sending
→
sent
→
cancelled
draft
Draft

Message is saved but not sent. Saved as a historical artifact in some scenarios.

scheduled
Scheduled

Message is waiting for the specified time. Automatically transitions to sending when the worker polls the queue (every 15 seconds).

sending
Sending

Worker is actively dispatching notifications. Audience is split into batches of 500 subscribers.

sent
Sent

All batches have been processed. Delivery is complete — analytics are available.

cancelled
Cancelled

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.

Send to all

All active subscribers of the app will receive the notification (all browsers with permission). Use for important general announcements.

By segments

Select one or more Include segments (who receives) and, if necessary, Exclude segments (who to exclude). Audience = union of Include minus intersection with Exclude.

💡
The same segment cannot be added to both Include and Exclude at the same time — the system will show a validation error.

Block 2: Notification content

Choose the content source: manually or from a template.

FieldRequiredDescription
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.
ℹ️
Use the Tag to group messages by type. Your site can then show only order updates in its notification center or count unread promos separately: the message feed and message history in the REST API, the Bitrix module and the Web SDK method getUnreadCount(tag) all accept a tag filter.

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.

VariableWhat is substitutedWhere to use
{{ 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
text
// 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
💡
Campaign variables {{ 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 individually

At 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

1
On the site: setting a tag for the user

When a user views a product, your site records a tag. You can see it in Users → user profile → Tags block:

js
// 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                electronics
2
In the message template: using the tag in URL

In the "Click URL" field of the template, specify the variable:

text
// "Click URL" field in the message template:
https://example.com{{ tag.dropped_view_product_url }}
3
At send time: each recipient gets their own link

The worker substitutes the tag value for each user:

text
// 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 variable
⚠️
If a user does not have the tag set — the variable is replaced with an empty string. A URL like https://example.com (without a path) will work as a link to the homepage. It's better to segment the audience in advance: send the campaign only to users who have the dropped_view_product_url tag. To do this, add the rule "Tag 'dropped_view_product_url' exists" in the segment.

Where user tags are configured

Tags are stored in each user's profile and managed from the Users section:

1
Go to Users and find the desired user by External ID.
2
Open the user profile — the "Tags" block shows all set tags with their keys and values.
3
Available actions:
  • 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".
ℹ️
Tags are set automatically by your site at the moment of an event (product view, add to cart, etc.). Manual management in the admin is useful for debugging, adjusting values, or adding test tags before launching a campaign.

Block 3: Send mode

Send now

The message is immediately queued and begins delivering to active subscribers. Status instantly becomes sending.

Schedule

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:

Sent

Number of subscribers for whom delivery was attempted.

Delivered

The notification was shown on the device — confirmed by the service worker or the mobile app.

Clicked

User clicked on the notification.

Failed

Delivery failed (expired endpoint, network error).

CTR

Clicked ÷ Delivered × 100%. Audience engagement metric.

ℹ️
CTR (Click Through Rate) = Clicked ÷ Delivered × 100%. A good benchmark for web push is 5–15% depending on the topic.

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

← Segments

Create segments in advance to use them in the "By segments" field.

← Templates

Create message templates for reusable campaign content.

← Settings → UTM

If UTM parameters are enabled, they are automatically added to the URL of all notifications sent from this app.