Delivering notifications
Overview
When a workflow is executed, its channel steps may produce zero or more messages for the workflow run's recipient. Each message is then sent to its channel's provider using Knock's resilient sending pipeline which handles any retry logic for you.
Send retry logic
Our sending pipeline will handle retrying sending notifications to the underlying provider in the following cases:
- There was an error contacting the provider (e.g. a network connection issue)
- The provider responded indicating there was retryable error (e.g. server overloaded, rate limit exceeded)
- There was an error in our sending pipeline
We will retry delivery up to 8 times over a 30-minute window, utilizing an exponential back-off strategy with jitter.
In the event that a message-sending attempt is retried you will see the message delivery status go from undelivered
to queued
.
Delivery status retry logic
For certain channel types and where it is supported by the provider, we also implement delivery status checks. We will retry a delivery status check in the following cases:
- The provider indicated the request is retryable (e.g. there's no delivery status being presented yet)
- There was an error contacting the provider (e.g. a network connection issue)
- There was an error in our delivery status check pipeline
We will retry delivery status checks up to 10 times over a 30-minute window, utilizing an exponential back-off strategy with jitter.
Sending logs and debugging
For all out-of-app providers you can find logs of the requests we make and the responses we receive under the "Logs" tab of an individual message in the dashboard. You can use these logs to understand any errors coming from the provider while we were executing your requests.
If you find an error that you cannot fix yourself, please contact our support team for help.