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
Create one
curl https://api.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": "[email protected]",
"to": ["[email protected]"],
"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://api.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://api.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://api.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
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 account
- 5 event destinations per configuration set
- Names are unique per account, case-sensitive, alphanumeric +
_+-, 1-256 chars