Notification infrastructure · self-hosted regions

Notifications that arrive — even where Google can't.

Push, in-app inbox and realtime delivery for apps that live behind filtered networks. One API, running in your region, with no dependency on Google or Apple to reach your users.

First production tenant: a streaming app with 100k monthly actives on a network where FCM stopped resolving.

Live delivery · region IR-1● 12,418 sockets open
Your app Android · iOS · Web Carillon SDK Inbox cache Deep links Carillon region node segments · outbox presence · analytics API keys · audit websocket poll · 15m Your backendPOST /v1/messages FCM / APNs relayoptional · best-effort Web pushVAPID · same API de-duplicated by message id across every transport
Carillon-native transportoptional relays
3transports per device — socket, inbox poll, cloud relay
≤ 15 minworst-case background delivery with zero Google dependency
1 APIpush, in-app inbox, realtime rooms and web push
Your regiondata and sockets stay on nodes you choose
The problem

Your users are reachable. Your push provider isn't.

Firebase Cloud Messaging and APNs are wonderful — until a national firewall, a sanctions list or a DNS blackout sits between them and your users. Then every "we miss you" campaign, every new-episode alert, every payment reminder silently drops to zero, and your dashboards say "sent".

"We had 744,000 registered push tokens and could reach 278 people."Head of product, streaming app, August 2026

Carillon puts the delivery node where your users are, speaks to your app directly, and treats Google and Apple as optional accelerators rather than the only road.

How it works

A delivery ladder, not a single hop

Every message is written once to a per-device outbox on a regional node. The SDK collects it over whichever rung is open — and every rung de-duplicates by message id, so a user never sees the same notification twice.

Live socket

While the app is open or recently used, the SDK keeps a lightweight WebSocket to the node. Messages, presence and realtime rooms ride the same connection.

< 1 s
Background inbox poll

A scheduled fetch of the outbox — WorkManager on Android, background fetch on iOS, service worker on web. Works with no third party at all.

≤ 15 min
Cloud relay (optional)

Where FCM or APNs are reachable, Carillon relays a wake-up through them for instant delivery. When they aren't, nothing breaks — the lower rungs already have the message.

seconds · best effort
In-app inbox

Everything lands in a persistent inbox your app renders natively: read state, deep links, images, expiry. The channel your users can always open.

on open
Features

Everything a growth team expects from a notification platform

Segments

Build audiences from device, region, app version, custom traits and your own events. Preview the count before you send.

Campaigns & scheduling

One-off, recurring, or triggered by an API event. Send to 10% first, then to everyone. Frequency caps per user.

Aあ

Templates & localisation

Right-to-left languages rendered correctly, per-locale variants, variables from your payload, image and action buttons.

Deep-link actions

Typed targets — a screen, an item, a URL — so taps land exactly where you meant, on every platform.

Delivery analytics

Sent → delivered → opened → acted, per transport and per campaign, with real p50/p95 latency — not a "sent" counter.

A/B

Experiments

Two variants, an automatic winner, and the lift measured on the action you care about.

Realtime rooms

Presence, typing, and fan-out messages over the same socket — watch parties, live chat, collaborative sessions.

Webhooks & export

Every delivery and open event streams to your warehouse. Keep your own numbers.

Regional nodes

Run a node inside the network your users are on. Data residency by design, not by policy PDF.

Console

Built multi-tenant from day one

Clients, projects, environments and API keys with scoped permissions. Roles for growth, engineering and support. An audit log of every send and every setting change. Usage and delivery stats per client, so one console runs a whole portfolio of apps.

  • Client → project → environment hierarchy, keys per environment
  • Per-client quotas, rate limits and monthly usage reports
  • SSO (OIDC), role-based access, IP allow-lists
  • Health per region: sockets, queue depth, transport failure rates
console.getcarillon.com / clients
ClientRegionDevicesDelivered · 24hStatus
Streaming appIR-1 · EU-1744,3541,204,918healthy
MarketplaceIR-182,11096,402healthy
Fintech (sandbox)EU-11,2403,088sandbox

Illustrative data.

Developers

One call to send. One SDK to receive.

A REST API for your backend, thin SDKs for your apps. Register a device, subscribe to segments, render the inbox. The SDK handles the socket, the poll schedule and de-duplication so your code never sees a transport.

Android · KotliniOS · Swift & JS bridgeWeb · JSREST · OpenAPIWebhooks
# send to a segment with a typed deep link
curl -X POST https://api.getcarillon.com/v1/messages \
  -H "Authorization: Bearer crl_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "to":      { "segment": "lapsed_30d" },
    "title":   { "fa": "قسمت جدید اومد", "en": "New episode is out" },
    "body":    { "fa": "فصل دوم، قسمت ۳ همین الان منتشر شد" },
    "action":  { "type": "screen", "screen": "post", "id": "8123" },
    "image":   "https://cdn.example.com/ep3.jpg",
    "ttl":     "7d",
    "collapse": "ep-8123"
  }'

# 202 Accepted → { "id": "msg_9Kx…", "audience": 26570 }
Pricing · introductory

Start free. Pay for reach, not for seats.

Developer

$0 / month
  • 1 project · 10,000 devices
  • 100k messages / month
  • Shared regional node
  • Inbox, segments, basic analytics
  • Community support
Start building

Growth

$99 / month
  • 5 projects · 250,000 devices
  • 5M messages / month, then metered
  • Campaigns, A/B, frequency caps
  • Webhooks & export, 90-day analytics
  • Email support, 99.5% uptime target
Request access

Enterprise

Custom
  • Dedicated regional node or on-prem
  • Unlimited devices & messages
  • SSO, audit log, IP allow-lists
  • 99.9% SLA, private support channel
  • Data residency agreements
Talk to us
Questions

What people ask first

Does it really work without Firebase?

Yes. The socket and the background poll are Carillon-native and need only HTTPS to your node. FCM and APNs are optional relays that make delivery instant where they're reachable; where they aren't, the lower rungs of the ladder still deliver.

What is the delivery latency when the app is in the background?

On Android without a cloud relay, the background poll is bounded by the OS scheduler — 15 minutes worst case. Apps that need instant background delivery can enable a foreground service mode in the SDK, or the FCM relay. The console shows real p50/p95 per transport so you decide with numbers.

Where does my data live?

On the regional node(s) you select. Growth plans run on shared nodes in each region; Enterprise gets a dedicated node or an on-prem install. Device tokens, message content and analytics never leave the region.

Can I migrate from another provider?

Register devices with your existing FCM/APNs tokens and Carillon will use them as the relay rung immediately, while the SDK brings up the native transports on the next app open. No big-bang cutover.

Is there an in-app inbox UI?

The SDK gives you the data (list, read state, actions); you render it in your own design. Reference components exist for Compose, SwiftUI and React.

Reach the users you already have.

Carillon is onboarding a small number of teams whose apps live behind filtered or unreliable networks. Tell us about yours.

Request access →