Carillon docs

Production checklist

Check credentials, builds, keys, and retry handling before sending to users.

The checks worth making before the first production send.

Credentials

  • The APNs credential names the Bundle ID of the build you are shipping, not of a debug variant. It is the topic APNs routes by.
  • The Team ID is present. Apple will not accept a notification signed without one.
  • The Firebase service account belongs to the same project as the google-services.json in your app, and is scoped to Cloud Messaging rather than Owner.
  • Each provider credential you use shows a valid status.

Builds and environments

  • Your production build registers production devices. TestFlight and the App Store are production; Xcode, a development-signed build and a simulator are sandbox.
  • The device list contains production devices, not only sandbox ones. Only sandbox devices in production means the production build is not registering.

Keys

  • The secret key lives where your server reads secrets from, and nowhere in your repository. grep -r carillon_sk over your codebase should find nothing.
  • The mobile key shipped in this release is active. When rotating, keep keys used by supported older releases active; a new key is not required for every release.
  • No mobile app carries a secret key. Anyone with the binary can read it, and a secret key can send to your entire base.

Sending

  • Every send carries an Idempotency-Key. A network timeout tells you nothing about whether the notification went out.
  • Sends for the same business event use a stable dedup_key (30-day retention).
  • Your code reads warnings on the 202. An entry there means part of the campaign was written off before anything was attempted.
  • Your code handles 429 by waiting the number of seconds the detail names rather than retrying immediately.

Isolating a staging environment

Create a second Carillon app. It gets its own credentials, its own keys, its own devices and its own statistics, and its quota and device count are separate. Point your staging builds at its mobile key and your staging backend at its secret key.

Upload the credentials required by your staging build. APNs sandbox and production are device environments; they do not replace app-level isolation.

Europe and data residency · How devices are counted · Rate limits

On this page