Skip to content
Sendora Cloud
Create account
2026-05-30 · Docs

Push — audience send / attribution auto-wrap / A-B stats + auto-promote retracted

  • Audit of `push/service.ts` + `push/policies.ts` + `push/templates.ts` surfaced 4 over-claims on the Push module — heaviest claim density of any module audited. (1) "Audience-targeted sends — pick a saved audience from Customers, send" — `sendPush` takes `userIds[]` or `tokenIds[]`; no audienceId expansion. (2) "Attribution-aware — every push gets a deep link via Links; opens + downstream conversions tie back to send for ROAS" — no automatic Deep-Link auto-wrap on push payloads. (3) "Visual A/B testing — winner declaration + statistical readout" — `setPushAbTestStatus(winnerKey)` is a manual operation; no statistical readout engine. (4) "Silent push" — no `silent`/`content-available` convenience param exposed; you'd build via raw payload.
  • Real shape: APNs (cert + token) + FCM + Web Push (VAPID, lazy keypair per-org), Live Activities cross-platform via `pushLiveActivities.platform`, Geofences with enter/exit/dwell, Critical Alerts (iOS DND bypass), per-org frequency caps + TZ-aware quiet hours (`evaluateQuietHours`), sticky-by-user A/B variant assignment (`assignAbVariant`), templates + localization (locale exact match → 2-letter fallback → default), rich payloads + action buttons (max 4 APNs limit), open/click tracking, invalid-token pruning + 30-day GC cron, device-takeover on signin.
  • OneSignal comparison rewritten honest. 4 new rows enumerate the gaps: single-call audience send (Sendora ❌), automatic deep-link wrap (Sendora ❌), A/B statistical readout + auto-promote (Sendora ❌), critical alerts (Sendora ✅). whyStay LEADS with the missing features. Pricing column adds OneSignal Growth's ~$139/mo at 10K mobile MAU.
  • Real wins kept + emphasised: device-takeover on signin (kills duplicate-push class of bug), cross-platform Live Activities, TZ-aware quiet hours, sticky A/B variant assignment, 4-token-source invalid-token pruning, 30-day GC.