Notifications
Emails and push notifications that keep referrers and referees updated on referral status
Invitebase can be configured to send push notifications and emails when invites convert, when money is waiting, or when welcome rewards are active.
For documentation on sending messages to you as the business owner (Slack, webhooks, email alerts), see Owner alerts.
Notification triggers
Notifications to your users (referrers and referees) hang off the referral lifecycle: when the state machine records a transition, Invitebase resolves the audience, checks their preferences, and dispatches to email and push.
| Trigger | Recipient | Fires when |
|---|---|---|
| Referral signup | Referrer | Someone signs up with their code (referral reaches signed_up) |
| Referral validated | Referrer | The referral passes qualification gates and fraud checks |
| Reward unlocked | Referee | Their welcome reward (free month, in-app unlock) becomes active |
| Payout available | Referrer | A reward reaches payable state and is claimable |
| Milestone reached | Referrer | They cross a tier threshold ("5 of 10 referrals toward the hoodie") |
Delivery guarantees worth knowing:
- Exactly once per moment. Retried transitions and duplicate events never double-notify.
- Honest copy by state. The signup notification says the reward is pending until the referral qualifies — it never implies money is earned before validation.
- Holds are respected. A payout still inside its hold window does not trigger "payout available" until it's released.
- Batching. Multiple payouts landing together collapse into one message, not N.
- Mode-aware. Test-mode activity never notifies real users; test emails go to your org's own address only.
Email integration is handled directly from Invitebase with your app's branding — your app name, logo, and accent color. End-user email requires a verified sender domain and reply-to address. Invitebase sends on your behalf through its own Resend account; you do not provide a Resend API key.
Push
Coming soon. Invitebase-managed push, setPushToken, and bring-your-own-provider push delivery are outside the November 15 SDK 1.0 release. Use email notifications for launch.
Customizing templates
Notification and email templates are edited in the end-user surface editor alongside your invite pages: subject lines and body copy per trigger, with the shared theme (logo, colors) applied automatically and a live preview rendered with sample data. Template changes are versioned and audit-logged.
Per campaign or app, each trigger can be toggled on or off — run signup notifications without milestone emails, or turn everything off and drive messaging yourself from webhooks.
Preferences and opt-out
Preferences are stored per user, per channel (email/push), and checked before every dispatch. Email defaults to on; push delivery is coming soon; opt-outs survive re-identification and new devices.
Users can opt out of referral emails and notifications at any point - configured through the SDK or API.
await invitebase.setNotificationPreferences({ email: false });try await Invitebase.setNotificationPreferences(
NotificationPreferences(email: false)
)lifecycleScope.launch {
Invitebase.setNotificationPreferences(
NotificationPreferences(email = false)
)
}const invitebase = useInvitebase();
await invitebase.setNotificationPreferences({ email: false });await Invitebase.setNotificationPreferences(
NotificationPreferences(email: false),
);curl https://api.invitebase.com/v1/referrers \
-H "Authorization: Bearer $INVITEBASE_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "usr_123",
"notification_preferences": { "email": false, "push": false }
}'Full reference: setNotificationPreferences in the SDK, or notification_preferences on the create-or-identify upsert from your backend.
Compliance built in
Invitebase messages your users on your behalf, so the baseline is handled regardless of what you build:
- Every email carries a one-click unsubscribe (link plus
List-Unsubscribeheader) that flips the same per-user email preference. - Bounces and spam complaints feed an automatic suppression list.
- Per-app rate limits prevent a buggy integration from blasting users.