> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# Subscribers

> Comprehensive overview of SignalWire Call Fabric Subscribers - the building blocks of Programmable Unified Communications for user management and onboarding.

[resources]: /docs/platform/resources

[create-subscribers]: /docs/platform/resources#create

[resource-addresses]: /docs/platform/addresses

[browser-sdk]: /docs/browser-sdk/v4/guides/overview

[rest-api]: /docs/apis

## What are subscribers?

Subscribers are the core [Resources][resources] in SignalWire's Call Fabric platform that represent users
in your communication system. More than just a simple user account, Subscribers provide a complete user
management solution with built-in authentication, communication endpoints, and billing integration.

Subscribers represent users in your communication system with enterprise-grade capabilities built-in.
They embody SignalWire's approach to **Programmable Unified Communications (PUC)**, enabling you to onboard
and manage users at scale without building complex infrastructure from scratch.

## What's included

Every Subscriber comes with four core components that work together to provide a complete user management solution:

#### Identity & authentication

Secure user management with industry-standard credential storage for usernames and passwords. Extensible profile system for names,
emails, company details, timezones, and locations.

#### Communication endpoints

Multi-channel connectivity with private Call Fabric address for internal communication plus public phone numbers for external calls.
Full SIP, WebRTC, and PSTN support.

#### Flexible configuration

Customizable codec settings, encryption options, and SIP/WebRTC protocols. Configurable communication
preferences and routing rules.

## How it works

Subscribers are built on three core technical systems:

### Resource addressing

Subscribers use Call Fabric's unified addressing system for consistent identification across all platform
[Resources][resources]. Each Subscriber is uniquely identified by an address in the format `/<Context>/<Name>`.

**Addresses make Subscribers directly callable.** When a call is placed to a Subscriber's address, Call Fabric
automatically routes the call directly to that Subscriber. This enables seamless peer-to-peer communication
without complex routing configuration.

**Common address examples:**

| Address                       | Description                      |
| :---------------------------- | :------------------------------- |
| `/private/john-doe`           | Direct dial to John's devices    |
| `/public/support-agent`       | Publicly accessible support line |
| `/private/jane?channel=video` | Video call to Jane               |

**How direct calling works:**

* When someone calls `/private/john-doe`, the call rings John's registered device
* The Subscriber can answer on any device (mobile app, web browser, desk phone)
* Call Fabric handles device registration, presence, and simultaneous ring automatically

Subscribers default to `private` context for security, with optional public aliases for external access.
Learn more about [Resource Addresses][resource-addresses], including contexts, naming conventions, and advanced routing options.

### Authentication system

Multiple token types provide flexible security and integration options:

#### [Subscriber Tokens](/docs/apis/rest/subscribers/tokens/create-subscriber-token)

**Standard user authentication**

For End Users: Issued during login, provide access to user-specific resources. Perfect for web and mobile app authentication flows.

#### [Guest Tokens](/docs/apis/rest/subscribers/tokens/create-subscriber-guest-token)

**Temporary guest access**

For Guest Users: Allows Subscribers to create guest tokens that provide temporary access to specific Resource addresses. The guest token creates a temporary subscriber with limited permissions to access only the specified `allowed_address`.

#### [Invite Tokens](/docs/apis/rest/subscribers/tokens/create-subscriber-invite-token)

**Client-side API access**

For Client Applications: Creates a Subscriber Invite Token that enables client-side bearer token authentication for API calls.

#### [Refresh Tokens](/docs/apis/rest/subscribers/tokens/refresh-subscriber-token)

**Session management**

For Seamless Experience: Handle automatic token renewal and session management without frequent re-authentication.

### API management

Complete REST API with full CRUD operations for programmatic control:

#### [Create Subscriber](/docs/apis/rest/subscribers/create-subscriber)

**Create new subscribers**

Individual or bulk creation with profile data, credentials, and configuration settings.

#### [Retrieve Subscriber](/docs/apis/rest/subscribers/get-subscriber)

**Get subscriber details**

Fetch individual Subscriber information, settings, and current status.

#### [Update Subscriber](/docs/apis/rest/subscribers/update-subscriber)

**Modify subscriber data**

Update profile information, settings, credentials, and configuration options.

#### [Remove Subscriber](/docs/apis/rest/subscribers/delete-subscriber)

**Delete subscribers**

Remove Subscribers and associated data with proper cleanup and notifications.

