Configuration Sets
A configuration set is a logical bundle of sends that share event-destination wiring + suppression behaviour. Modelled directly on AWS SES configuration sets.
If you’re shipping email for a single product, you might never create a config set — defaults work fine. But the moment you have:
- Multiple downstream tenants (one for each customer)
- Multiple email types (transactional vs marketing)
- Distinct webhook destinations per use case
…config sets become essential.
What a config set carries
| Field | Purpose |
|---|---|
name | Human-friendly identifier you reference on /send |
description | Free-text notes |
customer_id | Optional — partner’s downstream end-customer attribution |
sending_enabled | Kill switch — disable sends through this set without deleting it |
reputation_tracking_enabled | Whether bounces/complaints from this set count toward your reputation rolling window |
suppression_options | Which categories auto-add to suppression list: NONE / BOUNCE / COMPLAINT / BOUNCE_AND_COMPLAINT |
tags | Arbitrary key-value pairs that ship in the webhook mail.tags field |
Create one
curl https://apis.splashifypro.com/api/v1/partner/email/configuration-sets \
-H "Authorization: Bearer $SPLASHIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "production",
"description": "Production transactional sends",
"suppression_options": "BOUNCE_AND_COMPLAINT",
"reputation_tracking_enabled": true,
"tags": {
"env": "prod",
"team": "platform"
}
}'Reference on send
{
"from": "alerts@yourcompany.com",
"to": ["customer@example.com"],
"subject": "Payment received",
"html_body": "...",
"configuration_set_name": "production"
}Events from this send fan out to every event destination attached
to the production config set.
Multi-tenant pattern
If you’re running a SaaS that sends email on behalf of customers, create one config set per customer:
// On customer signup:
const cfg = await client.configurationSets.create({
name: `customer_${customer.id}`,
customer_id: customer.id,
description: `Email sends for ${customer.name}`,
tags: { customer_id: customer.id, plan: customer.plan },
});
// On send:
await client.emails.send({
from: customer.fromAddress,
to: [recipient],
configuration_set_name: `customer_${customer.id}`,
...
});Now per-customer stats roll up cleanly via:
curl 'https://apis.splashifypro.com/api/v1/partner/email/stats?config_set_id=...' \
-H "Authorization: Bearer $SPLASHIFY_API_KEY"And per-customer event destinations let each customer have their own webhook URL.
Event destinations
A config set without event destinations still records events
internally — they show up in GET /events and GET /stats — but
nothing fans out to your servers.
Add a webhook destination:
curl https://apis.splashifypro.com/api/v1/partner/email/configuration-sets/$CFG/event-destinations \
-H "Authorization: Bearer $SPLASHIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "production-webhook",
"destination_type": "WEBHOOK",
"webhook_url": "https://yourapp.com/webhooks/email",
"webhook_secret": "...",
"matching_event_types": ["send", "delivered", "bounce", "complaint", "open", "click"]
}'Multiple destinations per set are fine — useful for routing engagement events to one URL and deliverability events to another.
Disabling a config set
curl -X PATCH https://apis.splashifypro.com/api/v1/partner/email/configuration-sets/$CFG \
-H "Authorization: Bearer $SPLASHIFY_API_KEY" \
-d '{"sending_enabled": false}'Sends with configuration_set_name matching this set get
status: rejected until re-enabled. In-flight sends complete.
Suppression options
| Value | Behaviour |
|---|---|
NONE | Auto-suppression OFF for this set’s sends |
BOUNCE | Hard bounces auto-add to suppression list |
COMPLAINT | Complaints auto-add to suppression list |
BOUNCE_AND_COMPLAINT | Both auto-add (default + recommended) |
Manual suppressions via PUT /suppression/:email always go to the
account-wide list regardless of config-set settings.
Reputation tracking
When reputation_tracking_enabled: false, bounces + complaints
from this set’s sends are excluded from your account’s rolling
reputation calculation. Useful for:
- Test campaigns where you knowingly send to low-quality addresses
- Risk-isolated experiments
Defaults to true. Don’t turn this off unless you really mean it.
Limits
- 100 configuration sets per partner account
- 5 event destinations per configuration set
- Names are unique per partner, case-sensitive, alphanumeric +
_+-, 1-256 chars