Description

Broadcast interval feature allows campaigns that are running on an interval schedule to ignore segment with a certain periodicity (by setting an interval which is always larger then the main interval). Because of this, feature only makes sense for campaigns that are targeted to a particular segment of users.

Broadcast execution will happen on each broadcast_interval / main_interval step of the cycle. The main interval is executed as usual, while the final step of the cycle is treated differently:

  • segment conditions will be ignored
  • a target audience will consist of all active subscribers for a channel which was used for the campaign’s segment

Execution logic

Each final step of the cycle is followed by a CampaignStrictRequest with broadcast_id set to the BroadCastIntervalDelivery ID.

In this case MessageStrictCampaignTask will run the task with a context of broadcast delivery which includes:

  • using it’s content data for messages (either a pool or a single message instance)
  • ignoring campaign segment conditions
  • act as if the campaign is targeted to all active subscribers of a particular channel (or channels, in case of multi-channel segment)

All logic is concentrated on a manager service, which is responsible for campaign execution.

Use cases

Such feature may be very useful when we want to update our campaign to send messages more frequently only for a subset of users, while keeping the main interval for the rest of the users. For example:

  • campaign running every 2 minute
  • we want fresh users (age < 10 days) to receive messages every 30 seconds
  • we set campaign interval to 30 seconds
  • we also set a segment that will only include users that are less than 10 days old
  • we set a broadcast interval to 2 minutes