Skip to main content

TL;DR

An objective is the event Notifizz watches to decide a campaign “worked”. You set it on the campaign (a click, a read, a custom event like purchase.completed). Notifizz then credits one conversion per unique recipient who received the campaign and triggered the objective afterwards.
  • Pick from Click, Read or any of your custom events.
  • Conversions are deduped per recipient — the same user doesn’t count twice.
  • The dashboard shows who converted (last 50) and every objective evaluation in the Outbox tab for debugging.

Setting an objective

In the campaign editor, the recipients box has an objective row at the bottom. Click it to choose:
  • Click — fires when a recipient clicks any button you placed in the notification. No identity work needed: Notifizz wires the click through a redirect URL it generates per message.
  • Read — fires when the notification is marked read in the inbox widget.
  • A custom event — any event in your catalog. Notifizz credits the conversion when the event payload carries a canonical identity (id, email, pushId, or phone) that matches a recipient who got this campaign.
The objective is per campaign: two campaigns targeting the same event each get their own credit count.

How conversions are credited

Two paths exist, both honour the same dedup rule (one credit per recipient per campaign).

Fast path — receipt-based

The default for Click, Read, and custom events whose payload already carries identity. Notifizz looks up “did this recipient receive a message from this campaign?” — if yes, credits a conversion. One lookup, no custom code.

Custom resolution — onObjective

When the event doesn’t carry canonical identity directly (only an internal ref, a Stripe customer id, etc.), your orchestrator can export a second hook that resolves it server-side:
The hook returns { id?, email?, pushId?, phone? } | null. null means “this event does not qualify” — fine, the conversion is simply not credited. Notifizz runs your custom resolution only when this hook is exported. When it isn’t, the fast path runs — nothing else to configure.

Stopping the sequence when the objective is reached

Counting a conversion and acting on it are two different settings. On the Recipients card, and ends when decides what happens to the rest of a sequence once someone reaches the objective:
  • All notifications are sent (default) — nothing stops. Everyone gets every message.
  • The objective is reached — the remaining messages of that person’s sequence are cancelled.
The stop applies to the sequence in flight. A new trigger starts again from the first message, even for someone who converted last time — the run is the unit, not the campaign’s whole lifetime. That is usually what you want: each invoice, each order, each ticket deserves its own reminders, and paying one invoice says nothing about the next. When you instead want to talk to someone once in their life — an activation nudge, a migration, a one-off survey — put that rule on the trigger rather than on the objective: a Milestone synthetic event with threshold 1, All-time, grouped per user, fires exactly once per person. See the migration deadline case for the full pattern. Recipients skipped this way appear in the campaign panel’s Sends bar in their own layer — a success, not a warning: they did not receive the rest because the campaign worked.

Who converted

The campaign performance panel surfaces the latest 50 converted recipients — first identity, relative time, source event. Click the row to drill into the message that ultimately produced the conversion.

Debugging in the Outbox

The Outbox has two tabs:
  • Notifications — every workflow run (delivered, no-recipient, failed, in-progress).
  • Objectives — every objective evaluation, regardless of outcome.
Objective outcomes you’ll see: Click any row to see the enriched event payload, the resolved identity, condition traces, and any error.

Privacy

Notifizz holds no customer data — only the canonical identity fields needed to dedup conversions (id, email, pushId, phone), stored on the dedup index. Conversion rows for the “Who converted” widget are pruned on the same retention schedule as workflow runs.