Skip to main content
Audience: Client developers integrating a Zixflow SDK
Purpose: How to report push delivery, opens, and action clicks so campaign analytics stay accurate.
For step-by-step platform code, use the SDK guides:

Why Push Tracking Matters

When Zixflow sends a push, it records the send. Your app must report what happens on the device:
  • Did it arrive?
  • Did the user open it?
  • Did they tap an action button?
Those callbacks power open rates, click rates, and post-push conversion funnels.

Delivery Lifecycle


The Push Payload

Zixflow injects two fields into every push data payload. Use them to associate metrics with the correct delivery. They appear in message.data (Flutter/Android) or userInfo (iOS). trackMetric() requires both. Example payload:
Important: action_buttons is a JSON string, not a nested object. Parse it before use.

The Three Tracking Events

Delivered / Opened parameters

Action Clicked properties

Action clicks use track(), not trackMetric(). Always fire opened first, then the action event.

Minimal Flutter example

Full handlers for every platform (foreground, background, terminated, service worker) are in the SDK links at the top of this page.

Action Buttons Format

  • name — button label
  • deeplink — optional URL; empty string means no navigation

When the user opens a push, navigate using deeplink_url from the payload (or the action’s deeplink). Tracking and navigation are separate: always report metrics even if routing fails.

Decision Flow

Fallback (no Delivery ID)

If Zixflow-Delivery-ID is missing (e.g. a push not sent by Zixflow), do not call trackMetric. You may still show the notification and handle deep links locally.
Related: Devices & Push Notifications · Channels Overview