Design a Great User Experience8% of the exam

Notification etiquette, message cleanup and error replies

How often, when and where a Slack app should notify people, when output belongs in channel versus privately, how to condense or update finished interactive messages (including ephemeral ones), and how to name slash commands and write errors people can act on.

Official exam objective
Build a great user experience that aligns with Slack’s commitment; to make work life simpler, more pleasant and more productive.

~8 min read · 10 practice questions ·

What the exam expects

  • Control notification volume: configurable frequency, digests for high-volume automatic sources, and broad mentions only for critical alerts with the installer's permission.
  • Time notifications for the recipient's own time zone, and keep what users tell the app in a DM private.
  • Choose in-channel versus ephemeral output, and fix a response_url reply that should be visible to the channel.
  • Clean up finished interactive messages, knowing what chat.update cannot edit and when the response_url must be used instead.
  • Give slash commands unique names, answer empty or unknown input with usage help, and replace vague errors with actionable ones.

Key terms: digest (one periodic summary instead of a message per event); broad mention (@channel, @here or @everyone); ephemeral message (visible only to one user and never changes visibility); response_url (a per-payload URL for replying to, updating or deleting the source of an interaction); actionable error (says what went wrong and what to do next).

Key facts

High-volume automatic events
Detail
Offer a digest instead of one alert per event
Broad mentions
Detail
Only for critical, immediate-action alerts, with the installer's explicit permission
User time zone
Detail
users.info returns tz, tz_label and tz_offset
DM content
Detail
Users assume it is private; tell them before sharing results in a channel
response_url default
Detail
Ephemeral; response_type: in_channel publishes to the conversation
Ephemeral visibility
Detail
Cannot change to in_channel once issued
chat.update scope of edits
Detail
Only the token's own messages, including those posted as the app
Ephemeral edits
Detail
Not with chat.update or chat.delete; yes via the interaction's response_url
Duplicate command names
Detail
A newer app's same-named command overrides the existing one
Unknown command input
Detail
Respond with usage instructions
Sources for this section (5)
  • Why should an app offer a digest for events from an automatic source such as service logs?
  • When may an app use `@channel`?
  • What makes a `response_url` reply visible to everyone in the channel?
  • Why does `chat.update` fail on an ephemeral confirmation the app sent?
  • When should a slash command reply with usage instructions?

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 (10 questions for this lesson)
  • An official source cited for every claim
  • An AI tutor that answers from the guide
  • Unlimited timed practice exams

Practice for the Slack Developer exam