object
audienceWho: lost or cold for 30–365 days (lost_cold), no activity for N days (inactive), portal leads never qualified after 21 days (portal_unqualified), an old requirement a new listing fits (new_inventory), or the leads of a smart list (smart_list); plus the filter DSL.
audience.presetaudience.lead_typesaudience.dormant_min_daysaudience.dormant_max_daysaudience.inactive_daysaudience.portal_daysaudience.inventory_daysaudience.min_match_scoreaudience.smart_list_idsmart_list: a saved lead view (yours or a team view). Its name and filter are stored with the programme when it is saved.
audience.filterPropZolo filter: { all: [...] } | { any: [...] } | { not: … } | { field, op, value }
channelsTried in order: the first channel the law and the person’s consent allow is used.
channels.orderchannels.whatsapp_cloudchannels.whatsapp_cloud.template_idOpaque record id.
channels.whatsapp_cloud.followup_template_idThe one follow-up: a different approved template of the channel; none = no follow-up.
channels.whatsapp_cloud.channel_account_idOpaque record id.
channels.smschannels.sms.template_idOpaque record id.
channels.sms.followup_template_idThe one follow-up: a different approved template of the channel; none = no follow-up.
channels.sms.channel_account_idOpaque record id.
channels.emailchannels.email.template_idOpaque record id.
channels.email.followup_template_idThe one follow-up: a different approved template of the channel; none = no follow-up.
channels.email.channel_account_idOpaque record id.
channels.call_taskchannels.call_task.prioritymessagemessage.aimessage.variablesTemplate variables AI writes per lead (only from their own requirement and live listings).
message.variables[].keyrequiredmessage.variables[].hintmessage.instructionsThe only place an offer may come from.
message.varsscheduleschedule.windowschedule.window.startrequiredschedule.window.endrequiredschedule.daily_capschedule.budget_paiseschedule.holdout_pctschedule.attribution_daysschedule.end_onCalendar date YYYY-MM-DD in the company time zone.
follow_upfollow_up.maxAt most one follow-up (0 = none).
follow_up.after_dayshandoffhandoff.routehandoff.fallback_member_idOpaque record id.
handoff.sla_minuteshandoff.whenhandoff.reopen{
"audience": {
"preset": "lost_cold",
"lead_types": [
"buy"
],
"dormant_min_days": 7,
"dormant_max_days": 14,
"inactive_days": 14,
"portal_days": 7,
"inventory_days": 1,
"min_match_score": 40,
"smart_list_id": "cmusrceel0000q7kaafxqi1om",
"filter": null
},
"channels": {
"order": [
"whatsapp_cloud"
],
"whatsapp_cloud": {
"template_id": "cmusrceel0000q7kaafxqi1om",
"followup_template_id": "cmusrceel0000q7kaafxqi1om",
"channel_account_id": "cmusrceel0000q7kaafxqi1om"
},
"sms": {
"template_id": "cmusrceel0000q7kaafxqi1om",
"followup_template_id": "cmusrceel0000q7kaafxqi1om",
"channel_account_id": "cmusrceel0000q7kaafxqi1om"
},
"email": {
"template_id": "cmusrceel0000q7kaafxqi1om",
"followup_template_id": "cmusrceel0000q7kaafxqi1om",
"channel_account_id": "cmusrceel0000q7kaafxqi1om"
},
"call_task": {
"priority": "normal"
}
},
"message": {
"ai": true,
"variables": [
{
"key": "string",
"hint": "string"
}
],
"instructions": "string",
"vars": {}
},
"schedule": {
"window": {
"start": "string",
"end": "string"
},
"daily_cap": 1,
"budget_paise": 0,
"holdout_pct": 0,
"attribution_days": 7,
"end_on": "2026-10-06"
},
"follow_up": {
"max": 0,
"after_days": 1
},
"handoff": {
"route": "owner",
"fallback_member_id": "cmusrceel0000q7kaafxqi1om",
"sla_minutes": 15,
"when": "requalified",
"reopen": true
}
}