Webhook Best Practices

Respond quickly

After receiving a webhook using an HTTPS endpoint, it's important to respond to the request with a 200 OK as quickly as possible.

Often times a message queue is used for storing messages as they are received so they can be processed by a background process. This decreases the likelihood that a call will time out and be considered a failure that should be retried later.

👍

Coding with a ASP.NET Core Web Application?

Read Microsoft's Article: Background tasks with hosted services in ASP.NET Core. This explains .NET technologies that could be used to implement a background process.

Ignore duplicates

It is possible that the same event may be sent more than once. For example, an event will be resent if a prior call timed out(60 seconds) before receiving a 200 Ok status. Webhook endpoints should be implemented with idempotent operations. If an endpoint receives a duplicate event then it should have no effect. The "X-Directscale-Message-Id" header can be used to filter duplicate messages.

Manage delays

In certain circumstances, there are delays in sending webhooks. If receiving webhooks a day or more late will cause issues to your implementation then it is recommended to use the "EventDateUtc" timestamp from the JSON body to compare to the current time.