Channels (detailed)
This page extends the channels concept with per-channel setup and dispatch details. For the high-level mental model, start there; this page is the practical setup reference.TL;DR
- A campaign step picks a
notificationConfigwhosechannelTypedecides the dispatcher (notificationcenter,push, oremail). - The orchestrator builds the recipient list once; per channel, the system iterates and dispatches.
- Notification Center is the in-app widget channel — real-time delivery.
- Web push reaches the device with the tab closed — one environment key, one static service worker file.
- Email: sender-domain authentication from the dashboard, open/click tracking with nothing to wire, same campaign editor.
The dispatch model
Every campaign step references anotificationConfig. Each config has a channelType:
The orchestrator returns one recipient list per workflow instance. The dispatcher iterates that list per channel — same recipient receives the message on every channel the campaign configures.
Notification Center
In-app widget channel — new messages appear the moment they’re written. Three frontend SDKs (React / Angular / Vanilla) wrap the same widget — see Notification Center overview for the SDK surface.Setup
- Create an NC config in the dashboard — the template (subject + body + variables) for this notification.
- Reference it from a campaign step — the dashboard editor lets you pick the config from the org’s library.
- No additional infrastructure — the widget script + your Front API Key + the right
authTypeis all the frontend needs.
Real-time mechanism
The widget opens a real-time stream scoped to the signed-in user. New messages are delivered to the inbox and pushed onto that stream; the widget renders the new entry in the dropdown and updates the unread badge. Reconnection and offline catch-up are handled by the platform — your code never deals with reconnection logic or polling. The dashboard’s activity log uses a separate streaming channel for collaborative team feeds; don’t conflate the two.Read / opened / clicked tracking
The widget reports back to the backend:
Each event is keyed by
(messageId, eventType) — duplicates dedupe. See delivery history & stats for the funnel visualisation.
Web push
Browser push channel. A campaign step picks a web pushnotificationConfig (title, body, icon, click URL); at dispatch, Notifizz encrypts the payload and sends one push per active subscription of the recipient. A user can have several — one per browser and device — and each settles independently; subscriptions the browser has revoked are pruned automatically.
Web push setup
1
Generate the environment key
Settings → Web push creates a VAPID key pair for the environment. The public key is served to your frontend automatically; the private key never leaves the Notifizz backend.
2
Serve the service worker
Download
notifizz-sw.js from the same page and serve it at the root of your application’s origin. It registers under a dedicated scope, so it never conflicts with your own service worker or PWA.3
Collect the opt-in
The Notification Center widget shows a dismissible soft prompt once the environment is configured — or drive the opt-in from your own button with the SDK. The native browser dialog only fires on the user’s click.
4
Create a web push config and reference it from a campaign step
Same dashboard editor. Title and body budgets differ per platform — see platforms & privacy.
notificationConfig; the template is rendered per recipient, tracking and the unsubscribe block are injected, and the message goes out on the stream matching its kind — transactional and promotional travel separately so one cannot spoil the other’s reputation.
Customer-facing setup
1
Authenticate a sending domain
Add your domain in Settings → Email → Domains. Notifizz generates the DKIM, return-path and (recommended) DMARC records; add them at your DNS provider, or let the dashboard publish them for you where your provider supports it. Verification happens on its own once the records propagate, and the records keep being re-checked afterwards.
2
Add the From addresses
Senders live on the verified domain — typically
notifications@yourdomain.com, with its own display name. One sender is the default campaigns use.3
Create an email config
Same dashboard editor as the NC config — subject, body, variables. The editor exposes email-specific fields (preheader text, plain-text fallback).
4
Reference from a campaign step
Add an email step alongside (or instead of) the NC step. The orchestrator builds the recipient list; the email dispatcher renders + sends per recipient.
Multi-channel campaigns
A single campaign can pick more than one channel step. Common patterns:- NC + email — in-app for active users + email as a fallback for offline users.
- NC only for transactional — invoice paid (in-app receipt) + reserve email for marketing.
- Email only — pure marketing campaigns where the user isn’t expected to be in-app.
(messageId, eventType) pair is unique per channel.
Why no client.send()
The pre-event-driven design exposed a client.send() method that wrote a Notification Center message directly. It was removed — channel decisions belong to the campaign, not the call site.
The migration is straightforward — emit an event, let a campaign decide channel and recipients.
FAQ
Single campaign send to NC AND email?
Single campaign send to NC AND email?
Yes — add both as separate steps in the campaign editor. The orchestrator runs once; both channels dispatch to the same recipient list. Each channel has its own template; you can copy-paste between them and adjust per-channel formatting.
Email config not sending — why?
Email config not sending — why?
Two layers to check:
- Sender domain authenticated? Email delivery requires a verified DKIM + return-path on the sending domain. Unauthenticated domains fail at the provider level, visible in the dashboard delivery history with the bounce reason.
- Right send scope? A real send needs a
Livecampaign triggered from production. InReview, email only reaches your sandbox testers — see send scope.
Bring my own SMTP / Postmark account?
Bring my own SMTP / Postmark account?
Not at launch — Notifizz uses its built-in provider so deliverability is handled for you. BYO-provider is on the longer-term roadmap.
Where do open / click events come back?
Where do open / click events come back?
On each delivery’s stats funnel and on the campaign’s aggregated metrics. The widget reports NC events directly via
POST /v1/notification/event/register; email reports the same shape via inbound webhooks. The funnel renders both side-by-side per channel.Add a new channel later (SMS)?
Add a new channel later (SMS)?
The dispatch model accommodates it — a new
channelType value plus a new dispatcher. That’s exactly how web push landed. SMS is on the roadmap; it will feel like NC, web push and email from the campaign-author side.Channel-specific templating — how different from NC?
Channel-specific templating — how different from NC?
The dashboard editor exposes channel-specific fields (preheader for email, action buttons for NC). Variables and brands work the same across channels — see brands and variables.
See also
Channels overview
Higher-level mental model.
Notification Center overview
Widget SDK surface across React / Angular / Vanilla.
Brands and variables
Templating across channels.
Delivery history & stats
Per-channel funnel.
Web push
Environment key, service worker, opt-in.
Platforms & privacy
What each OS renders, and the encryption model.