darkcore docs
PWA

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

TypeWhen it sendsSuitable use
ScheduledOnce or multiple times on selected dates and timesPromotion, a new offer, a short campaign
WeeklyOn selected days and times every weekRegular reminders and content series
Event-basedAfter install or any active conversion type, with one or more delaysOnboarding, 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.

FilterExample use
StreamsSend only to subscribers from a specific flow
CountriesA dedicated offer for BR or MX
OSInstructions only for Android or iOS
LanguageContent for a specific language version
Conversion status: has / does not haveRegistration 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, 1d

In this example, the subscriber receives a sequence 5 minutes, 1 hour, and 1 day after the event.

How to read statistics

MetricMeaning
SentThe browser delivery service accepted the push; this does not mean it was opened
Delivery rateSent ÷ (sent + technical errors + churn)
ErrorsThe delivery service rejected an attempt for a technical reason
ChurnThe subscription no longer accepts push: the PWA was removed, permission was revoked, or browser data was cleared
CTRClicks ÷ sent
UnsubscribesUnsubscribes attributed to this campaign
ConversionsEvents after push clicks, separate for each workspace type
RevenueSum 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

SymptomWhat to check
Zero recipientsThe campaign is attached to the correct streams and filters do not contradict each other
Almost no subscriptionsThe push prompt is enabled on the PWA and appears after an allowed gesture/trigger
An event campaign does not startThe event key matches an active conversion type, and delay uses 30m, 2h, or 1d format
Low deliverySeparate technical errors from natural churn of old subscriptions
Clicks but no revenueCheck the stream tracking link, click_id, and incoming postback

On this page