Push campaigns
Launch one-time, weekly, and event-triggered push campaigns with segmentation, quiet hours, and revenue attribution.
Push brings a subscriber back after the first visit and shows whether that contact produced clicks, conversions, and revenue. darkcore retains the connection to the stream, so a notification click follows the same route and remains in analytics.
Do not confuse system-campaign eligibility with the permission prompt. The Allow system push campaigns switch in a stream only decides whether subscribers from that stream receive campaigns launched by an administrator. Configure the prompt, trigger, style, and copy in PWA Editor → Config. A Direct Link stores its own push settings in its own editor.
Quick launch
In PWA settings, enable Notification prompt and choose a clear display moment: after installation, a click, or a short delay.
Open Push campaigns → Create, set an internal name, and select a campaign type.
Write a title and text, check the preview, and add other languages if needed.
Select an audience: streams, GEOs, OSs, languages, and conversion statuses.
Configure time, quiet hours, or the trigger event, then save the campaign.
Create a push campaign
Create a campaign and use this guide as a checklist.Campaign types
| Type | When it sends | Suitable use |
|---|---|---|
| Scheduled | Once or multiple times on selected dates and times | Promotion, a new offer, a short campaign |
| Weekly | On selected days and times every week | Regular reminders and content series |
| Event-based | After install or any active conversion type, with one or more delays | Onboarding, returning after registration, repeat deposit |
To send soon, create a Scheduled campaign for the nearest available time. The Immediate type may appear in older campaigns but can no longer be created.
Content
The minimum is a title and text. The icon must be square (192×192 or larger recommended); the large image should be wide (720×360 or larger recommended).
Subscriber macros are available for personalization: GEO, OS, language, subscription ID, stream, and the first click's click_id. Check every language version in preview: a short title and one clear action read better than long promotional copy.
Audience
Filters within a campaign work together. If you select several conditions, a subscriber must match every one of them.
| Filter | Example use |
|---|---|
| Streams | Send only to subscribers from a specific flow |
| Countries | A dedicated offer for BR or MX |
| OS | Instructions only for Android or iOS |
| Language | Content for a specific language version |
| Conversion status: has / does not have | Registration exists, but deposit does not |
Do not duplicate the trigger event with the same “has” filter. A campaign after deposit already knows that a deposit occurred. The combination no registration + has deposit also has no audience, because a deposit implies registration.
Schedule and quiet hours
- Fixed timezone — everyone receives the push at one moment.
- Subscriber local time — each person receives it at the specified time in their region; UTC is used when the timezone is unknown.
- Quiet hours — scheduled sends inside the window are skipped, while event-triggered sends are delayed until it ends.
For an event-based campaign, you can specify several delays:
5m, 1h, 1dIn this example, the subscriber receives a sequence 5 minutes, 1 hour, and 1 day after the event.
How to read statistics
| Metric | Meaning |
|---|---|
| Sent | The browser delivery service accepted the push; this does not mean it was opened |
| Delivery rate | Sent ÷ (sent + technical errors + churn) |
| Errors | The delivery service rejected an attempt for a technical reason |
| Churn | The subscription no longer accepts push: the PWA was removed, permission was revoked, or browser data was cleared |
| CTR | Clicks ÷ sent |
| Unsubscribes | Unsubscribes attributed to this campaign |
| Conversions | Events after push clicks, separate for each workspace type |
| Revenue | Sum of revenue conversion events after clicks from this campaign |
Breakdowns by platform, country, and language help distinguish weak content from a poorly chosen segment.
If a campaign does not send
| Symptom | What to check |
|---|---|
| Zero recipients | The campaign is attached to the correct streams and filters do not contradict each other |
| Almost no subscriptions | The push prompt is enabled on the PWA and appears after an allowed gesture/trigger |
| An event campaign does not start | The event key matches an active conversion type, and delay uses 30m, 2h, or 1d format |
| Low delivery | Separate technical errors from natural churn of old subscriptions |
| Clicks but no revenue | Check the stream tracking link, click_id, and incoming postback |