Discontinuing new creation of legacy custom bots and classic apps

It has been over 10 years since we originally launched the Slack Platform. As we mentioned back in April 2024, there are just too many ways to create an app, so we're doing our best to streamline this process. Beginning March 31, 2025, we will discontinue support for legacy custom bots. In September 2025, we will discontinue support for classic apps. Read on for more details about how this will affect your integrations and apps.

What's changing

  • Beginning March 31, 2025:
    • Legacy custom bots will no longer function.
    • API calls made by legacy custom bots will be rejected.
  • Beginning September 2025:
    • Classic apps will no longer function.
    • API calls made by a classic apps will be rejected.
    • Classic apps will no longer receive Events API events.

How do I prepare?

How do I tell if my app is a classic app?

You can check to see if you have any custom integrations listed in the Manage page, or by clicking the About tab.

Legacy custom bots

  • If you have a legacy custom bot and want to keep keep that functionality working, you’ll need to create a new Slack app to replace it.
  • By default, Slack apps are only available internally within the workspace they were created, just like legacy custom bots.
  • If you want to use a Slack app on only one workspace, as how legacy custom bots work, you do not need to implement OAuth. Click Install to Workspace to obtain a bot token, replace the token in your app’s code with this token, and then you'll be good to go.

Slack apps do not support the legacy RTM API. If your legacy custom bot was using the legacy RTM API, you will need to configure it to use the Events API instead.

  • In most cases, any events you received via the RTM API will also available via the Events API. Refer to detailed instructions here, and event types for a list of supported event types.
  • The Events API supports both HTTP and WebSocket connections. If you prefer to use the same configuration as the legacy RTM API, you can enable socket mode. In that case, you’ll follow the same pattern as with the legacy RTM API (i.e., call the apps.connections.open API method to get a URL, open a WebSocket to that URL, and then listen for events).

Classic apps

  • If you have a classic app and want to keep it working, you’ll need to migrate it to a Slack app. You can do this from your app’s configuration page within the Update to Granular Scopes section.
  • The core difference between classic apps and Slack apps is the more granular set of scopes.
  • If your app is distributed to other teams using OAuth, you will need to make code changes to support the new OAuth flow. If your app is only used internally, you don’t need to implement OAuth.

Again, we must emphasize that Slack apps do not support the legacy RTM API. If your classic app was using the legacy RTM API, you will need to follow the instructions above to configure it to use the Events API instead.

What if I do nothing?

If you own a legacy custom bot or a classic app and do nothing, your app will stop functioning. API calls made from the app will be rejected. Eventually, your app will be removed from channels, your tokens will be revoked, and your access to its configuration pages will be removed.

Timeline

  • September 2025: We will discontinue support for classic apps
  • March 31, 2025: We will discontinue support for legacy custom bots
  • June 2024: We blocked creation of new legacy apps and classic apps
  • May 27th, 2022: We made it a requirement for apps in the Slack Marketplace to use granular permissions
  • December 2020: We no longer accepted new submissions for classic apps in the Slack Marketplace
  • October 2019: We launched Slack apps to replace both legacy apps and classic apps
  • November 2015: We launched classic apps with OAuth scopes