Skip to content
Splashify Pro
Email docsEmail

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

bash
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

json
{
  "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:

javascript
// 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:

bash
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:

bash
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

bash
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