SocialHub.AIFlash
OverviewAPI ReferenceMCP GuideSocodePortal EmbedMobile SDKApp PushWalletLocation (LBS)Quick Start

App Push

Turn your native app into a Flash send channel. Members register a device token from inside the in-app member center; push then joins the very same automation and campaign engine that sends your email — with a fail-open channel waterfall and one shared frequency cap.

Token registration and the send-stack seam are live in code today. Actual push delivery rolls out behind a controlled enablement flag per team — ask your Flash team to switch it on once your FCM/APNs credentials are configured.

How it works

Register a device tokenLive

A signed-in member's app POSTs its FCM/APNs token. Idempotent UPSERT — safe to call on every launch and on OS token rotation.

Push joins the send stackLive

Push is a channel in the same automation/campaign engine as email — not a separate API. One journey, channel chosen per member.

Channel waterfall + one capLive

Fail-open waterfall (push → email → …) with a single shared frequency cap so a member is never double-messaged across channels.

Delivery enablementRolling out

Registration and the send seam are in code today; actual push delivery rolls out behind a controlled flag, per team. Ask your Flash team to enable it.

Register a device token Live

Call this from inside the signed-in member WebView (the consumer session cookie carries the identity). See the Mobile SDK guide for the WebView SSO flow that establishes that session.

// The member must be signed in (consumer session cookie, set by the WebView SSO
// flow). teamId + memberId are taken from the SESSION — never the request body —
// so there is no member-enumeration surface here.
POST /api/consumer/push/register
Content-Type: application/json

{
  "platform": "ios",             // "ios" | "android"
  "provider": "fcm",             // "fcm" (default) | "apns"  — optional
  "token": "<device push token>",
  "appBundleId": "com.yourbrand.app"   // optional
}
// → 200  { "ok": true }
//   Idempotent UPSERT keyed on (team, token): re-registering the same device
//   simply re-points it at the current member. Call it on every app launch and
//   whenever the OS rotates the token.

Sending: push is a channel, not an API call

// You do NOT call a "send push" endpoint. Push is a CHANNEL inside the existing
// automation + campaign send stack — the same engine that sends email. When a
// journey or campaign targets a member:
//
//   1. Flash resolves the member's channels in a waterfall (fail-open):
//        push (if a token + consent exist)  →  email  →  …
//   2. One SHARED frequency cap applies across channels, so a member is never
//      double-messaged on push AND email for the same step.
//   3. No token / no consent / push disabled  →  silently falls back to email.
//
// Net: you author one journey; Flash picks the best channel per member.

Before you go live

FCM (Android + iOS via Firebase)

Provide your Firebase service-account credentials to your Flash team. Flash sends via FCM HTTP v1 (OAuth via a service account) — the default provider.

APNs (optional, direct)

If you send to iOS directly over APNs, provide your APNs auth key (.p8), Key ID and Team ID. Register those devices with provider: "apns".

Consent

Push is gated by explicit member consent plus the Global Privacy Control signal (fail-closed). A member with no active push consent is skipped — the waterfall falls back to email.

Acceptance checklist

Registering the same device twice does not create a duplicate — the UPSERT re-points it at the current member.

An opted-in member with a valid token receives a push; a member with no token/consent receives the email fallback instead — never nothing, never both.

Revoking push consent (or a Global Privacy Control signal) immediately drops the member to the email channel.