[aws.ses] DefaultTags silently ignored in SendBulkTemplatedEmail
Describe the bug
DefaultTags on SES.Client.send_bulk_templated_email has no effect. Tags supplied via DefaultTags, with no ReplacementTags on any BulkEmailDestination entry, do not appear in the mail.tags field of the Send or Delivery events published to the configuration set.
The call reports success and gives no indication the parameter was ignored.
This previously worked. The behaviour changed on or around 27 Aug 2026 with no change to the SDK version or the calling code.
Regression Issue
- Select this option if this issue appears to be a regression.
Expected Behavior
Tags supplied via DefaultTags are applied to destinations that do not specify ReplacementTags, and appear in mail.tags on the resulting event-destination payloads.
Current Behavior
The call returns HTTP 200 with Status: Success for every destination. The resulting Send and Delivery events contain only SES auto-tags:
ses:configuration-set
ses:from-domain
ses:source-ip
ses:caller-identity
ses:operation
ses:source-tls-versionEvery tag supplied via DefaultTags is absent. No error, warning, or partial-failure status is returned.
Tag names and values conform to the documented charset (ASCII letters, digits, underscores, dashes) and length limits.
Reproduction Steps
- Create a configuration set with an SNS event destination, with Send and Delivery enabled.
- Attach it to a verified sending identity.
- Call
send_bulk_templated_emailwithDefaultTagspopulated and noReplacementTagson the destination:
import boto3
ses = boto3.client("ses", region_name="ap-south-1")
ses.send_bulk_templated_email(
Source="[email protected]",
Template="my-template",
DefaultTemplateData="{}",
DefaultTags=[
{"Name": "example_tag", "Value": "example_value"},
],
Destinations=[
{
"Destination": {"ToAddresses": ["[email protected]"]},
"ReplacementTemplateData": "{}",
# no ReplacementTags
}
],
)- Inspect
mail.tagson the resulting Send event —example_tagis absent. - Re-send with
ReplacementTagsadded to the destination entry:
{
"Destination": {"ToAddresses": ["[email protected]"]},
"ReplacementTemplateData": "{}",
"ReplacementTags": [
{"Name": "example_tag", "Value": "example_value"},
],
}example_tag is now present in mail.tags.
Possible Solution
The ses:operation auto-tag on these events reads SendTemplatedEmail, not SendBulkTemplatedEmail. This may indicate the bulk call is fanned out into individual templated sends internally, with DefaultTags not carried across that boundary. Confirmation on whether this is expected for bulk sends would help narrow the cause.
The documentation does not state the precedence between DefaultTags and ReplacementTags, or whether either propagates to configuration-set event destinations, so the observed behaviour cannot be predicted from the API reference.
Additional Information/Context
Questions
- Did the handling of
DefaultTagsinSendBulkTemplatedEmailfan-out change on or around 27 Aug 2026? - Is this a regression under repair, or an intentional behaviour change? This determines whether
DefaultTagscan be relied on going forward. - Is the
ses:operationvalue ofSendTemplatedEmailexpected for bulk sends, rather thanSendBulkTemplatedEmail?
We have a workaround in place and are not blocked. We are requesting an RCA rather than a mitigation.
SDK version used
boto3 1.26
Environment details (OS name and version, etc.)
- boto3: 1.26 (pinned, unchanged since June 2023 — the behaviour change occurred with no SDK update) - Python: 3.11 - OS: Linux (Docker) - Region: ap-south-1 - API: SES v1 (
sesclient, notsesv2) - Event destination: SNS, attached via a configuration set set as the identity default
Source: boto/boto3