All posts

2026-08-19

We spent 4 months getting approved on the Slack Marketplace. Here's every rejection and what we had to fix.

A detailed breakdown of every Slack app review rejection we received building Qevo, what caused them, and how we fixed each one.

ShareXLinkedInReddit

Getting a Slack app listed on the Marketplace is not well documented. The official checklist covers maybe 30% of what they actually check. We went through 4 rounds of rejections over 4 months building Qevo, a task manager where tasks are pushed directly to people's queues via a /qevo Slack command. Here's every issue we hit and how we fixed it.

Round 1

Bot name mismatch

Our app was named "Qevo" but the bot was named "Queue." The reviewer flagged this as potentially confusing to users. Simple fix in the Slack API dashboard under Display Information, but you only find out after waiting through a full review cycle.

Inaccurate landing page command description

Our landing page showed /qevo (no arguments) as a command that grabs the last message in a channel and turns it into a task. Reviewers tested it and it failed. The root cause: the bot needs to be a member of the channel to call conversations.history, even with the channels:history scope. We had to auto-join public channels before reading history, add a proper error message for private channels, and update the landing page copy to show accurate commands.

Missing install instructions

The landing page linked to a login page with no explanation of what to do after logging in. We added a note explaining: sign in, go to Settings, connect your Slack workspace.

Typo in the long description

"Start using GQevo today" in the app's long description. Caught in review round 1, fixed in 30 seconds, but still cost a full cycle.

Round 2

Unused OAuth scopes

We had users:read and users:read.email as user token scopes but nothing in the app ever called users.info. The reviewer correctly flagged them as unnecessary. We removed them and replaced with im:history and mpim:history as user token scopes to support bare /qevo in direct messages.

Spanish listed as a supported language with no proof

Our app listed Spanish as a supported language. The reviewer asked for examples. The bot responses were actually translated using the user_locale field Slack sends in every slash command payload, but we hadn't explained this anywhere. We walked the reviewer through how it works and provided example responses in Spanish.

DMs still not working

Bare /qevo in user-to-user DMs was returning channel_not_found. The bot can't access a DM it's not part of, even with im:history as a bot scope. We added a fallback to use the user's personal OAuth token for DM history. This required im:history and mpim:history as user token scopes.

Round 3

User token scopes rejected as too broad

After adding im:history and mpim:history as user token scopes to support DM history, the reviewer flagged them as "providing extensive access to workspace data." These scopes let the app read all of a user's DMs, which Slack considers sensitive regardless of the use case. We had to drop DM history support entirely and revert to requiring /qevo [task] in direct messages. The user token scopes were replaced with openid as a minimal placeholder.

Round 4

Bot scope mismatch

After the revert, im:history and mpim:history were still in the Slack dashboard as bot token scopes but had been removed from the OAuth URL. The reviewer flagged the mismatch. We added them back to the bot scopes in the OAuth URL to match the dashboard. Bot token scopes for these are fine since the bot can only read DMs it's actually a participant in.

What we'd do differently

Read the full Slack app review guidelines before building, not after. The public checklist is a starting point, not a complete list. Budget 2 review cycles minimum, plan for 4.

Don't list a feature as "pending approval" in your launch posts. The Slack integration was in that state for 3 months after we first announced Qevo publicly.

Test the reviewer experience yourself before submitting. Create a fresh Slack workspace, install your own app, and go through every flow they'll check. Most of our issues would have been caught this way.

The process was slower than building the integration itself, but the app is now live on the Marketplace. Happy to answer questions about any of the specific issues above.


ShareXLinkedInReddit
We spent 4 months getting approved on the Slack Marketplace. Here's every rejection and what we had to fix. | Qevo Blog | Qevo