Share via

ACS - Email - Delivery or Bounce Event custom properties

azuregk 0 Reputation points
2026-06-03T23:53:32.2966667+00:00

We are currently evaluating Azure Communication Services (ACS) Email for integration with a third-party communications platform and have encountered several limitations that make operational monitoring and bounce handling challenging.

Current Challenges

  1. Unable to Add or Update Custom Email Properties
    • ACS Email appears to provide only a limited set of standard message properties.
      • There is no capability to add custom metadata/properties that can later be referenced in delivery, bounce, or engagement events.
      1. No Support for Custom Correlation ID
        • We are unable to set our own correlation identifier on outbound emails.
          • This makes it difficult to correlate ACS delivery and bounce events with records in our external communications platform.
          1. Bounce Handling Limitations
            • For third-party communication platforms, reliable bounce processing is critical.
              • Without custom properties or a configurable correlation ID, associating bounce notifications back to the originating transaction becomes complex and error-prone.

Questions

  • Is there a supported mechanism to attach custom metadata to ACS Email messages that will be returned in Event Grid events?
  • Is there any roadmap item or planned enhancement to support custom correlation IDs or user-defined properties?
  • What is Microsoft's recommended approach for reliably handling bounce emails and mapping them back to source transactions when using ACS Email with external communication platforms?
  • Are there any best practices or alternative patterns that customers are using today to overcome these limitations?

Any guidance from the ACS product team or community would be greatly appreciated.We are currently evaluating Azure Communication Services (ACS) Email for integration with a third-party communications platform and have encountered several limitations that make operational monitoring and bounce handling challenging.

Azure Communication Services

1 answer

Sort by: Most helpful
  1. AI answer

    2026-06-03T23:53:50.0266667+00:00

    ACS Email doesn’t currently expose a way to attach arbitrary custom metadata or a custom correlation ID that is echoed back in Email delivery/bounce/engagement events.

    From the available schemas and telemetry:

    • Event Grid events for ACS Email use fixed schemas:
      • Microsoft.Communication.EmailDeliveryReportReceived for delivery/bounce status.
      • Microsoft.Communication.EmailEngagementTrackingReportReceived for opens/clicks.
    • These events carry ACS-defined properties such as Status / DeliveryStatus and engagement details (for example, engagementType = View or Click, and engagementContext for clicked links), but no user-defined property bag is documented.
    • Operational logs and metrics expose ACS-side identifiers and statuses:
      • ACSEmailStatusUpdateOperational includes DeliveryStatus values like Delivered, Bounced, Suppressed, etc., and can be queried to list failed deliveries by RecipientId or by MessageId.
      • Email metrics and insights (bounce rate, blocked rate, user engagement) are based on ACS identifiers and dimensions such as EngagementType.

    Given the context, the following can be stated:

    1. Mechanism to attach custom metadata
      • No supported mechanism is documented to attach arbitrary custom metadata or custom correlation IDs to ACS Email messages that are then surfaced in Event Grid email events.
    2. Roadmap / planned enhancements
      • No roadmap or planned enhancement for custom correlation IDs or user-defined properties is documented in the provided material.
    3. Recommended approach for bounce handling and mapping back to source transactions Within the current capabilities, the supported pattern is to use ACS-generated identifiers and logs as the correlation surface:
      • Capture and persist ACS message identifiers at send time:
        • When calling the Email Send API (SendMail operation), persist the returned messageId (and any other ACS identifiers available in the send response) alongside the external platform’s transaction ID.
      • Use ACS operational logs for delivery/bounce status:
        • Query ACSEmailStatusUpdateOperational by MessageId or RecipientId to retrieve delivery outcomes:
          • Example queries from the documentation:
            • Failed deliveries by recipient:
                         ACSEmailStatusUpdateOperational
                         | where isnotempty(RecipientId)
                         | where DeliveryStatus != "Delivered"
                         | limit 100
              
            • Failed deliveries by message ID:
                         ACSEmailStatusUpdateOperational
                         | where isempty(RecipientId)
                         | where DeliveryStatus != "OutForDelivery"
                         | limit 100
              
            • Bounced and suppressed recipients:
                         ACSEmailStatusUpdateOperational
                         | where DeliveryStatus == "Bounced" or DeliveryStatus == "Suppressed"
                         | limit 100
              
        • Join these results with the stored mapping of messageId → external transaction ID in the third‑party platform.
      • Use documented bounce codes and statuses for logic:
        • Delivery/bounce events and logs carry standardized SMTP/DSN codes and ACS delivery statuses such as Delivered, Bounced, Suppressed, Failed, FilteredSpam, Quarantined, etc.
        • The “Email bounces: Delivery statuses and types” tables define error codes (for example, 5.1.1 Bad Destination Mailbox Address, 5.7.23 SPF Validation Failed, 521 Server Doesn't Accept Mail, etc.) and their meanings. These can be used to drive automated suppression, retries, or remediation workflows in the external platform.
      • Use Email Insights and metrics for monitoring:
        • Bounce rate and blocked rate are exposed via Email Insights workbooks and metrics. These can be used for operational monitoring and alerting, even though they are aggregate rather than per-message metadata.
    4. Best practices / alternative patterns Based on the documented capabilities, the practical patterns in use today are:
      • Key-based correlation:
        • Treat ACS messageId (and optionally RecipientId) as the primary key for correlation.
        • Store a mapping table in the external platform or a shared data store (for example, Azure Table Storage, Cosmos DB, SQL) that links messageId to the platform’s own correlation ID or transaction record.
      • Log Analytics–driven workflows:
        • Ingest ACSEmailStatusUpdateOperational into Azure Monitor Logs.
        • Use Kusto queries (as shown above) to identify bounces/suppressions and then push those results into the external platform via scheduled jobs or event-driven automation (for example, Logic Apps, Functions) keyed by messageId.
      • Status- and code-based suppression logic:
        • Use the documented error codes and delivery statuses to maintain suppression lists and retry policies in the external platform, aligning with ACS’s own managed suppression behavior.

    Within the provided documentation, these ACS-native identifiers and logs are the supported way to achieve reliable bounce handling and correlation when integrating with external communication platforms.


    References:

    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.