> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dialect.to/llms.txt
> Use this file to discover all available pages before exploring further.

# Topics & Channels Logic

> Understanding the core concepts of Dialect's notification system: how topics organize notifications, channels deliver them, and subscribers receive them.

<img className="block dark:hidden" src="https://res.cloudinary.com/dnxjhra4h/image/upload/f_auto,q_auto/v1755522267/dialect-docs/inbox-fully-configurable-by-user.png" alt="Dialect notification inbox showing configurable topics, channels, and subscribers" />

<img className="hidden dark:block" src="https://res.cloudinary.com/dnxjhra4h/image/upload/f_auto,q_auto/v1754573782/dialect-docs/inbox-fully-configurable-by-user.png" alt="Dialect notification inbox showing configurable topics, channels, and subscribers" />

## Overview

Dialect's notification system is built around three fundamental concepts that work together to create flexible, scalable notification experiences.

<img className="block dark:hidden" src="https://res.cloudinary.com/dnxjhra4h/image/upload/f_auto,q_auto/v1754583102/dialect-docs/topics-and-channels-how-it-all-works-together.png" alt="Diagram showing how topics, channels, and subscribers work together in Dialect's notification system" />

<img className="hidden dark:block" src="https://res.cloudinary.com/dnxjhra4h/image/upload/f_auto,q_auto/v1754583102/dialect-docs/topics-and-channels-how-it-all-works-together.png" alt="Diagram showing how topics, channels, and subscribers work together in Dialect's notification system" />

### The Flow

1. **Users subscribe** to topics they care about and choose how they want to be notified
2. **Your app sends** notifications to relevant topics when events happen
3. **Dialect delivers** those notifications to subscribers via their chosen channels

## Topics

**Topics** define *what* notifications are about. They categorize and organize different types of alerts your application sends.

### What are Topics?

Think of topics as notification categories or event types:

* **Price Alerts** - Token price changes
* **Liquidation Warnings** - DeFi position risks
* **Governance Updates** - DAO proposal notifications
* **NFT Activity** - New offers and auction alerts

### Topic Best Practices

#### 1. Granular but not overwhelming

Choose topics that are specific enough to be actionable but not so granular that they become overwhelming.

Good examples:

* Liquidation warnings for critical DeFi alerts
* Price target notifications when thresholds are met
* Governance proposals for DAO updates
* Yield changes for APY updates

Avoid:

* "Everything" - Too broad and not actionable
* "BTC price up 1%" - Too specific and noisy

#### 2. Clear naming

Use clear, descriptive names that users can easily understand.

Good examples:

* "Order Shipped"
* "Payment Received"
* "Security Alert"

Avoid technical jargon like:

* "tx-confirmed-evt"
* "usr-auth-req"

#### 3. User-focused descriptions

Write descriptions that focus on user benefits rather than technical details.

Good example:
"Get alerted before your DeFi positions are at risk of liquidation"

Instead of:
"Automated liquidation risk calculation notifications"

<Card title="Learn More: Topic Management" icon="user-gear" href="/alerts/integrate-inbox/user-management">
  Explore detailed topic management workflows and user subscription patterns
</Card>

## Channels

**Channels** define *how* notifications are delivered to users. Each channel represents a different communication method.

### Available Channels

| Channel      | Description                  | Content Support                 | Best For                                 |
| ------------ | ---------------------------- | ------------------------------- | ---------------------------------------- |
| **EMAIL**    | Email notifications          | HTML formatting, rich content   | Detailed updates, newsletters, reports   |
| **TELEGRAM** | Telegram bot messages        | Text only, no images            | Real-time alerts, simple notifications   |
| **IN\_APP**  | In-application notifications | Text + single image (1:1 ratio) | User engagement, visual notifications    |
| **PUSH**     | Mobile push notifications    | Text only                       | Critical mobile alerts (app owners only) |

### Channel Characteristics

**EMAIL**

* **Content**: Full HTML support with rich formatting
* **Character Limit**: 4,096 characters
* **Images**: Via HTML `<img>` tags (not file uploads)
* **Delivery**: Reliable but not immediate (few minutes)
* **Best for**: Detailed notifications, newsletters, formatted content

**TELEGRAM**

* **Content**: Text only, no image support
* **Character Limit**: 4,096 characters
* **Links**: Supported with inline buttons
* **Delivery**: Near real-time
* **Best for**: Quick alerts, simple notifications, community updates

**IN\_APP**

* **Content**: Plain text + optional single image
* **Character Limit**: 800 characters
* **Images**: 1:1 aspect ratio, 100KB maximum
* **Display**: Shows in notification bell component
* **Delivery**: Real-time when user is active
* **Best for**: Visual notifications, feature announcements, user engagement

**PUSH** (App Owners Only)

* **Content**: Text only
* **Character Limit**: Varies by platform (iOS \~200, Android \~250)
* **Delivery**: Mobile notifications
* **Restriction**: Only available to app owners for their own users
* **Best for**: Critical alerts, time-sensitive information

<Card title="Learn More: Channel Configuration" icon="gear" href="/alerts/integrate-inbox/user-management#step-2%3A-channel-management">
  Configure channels and manage notification delivery
</Card>

## Subscribers

**Subscribers** represent *who* receives notifications. Each subscriber is a user who has opted in to receive alerts from your application.

### Subscription Methods

There are three ways to subscribe users to notifications:

1. **React Widget**: Users can subscribe by clicking the notification bell and signing a message to verify their wallet ownership. This is the simplest way to get started and works well for most dapps. For more information checkout our [Quick Start guide](/alerts/quick-start#step-4-user-subscribes-to-notifications-2-minutes).

2. **API Integration**: For wallet applications that can sign messages on behalf of users, we recommend using our API to programmatically subscribe users. This provides more control over the subscription flow and a smoother user experience. Learn more about [API Authentication](/alerts/integrate-inbox/api/authentication).

3. **SDK Integration**: Use our TypeScript/JavaScript SDK to programmatically manage subscriptions from your backend or frontend applications. This approach offers the most flexibility and is ideal for custom subscription flows and backend integrations. Learn more in our [SDK Setup Configuration](/alerts/integrate-inbox/sdk/setup-configuration).

<Card title="Learn More: Subscriber Management" icon="users" href="/alerts/integrate-inbox/user-management">
  Master subscriber workflows, API integration, and SDK setup for complete user management
</Card>

## Next Steps

Now that you understand the core concepts:

1. **[Dashboard Introduction](/alerts/setup/dashboard-introduction)** - Learn to manage topics and subscribers through the web interface
2. **[User Management](/alerts/integrate-inbox/user-management)** - Deep dive into subscriber workflows and topic management
3. **[Send Your First Alert](/alerts/send)** - Start sending notifications to subscribers
4. **[Universal Inbox Integration](/alerts/integrate-inbox/universal-inbox)** - Add notification receiving capabilities to your app
5. **[Quick Start Guide](/alerts/quick-start)** - Complete setup walkthrough with examples
