Why are Communication Services Email Delivery Events not being displayed in Azure Event Grid

Simon Dix 80 Reputation points
2024-02-06T14:50:00.4333333+00:00

I have created an Azure Communication Service to handle Voice, SMS & Email messaging and the sending of all message types is working as expected. I have also wired up the delivery status reporting for both SMS and Voice but when subscribing to the Microsoft.Communication.EmailDeliveryReportReceived event I am seeing no events being written to my Event Grid - I have a webhook endpoint and this is not being hit. To use the SMSDeliveryReportReceived event I had to add the following to each SMS message - new SmsSendOptions(enableDeliveryReport: true). Is something similar needed to enable the delivery report for emails?

Azure Communication Services
Azure Communication Services
An Azure communication platform for deploying applications across devices and platforms.
687 questions
{count} votes

1 answer

Sort by: Most helpful
  1. SnehaAgrawal-MSFT 18,366 Reputation points
    2024-02-13T15:20:40.7966667+00:00

    @Simon Dix Sure,

    As an endpoint experiences delivery failures, Event Grid begins to delay the delivery and retry of events to that endpoint.

    For example, if the first 10 events published to an endpoint fail, Event Grid assumes that the endpoint is experiencing issues and will delay all subsequent retries and new deliveries for some time - in some cases up to several hours. The functional purpose of delayed delivery is to protect unhealthy endpoints and the Event Grid system.

    Without back-off and delay of delivery to unhealthy endpoints, Event Grid's retry policy and volume capabilities can easily overwhelm a system.

    So, suggestion here is to customize the retry policy when creating an event subscription by using the following two configurations. An event is dropped if either of the limits of the retry policy is reached.

    • Maximum number of attempts - The value must be an integer between 1 and 30. The default value is 30.
    • Event time-to-live (TTL) - The value must be an integer between 1 and 1440. The default value is 1440 minutes

    Let us know.