Overview
An offer (also called an action) is the fundamental unit of Kaireon’s decisioning engine. It represents something you can recommend to a customer — a product, promotion, message, or next-best-action. Offers belong to a business hierarchy (category and sub-category) and carry configuration for priority, budget, scheduling, and qualification.Key Fields
| Field | Type | Description |
|---|---|---|
name | string | Display name of the offer |
shortDesc | string | Brief description shown in recommendations |
categoryId | string | Parent category ID |
subCategoryId | string | Parent sub-category ID |
priority | enum | Execution priority level |
mandatory | boolean | If true, bypasses ALL rules (qualification, contact policies, budget) |
status | enum | Lifecycle state of the offer |
tags | string[] | Freeform tags for filtering and grouping |
customFields | object | Key-value pairs defined by the parent category schema |
Priority Levels
Priority determines how aggressively an offer competes in arbitration. Higher priority offers receive a scoring boost during the ranking stage.| Level | Score | Use Case |
|---|---|---|
| Critical | 90 | Regulatory requirements, compliance notices |
| High | 70 | Strategic initiatives, time-sensitive promotions |
| Medium | 50 | Standard product recommendations |
| Low | 25 | Exploratory or filler offers |
Status Lifecycle
Offers progress through a defined lifecycle:| Status | Description |
|---|---|
draft | Being configured; not available for decisioning |
active | Live and eligible for recommendation |
paused | Temporarily removed from decisioning; can be reactivated |
archived | Permanently retired; preserved for reporting history |
Only offers with
active status are considered by decision flows. Draft and paused offers are excluded from candidate selection.Qualification Config
Control which customers are eligible to receive this offer:| Field | Type | Description |
|---|---|---|
propensityThreshold | number (0-1) | Minimum model score required |
recency | number (days) | Minimum days since customer last received this offer |
requiredSegments | string[] | Customer must belong to all listed segments |
modelReference | string | Scoring model to use for propensity evaluation |
Budget Config
Set spend and impression limits to control offer distribution:| Field | Type | Description |
|---|---|---|
maxImpressions | number | Total lifetime impression cap |
maxDailyBudget | number | Maximum spend per day |
costPerAction | number | Cost attributed per impression or conversion |
When an offer’s budget is exhausted, it is automatically excluded from decisioning until the budget resets or is increased. The
budget_exhausted contact policy rule type can also enforce this.Schedule Config
Restrict when an offer is eligible for recommendation:| Field | Type | Description |
|---|---|---|
startDate | ISO 8601 date | Earliest date the offer can be recommended |
endDate | ISO 8601 date | Latest date the offer can be recommended |
daysOfWeek | number[] | Allowed days (0=Sunday through 6=Saturday) |
timeWindow | object | Start and end time within allowed days |
Creating an Offer
Fill in basic info
Enter the offer name, description, and select a category and sub-category from the business hierarchy.
Fill custom fields
Populate any custom fields defined by the parent category, including computed field formulas.
API Reference
Create an Offer
List Offers
status, categoryId, and tags.