Who is this for?
This setup is intended for:- Teams running self‑hosted Chatwoot.
- Users who want to use Amazon SES to receive inbound emails.
- Workspaces that want to configure forwarding rules rather than using IMAP/OAuth connections to bring emails into Chatwoot.
Architecture
At a high level, the flow looks like this:
- An email is sent to your domain (e.g., support@yourdomain.com).
- Amazon SES receives the email.
- SES forwards the message to an SNS Topic.
- SNS publishes the message payload to a Chatwoot email ingress endpoint.
- Chatwoot processes the payload and creates/updates a conversation.
Prerequisites
Before you begin, you should have:- Access to AWS SES, SNS, Route53 (or your DNS provider).
- A self‑hosted Chatwoot installation reachable over HTTPS.
Step 1: Verify Your Domain in Amazon SES
Amazon SES must verify that you own the domain before it can receive mail.- Log in to AWS Console → SES → Identities.
- Click Create Identity.
- Choose Domain.
- Enter the domain you want to receive email for.
- Amazon SES will show DNS records you must add:
- DKIM (CNAME) records
- SPF (TXT) record
- DMARC (TXT) record (optional but recommended)
- Add all records to your DNS provider.
- Wait for the identity status to become verified.
Step 2: Configure MX Records to Route Email to SES
SES must become the inbound email handler for your domain.- In SES, open Configuration → Email Receiving.
- Locate the MX record value for your region (example: 10 inbound-smtp.us-east-1.amazonaws.com).
- Go to your DNS provider.
- Add an MX record:
- Priority: 10
- Value:
inbound-smtp.<region>.amazonaws.com
Step 3: Configure SES to Publish Inbound Emails to SNS
Chatwoot reads incoming messages via SNS notifications. Go to SES → Email Receiving → Rule Sets.

- Recipients → Add your inbound email (e.g. support@yourdomain.com) or ignore this field since it would forward every email to SNS (which is better if you have more than one email channel)
- Actions → Publish to Amazon SNS topic
- Select your SNS topic.
- Make sure that you select the Encoding as UTF-8.

Step 4: Configure Chatwoot Environment Variables
Before creating the SNS subscription, you must configure two environment variables in your Chatwoot installation:Step 5: Create SNS Subscription to Forward to Chatwoot
SNS needs to send the email payload directly to Chatwoot. Go to SNS → Topics. Open the topic you created. Click Create Subscription.
- Protocol: HTTPS
- Endpoint: Your Chatwoot email ingress endpoint
https://chatwoot.example.com/rails/action_mailbox/ses/inbound_emails

Step 6: Add Email Channel in Chatwoot
- Go to your Chatwoot account. Settings → Inboxes → Add Inbox.
- Choose Email -> Other Providers.
- Use any email address from the domain that is configured in SES.
Troubleshooting
Emails not appearing in Chatwoot:- Check SES → SNS → Subscription delivery logs.
- Check SNS subscription status.
- Check Chatwoot logs for any errors.
- Ensure Chatwoot server is reachable publicly.
- Check if MX records propagated.
- Ensure Chatwoot server is reachable publicly.
- Verify system time and SSL certificates on your server. If you are testing this in local environment, you can use tools like ngrok to expose your Chatwoot server to the internet. Make sure that you are using
openssl<=3.5.

