Message Sending Interval
Each message has its own time interval within which it should be sent. The corresponding time boundaries are called 'Send from' and 'Send to'. They are displayed as Time range of notification in .
![This screenshot shows the message-sending interval.](images/messageSendingInterval.png)
The interval is initially determined on message creation and is automatically adjusted when the recipient's time zone is changed. Also, the 'Send from' value can be updated for a message that supports multiple 'Failed' or 'Sent' attempts. In this case, if the current attempt is 'Failed' (or 'Sent'), the 'Send from' is set to the time when the next attempt should performed.
The 'Send from' value is calculated by doing the following:
Determine the start time of the message sending interval without day shift (in the time zone of the recipient).
One of these three options apply, depending on the value selected in the Sending time field:
Time of event: The current time in the recipient's time zone
Day of event: The current date in time zone of recipient + the 'from' value
Day of route: The route date + the 'from' value
Apply the day shift for the message (if needed) using the +/- operators in the Sending time field.
Get a date part of the value determined at the previous step.
Add day shift, which is the number of days before or after the corresponding event.
Apply 'Block messages for specific days', 'Block messages for holidays', and 'Shift blocked messages' rules.
The 'Send to' value is calculated using the following formula:
'Send to' = 'Send from' + the 'within' value
The 'New' messages are checked against the 'Send to' constraint. If the message has not been processed in time, the server updates it with the 'Failed' status and the 'MESSAGE_STEP_EXPIRED' description.
The system also checks the 'Send to' value for messages with the 'Sending' status. Maximum time to keep expired ('Send to' <= current time) messages in the 'Sending' state is 60 minutes. If the delay time has elapsed for a message, it is removed with the 'Failed' status and the 'MESSAGE_STEP_EXPIRED' description.
Also, the same 'Send to' logic is implemented in all notification methods. It is especially necessary for the messages that might remain in the 'Sending' state for a long time (e.g. customer notifications that require message delivery confirmation).