Notifications
When a release goes out, the team should know. NitroPush can ship release events to Slack, Discord, custom webhooks, or email — multiple destinations at the same time, with per-project routing so each app’s releases land in the right channel.
What events fire?
Three event types per release:
| Event | When |
|---|---|
release.created | A new release lands in any environment. |
release.promoted | An existing release promotes to a higher env (e.g. stage → prod). |
release.rollout_changed | Rollout percentage changes (e.g. 10% → 50%). |
Each event includes the project name, environment, version, mandatory flag, description, and a deep link back to the admin so anyone reading the notification can jump straight to the release detail page.
Available providers
Open the Integrations page and click the tile for the destination you want. The setup flow is one of two shapes:
- OAuth (Slack, Discord) — click “Continue to Slack/Discord”, sign in, pick a channel, done. NitroPush never sees your password; the resulting webhook URL is stored encrypted.
- Form (Custom Webhook) — paste a URL + optional
Authorizationheader. Stored encrypted at rest with AES-256.
Email is currently a stub (the platform’s SMTP backend ships in v1; the tile shows “Coming soon”).
Route per project
When you connect an integration, you’ll see a “Route releases from” picker:
- All projects — catch-all. Useful for an
#ops-releaseschannel that wants the whole picture. - Specific project — only fires for releases in that project. Useful for
#ios-releases,#android-releases, etc.
You can have multiple integrations per provider. A common setup:
| Integration | Provider | Routes to |
|---|---|---|
#ios-releases | Slack | NitroPush iOS |
#android-releases | Slack | NitroPush Android |
#ops | Slack | All projects (catch-all) |
| QA team webhook | Custom Webhook | All projects |
Test before you trust
Every saved integration has a Test button on its row in the connected-destinations table. Click it; a [TEST] event fires within ~2 seconds with realistic data. Use this to verify channel routing before pushing a real release.
If the test fails (e.g. “channel deleted”, “webhook 404”):
- The integration row’s status badge stays “Enabled” but the failure shows in the Recent deliveries panel of the integration.
- The notifications worker auto-retries with exponential backoff (5 attempts, 5s → 80s).
- After the final attempt, the delivery lands in the dead-letter set; re-saving the integration with fresh credentials drains it.
Disable temporarily
Toggle the Enabled badge on an integration row to pause it without deleting. Useful during incidents — a flood of release events shouldn’t cascade into a Slack outage.
Next: Releases →