Skip to main content
POST
Create a campaign controller

Authorizations

Authorization
string
header
required

Path Parameters

campaignId
string
required
version
string
required
Pattern: (/version/.+)?

Body

application/json

Body of a POST /v2/campaigns/{campaignId}{version:(/version/.+)?}/controllers request.

type
enum<string>
required
Available options:
CONTROLLER
name
required

Choose between static or dynamic name

component_ids
string[]
component_references
object[]
enabled

Choose between static or dynamic enabled

step_builder

Choose between static or dynamic step builder

aliases

Choose between static or dynamic aliases

data
object[]
enabled_on_states

Choose between static or dynamic enabled on states

Available options:
ARCHIVED,
ENDED,
LIVE,
NOT_LAUNCHED,
PAUSED,
STOPPED
journey_names

Choose between static or dynamic journey names

scope

Choose between static or dynamic scope

Available options:
CLIENT,
PRIVATE,
PUBLIC
selectors

Choose between static or dynamic selectors

Available options:
BEST_REFERRAL,
BEST_REFERRAL_SAME_PROGRAM,
MATCHING_CAMPAIGN,
TARGET
send_policy

Choose between static or dynamic send policy

Available options:
ALL,
FIRST_ONLY

Response

Successful response

Stored campaign controller definition. Fields enabled, name, scope, enabled_on_states, selectors, aliases, journey_names, send_policy, and step_builder are unevaluated and appear in buildtime-evaluatable form.

component_ids
string[]
required
component_references
object[]
required
created_date
string
required

RFC 3339 or RFC 9557 date-time with a numeric UTC offset and an optional IANA time-zone suffix in square brackets. Precision up to milliseconds.

Pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])(\[[^\]]+\])?$
Example:

"2025-10-24T02:00:00-07:00"

data
object[]
required
enabled
required

The enabled as configured: a literal value, or an expression (type:string) when defined dynamically.

id
string
required
read-only
step_builder
required

The step builder as configured: a literal value, or an expression (type:string) when defined dynamically.

triggers
(ACCESS · object | AUDIENCE_MEMBERSHIP · object | AUDIENCE_MEMBERSHIP_EVENT · object | CLIENT_DOMAIN · object | DATA_INTELLIGENCE_EVENT · object | EVENT · object | EVENT_TARGETING · object | EXPRESSION · object | GROUP · object | HAS_IDENTITY · object | HAS_PRIOR_REWARD · object | HAS_PRIOR_STEP · object | JOURNEY_CHECK · object | LEGACY_LABEL_TARGETING · object | LEGACY_QUALITY · object | MAXMIND · object | REFERRED_BY_EVENT · object | REWARD_EVENT · object | SCORE · object | SEND_REWARD_EVENT · object | SHARE · object | STEP_EVENT · object | STICKY_JOURNEY · object | TARGETING · object | ZONE_STATE · object)[]
required

Stored campaign controller trigger definition. Fields trigger_phase, trigger_name, parent_trigger_group_name, trigger_description, enabled, and negated are unevaluated and appear in buildtime-evaluatable form.

type
enum<string>
required
Available options:
CONTROLLER
updated_date
string
required

RFC 3339 or RFC 9557 date-time with a numeric UTC offset and an optional IANA time-zone suffix in square brackets. Precision up to milliseconds.

Pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])(\[[^\]]+\])?$
Example:

"2025-10-24T02:00:00-07:00"

actions
(APPROVE · object | CANCEL_REWARD · object | CREATE_MEMBERSHIP · object | CREATIVE · object | DATA_INTELLIGENCE · object | DECLINE · object | DISPLAY · object | EARN_REWARD · object | EMAIL · object | EXPRESSION · object | FIRE_AS_PERSON · object | FULFILL_REWARD · object | INCENTIVIZE · object | INCENTIVIZE_STATUS_UPDATE · object | REDEEM_REWARD · object | REMOVE_MEMBERSHIP · object | REVOKE_REWARD · object | SCHEDULE · object | SHARE_EVENT · object | SIGNAL · object | SIGNAL_V1 · object | STEP_SIGNAL · object | WEBHOOK · object)[]
required

Stored campaign controller action definition. Field enabled is unevaluated and appears in buildtime-evaluatable form.

aliases
required

The aliases as configured: a literal value, or an expression (type:string) when defined dynamically.

controller_id
string
required
enabled_on_states
required

The enabled on states as configured: a literal value, or an expression (type:string) when defined dynamically.

Available options:
ARCHIVED,
ENDED,
LIVE,
NOT_LAUNCHED,
PAUSED,
STOPPED
journey_names
required

The journey names as configured: a literal value, or an expression (type:string) when defined dynamically.

name
required

The name as configured: a literal value, or an expression (type:string) when defined dynamically.

scope
required

The scope as configured: a literal value, or an expression (type:string) when defined dynamically.

Available options:
CLIENT,
PRIVATE,
PUBLIC
selectors
required

The selectors as configured: a literal value, or an expression (type:string) when defined dynamically.

Available options:
BEST_REFERRAL,
BEST_REFERRAL_SAME_PROGRAM,
MATCHING_CAMPAIGN,
TARGET
send_policy
required

The send policy as configured: a literal value, or an expression (type:string) when defined dynamically.

Available options:
ALL,
FIRST_ONLY