Channel Developers

thumbnail
Category

App

Build Your First Channel App

In this tutorial, you will build an app that opens a small screen when someone runs /tutorial in a Channel conversation. Two buttons on that screen send test messages. We recommend the TypeScript path for your first run. If you use Go, skip to Use Go instead. This is what the finished app looks like: You only need three terms before you start: - Function: one task performed by your app server. Opening the screen and sending a message are Functions in this tutorial. - Extension: a configuration t
Build Your First Channel App

Concepts

A Channel app consists of a server that executes Functions and, when needed, a web UI built as a WAM. Extensions connect related Functions to standard Channel capabilities, while AppStore defines the call, registration, and authorization boundaries. Channel client → AppStore → signed PUT /functions/v1 → SDK validation and dispatch → Function handler Function result → open WAM → WAM SDK → app Function or Channel native function Function A Function is one typed operation executed by the app server
Concepts

Function Registration

A Function is a typed RPC that Channel or another app sends to an app server. The request method is the full Function name and params is its input. Register app-owned Functions as standalone names such as orders.get; standard Extension Functions combine an Extension name with a relative name. Wire contract Incoming calls use this JSON-RPC-like envelope: { "method": "orders.get", "params": { "orderId": "order-1" }, "context": { "caller": { "type": "manager", "id": "manager-id" }, "channel": { "id
Function Registration

Command Guide

The Command Extension lets a user or manager run app capabilities from Channel's desk/front command UI. Command metadata defines presentation and input; a typed Function referenced by the metadata performs the action. Current contract Function or field Required Role extension.command.metadata.getCommands Yes Discovers command definitions actionFunctionName Per command Runs the selected command autoCompleteFunctionName Optional Returns parameter suggestions paramDefinitions[].autoComplete Optiona
Command Guide

WAM Guide

A WAM (Web App Module) is a React web UI opened inside a Channel client. It is not an app server and does not store server credentials. Use it for Extension actions that need user interaction, such as commands, widgets, and custom tabs. Open a WAM from an action The Channel client opens a WAM when a Function returns an action result like this: { "type": "wam", "attributes": { "appId": "public-app-id", "name": "tutorial", "wamArgs": { "view": "summary" } } } appId is public and name selects the W
WAM Guide

Extension Guide

What an Extension is An Extension is a named, versioned contract that connects typed app Functions to a standard Channel capability. Channel surfaces know how to discover and invoke a command, widget, custom tab, hook, OAuth flow, or other capability because the app implements that Extension's official Function names and schemas. An Extension normally contains two kinds of Functions: Function kind Purpose Example Metadata or discovery Describes the capability and points to runtime Functions exte
Extension Guide

Production Readiness Guide

Use this guide after the app works end to end in an installed test Channel. It is not required to finish the first-app Quickstart. Its purpose is to turn a working Function, Extension, and optional WAM into a release that can be deployed, rolled back, observed, and operated safely. Complete the Concepts, Extension guide, and the relevant family recipes first. Exact APIs remain in the TypeScript reference and Go reference. How to use this guide Treat each section as a release gate. Record the own
Production Readiness Guide