Overview
A creative (also called a treatment) is a content variant that defines how a specific offer is rendered on a specific channel. Creatives contain the actual messaging — subject lines, headlines, body copy, images, and calls-to-action — along with personalization variables and A/B test configuration. Each creative links one offer to one channel, allowing the same offer to have different presentations across email, push, web, and other delivery mechanisms.Key Fields
| Field | Type | Description |
|---|---|---|
name | string | Internal name for the creative |
offerId | string | The offer this creative presents |
channelId | string | The channel this creative is delivered through |
templateType | enum | Content format template |
content | object | The actual content payload |
personalization | array | Dynamic variable substitutions |
variant | enum | A/B test variant assignment |
weight | number | Traffic allocation weight for the variant |
frequencyCap | number | Maximum times this creative can be shown to one customer |
cooldownHours | number | Hours to wait before showing this creative again to the same customer |
Template Types
| Type | Channel | Description |
|---|---|---|
email_html | Full HTML email template | |
email_text | Plain text email fallback | |
push_notification | Push | Title + body + optional image |
sms_text | SMS | Plain text message (160 char recommended) |
in_app_banner | In-App | Banner with image, headline, CTA |
in_app_modal | In-App | Full-screen modal overlay |
in_app_card | In-App | Card-style recommendation |
web_banner | Web | Website banner ad |
web_overlay | Web | Popup/overlay |
webhook_payload | Webhook | Custom JSON payload |
whatsapp_template | WhatsApp Business template |
Content Object
Thecontent object varies by template type, but common fields include:
| Field | Description |
|---|---|
subject | Email subject line or notification title |
headline | Primary heading text |
body | Main message body (supports {{variable}} placeholders) |
imageUrl | URL to hero image or thumbnail |
ctaText | Call-to-action button text |
ctaUrl | Click-through destination URL |
deepLink | Mobile app deep link URI |
Personalization Variables
Personalization variables inject dynamic values into the content at delivery time:| Field | Description |
|---|---|
variable | Placeholder name used in content (referenced as {{variable}}) |
source | Data source path — customer.*, computed.*, offer.*, or attributes.* |
fallback | Default value if the source is null or unavailable |
A/B Test Variants
Creatives support A/B testing by assigning each variant a role and traffic weight:| Variant | Description |
|---|---|
control | The baseline treatment (existing or default content) |
variant_a | First test variant |
variant_b | Second test variant |
weight field on each creative. Weights are relative — if control has weight 50 and variant_a has weight 50, traffic is split 50/50.
A/B test results are analyzed in the Algorithms module under Experiments. Kaireon calculates statistical significance using z-tests on conversion rates.
Constraints
| Field | Type | Description |
|---|---|---|
frequencyCap | number | Maximum total impressions of this creative per customer |
cooldownHours | number | Minimum hours between consecutive impressions to the same customer |
Creating a Creative
Select offer and channel
Choose the offer this creative presents and the channel it will be delivered through.
Choose template type
Select the appropriate template type for the channel (e.g.,
email_html for email, push_notification for push).Write content
Fill in the content fields: subject, headline, body, image URL, CTA text, and CTA URL. Use
{{variable}} placeholders for dynamic content.Configure personalization
Add personalization variables that map placeholders to data sources with fallback values.
Set A/B variant (optional)
If running an experiment, assign a variant role (control, variant_a, variant_b) and traffic weight.
API Reference
Create a Creative
List Creatives
offerId or channelId using query parameters.