Skip to main content

Suppression Lists

Suppression lists prevent sending to addresses that should not receive messages. You can manage suppressions through the Dashboard or the API.

Types

ReasonDescription
Hard BounceAddress that permanently failed delivery
ComplaintUser marked email as spam
UnsubscribeUser opted out via unsubscribe link
ManualAddress manually added by your team

Viewing Suppressions

Via Dashboard

  1. Navigate to Suppression List in the sidebar
  2. Browse all suppressed addresses with search and filtering
  3. Filter by suppression reason (bounce, complaint, unsubscribe, manual)
  4. View the date each address was added

Via API

curl "https://api.zyphr.dev/v1/suppressions?page=1&per_page=25" \
-H "X-API-Key: zy_live_your_key"
const { data: suppressions } = await zyphr.suppressions.list({
page: 1,
perPage: 25,
});

Adding Suppressions

Via Dashboard

  1. Navigate to Suppression List in the sidebar
  2. Click Add Suppression
  3. Enter the email address
  4. Select the reason (manual, bounce, complaint, unsubscribe)
  5. Optionally add a note
  6. Click Add

For bulk additions, use the Import button to upload a CSV file of email addresses.

Via API

# Add a single suppression
curl -X POST https://api.zyphr.dev/v1/suppressions \
-H "X-API-Key: zy_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"reason": "manual"
}'

# Bulk add suppressions
curl -X POST https://api.zyphr.dev/v1/suppressions/bulk \
-H "X-API-Key: zy_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"emails": [
{ "email": "user1@example.com", "reason": "manual" },
{ "email": "user2@example.com", "reason": "manual" }
]
}'
// Add a single suppression
await zyphr.suppressions.add({
email: 'user@example.com',
reason: 'manual',
});

// Bulk add
await zyphr.suppressions.addBulk({
emails: [
{ email: 'user1@example.com', reason: 'manual' },
{ email: 'user2@example.com', reason: 'manual' },
],
});

Checking Suppression Status

Via API

curl https://api.zyphr.dev/v1/suppressions?email=user@example.com \
-H "X-API-Key: zy_live_your_key"
const result = await zyphr.suppressions.check({
email: 'user@example.com',
});

if (result.suppressed) {
console.log(`Suppressed: ${result.reason}`);
}

Removing Suppressions

Via Dashboard

  1. Navigate to Suppression List
  2. Find the email address (use search)
  3. Click the Remove button on the entry
  4. Confirm the removal

Via API

curl -X DELETE https://api.zyphr.dev/v1/suppressions/user@example.com \
-H "X-API-Key: zy_live_your_key"
await zyphr.suppressions.remove({
email: 'user@example.com',
});
caution

Removing an address from the suppression list means they will start receiving messages again. For hard bounces, the address may still fail delivery. For complaint removals, monitor closely to protect your sending reputation.

Automatic Handling

Zyphr automatically adds addresses to suppression lists when:

  • Hard bounce received — Address is permanently undeliverable
  • Spam complaint received — User marked email as spam
  • User clicks unsubscribe link — User opts out of emails

These automatic suppressions protect your sending reputation and ensure compliance with email best practices.