See also: Channels REST API reference for request/response shapes, status codes, and error semantics.
hero_banner or sidebar_widget) and connects to Creatives that contain the actual content.
When you create a channel, KaireonAI automatically routes it to your default Decision Flow so it works immediately — no manual wiring required.
Channels are delivery-agnostic containers. The same offer can be delivered through email, push, and in-app simultaneously, each with different creatives optimized for that channel.
How Channels Work
- You create a channel with a type (email, push, etc.), delivery mode, and impression tracking method
- You add placements — named slots where content appears (e.g.,
hero_banner,checkout_upsell) - You create creatives — content variants linked to specific offers and channels
- At recommendation time, the Decision Flow matches candidates to creatives for the requested channel and allocates them across placements
Channel Types
Retail Rewards Example
Delivery Modes
Each channel operates in one of four modes that control how recommendations reach the customer:API (Real-time)
API (Real-time)
External systems call the
/api/v1/recommend endpoint to pull decisions in real time. The response includes ranked offers with their creatives, and the calling system renders them.Best for: Web personalization, in-app messages, real-time push, webhook integrations.Latency: Typically under 200ms end-to-end.File (Batch)
File (Batch)
Recommendations are exported as a file for ingestion by an external system. Selecting File (Batch) just marks the channel as file-producing — the file’s format, columns, and destination are configured on the campaign, not here.Where to configure the file: the File Output section of the campaign editor (
Run.fileConfig). One config drives every file-mode channel in the campaign, so two campaigns sharing this channel can output different files. Supported formats are CSV, TSV, JSON, and JSONL; the destination is a download-only artifact or an Amazon S3 connector; columns map to built-in decision fields or segment-schema attributes with optional transforms — see File Output Configuration.Best for: Email campaign systems, direct mail vendors, data warehouse ingestion, batch CRM integrations.Integration (Provider)
Integration (Provider)
Delivers recommendations via a platform integration with a specific provider. Provider credentials are stored encrypted in
providerConfig.Best for: Managed delivery through SendGrid, Twilio, Firebase, WhatsApp Business API.Flow: During a batch run, creative content is assembled and — when live delivery is enabled — sent through the provider stack via sendWithTracking, which creates a ChannelDelivery record per send for tracking and status callbacks.Delivery is gated. Real provider sends happen only when the tenant has explicitly opted in via TenantSettings.liveDelivery (default false). Each integration-mode item is reported with an honest status:Manual (Human Workflow)
Manual (Human Workflow)
Recommendations appear in a queue for agents or relationship managers to act on. No automated delivery — KaireonAI tracks decisions and outcomes.Best for: High-touch sales, advisory conversations, branch operations, call center agents.
Placements
A placement is a named slot within a channel where content can appear. Placements let you request recommendations for a specific slot, track performance per placement, and control how many offers appear in each position.
When used with the Composable Pipeline Group node, placements control how ranked offers are allocated across multiple slots in a single response.
Placement Fields
Impression Tracking
Channels control how customer impressions (views) are recorded. This affects contact policy enforcement and dashboard metrics.- Explicit (Default)
- Implicit
The client application calls the Respond API after displaying the recommendation. You get precise control over when an impression is counted.When to use: Any channel where you can confirm the customer actually saw the recommendation (web, in-app, email opens).
Delivery Providers
When using Integration delivery mode, KaireonAI sends messages through configured providers. All providers support delivery tracking, idempotency, circuit breakers, and retry logic.Delivery states and retries
Every dispatch creates a delivery record keyed by an idempotency hash of (interaction, channel, creative), so the same decision can never contact a customer twice.
A
pending delivery with attempts remaining is re-attempted the next time
the send is invoked for that interaction; each attempt is claimed atomically, so
two concurrent callers produce one dispatch, not two. Once attempts reaches
maxAttempts the record becomes failed and is not retried again.
WhatsApp Integration
KaireonAI supports WhatsApp Business messaging through two providers:- Meta Cloud API (Recommended)
- Twilio WhatsApp
Direct integration with the official WhatsApp Business API. Supports template messages, text messages, and media messages.Setup:
- Create a Meta Business account and WhatsApp Business app at developers.facebook.com
- Get your Phone Number ID and permanent access token
- Configure in Settings > Integrations > WhatsApp or via environment variables:
WHATSAPP_PROVIDER=metaWHATSAPP_PHONE_NUMBER_ID=your_phone_number_idWHATSAPP_ACCESS_TOKEN=your_access_token
- Set up the webhook at
POST /api/v1/webhooks/whatsappfor delivery status callbacks
Auto-Routing to Decision Flows
When you create a channel or add a placement, KaireonAI automatically creates FlowRoutes linking them to the tenant’s default Decision Flow. New channels work immediately without manual routing setup.- New channel — FlowRoute created to the default flow
- New placement — FlowRoute created to the default flow
Auto-routing only creates routes to the default flow. To route a channel to a different flow, create the route manually or change the default flow first.
Provider Config
Each channel can store provider-specific configuration for external delivery:Provider config is stored encrypted. API keys and credentials are never returned in GET responses.
Creating a Channel
1
Navigate to Channels
Go to Studio > Channels in the sidebar.
2
Click + New Channel
Click the + New Channel button.
3
Select type and delivery mode
Choose a channel type (email, push, etc.) and delivery mode (API, File, Integration, Manual).
4
Set impression tracking
Choose Explicit (default) or Implicit.
5
Add placements (optional)
Define named slots. Each placement has a name, slot type, and max offers.
6
Configure provider (optional)
Enter provider credentials for external delivery.
7
Save
The channel is immediately available for creatives and Decision Flows.
Field Reference
API Quick Reference
Create
201 Created with the full channel object.
List / Update / Delete
Next Steps
Creatives
Create content variants for each offer on this channel.
Decision Flows
Build pipelines that select and deliver offers through channels.
Composable Pipeline
Use the Group node to allocate offers across placements.
Contact Policies
Set frequency caps and suppression rules per channel.