If your business relies on email — order confirmations, password resets, newsletters, or transactional alerts — you need a sending service that’s reliable, scalable, and won’t land your messages in the spam folder. Amazon Simple Email Service (SES) is one of the most cost-effective and trusted options available, but its setup process trips up a lot of first-time users.
The good news: you don’t need to write a single line of code to get SES properly configured. This guide walks through the entire setup process using only the AWS Console, so you can get your account ready for reliable email delivery.
What Is AWS SES, and Why Use It?
Amazon SES is a cloud-based email sending and receiving service built for high-volume, reliable delivery. Companies use it to send transactional emails (receipts, notifications, password resets) and marketing emails at a fraction of the cost of dedicated email marketing platforms.
The tradeoff is that SES gives you raw infrastructure rather than a polished dashboard experience. That means the setup requires a bit more attention to detail — but once it’s done, you get excellent deliverability and very low cost per email.
Step 1: Create or Log Into Your AWS Account
If you don’t already have one, sign up at aws.amazon.com. AWS requires a credit card on file even if you plan to stay within the free tier, so have that ready.
Once logged in, use the search bar at the top of the AWS Console and type “SES” to navigate to the Simple Email Service dashboard.
Tip: Pay attention to the AWS region selector in the top-right corner. SES is region-specific, meaning your setup (verified domains, sending limits, etc.) applies only to the region you’re currently working in. Popular choices are US East (N. Virginia), US West (Oregon), and EU (Ireland). Pick a region close to your users or your other AWS infrastructure, and stick with it.
Step 2: Verify Your Domain
Before you can send a single email, SES needs proof that you actually own the domain you want to send from. This is both a security requirement and a spam-prevention measure.
- In the SES Console, go to Configuration > Verified identities.
- Click Create identity.
- Choose Domain as the identity type (rather than a single email address — verifying the whole domain lets you send from any address @yourdomain.com, like hello@ or support@).
- Enter your domain name.
- Enable Easy DKIM (this is on by default and is important — more on this below).
SES will then generate a set of DNS records you need to add to your domain’s DNS settings.
Step 3: Add DNS Records
This is the step that trips up most beginners, but it doesn’t require coding — just access to your domain registrar or DNS host (GoDaddy, Namecheap, Cloudflare, Route 53, etc.).
SES will give you three types of records to add:
- DKIM records (CNAME): These cryptographically sign your outgoing emails, proving they haven’t been tampered with and that they genuinely came from your domain. SES typically provides three CNAME records for this.
- SPF record (TXT): This tells receiving mail servers which servers are authorised to send email on behalf of your domain.
- DMARC record (TXT, optional but recommended): This tells receiving servers what to do if an email fails SPF or DKIM checks (reject, quarantine, or allow), and can send you reports on spoofing attempts.
Log into your DNS provider, and add each record exactly as SES displays it — same type, same host/name field, same value. DNS changes can take anywhere from a few minutes to 48 hours to propagate, though it’s usually much faster.
Once propagated, return to the SES console — your domain’s status will automatically update from “Pending” to “Verified.”
Step 4: Understand the Sandbox (and Request Production Access)
By default, every new SES account starts in the sandbox environment. This is a safety measure to prevent spam. While in the sandbox, you can only:
- Send to verified email addresses (you must manually verify any recipient)
- Send a maximum of 200 emails per 24-hour period
- Send at a rate of 1 email per second
To send to real customers at scale, you need to request production access:
- Go to the Account dashboard in the SES Console.
- Click Request production access.
- Fill out the form, which asks about:
- Your use case (transactional vs. marketing)
- How you collect recipient consent (this matters — AWS wants to know you’re not sending to purchased lists)
- How you handle bounces and complaints
- A sample email or website URL
AWS typically reviews and responds within 24 hours. Be thorough and honest in this form — vague answers are the most common reason for rejection or delayed approval.
Step 5: Set Up Bounce and Complaint Handling
Reliable delivery isn’t just about getting approved — it’s about staying in good standing. Email providers (Gmail, Outlook, Yahoo) watch your bounce rate and spam complaint rate closely. If they get too high, your emails start getting filtered or blocked, and AWS itself may suspend your sending privileges.
SES makes this easy to monitor without writing code:
- Go to Configuration Sets in the SES Console and create a new configuration set.
- Under Event destinations, set up notifications for bounces and complaints.
- The simplest no-code option is routing these events to an SNS (Simple Notification Service) topic, which can then email you directly whenever a bounce or complaint occurs.
Keep an eye on your Reputation dashboard (found in the SES console) regularly. AWS shows your bounce rate, complaint rate, and any account health notifications directly there.
Step 6: Verify Individual Sender Addresses (If Needed)
If you’re not ready to verify a whole domain — say, you’re just testing things out — you can verify individual email addresses instead:
- Go to Verified identities > Create identity.
- Select Email address.
- Enter the address and check your inbox for a confirmation link from AWS.
- Click the link, and that address is now ready to send/receive test emails.
This is a good way to experiment before committing to full domain verification.
Step 7: Test Your Setup
Before connecting SES to any application, send yourself a test email directly from the console:
- Go to Verified identities, select your verified domain or email.
- Click Send test email.
- Choose a template (or use the default), fill in the subject and body, and send.
- Check your inbox — and just as importantly, check whether it landed in your primary inbox or your spam folder.
If it lands in spam, double-check that your SPF, DKIM, and DMARC records are all correctly verified — this is the most common cause.
A Few Best Practices Going Forward
- Warm up your sending gradually. Even after production access, avoid blasting thousands of emails on day one. Ramp up volume over 1–2 weeks so your domain builds a positive reputation with mailbox providers.
- Set up a dedicated subdomain for sending (e.g., mail.yourdomain.com) to isolate your sending reputation from your main domain, which protects your primary domain if something goes wrong.
- Regularly review your Reputation dashboard. Catching a rising complaint rate early prevents suspension.
- Add a DMARC policy once things are stable, moving from “monitor only” (p=none) to a stricter enforcement policy over time.
Wrapping Up
Setting up AWS SES doesn’t require any coding — just careful, methodical work in the AWS Console and your DNS provider’s dashboard. The core steps are: verify your domain, add the right DNS records, move out of the sandbox, and set up monitoring for bounces and complaints. Once that foundation is in place, you’ll have a highly reliable, low-cost email sending infrastructure ready to support your application or business — no developer required for the setup itself (though you will eventually need an API call or SMTP integration when you’re ready to send emails programmatically).