Pre-submission audit

Why Slack sends apps back from the App Directory — and what your manifest says about yours

Paste your app manifest below. It is parsed in this browser and nothing is uploaded anywhere. You get the same list a reviewer works from: what blocks submission outright, and what you will be asked to justify in writing.

Run it on your manifest

In Slack: api.slack.com/apps → your app → Features → App Manifest → JSON tab → copy the whole thing.

Runs locally. No network calls.

The check that actually decides it

Most write-ups treat the Directory checklist as a form to fill in. In practice one thing drives the majority of send-backs: scope justification. Slack applies least privilege, and a reviewer will ask, scope by scope, which declared feature uses it. A scope no feature can reach is not a warning — it is a rejection with a request to remove or explain.

So this audit does not just check whether fields are filled in. It derives the set of scopes your declared features and subscribed events could possibly use, and diffs it against what you request. That diff is the conversation you are going to have with the reviewer, written down before you have it.

Blocks submission outright

Not visible in the manifest — reviewers test these live