Skip to main content

Overview

Contact policies are rules that prevent customers from being over-contacted. They act as guardrails on top of the decisioning engine, filtering out offers that would violate frequency, timing, or budget constraints. Contact policies are evaluated after qualification rules and before final ranking.

Rule Types

Kaireon supports 8 types of contact policy rules:
Rule TypeDescription
frequency_capLimit the number of contacts within a time window
cooldownEnforce a minimum wait period between contacts
budget_exhaustedBlock offers when their budget has been fully spent
outcome_basedSuppress based on past interaction outcomes (e.g., customer complained)
segment_exclusionExclude customers in specific segments
time_windowOnly allow contact during specified hours/days
mutual_exclusionPrevent competing offers from being shown together
cross_channel_capLimit total contacts across multiple channels

frequency_cap

Limits how many times a customer can be contacted within a rolling time window.
{
  "ruleType": "frequency_cap",
  "config": {
    "maxContacts": 3,
    "windowDays": 7
  }
}

cooldown

Enforces a minimum number of hours between consecutive contacts.
{
  "ruleType": "cooldown",
  "config": {
    "cooldownHours": 48
  }
}

budget_exhausted

Automatically suppresses offers when their budget allocation has been fully consumed.
{
  "ruleType": "budget_exhausted",
  "config": {
    "checkImpressions": true,
    "checkDailyBudget": true
  }
}

outcome_based

Suppresses offers when a customer has recorded specific outcomes recently.
{
  "ruleType": "outcome_based",
  "config": {
    "outcomeType": "complaint",
    "lookbackDays": 90,
    "action": "suppress"
  }
}

segment_exclusion

Excludes customers who belong to specified segments.
{
  "ruleType": "segment_exclusion",
  "config": {
    "excludeSegments": ["do_not_contact", "legal_hold", "recently_churned"]
  }
}

time_window

Restricts contacts to specific times and days.
{
  "ruleType": "time_window",
  "config": {
    "allowedDays": [1, 2, 3, 4, 5],
    "startTime": "09:00",
    "endTime": "18:00",
    "timezone": "America/New_York"
  }
}

mutual_exclusion

Prevents competing or conflicting offers from being recommended together in the same decision.
{
  "ruleType": "mutual_exclusion",
  "config": {
    "excludeOfferIds": ["act_competitor_a", "act_competitor_b"],
    "reason": "Competing credit card products"
  }
}

cross_channel_cap

Limits the total number of contacts across multiple channels within a window.
{
  "ruleType": "cross_channel_cap",
  "config": {
    "channels": ["email", "push", "sms"],
    "maxContacts": 5,
    "windowDays": 7
  }
}

Scope

Each contact policy rule operates within a defined scope:
ScopeDescription
globalApplies to all offers across all channels
offerApplies to a specific offer only
creativeApplies to a specific creative/treatment
channelApplies to all offers on a specific channel
Use global scope for company-wide compliance rules (e.g., “no more than 5 contacts per week across all channels”) and narrower scopes for product-specific rules.

Creating a Contact Policy

1

Navigate to Contact Policies

Go to Studio > Contact Policies in the sidebar.
2

Click Create Policy

Click the + New Policy button.
3

Name the policy

Enter a descriptive name (e.g., “Weekly Email Cap” or “Complaint Suppression”).
4

Select rule type

Choose one of the 8 rule types from the dropdown.
5

Configure rule parameters

Fill in the configuration specific to the chosen rule type (e.g., max contacts, window days, cooldown hours).
6

Set scope

Choose the scope: global, offer, creative, or channel. If not global, select the specific entity.
7

Save

Save the policy. It takes effect immediately for all active decision flows.

API Reference

Create a Contact Policy

POST /api/v1/contact-policies
Content-Type: application/json
Request body:
{
  "name": "Weekly Cross-Channel Cap",
  "description": "Limit total customer contacts to 5 per week across email, push, and SMS",
  "ruleType": "cross_channel_cap",
  "scope": "global",
  "config": {
    "channels": ["email", "push", "sms"],
    "maxContacts": 5,
    "windowDays": 7
  },
  "enabled": true
}
Response (201 Created):
{
  "id": "cp_weekly_cap",
  "name": "Weekly Cross-Channel Cap",
  "description": "Limit total customer contacts to 5 per week across email, push, and SMS",
  "ruleType": "cross_channel_cap",
  "scope": "global",
  "config": {
    "channels": ["email", "push", "sms"],
    "maxContacts": 5,
    "windowDays": 7
  },
  "enabled": true,
  "createdAt": "2026-03-10T14:30:00Z",
  "updatedAt": "2026-03-10T14:30:00Z"
}

List Contact Policies

GET /api/v1/contact-policies

Update a Contact Policy

PUT /api/v1/contact-policies/:id

Delete a Contact Policy

DELETE /api/v1/contact-policies/:id
Disabling or deleting a contact policy immediately removes its restrictions. Make sure to review the impact on customer experience before removing protective policies.

Behavioral Metrics Integration

Contact policies can reference behavioral metrics for dynamic, data-driven rules. For example, you can create a policy that suppresses offers when a customer’s 7-day impression count exceeds a threshold, using a behavioral metric instead of a hard-coded frequency cap. See the Behavioral Metrics page for recipes and examples.