Skip to Content
Knowledge BaseConceptsConfiguration Sets

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

FieldPurpose
nameHuman-friendly identifier you reference on /send
descriptionFree-text notes
customer_idOptional — partner’s downstream end-customer attribution
sending_enabledKill switch — disable sends through this set without deleting it
reputation_tracking_enabledWhether bounces/complaints from this set count toward your reputation rolling window
suppression_optionsWhich categories auto-add to suppression list: NONE / BOUNCE / COMPLAINT / BOUNCE_AND_COMPLAINT
tagsArbitrary 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

ValueBehaviour
NONEAuto-suppression OFF for this set’s sends
BOUNCEHard bounces auto-add to suppression list
COMPLAINTComplaints auto-add to suppression list
BOUNCE_AND_COMPLAINTBoth 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