# Server-Side Overview

Parts of Stream Chat are configured from your backend rather than from a client SDK. App settings, permissions, webhooks, push templates, data retention and campaigns are all set up with a server-side SDK or the REST API, authenticated with your API secret. That code never runs in your app.

Those pages used to appear in this sidebar. They now live in the [server-side documentation](https://getstream.io/chat/docs/node/), so the pages here stay focused on the code you ship to your users.

## What you will find there

| Section                                                           | Covers                                                                                                |
| ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| [App and channel settings](https://getstream.io/chat/docs/node/app-setting-overview/) | App-wide settings, roles and permission policies, per-channel setting overwrites                      |
| [Webhooks](https://getstream.io/chat/docs/node/webhooks-overview/)                    | Event delivery, before-message-send and custom command hooks, the event catalogue, SQS, SNS, failover |
| [Push configuration](https://getstream.io/chat/docs/node/push-template/)              | Notification templates, push providers and multi-bundle setup                                         |
| [Campaigns](https://getstream.io/chat/docs/node/campaign-api/)                        | Sending a message to a segment of your users                                                          |
| [Server-driven messaging](https://getstream.io/chat/docs/node/ai-message-streaming/)  | AI message streaming, unread reminders, restricted message delivery                                   |
| [Channel lookup](https://getstream.io/chat/docs/node/get-channel/)                    | Fetching one channel by type and ID without creating it                                               |
| [Data and compliance](https://getstream.io/chat/docs/node/data-retention-policy/)     | Retention policies, audit logs, GDPR deletion, exporting and importing channels                       |
| [Migration](https://getstream.io/chat/docs/node/migrating-from-sendbird/)             | Moving an existing app onto Stream                                                                    |
| [Scale and operations](https://getstream.io/chat/docs/node/dynamic-partitioning/)     | Dynamic partitioning, user average response time, Datadog integration                                 |
| [Plan limits](https://getstream.io/chat/docs/node/fair-usage-limits/)                 | Fair usage allowances, storage and bandwidth                                                          |
| [Marketplace apps](https://getstream.io/chat/docs/node/marketplace-best-practices/)   | Two-sided marketplace patterns built on channel type configuration                                    |

## Languages

The server-side docs are published per language. Pick yours from the selector at the top of the page: Node.js, Python, Go, Java, Ruby, PHP or C#.

<Admonition type="note">

If you landed here because your client cannot connect, token generation is the usual cause. Tokens must be signed with your API secret on your server, so a client SDK cannot mint one. Start with [Tokens & Authentication](https://getstream.io/chat/docs/node/tokens-and-authentication/).

</Admonition>


---

This page was last updated at 2026-07-30T15:20:28.255Z.

For the most recent version of this documentation, visit [https://getstream.io/chat/docs/react/server-side/](https://getstream.io/chat/docs/react/server-side/).