Skip to main content

Time-to-live

Updated: Oct 31, 2025 If we are unable to deliver a message to a WhatsApp user, we will retry the delivery for a period of time known as a time-to-live (“TTL”), or the message validity period. You can customize the default TTL for authentication and utility templates sent via Cloud API, and for marketing templates sent via Marketing Messages Lite API (“MM Lite API”). We encourage you to set a TTL for all of your authentication templates, preferably equal to or less than your code expiration time, to ensure your customers only get a message when a code is still usable.

Defaults, Min/Max Values, and Compatibility Table

AuthenticationUtilityMarketing
Default TTL10 minutes
30 days for authentication templates created before October 23, 2024
30 days30 days
CompatibilityCloud API + On-Premise APICloud API onlyMarketing Messages (MM) Lite API
Customizable range30 seconds to 15 minutes30 seconds to 12 hours12 hours to 30 days

Customize the TTL

To set a custom TTL on an authentication, utility, or marketing template, include and set the value of the message_send_ttl_seconds property in the POST /<PHONE_NUMBER_ID>/message_templates call. You can change the TTL on a previously configured template using this method, as well. TTL can be customized in 1 second increments.

Valid message_send_ttl_seconds property values

Authentication templates: 30 to 900 seconds (30 secs to 15 mins) Utility templates: 30 to 43200 seconds (30 secs to 12 hours) Marketing templates: 43200 to 2592000 (12 hours to 30 days) For authentication and utility templates, you can set the message_send_ttl_seconds property value to -1, which will set a custom TTL of 30 days.

Example request

curl 'https://graph.facebook.com/v21.0/102290129340398/message_templates' \
      -H 'Authorization: Bearer EAAJB...' \
      -H 'Content-Type: application/json' \
      -d '
      {
        "name": "test_template",
        "language": "en_US",
        "category": "MARKETING",
        // Configure your TTL in seconds below
        "message_send_ttl_seconds": "120",
        "components": [\
          {\
            "type": "BODY",\
            "text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.",\
            "example": {\
              "body_text": [\
                [\
                  "the end of August","25OFF","25%"\
                ]\
              ]\
            }\
          },\
          {\
            "type": "FOOTER",\
            "text": "Use the buttons below to manage your marketing subscriptions"\
          },\
        ]
      }'

Sample Response

\{
  "id": "572279198452421",
  "status": "PENDING",
  "category": "MARKETING"
}

When TTL is exceeded: Dropped messages

Messages that are unable to be delivered within the default or customized TTL are dropped. If you do not receive a delivered message webhook before the TTL is exceeded, assume the message was dropped. If you send a message that fails to deliver, there could be a minor delay before you receive the webhook, so you may wish to build in a small buffer before assuming the message was dropped. Did you find this page helpful? Thumbs up icon Thumbs down icon ON THIS PAGE Defaults, Min/Max Values, and Compatibility Table Customize the TTL Valid message_send_ttl_seconds property values Example request Sample Response When TTL is exceeded: Dropped messages