This guide walks you through setting up Amazon Simple Email Service (SES) as your email provider in CeramicCRM. After completing these steps, you will be able to send campaigns and transactional emails through your own verified domain.
A Configuration Set tells SES to notify CeramicCRM when emails are delivered, bounced, or marked as spam. Without this, your campaign analytics will not show delivery metrics. This step involves three AWS services: SES (configuration set), SNS (notification relay), and your CeramicCRM server (webhook receiver).
Amazon SNS (Simple Notification Service) acts as the relay between SES and CeramicCRM. SES publishes events to an SNS topic, and SNS forwards them to your webhook URL.
Open the SNS Console (search "SNS" in the AWS services search bar)
Make sure you are in the same region as your SES configuration
In the left sidebar, click Topics
Click Create topic
Select Standard type (not FIFO)
Enter the name: ceramiccrm-ses-events
Expand Access policy and keep the default (only the topic owner can publish)
Click Create topic
Copy the Topic ARN shown at the top — you will need it in the next steps. It looks like: arn:aws:sns:eu-north-1:123456789012:ceramiccrm-ses-events
When you create the subscription, SNS sends a confirmation request to your CeramicCRM webhook endpoint.
If CeramicCRM is running and publicly accessible, it automatically confirms the subscription. The status changes from Pending confirmation to Confirmed within a few seconds.
If the status stays Pending confirmation:
Check that your CeramicCRM server is running and accessible from the internet
Check that the URL is correct (no typos, includes /webhooks/email/ses)
Check your server logs for the confirmation request
You can click Request confirmation to resend
The subscription must show Confirmed before events will be delivered.
SES sends email ↓SES publishes event to Configuration Set ↓Configuration Set routes to SNS Topic (ceramiccrm-ses-events) ↓SNS forwards to HTTPS Subscription ↓CeramicCRM webhook (/webhooks/email/ses) receives and processes event ↓Event stored in ClickHouse → visible in Message Logs and Campaign Analytics
After creating a channel with a Sending Domain, you will see a DNS Authentication panel with a CERAMICTXT record showing "Pending". This is CeramicCRM's own domain verification — separate from the SES verification you did in Step 1.
To verify:
On the channel detail page, find the DNS Authentication section
Note the record name and value shown (or click Verify to see them):
Record Type: TXT
Record Name: _ceramic.yourdomain.com
Record Value: pl-verify=<your-verification-token>
Go to your DNS provider (Cloudflare, Route 53, GoDaddy, Namecheap, etc.)
Add a new TXT record:
Field
Value
Type
TXT
Name / Host
_ceramic.yourdomain.com
Value
pl-verify=<token from CeramicCRM>
TTL
Auto or 3600
Wait for DNS propagation (usually a few minutes, can take up to 48 hours)
Return to CeramicCRM and click Verify
The status should change from "Pending" to "Verified"
You can copy the exact record name and value from the instructions panel in CeramicCRM — click "How to verify your domain" below the pending record for step-by-step guidance with copy buttons.