Skip to main content
A Channel defines how a recommendation reaches a customer. While Offers define what to recommend and Decision Flows decide which offer to show, Channels handle the last mile: delivery mode, impression tracking, and provider integration. Each channel can have multiple placements (named slots like 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

  1. You create a channel with a type (email, push, etc.), delivery mode, and impression tracking method
  2. You add placements — named slots where content appears (e.g., hero_banner, checkout_upsell)
  3. You create creatives — content variants linked to specific offers and channels
  4. At recommendation time, the Decision Flow matches candidates to creatives for the requested channel and allocates them across placements

Channel Types

TypeDescriptionCommon Use Cases
emailEmail deliveryMarketing campaigns, transactional messages
pushMobile push notificationsReal-time alerts, engagement nudges
smsSMS text messagesTime-sensitive alerts, verification
in_appIn-application messagesContextual recommendations, banners
webWeb browser (banners, overlays)Website personalization
webhookHTTP callback to external systemCustom integrations, third-party platforms
whatsappWhatsApp Business messagesConversational commerce, order updates
direct_mailPhysical mailHigh-value customer outreach

Starbucks Example

ChannelTypePlacementsUse Case
Mobile Appin_apphome_carousel, order_screen_upsellBOGO offers, Stars promotions shown during ordering
Starbucks Emailemailheader_offer, body_cross_sellWeekly promotional emails with personalized offers
Push Notificationspushmorning_digest, happy_hour_alertTime-sensitive flash sales, nearby store promos
Webwebhero_banner, sidebar_widgetWebsite personalization for logged-in rewards members

Delivery Modes

Each channel operates in one of four modes that control how recommendations reach the customer:
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.
Recommendations are exported as a file for ingestion by an external system. Configure format and destination in fileConfig.Supported formats:
FormatDescription
csvComma-separated (configurable delimiter)
tsvTab-separated
jsonJSON array of records
jsonlJSON Lines (one object per line)
parquetApache Parquet columnar format
fixed_widthFixed-width positional columns
pipe_delimitedPipe-delimited values
Best for: Email campaign systems, direct mail vendors, data warehouse ingestion, batch CRM integrations.Destination: Files can be pushed to cloud storage connectors (S3, GCS, Azure Blob).
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: Pipeline executes, creative content is assembled, delivery request is sent to the provider API.
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.
ChannelPlacementslotTypemaxSlots
Webhero_bannerbanner1
Websidebar_widgetcard3
Emailheader_offerbanner1
Emailbody_recommendationcard3
In-Apphome_carouselcard5
Pushmorning_digestnotification1
When used with the Composable Pipeline Group node, placements control how ranked offers are allocated across multiple slots in a single response.

Placement Fields

FieldTypeRequiredDefaultDescription
namestringYesUnique slot identifier (e.g., hero_banner)
descriptionstringNo""Human-readable description
slotTypestringNo"banner"Visual type: banner, card, modal, notification
maxSlotsintegerNo1Maximum offers this placement can show
schemaobjectNo{}Content schema requirements
targetingobjectNo{}Targeting rules for this placement

Impression Tracking

Channels control how customer impressions (views) are recorded. This affects contact policy enforcement and dashboard metrics.
The client application calls the Respond API after displaying the recommendation. You get precise control over when an impression is counted.
POST /api/v1/respond
{
  "customerId": "cust_123",
  "offerId": "act_abc",
  "channelId": "ch_email",
  "outcome": "impression"
}
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.
ProviderChannel TypeConfiguration
AWS SESemailRegion, From Email, Reply-To
TwiliosmsAccount SID, Auth Token, From Number
Amazon SNSsms, pushRegion, Auth Mode, Sender ID
FirebasepushProject ID, Service Account JSON
WhatsApp (Meta)whatsappPhone Number ID, Access Token, API Version
WhatsApp (Twilio)whatsappAccount SID, Auth Token, From Number
WebhookwebhookTarget URL, Headers

WhatsApp Integration

KaireonAI supports WhatsApp Business messaging through two providers:

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
You can override any auto-created route from the channel detail page or the Decision Flow configuration.
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": "sendgrid",
  "apiKey": "SG.xxxxx",
  "fromEmail": "offers@yourcompany.com",
  "fromName": "Your Company",
  "templateEngine": "handlebars"
}
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

FieldTypeRequiredDefaultDescription
namestringYesDisplay name (1—255 chars)
channelTypestringNo"email"email, push, sms, in_app, web, webhook, whatsapp, direct_mail
statusenumNo"draft"draft, active, paused, archived
descriptionstringNo""Free-text description
deliveryModeenumNo"api"api, file, integration, manual
impressionModeenumNo"explicit"explicit or implicit
providerConfigobjectNo{}Provider credentials (stored encrypted)
fileConfigobjectNo{}File delivery settings (format, columns, destination)
placementsarrayNoNamed slots (see Placement Fields above)

API Quick Reference

Create

POST /api/v1/channels
{
  "name": "Starbucks Mobile",
  "channelType": "in_app",
  "deliveryMode": "api",
  "impressionMode": "explicit",
  "placements": [
    { "name": "home_carousel", "description": "Homepage offer carousel", "slotType": "card", "maxSlots": 5 },
    { "name": "order_screen_upsell", "description": "Add-on suggestion during ordering", "slotType": "card", "maxSlots": 2 }
  ]
}
Response: 201 Created with the full channel object.

List / Update / Delete

GET /api/v1/channels          # List all channels
PUT /api/v1/channels          # Update (send id in body)
DELETE /api/v1/channels?id={id}  # Delete
Deleting a channel also removes all associated placements. Creatives linked to this channel become orphaned and should be reassigned or deleted.

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.