> For the complete documentation index, see [llms.txt](https://docs.nerovasystems.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nerovasystems.com/documentation/core-concepts/channels.md).

# Channels and routing

How customers reach a tenant: the two channel roles, the fail-closed routing rule, and the metadata-only activity ledger.

Channels are how real customers reach a tenant. This page explains the two channel roles, the fail-closed routing rule, and the metadata-only activity ledger.

## Two channel roles

* **Tenant channel**: the customer-facing endpoint a merchant owns, such as a WhatsApp number. Customers message it; Nerova answers as the merchant's receptionist.
* **Console channel**: the business-facing surface where the merchant and your platform observe and steer: approvals and activity in the console (or through your own host UI).

You can connect a tenant's WhatsApp number in two ways: send the merchant the hosted link (see [Channels](https://docs.nerovasystems.com/guides/zero-to-live/step-8-channels)), or connect it yourself from the console. In the console, open the account's **Channels** tab (or **Account Channels** > **WhatsApp**) and select **Connect WhatsApp**; the number is bound to that account, not to your platform organization. Owners and Admins can do this.

Inspect a tenant's channels with `GET /api/v1/tenants/{tenantId}/channels` (scope `capability:read`). Each channel reports its `state`, `readiness`, `featureStatus`, any `pausedDuties`, and whether `reauthorization` is needed.

## Routing fails closed

An inbound message is served only when it arrives on a channel that is bound to exactly one active tenant. Anything else (an unbound number, an ambiguous binding, a suspended tenant, a channel pending reauthorization) is rejected, never rerouted to a "best guess" tenant. A misconfigured channel therefore produces visible failures, not silent cross-tenant leakage.

Channel binding is part of activation: the tenant's [activation manifest](/documentation/get-started/quickstart.md#4-read-the-activation-manifest) lists a missing or unready channel in `blockingReasons` until the binding is in place.

## The activity ledger is metadata only

The tenant activity feed (`GET /api/v1/tenants/{tenantId}/activity`) and the work ledger (`GET /api/v1/tenants/{tenantId}/work`) record what happened (operation, actor, timestamps, status, correlation ID), never argument values or message content. Customer conversation content stays inside the conversation surface, which is governed by its own `conversation:read` scope and the [data-ownership boundary](/documentation/resources/data-ownership.md).

This is the same rule the test request log follows; see [Test environment](/documentation/get-started/sandbox.md#request-logs-are-metadata-only).

## Next steps

* Trace a booking task end to end in the work ledger with `work:read` and `receipt:read`. The [Quickstart](/documentation/get-started/quickstart.md) sets this up.
* Surface Nerova state inside your own product: [Host UI integration](/documentation/core-concepts/host-ui-integration.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.nerovasystems.com/documentation/core-concepts/channels.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
