# Events API subscriptions, payloads and retries

*Slack Developer Study Guide · Design Your Workflows: Spotlight on Slack's APIs · Last updated October 21, 2026 · https://www.certifyforce.com/study-guide/slack-developer/design-your-workflows-spotlight-on-slacks-apis/events-api-subscriptions-payloads-and-retries*

How Events API subscriptions depend on granted scopes and what the bot can see, how to read the event_callback wrapper (api_app_id, team_id, event.type), how to pick least-privilege events such as app_mention and handle app_home_opened, and how retries, redirects, failure limits and Delayed Events work.

- Certification: Salesforce Slack Developer
- Exam section: Design Your Workflows: Spotlight on Slack's APIs
- Study guide: https://www.certifyforce.com/study-guide/slack-developer

**Official exam objective:**

> Implement the Events API in your app.

## What the exam expects

- Explain why a subscribed event does or does not arrive: granted scopes, re-authorization after adding a scope, and perspectival delivery.
- Read the outer `event_callback` wrapper to route by app (`api_app_id`), workspace (`team_id`) and inner `event.type`.
- Choose the least-privilege event for a requirement, such as `app_mention` instead of `message.channels`.
- Handle `app_home_opened` correctly: bot user required, sent on every visit, `view` only after a Home tab was published.
- Predict retries (`x-slack-retry-num`, `x-slack-retry-reason`), the two-redirect limit, the failure limits that disable subscriptions, and what Delayed Events adds.

Key terms: **event subscription** (an event type the app asks Slack to deliver), **perspectival** (only events the installing user or bot can see), **outer event** (the `event_callback` wrapper), **inner event** (the `event` object with its own `type`), **Delayed Events** (an opt-in setting that extends retries to 24 hours).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Missing scope for a new event | Re-run OAuth for existing users to grant it | [The Events API](https://docs.slack.dev/apis/events-api/) |
| Visibility | Only events the installing user or bot can see | [The Events API](https://docs.slack.dev/apis/events-api/) |
| App identity in payload | `api_app_id`; workspace is `team_id` | [The Events API](https://docs.slack.dev/apis/events-api/) |
| Event name | Inner `event.type`; outer `type` is `event_callback` | [The Events API](https://docs.slack.dev/apis/events-api/) |
| Request URLs per app | One, for every workspace and event type | [Using HTTP Request URLs](https://docs.slack.dev/apis/events-api/using-http-request-urls) |
| Least-privilege mentions | `app_mention` with `app_mentions:read`; `message.channels` points to it | [app_mention event](https://docs.slack.dev/reference/events/app_mention) |
| `app_home_opened` | No scope, bot user required, sent on every visit | [app_home_opened event](https://docs.slack.dev/reference/events/app_home_opened) |
| Retry schedule | 3 retries: immediate, 1 minute, 5 minutes | [The Events API](https://docs.slack.dev/apis/events-api/) |
| Redirects | Up to 2 followed | [The Events API](https://docs.slack.dev/apis/events-api/) |
| Disabling | Over 95% failures in 60 minutes; not below 1,000 events per hour | [The Events API](https://docs.slack.dev/apis/events-api/) |
| Delayed Events | Hourly retries for 24 hours; default skips events over two hours late | [The Events API](https://docs.slack.dev/apis/events-api/) |

## Check yourself

- Why does a bot subscribed to `message.groups` miss most private channels?
- When will a newly added `reaction_added` subscription start delivering for existing installs if the app lacks `reactions:read`?
- Which two wrapper fields identify the app and the workspace?
- Why might `app_home_opened` arrive without a `view` field?
- What does the `x-slack-retry-reason` value `too_many_redirects` mean?

## Sources

- [The Events API](https://docs.slack.dev/apis/events-api/)
- [Using HTTP Request URLs](https://docs.slack.dev/apis/events-api/using-http-request-urls)
- [Events](https://docs.slack.dev/reference/events)
- [app_mention event](https://docs.slack.dev/reference/events/app_mention)
- [message.channels event](https://docs.slack.dev/reference/events/message.channels)
- [app_home_opened event](https://docs.slack.dev/reference/events/app_home_opened)
- [Installing via OAuth authorization code flow](https://docs.slack.dev/authentication/installing-with-oauth)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 8 linked practice questions, and unlimited timed mock exams are included with the Slack Developer pack (USD $19): https://www.certifyforce.com/practice-exams
