Guide
Keep FluxyChat for realtime rooms and webhooks; fan out transactional SMS or WhatsApp with Sent.dm when your app decides the user is not active.
FluxyChat is room-based in-app transport: WebSocket history, mentions, agents on the same stream. Telco APIs (Sent.dm, Twilio, etc.) are for offline reach (password resets, mention alerts, DM summaries), not for replacing your message list UI.
Subscribe to message.created on your project. Verify X-Fluxy-Signature, resolve the recipient’s phone from your user profile, and skip send when your own presence or read-receipt logic says they are active.
// See docs/cookbook/offline-notify-sent-dm.md for full Worker example
await fetch("https://api.sent.dm/v3/messages", {
method: "POST",
headers: {
Authorization: `Bearer ${env.SENT_DM_API_KEY}`,
"x-profile-id": env.SENT_PROFILE_ID,
},
body: JSON.stringify({
channel: ["sms"],
to: [user.e164],
template: { name: "chat_mention", parameters: { sender, preview } },
}),
});Full GPL workspaces bundle email invites and org-wide AI. FluxyChat stays MIT and room-scoped: use Clerk or Resend for invite email, Sent.dm for SMS, and our in-app notification rows for mentions inside the product.
If you expose a guest demo room, combine Turnstile, origin allowlist, and per-IP rate limits so bots cannot mint JWTs indefinitely.
FluxyChat packages the same stack: RoomDurableObject, D1 history, multi-tenant JWT, reconnect-aware SDK, and operator console. MIT self-host or hosted beta.
Topics: in-app chat SMS notification · Sent.dm FluxyChat · webhook message.created · offline push chat · transactional SMS mention
Canonical path: /guides/offline-notify-in-app-plus-sms