Channels the playbook may deliver on.
Optionalcontent_Seconds a cached decision is served before regenerating (null = global default; 0 = no expiry).
Optionalfrequency_Frequency cap: { max_per_day | max_per_N_days: n }.
Optionalquiet_Quiet-hours defer window: { start, end, tz }.
Settings that only mean something when Thankly initiates the message.
Present iff
'engagement'is ineligible_for— the API rejects any other combination. On an experience-only playbook these are not empty, they are unrepresentable: a widget renders immediately, so there is no channel to deliver on, nothing to defer, and no cached decision to expire.