Create a campaign controller
Adds a new controller to the specified campaign. Controllers orchestrate campaign logic by combining triggers (conditions) with actions (side effects). Returns the created controller with its server-assigned id.
Authorizations
Body
- CONTROLLER
- FRONTEND_CONTROLLER
- JOURNEY_ENTRY
Body of a POST /v2/campaigns/{campaignId}{version:(/version/.+)?}/controllers request.
CONTROLLER Choose between static or dynamic name
Choose between static or dynamic enabled
Choose between static or dynamic step builder
Choose between static or dynamic aliases
Choose between static or dynamic enabled on states
ARCHIVED, ENDED, LIVE, NOT_LAUNCHED, PAUSED, STOPPED Choose between static or dynamic journey names
Choose between static or dynamic scope
CLIENT, PRIVATE, PUBLIC Choose between static or dynamic selectors
BEST_REFERRAL, BEST_REFERRAL_SAME_PROGRAM, MATCHING_CAMPAIGN, TARGET Choose between static or dynamic send policy
ALL, FIRST_ONLY Response
Successful response
- CONTROLLER
- FRONTEND_CONTROLLER
- JOURNEY_ENTRY
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.
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.
^\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])(\[[^\]]+\])?$"2025-10-24T02:00:00-07:00"
The enabled as configured: a literal value, or an expression (type:string) when defined dynamically.
The step builder as configured: a literal value, or an expression (type:string) when defined dynamically.
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.
- ACCESS
- AUDIENCE_MEMBERSHIP
- AUDIENCE_MEMBERSHIP_EVENT
- CLIENT_DOMAIN
- DATA_INTELLIGENCE_EVENT
- EVENT
- EVENT_TARGETING
- EXPRESSION
- GROUP
- HAS_IDENTITY
- HAS_PRIOR_REWARD
- HAS_PRIOR_STEP
- JOURNEY_CHECK
- LEGACY_LABEL_TARGETING
- LEGACY_QUALITY
- MAXMIND
- REFERRED_BY_EVENT
- REWARD_EVENT
- SCORE
- SEND_REWARD_EVENT
- STEP_EVENT
- STICKY_JOURNEY
- TARGETING
- ZONE_STATE
CONTROLLER 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.
^\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])(\[[^\]]+\])?$"2025-10-24T02:00:00-07:00"
Stored campaign controller action definition. Field enabled is unevaluated and appears in buildtime-evaluatable form.
- APPROVE
- CANCEL_REWARD
- CREATE_MEMBERSHIP
- CREATIVE
- DATA_INTELLIGENCE
- DECLINE
- DISPLAY
- EARN_REWARD
- EMAIL
- EXPRESSION
- FIRE_AS_PERSON
- FULFILL_REWARD
- INCENTIVIZE
- INCENTIVIZE_STATUS_UPDATE
- REDEEM_REWARD
- REMOVE_MEMBERSHIP
- REVOKE_REWARD
- SCHEDULE
- SIGNAL
- SIGNAL_V1
- STEP_SIGNAL
- WEBHOOK
The aliases as configured: a literal value, or an expression (type:string) when defined dynamically.
The enabled on states as configured: a literal value, or an expression (type:string) when defined dynamically.
ARCHIVED, ENDED, LIVE, NOT_LAUNCHED, PAUSED, STOPPED The journey names as configured: a literal value, or an expression (type:string) when defined dynamically.
The name as configured: a literal value, or an expression (type:string) when defined dynamically.
The scope as configured: a literal value, or an expression (type:string) when defined dynamically.
CLIENT, PRIVATE, PUBLIC The selectors as configured: a literal value, or an expression (type:string) when defined dynamically.
BEST_REFERRAL, BEST_REFERRAL_SAME_PROGRAM, MATCHING_CAMPAIGN, TARGET The send policy as configured: a literal value, or an expression (type:string) when defined dynamically.
ALL, FIRST_ONLY 