# Socket Mode versus HTTP Request URLs

*Slack Developer Study Guide · Design Your Workflows: Spotlight on Slack's APIs · Last updated October 21, 2026 · https://www.certifyforce.com/study-guide/slack-developer/design-your-workflows-spotlight-on-slacks-apis/socket-mode-versus-http-request-urls*

When to receive events and interactive payloads over Socket Mode WebSockets or a public HTTP Request URL, and how Socket Mode works: the xapp app-level token with connections:write, apps.connections.open, envelope_id acknowledgements, up to ten connections, refresh disconnects, and the Marketplace HTTP requirement.

- Certification: Salesforce Slack Developer
- Exam section: Design Your Workflows: Spotlight on Slack's APIs
- Study guide: https://www.certifyforce.com/study-guide/slack-developer

**Official exam objective:**

> Discriminate between Socket Mode and HTTP-based event delivery.

## What the exam expects

- Choose Socket Mode or an HTTP Request URL from the requirement: local development, a firewall with no public endpoint, production reliability, or a Slack Marketplace listing.
- Set up Socket Mode: granular-permission app, toggle on, app-level `xapp-` token with `connections:write`, `apps.connections.open` for a WebSocket URL.
- Acknowledge every Socket Mode envelope by sending its `envelope_id` back over the WebSocket.
- Design for up to ten connections, payloads going to any one of them, and routine `warning` and `refresh_requested` disconnects.
- Predict what toggling Socket Mode does to HTTP delivery on the same app.

Key terms: **Socket Mode** (receiving events and interactive payloads over a WebSocket instead of HTTP), **Request URL** (the public HTTPS endpoint Slack POSTs payloads to), **app-level token** (an `xapp-` token that represents the app across organizations), **envelope** (the Socket Mode wrapper with `envelope_id` and `type`), **`accepts_response_payload`** (whether the ack may carry a response payload).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Concurrent connections | Up to 10 per app | [Comparing HTTP & Socket Mode](https://docs.slack.dev/apis/events-api/comparing-http-socket-mode/) |
| Marketplace | Socket Mode apps are not currently allowed in the public Marketplace, so listed apps use HTTP | [Using Socket Mode](https://docs.slack.dev/apis/events-api/using-socket-mode/) |
| Distributed unlisted apps | Socket Mode fully supported | [Comparing HTTP & Socket Mode](https://docs.slack.dev/apis/events-api/comparing-http-socket-mode/) |
| Permission model | Granular permissions only | [Using Socket Mode](https://docs.slack.dev/apis/events-api/using-socket-mode/) |
| Token | App-level `xapp-` token | [Tokens](https://docs.slack.dev/authentication/tokens/) |
| Scope | `connections:write` on the app-level token | [connections:write scope](https://docs.slack.dev/reference/scopes/connections.write) |
| WebSocket URL | From `apps.connections.open`, token in header | [apps.connections.open method](https://docs.slack.dev/reference/methods/apps.connections.open) |
| Toggle on | Events and interactivity only over WebSocket; Request URL kept for later | [Using Socket Mode](https://docs.slack.dev/apis/events-api/using-socket-mode/) |
| Acknowledgement | Send `envelope_id` back over the socket | [Using Socket Mode](https://docs.slack.dev/apis/events-api/using-socket-mode/) |
| Verification | Not needed in Socket Mode; required per HTTP request | [Using Socket Mode](https://docs.slack.dev/apis/events-api/using-socket-mode/) |

## Check yourself

- When does Slack recommend Socket Mode over HTTP?
- Why do Socket Mode handlers skip request-signature checks?
- Which scope does the app-level token need to open a Socket Mode connection?
- What happens to HTTP delivery when Socket Mode is toggled on?
- Why must a custom client call `apps.connections.open` on every reconnect?

## Sources

- [Comparing HTTP & Socket Mode](https://docs.slack.dev/apis/events-api/comparing-http-socket-mode/)
- [Using Socket Mode](https://docs.slack.dev/apis/events-api/using-socket-mode/)
- [apps.connections.open method](https://docs.slack.dev/reference/methods/apps.connections.open)
- [connections:write scope](https://docs.slack.dev/reference/scopes/connections.write)
- [Tokens](https://docs.slack.dev/authentication/tokens/)
- [Using HTTP Request URLs](https://docs.slack.dev/apis/events-api/using-http-request-urls)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 7 linked practice questions, and unlimited timed mock exams are included with the Slack Developer pack (USD $19): https://www.certifyforce.com/practice-exams
