Skip to main content

Overview

A channel represents a delivery mechanism for getting recommendations to customers. Channels define how offers are sent, through which provider, and how impressions are tracked. Each channel can have multiple placements (named slots) and creatives (content variants).

Channel Types

Kaireon supports the following channel types out of the box:
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
direct_mailPhysical mailHigh-value customer outreach

Delivery Modes

Each channel operates in one of three delivery modes:

API

Real-time delivery. The Recommend API returns offers and the calling system renders them immediately. Best for web, in-app, and real-time personalization.

File

Batch delivery. Recommendations are exported as a file (CSV, JSON) for ingestion by an external system. Best for email campaigns and direct mail.

Manual

Human-in-the-loop delivery. Recommendations appear in a queue for agents or relationship managers to act on. Best for high-touch sales and advisory.

Impression Tracking

Channels control how customer impressions (views) are recorded:
The client application calls the Respond API after displaying the recommendation to the customer. This gives you precise control over when an impression is counted.
POST /api/v1/respond
{
  "customerId": "cust_123",
  "offerId": "act_abc",
  "channelId": "ch_email",
  "outcomeType": "impression"
}

Placements

A placement is a named slot within a channel where content can appear. Examples:
ChannelPlacement Examples
Webhero_banner, sidebar_widget, exit_intent_popup
Emailheader_offer, body_recommendation, footer_cross_sell
In-Apphome_carousel, product_detail_upsell, checkout_addon
Pushmorning_digest, transaction_followup
Placements allow you to request recommendations for a specific slot and track performance per placement.

Provider Config

Each channel can store provider-specific configuration for integration with external delivery systems:
{
  "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 Create Channel

Click the + New Channel button.
3

Select channel type

Choose from the available channel types (email, push, sms, in_app, web, webhook, whatsapp, direct_mail).
4

Configure delivery mode

Select API, File, or Manual as the delivery mode.
5

Set impression tracking

Choose Explicit (default) or Implicit impression tracking.
6

Add placements (optional)

Define named placement slots for this channel.
7

Configure provider (optional)

Enter provider credentials and settings for external delivery integration.
8

Save

Save the channel. It is immediately available for use in creatives and decision flows.

API Reference

Create a Channel

POST /api/v1/channels
Content-Type: application/json
Request body:
{
  "name": "Marketing Email",
  "type": "email",
  "deliveryMode": "file",
  "impressionTracking": "explicit",
  "placements": [
    { "name": "header_offer", "description": "Top banner offer slot" },
    { "name": "body_recommendation", "description": "Main body recommendation" }
  ],
  "providerConfig": {
    "provider": "sendgrid",
    "fromEmail": "offers@yourcompany.com",
    "fromName": "Your Company"
  }
}
Response (201 Created):
{
  "id": "ch_mktg_email",
  "name": "Marketing Email",
  "type": "email",
  "deliveryMode": "file",
  "impressionTracking": "explicit",
  "placements": [
    { "id": "pl_header", "name": "header_offer", "description": "Top banner offer slot" },
    { "id": "pl_body", "name": "body_recommendation", "description": "Main body recommendation" }
  ],
  "createdAt": "2026-03-10T14:30:00Z",
  "updatedAt": "2026-03-10T14:30:00Z"
}

List Channels

GET /api/v1/channels

Update a Channel

PUT /api/v1/channels/:id

Delete a Channel

DELETE /api/v1/channels/:id
Deleting a channel also removes all associated placements. Creatives linked to this channel will become orphaned and should be reassigned or deleted.