Bulk operations handle large user populations efficiently, while webhooks provide real-time notifications for lifecycle events,
authentication, and communication activities.

## Integration example

Here's how Subscribers work in practice with the [Browser SDK][browser-sdk]:

#### Authentication

```javascript
import { SignalWire, StaticCredentialProvider } from "@signalwire/js";

// Hand the Subscriber Access Token to the SDK via a credential provider.
const client = new SignalWire(
  new StaticCredentialProvider({ token: "<TOKEN>" })
);

// Watch the readiness observables to know when the client is connected.
client.ready$.subscribe((ready) => {
  console.log("SignalWire client ready:", ready);
});
```

#### Making calls

```javascript
import { SignalWire, StaticCredentialProvider } from "@signalwire/js";

const client = new SignalWire(
  new StaticCredentialProvider({ token: "<TOKEN>" })
);

// Dial another subscriber by address.
const call = await client.dial("/private/jane-doe", {
  audio: true,
  video: true,
});

// React to call status changes (ringing, connecting, connected, disconnected).
call.status$.subscribe((status) => {
  console.log("Call status:", status);
});

// Attach the remote media to a <video> element in your page.
call.remoteStream$.subscribe((stream) => {
  document.getElementById("remoteVideo").srcObject = stream;
});
```

#### Receiving calls

```javascript
import { SignalWire, StaticCredentialProvider } from "@signalwire/js";

const client = new SignalWire(
  new StaticCredentialProvider({ token: "<TOKEN>" })
);

// Bring the subscriber online so calls to their address route here.
await client.register();

// Subscribe to the list of inbound calls. Each emission is the current list.
client.session.incomingCalls$.subscribe((calls) => {
  const ringing = calls.find((c) => c.status === "ringing");
  if (!ringing) return;

  console.log("Incoming call from:", ringing.fromName || ringing.from);

  // Accept the call with audio and video.
  ringing.answer({ audio: true, video: true });
});
```

### Common use patterns

* **Peer-to-peer calling**: Direct subscriber-to-subscriber calls using private addresses like `/private/john-doe`
* **Conference rooms**: Multiple subscribers joining shared resources like `/public/team-meeting`
* **AI agent interaction**: Subscribers calling AI agents at addresses like `/public/support-ai`
* **PSTN & SIP calling**: Ability to call PSTN and SIP destinations directly from Subscriber applications

## Common use cases

These technical patterns enable real-world applications across industries:

#### Contact centers

**Agent management made simple**

Secure agent onboarding, real-time presence tracking, call routing with queues, and conference
bridge integration.

#### Business phone systems

**Enterprise communication**

Complete UCaaS/VoIP platforms with call routing, advanced features, multi-channel support, and user
lifecycle management.

#### Video platforms

**Personalized video experiences**

User authentication, cross-platform compatibility, meeting management, and comprehensive usage analytics.

## Value proposition & pricing

**\$3/user/month** - No setup fees, hidden costs, or complex calculations. Includes complete user management, authentication,
multi-channel communication, and enterprise-grade security.

### Why choose subscribers?

At **\$3/user/month**, Subscribers provide a complete user management solution with built-in infrastructure:

#### Complete infrastructure

User management, authentication, billing systems, and communication infrastructure included.
Production-ready capabilities without custom development.

#### Enterprise-grade security

Built-in security controls and compliance features. Industry-standard authentication and
encryption without additional implementation.

#### Predictable scaling

Fixed per-user pricing with no hidden costs. Infrastructure automatically scales
without rearchitecting your application.

#### Developer-first integration

Complete REST APIs, SDKs, and comprehensive documentation. Straightforward integration
with existing systems using standard protocols.

## Get started

Ready to implement Subscribers? Follow these steps:

### Create your first subscriber

Navigate to the [SignalWire Dashboard](https://my.signalwire.com/dashboard) and [create your first Subscriber][create-subscribers] through the Resources section. This establishes your user entity and generates authentication credentials.

### Configure user profile

Set up credentials, contact information, and Resource addresses. Configure timezone, location, and other
profile details for cross-channel communication.

### Set security context

Configure private and public contexts based on your security needs. Determine which Subscribers need
public aliases and establish access controls.

### Implementation

Use the [Browser SDK][browser-sdk] or [REST API][rest-api] to connect your application with Subscriber authentication. Implement token management and session handling.