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.
Implement the Events API in your app.
~8 min read · 8 practice questions ·
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_callbackwrapper to route by app (api_app_id), workspace (team_id) and innerevent.type. - Choose the least-privilege event for a requirement, such as
app_mentioninstead ofmessage.channels. - Handle
app_home_openedcorrectly: bot user required, sent on every visit,viewonly 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
- Detail
- Re-run OAuth for existing users to grant it
- Detail
- Only events the installing user or bot can see
- Detail
api_app_id; workspace isteam_id
- Detail
- Inner
event.type; outertypeisevent_callback
- Detail
- One, for every workspace and event type
- Detail
app_mentionwithapp_mentions:read;message.channelspoints to it
app_home_opened- Detail
- No scope, bot user required, sent on every visit
- Detail
- 3 retries: immediate, 1 minute, 5 minutes
- Detail
- Up to 2 followed
- Detail
- Over 95% failures in 60 minutes; not below 1,000 events per hour
- Detail
- Hourly retries for 24 hours; default skips events over two hours late
- 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?
The questions are free to read. Answers with their sources and self-grading are included with the pack.
Keep reading with the Slack Developer pack
- Core concepts
- Exam traps
- Worked scenario
The pack includes:
- All 38 lessons of the Slack Developer guide, with reading progress
- Interactive decision walks and step-by-step sequence steppers
- Inline practice questions and one-click topic practice (8 questions for this lesson)
- An official source cited for every claim
- An AI tutor that answers from the guide
- Unlimited timed practice exams