Stay organized with collections
Save and categorize content based on your preferences.
To remind users to use offers before they expire, a default notification is triggered 48 hours
before an offer expires. To trigger a notification, an offer must meet the following criteria:
It must not have previously triggered an expiration notification on the user’s device.
It must have a valid expiration datetime that's in the future, set in
validTimeInterval.end.date.
It must not have the writeable field disableExpirationNotification set to
True. By default, this field is set to false.
The following screenshot shows an example of the default, unmodifiable notification:
Offer expires (today, tomorrow, in [x] days)
class.title
class.titleImage
The header in the offer expiration notification cannot be customized.
Blackout hours
If the offer expiration notification is set to appear between 10PM and 6AM at the user’s local
time, the offer appears either before or after this time period.
Custom offer expiration notification time
You can customize when the Offer expiration notification appears using the
message.displayInterval.start.date field on OfferObjects or
OfferClasses. If a custom notification time is set, the expiration notification triggers
according to the message.displayInterval.start.date, instead of the default logic
calculated from validTimeInterval.end.date. The following is a sample of a customized
time for an expiration notification:
The displayInterval.start.date sets the time the notification appears. It can be
set up to 30 days prior to the expiration date. If a time span greater than this is specified, the
notification triggers at the 30 day mark. This message doesn't require a header and body field -
if they're included they aren't used.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["\u003cp\u003eOffers trigger an expiration notification 48 hours before expiry if they have a future expiration date, haven't previously triggered a notification, and don't have \u003ccode\u003edisableExpirationNotification\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe default notification displays the offer's title, title image, and relative expiration time (today, tomorrow, or in x days).\u003c/p\u003e\n"],["\u003cp\u003eNotifications are prevented from appearing between 10 PM and 6 AM local time, shifting to before or after this window.\u003c/p\u003e\n"],["\u003cp\u003eCustom notification times can be set using \u003ccode\u003emessage.displayInterval.start.date\u003c/code\u003e, overriding the default 48-hour trigger and allowing scheduling up to 30 days before expiry.\u003c/p\u003e\n"],["\u003cp\u003eOnly one expiration notification is sent per offer; a custom notification time prevents the default notification from triggering.\u003c/p\u003e\n"]]],["Offers trigger an expiration notification 48 hours before expiring, provided they haven't previously triggered one, have a valid future expiration date, and don't have `disableExpirationNotification` set to `True`. Notifications display the expiration time, `class.title`, and `class.titleImage`. Blackout hours (10 PM - 6 AM) shift notifications. Custom notification times, defined by `message.displayInterval.start.date`, override the default and can be set up to 30 days before expiration. Only one expiration notification is sent per offer.\n"],null,["To remind users to use offers before they expire, a default notification is triggered 48 hours\nbefore an offer expires. To trigger a notification, an offer must meet the following criteria:\n\n1. It must not have previously triggered an expiration notification on the user's device.\n2. It must have a valid expiration `datetime` that's in the future, set in `validTimeInterval.end.date`.\n3. It must not have the writeable field `disableExpirationNotification` set to `True`. By default, this field is set to `false`.\n\n| **Note:** This offer expiration notification feature and its details are subject to change.\n\nThe following screenshot shows an example of the default, unmodifiable notification:\n1. Offer expires (today, tomorrow, in \\[x\\] days)\n2. `class.title`\n3. `class.titleImage`\n\nThe header in the offer expiration notification cannot be customized.\n\nBlackout hours\n\nIf the offer expiration notification is set to appear between 10PM and 6AM at the user's local\ntime, the offer appears either before or after this time period.\n\nCustom offer expiration notification time\n\nYou can customize when the `Offer` expiration notification appears using the\n`message.displayInterval.start.date` field on `OfferObjects` or\n`OfferClasses`. If a custom notification time is set, the expiration notification triggers\naccording to the `message.displayInterval.start.date`, instead of the default logic\ncalculated from `validTimeInterval.end.date`. The following is a sample of a customized\ntime for an expiration notification: \n\n```scdoc\n{\n \"message\": {\n \"messageType\": \"EXPIRATION_NOTIFICATION\",\n \"displayInterval\": {\n \"start\": {\n \"date\": datetime\n }\n }\n }\n}\n```\n\nThe `displayInterval.start.date` sets the time the notification appears. It can be\nset up to 30 days prior to the expiration date. If a time span greater than this is specified, the\nnotification triggers at the 30 day mark. This message doesn't require a header and body field -\nif they're included they aren't used.\n| **Note:** Only one expiration notification is sent to the user. Setting a custom offer expiration time means the default one isn't triggered."]]