trigger_condition, segmentation_details, scheduling_details, delivery_controls, conversion_goal_details, control_group_details, utm_params, campaign_audience_limit, advanced, and basic_details.geofences. Used by Create Campaign and Update Campaign.
For basic_details (excluding geofences) and campaign_content per channel, platform, and template type, see Campaign content reference.
The OpenAPI spec at
/api/campaigns/campaign-draft.yaml is the authoritative source for field types, enums, and required markers. This page adds runnable variants and conditional rules not expressible in inline schema descriptions.Quick start
The minimum audience configuration is eithersegmentation_details.is_all_user_campaign: true or a single filter under segmentation_details.included_filters. The minimum schedule is scheduling_details.delivery_type: ASAP. Event-triggered campaigns also require trigger_condition.
Page contents
Trigger conditions
Thetrigger_condition object defines when a triggered campaign fires. It is required for the following delivery types:
- Push
EVENT_TRIGGERED,DEVICE_TRIGGERED, andLOCATION_TRIGGERED. - Email
EVENT_TRIGGERED.
BUSINESS_EVENT_TRIGGERED campaigns identify the trigger via basic_details.business_event and do not use trigger_condition.
Trigger delay variants
- ASAP
- DELAY (AFTER)
- DELAY (BEFORE)
- INTELLIGENT_DELAY (Push)
The campaign fires as soon as the trigger condition is met.
Intelligent delay optimization (Push)
Theintelligent_delay_optimization object defines the window within which MoEngage selects the optimal send time.
Primary and secondary trigger filters
secondary_included_filters adds an extra filter group that must also match. Useful for triggers of the form “user did X and also Y”.
Trigger requirements per delivery type
Filter primitives
Filters are the primitives used insideincluded_filters.filters[] and excluded_filters.filters[] on segmentation_details and inside included_filters.filters[] and secondary_included_filters.filters[] on trigger_condition. Every filter group has the shape:
filter_operator is and or or (lowercase). Filters are objects discriminated by filter_type:
- User attributes-based filters
- Action-based filters (with or without attributes)
- Custom segments
Campaign audience
Thesegmentation_details object defines who receives the campaign. Two top-level modes are supported: an explicit filter group, or a flag that targets all users.
- All users
- Custom segment
- User attribute filter
- Included with excluded
- Include opt-outs
Campaign delivery schedule
Thescheduling_details.delivery_type field selects the send model. Different fields are required based on the value.
For
PERIODIC campaigns, delivery_type is AT_FIXED_TIME and periodic_details is required.
Schedule variants
- ASAP
- AT_FIXED_TIME
- SEND_IN_BTS
- SEND_IN_USER_TIMEZONE
- PERIODIC
Periodic schedules
Theperiodic_details object is required for PERIODIC campaigns.
The
repeat_on_days_of_week_for_month entries have the following shape:
- Daily
- Weekly
- Monthly on specific dates
- Monthly on first Monday
Best Time to Send
Thebts_details object is required when delivery_type is SEND_IN_BTS.
User timezone
Theuser_timezone_details object is required when delivery_type is SEND_IN_USER_TIMEZONE.
Delivery controls
Thedelivery_controls object carries throttling, frequency capping, DND behavior, and offline/queueing flags. The accepted fields differ between Push and Email.
Push delivery controls
- Throttle with frequency capping
- Event-triggered
- Device-triggered
- Location-triggered
- Queuing (flag-gated)
Email delivery controls
Conversion goal tracking
Theconversion_goal_details object configures the events MoEngage tracks to attribute campaign success.
Goal fields
Goal event attribute fields
- Single conversion goal
- Multiple conversion goals
Control groups
Thecontrol_group_details object configures the campaign-level and global control groups (users held back from the send).
- Campaign control group
- Global control group
UTM parameters
Theutm_params object appends UTM tracking parameters to URLs in the campaign content. The five standard keys are explicitly defined. Up to 5 additional custom keys prefixed with utm_ are also supported.
Campaign audience cap
Thecampaign_audience_limit object caps the number of users a campaign can reach.
Supported channels: Email, Push. Not supported for
BROADCAST_LIVE_ACTIVITY.
- Lifetime cap (TOTAL)
- Per-instance cap (INSTANCE)
- Disabled
Advanced Push settings
Theadvanced object (Push only) carries notification-expiration settings and per-platform priority.
advanced is part of the Push request body. It is not part of the Email request body.Expiration settings
Platform-level priority
- iOS APNS priority
- Android priority
Geofence targeting
Thebasic_details.geofences object is required for Push LOCATION_TRIGGERED campaigns. The field lives structurally inside basic_details and is documented here because it works in concert with trigger_condition and delivery_controls.send_limit_* for location-triggered targeting.
- ENTRY
- EXIT
- dwell
The campaign fires when the user enters the geofence.
Validation rules
The following rules span multiple sub-objects on this page.Updating an existing campaign
PATCH /v5/campaigns/{campaign_id} reuses every schema on this page. Additional rules apply for updates.
- When a field inside a nested object is updated, the complete parent object must be included in the request. For example, to change a single filter in
segmentation_details.included_filters.filters, the fullsegmentation_detailsblock is included. - For campaigns in
ACTIVEstate, the following fields cannot be edited:trigger_conditionsegmentation_detailsconversion_goal_details- The scheduling type (
delivery_type) - The scheduling start date (
scheduling_details.start_time)
- For campaigns in
SCHEDULEDstate, all fields except the scheduling type can be edited. - Campaigns in
STOPPEDorARCHIVEDstate cannot be updated. - Updates to
trigger_conditionorcampaign_contenton event-triggered campaigns can take up to 30 minutes to propagate to users due to content caching. - For periodic campaigns, configuration changes apply from the next scheduled run.
- For one-time campaigns, changes apply to messages not yet dispatched at the time of the update.
- segmentation_details (Email)
- delivery_controls (Push)
- delivery_controls (Email)
- conversion_goal_details
- control_group_details
- campaign_audience_limit
- advanced (Push)
- basic_details.geofences
See also
- Campaign content reference —
basic_detailsandcampaign_contentper channel, platform, and template type. - Create Campaign — required fields, happy-path cURLs, error responses.
- Update Campaign — per-state edit restrictions.
- Update Campaign Status —
STOP,PAUSE,RESUMEtransitions. - Validate Campaign — publish-time validation check.
- Campaign drafts overview — lifecycle, channels, supported delivery types.