Skip to main content

Integrations guide

Notifizz ingests events from external sources via dedicated webhook endpoints. This guide walks through setting up each connector — Segment, Stripe, HubSpot, Intercom — from “zero” to “campaign fires from a provider event”. The exact wire format per provider is in connector webhooks reference. This page is task-oriented; jump there when you need the headers and HMAC formulas.

TL;DR

  • Each provider has a dedicated POST /v1/webhooks/{provider}/:sourceId endpoint.
  • The dashboard mints a sourceId and verificationSecret per source.
  • Configure the webhook on the provider side with the URL + secret.
  • Notifizz verifies the signature, maps the provider event to the Notifizz event grammar, and feeds it into the same pipeline as client.track() calls.

Common flow

The setup is the same shape for every provider:
1

Create a source in the dashboard

Pick the provider, name the source. The dashboard mints a sourceId and a verificationSecret. Both are needed in the next step.
2

Configure the webhook on the provider

Each provider has its own admin UI; the URL pattern is https://api.notifizz.com/v1/webhooks/{provider}/<sourceId>. The secret goes into the provider’s “shared secret” / “signing secret” / “client secret” field — the exact name varies.
3

Test delivery

Most providers expose a “send test event” or “trigger sample” button. Use it; check the dashboard delivery history for the source. A successful test shows the raw payload + the mapped event.
4

Map provider events to Notifizz events

A connector event keeps the provider’s own type, verbatim and unprefixed — Stripe’s invoice.paid arrives as invoice.paid. The provider’s type is the canonical identifier, so what you read in the provider’s own documentation is what you key on here. Your event catalogue lists each type the source has actually sent.
5

Wire campaigns

Connector events behave exactly like client.track() events — campaigns key on the event name. Create a campaign listening on invoice.paid and trigger it from any Stripe webhook delivery. Copy the name from your event catalogue rather than typing it: a single character apart, the campaign never fires.

Per-provider setup

Segment

1

Add a Segment source in Notifizz

Dashboard → Sources → Add → Segment. Note the URL and the verificationSecret.
2

Configure Segment

In Segment: Destinations → Webhooks → Create. Paste the Notifizz URL. In the destination’s settings, find “Shared Secret” and paste the verificationSecret.
3

Map your Segment events

Segment events arrive as track, identify, page, screen, or group. The mapper translates them — the most common pattern is track events keep their event name, others get a segment.identify / segment.page prefix. Customise via the dashboard’s mapping UI.
Signature scheme: header x-signature, value is hex(HMAC-SHA1(verificationSecret, rawBody)).

Stripe

1

Add a Stripe source in Notifizz

Dashboard → Sources → Add → Stripe. Note the URL.
2

Add a webhook endpoint in Stripe

Stripe Dashboard → Webhooks → Add endpoint. Paste the Notifizz URL. Pick the events you care about (or “all events” for low-volume accounts). Stripe shows a “Signing secret” — copy it and paste into the Notifizz source’s verificationSecret field.
3

Map Stripe events

Stripe event types use dotted notation already (invoice.paid, customer.subscription.updated), and Notifizz keeps them as they are. Bear the collision in mind when you name your own events: a client.track('invoice.paid', …) of your own would land on the same name as Stripe’s.
Signature scheme: header stripe-signature with Stripe’s multi-element format (t=<ts>,v1=<sig>). Notifizz delegates to Stripe’s official verifier — the same logic as Webhook.constructEvent in the Stripe SDK.

HubSpot

1

Add a HubSpot source in Notifizz

Dashboard → Sources → Add → HubSpot. Note the URL.
2

Set up the HubSpot app webhook

HubSpot → Settings → Integrations → Apps → Webhooks → Create subscription. Paste the URL. Use the app’s Client Secret as the Notifizz verificationSecret.
3

Subscribe to events

HubSpot subscriptions are object-based (contact.creation, deal.propertyChange, …). The mapper produces hubspot.contact.created, hubspot.deal.updated, etc.
Signature scheme: header x-hubspot-signature-v2 (with x-hubspot-signature fallback), value is hex(HMAC-SHA256(clientSecret, rawBody)).

Intercom

1

Add an Intercom source in Notifizz

Dashboard → Sources → Add → Intercom. Note the URL.
2

Configure the Intercom webhook

Intercom → Settings → Webhooks → New Webhook. Paste the URL. Intercom shows a “Hub Secret” — copy it and paste into the Notifizz source’s verificationSecret.
3

Subscribe to topics

Intercom topics are conversation-centric (conversation.user.replied, contact.created, …). The mapper translates them to intercom.conversation.replied, intercom.contact.created, etc.
Signature scheme: header x-hub-signature, value is sha1=<hex(HMAC-SHA1(verificationSecret, rawBody))> — the same GitHub-style scheme. Note the sha1= prefix.

Debugging signature failures

The dashboard delivery history flags signature failures with a 401 entry. The most common causes:

Mapping events

Each connector ships a default mapping out of the box. The dashboard’s mapping UI exposes:
  • The list of provider event types observed in delivery history.
  • The mapped Notifizz event name (editable).
  • An “ignore” toggle for events you don’t want propagated.
Renames take effect immediately for new deliveries. Past deliveries keep their original mapping (they’re stored on the workflow instance for traceability).

FAQ

Both fail with 401, but for different reasons. Wrong sourceId produces a 404. Wrong secret produces 401 + signature failure in the log. The dashboard delivery history distinguishes the two — read the entry’s reason field.
On customer.subscription.updated, exactly as Stripe names it. Connector event names are not rewritten, so there is nothing to choose and nothing to keep in sync: the provider’s type is the name. If you want your own vocabulary instead, emit your own event from your backend with client.track() when you handle the change.
Mark them as “ignored” in the dashboard mapping UI. Notifizz still verifies the signature (so the provider sees 200 and stops retrying), but the event isn’t enqueued for campaigns.
Pause the source from its detail page in the dashboard. Pause persists across deploys. Webhook deliveries still arrive (the provider sees 200), but Notifizz drops them.
The connector uses the provider’s event id as the idempotencyKey. A retried delivery from Stripe short-circuits with { duplicate: true }. Genuinely identical events from your end (e.g. user clicks twice) have different event ids and are not deduped.
Yes — each source has its own sourceId + verificationSecret. You can have, say, two Stripe accounts (production + sandbox) wired to the same Notifizz environment; campaigns can match on event content if they need to differentiate.

See also

Connector webhooks reference

Wire format, headers, signature formulas.

Events

The grammar mapped events follow.

Campaigns

What runs after a mapped event matches.

Event Tracking

The native event format connectors normalise to.