Setup guide
Connect your SES in about five minutes
Two modes: let TrackSES wire everything automatically with a scoped IAM user key, or provision the AWS resources yourself and share nothing. Either way, deliverability monitoring works the moment you connect.
Paste a scoped AWS IAM user access key and TrackSES handles the rest. It creates a dedicated SNS topic and SES configuration set, then points your connected identities at them in seconds. One SES region per project, so pick the region your sending runs in.
Create a scoped IAM user
In the AWS IAM console, create a new user (not a role) and attach the least-privilege policy below. TrackSES is read-only on your data; the only things it writes are its own SNS event destination trackses-* and a default configuration set on the identities you connect; your other destinations are never touched.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "TrackSESReadDomains", /* read-only on your data */
"Effect": "Allow",
"Action": [
"ses:ListEmailIdentities", "ses:GetEmailIdentity",
"ses:ListConfigurationSets", "ses:GetConfigurationSetEventDestinations",
"ses:GetIdentityNotificationAttributes"
],
"Resource": "*"
},
{
"Sid": "TrackSESConfigSets",
"Effect": "Allow",
"Action": [ "ses:CreateConfigurationSet", "ses:DeleteConfigurationSet" ],
"Resource": "arn:aws:ses:*:*:configuration-set/trackses-*"
},
{
"Sid": "TrackSESWireEventDestination", /* add/remove only OUR destination */
"Effect": "Allow",
"Action": [
"ses:CreateConfigurationSetEventDestination",
"ses:UpdateConfigurationSetEventDestination",
"ses:DeleteConfigurationSetEventDestination"
],
"Resource": "arn:aws:ses:*:*:configuration-set/*"
},
{
"Sid": "TrackSESAttachConfigSet",
"Effect": "Allow",
"Action": [ "ses:PutEmailIdentityConfigurationSetAttributes" ],
"Resource": [ "arn:aws:ses:*:*:identity/*", "arn:aws:ses:*:*:configuration-set/*" ]
},
{
"Sid": "TrackSESEventPipe",
"Effect": "Allow",
"Action": [
"sns:CreateTopic", "sns:Subscribe", "sns:Unsubscribe",
"sns:SetTopicAttributes", "sns:GetTopicAttributes",
"sns:ListSubscriptionsByTopic", "sns:DeleteTopic"
],
"Resource": "arn:aws:sns:*:*:trackses-*"
},
{
"Sid": "TrackSESListTopics", /* list only, cleanup on disconnect */
"Effect": "Allow",
"Action": [ "sns:ListTopics" ],
"Resource": "*"
},
{
"Sid": "TrackSESIdentityNotifications", /* optional catch-all */
"Effect": "Allow",
"Action": [ "ses:SetIdentityNotificationTopic" ],
"Resource": "arn:aws:ses:*:*:identity/*"
}
] /* never ses:Send* */
}Paste the access key into TrackSES
Copy the access key ID and secret. In your TrackSES project settings, paste them under AWS credentials. Keys are stored AES-256-GCM encrypted and never logged.
TrackSES wires everything
TrackSES creates the SNS topic and its configuration set, subscribes the webhook, and adds its event destination to your connected identities, without removing any of your existing destinations.
Live events start flowing
Deliverability events (deliveries, bounces and complaints) stream into your dashboard the moment you connect. Open and click tracking is supported too. Amazon SES only adds it when an email references a configuration set, so TrackSES guides you to switch it on.
IAM permission scope
Exactly what the key can access
In Automatic mode the IAM user receives a single least-privilege inline policy. SES read access is account-wide so TrackSES can list your identities and configuration sets; everything it creates is prefixed trackses-* . The only writes on your resources are adding TrackSES's own event destination and a default configuration set, never ses:Send*.
arn:aws:sns:*:*:trackses-*sns:CreateTopicsns:Subscribesns:Unsubscribesns:SetTopicAttributessns:GetTopicAttributessns:ListSubscriptionsByTopicsns:ListTopicssns:DeleteTopicread-only + our event destinationses:ListEmailIdentitiesses:GetEmailIdentityses:ListConfigurationSetsses:GetConfigurationSetEventDestinationsses:GetIdentityNotificationAttributesses:CreateConfigurationSetses:DeleteConfigurationSetses:CreateConfigurationSetEventDestinationses:UpdateConfigurationSetEventDestinationses:DeleteConfigurationSetEventDestinationses:PutEmailIdentityConfigurationSetAttributesses:SetIdentityNotificationTopicin either modeses:Send*ses:SendEmailses:SendRawEmailses:SendBulkEmailses:UpdateAccountSendingEnabledses:DeleteIdentitySecurity model