
Twilio Sendgrid Suppressions
- 102 installs
- 26 repo stars
- Updated July 29, 2026
- twilio/ai
How to query, interpret, and safely manage SendGrid email suppressions (bounces, blocks, spam reports, unsubscribes) via API to debug delivery issues and implement compliant unsubscribe flows.
About
SendGrid suppressions protect sender reputation by automatically preventing delivery to addresses that have bounced, reported spam, or unsubscribed. This skill covers seven suppression types (hard bounces, soft bounces, blocks, spam reports, invalid emails, global unsubscribes, and group unsubscribes), when and how to safely remove them, and category-based unsubscribe management via ASM groups. Hard bounces immediately suppress; soft bounces trigger automatic retries. Deletion allows re-sending but risks reputation damage if the underlying issue persists. ASM groups enable recipients to unsubscribe from specific categories rather than all email. Auto-purge and address allow lists provide configuration options but require careful consideration to avoid bypassing legitimate suppressions.
- Manage 7 suppression types via REST APIs with hard/soft bounce distinction
- ASM suppression groups enable category-based unsubscribe flows without global blocks
- Safe removal requires business reason confirmation to protect sender reputation
- Auto-purge and allow lists available but dangerous if misused
- Soft bounces auto-retry; hard bounces immediately suppress and damage reputation if re-sent
Twilio Sendgrid Suppressions by the numbers
- 102 all-time installs (skills.sh)
- +6 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #2,990 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
twilio-sendgrid-suppressions capabilities & compatibility
- Capabilities
- query suppression lists by type (bounces, blocks · remove individual suppression records with busin · create and manage asm suppression groups · view group level unsubscribe status · configure auto purge schedules and address allow · diagnose delivery failures via suppression statu · implement category based unsubscribe flows
- Use cases
- debugging · email · api development
- Pricing
- Bring your own API key
What twilio-sendgrid-suppressions says it does
Suppressions prevent SendGrid from sending to addresses that have bounced, reported spam, or unsubscribed. They protect your sender reputation but can also block legitimate re-sends if not managed cor
Hard bounces (permanent) immediately suppress the address. Soft bounces (temporary) trigger retries — SendGrid will retry delivery before eventually suppressing if the issue persists.
Deleting suppression records (especially spam reports) allows re-sending to addresses that previously complained. Always confirm with the user before removal and document the business reason.
npx skills add https://github.com/twilio/ai --skill twilio-sendgrid-suppressionsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 102 |
|---|---|
| repo stars | ★ 26 |
| Last updated | July 29, 2026 |
| Repository | twilio/ai ↗ |
What it does
Debug SendGrid delivery failures and manage email suppressions (bounces, blocks, spam reports, unsubscribes) via API.
Who is it for?
Debugging email delivery issues, implementing unsubscribe workflows, managing sender reputation, building category-based preference centers, remediating bounce/block/spam-report lists.
Skip if: Mass email campaigns (use Mail Send skill), SMTP configuration, Twilio Email API (comms.twilio.com), or bypassing suppressions without sender verification.
When should I use this skill?
Emails are not delivering, building unsubscribe UX, implementing category-based preferences, auditing sender reputation, or removing suppression records with user consent.
What you get
Developers can confidently diagnose SendGrid delivery failures, remove suppressions with business justification, and build unsubscribe flows using ASM groups without damaging sender reputation.
- Python code to list suppressions by type
- Python code to remove individual suppression records
- ASM group creation and configuration
By the numbers
- 7 suppression types managed via REST API
- Hard bounces suppress immediately; soft bounces retry before suppression
- Auto-purge configurable from 1 to 3,650 days
Files
Overview
Suppressions prevent SendGrid from sending to addresses that have bounced, reported spam, or unsubscribed. They protect your sender reputation but can also block legitimate re-sends if not managed correctly.
---
Suppression Types
| Type | Endpoint | What triggers it | Auto-added? |
|---|---|---|---|
| Hard Bounces | /v3/suppression/bounces | Permanent delivery failure (invalid mailbox, domain doesn't exist) | Yes |
| Soft Bounces | No management API — automatic retry only | Temporary failure (mailbox full, server down) — SendGrid auto-retries before suppressing | Yes, after repeated failures |
| Blocks | /v3/suppression/blocks | Temporary rejection by receiving server (reputation, policy, content) | Yes |
| Spam Reports | /v3/suppression/spam_reports | Recipient marks email as spam | Yes |
| Invalid Emails | /v3/suppression/invalid_emails | Malformed email address | Yes |
| Global Unsubscribes | /v3/suppression/unsubscribes | Recipient unsubscribes from all email | Yes |
| Group Unsubscribes (ASM) | /v3/asm/groups/{id}/suppressions | Recipient unsubscribes from a category | Yes |
Hard vs Soft bounces: Hard bounces (permanent) immediately suppress the address. Soft bounces (temporary) trigger retries — SendGrid will retry delivery before eventually suppressing if the issue persists.
---
Managing Suppressions
List bounces (Python)
import os, requests
headers = {"Authorization": f"Bearer {os.environ['SENDGRID_API_KEY']}"}
response = requests.get("https://api.sendgrid.com/v3/suppression/bounces", headers=headers)
for bounce in response.json():
print(f"{bounce['email']}: {bounce.get('reason', 'unknown')}")Remove a bounce (Python)
requests.delete(f"https://api.sendgrid.com/v3/suppression/bounces/{email}", headers=headers)Caution: Deleting suppression records (especially spam reports) allows re-sending to addresses that previously complained. Always confirm with the user before removal and document the business reason.
---
ASM Suppression Groups
Use suppression groups for category-based unsubscribes (e.g., "Marketing", "Transactional", "Product Updates"). Recipients can unsubscribe from one category without being suppressed from all email.
Create a group:
requests.post("https://api.sendgrid.com/v3/asm/groups",
headers={**headers, "Content-Type": "application/json"},
json={"name": "Marketing Emails", "description": "Promotional offers and updates"})Send with a suppression group: Include asm.group_id in your Mail Send request. Recipients see a "manage preferences" link instead of a global unsubscribe.
---
Auto-Purge (Bounce & Block Cleanup)
Configure automatic purge schedules in Console > Settings > Mail Settings > Purge Bounces & Blocks:
- Soft Bounces: Auto-purge after N days (1–3,650 days)
- Hard Bounces: Auto-purge after N days (1–3,650 days)
Caution: Enabling auto-purge without a business reason allows re-sending to previously bounced addresses, which damages sender reputation. Do not use as a workaround to force delivery.
---
Address Allow List
Console > Settings > Mail Settings > Address Allow List allows specific email addresses or domains to bypass all suppressions. Useful for internal testing addresses.
Use with extreme caution — never allowlist domains you don't control (e.g., gmail.com), and never use to bypass spam report suppressions.
---
CANNOT
- Suppressions are global by default — A bounce or spam report on ANY email suppresses the address from ALL future sends. Use ASM groups to scope unsubscribes.
- Removing a suppression does not fix the underlying issue — Deleting a bounce record lets you retry, but the mailbox is likely still invalid. Re-sending to hard bounces damages sender reputation.
- Cannot prevent spam report suppressions — When a recipient marks you as spam, the suppression is automatic and cannot be overridden.
- Cannot bulk-remove suppressions by domain — Must remove individually by email address via API.
---
Next Steps
- Send email:
twilio-sendgrid-email-send - Delivery tracking:
twilio-sendgrid-webhooks - Account setup:
twilio-sendgrid-account-setup
interface:
display_name: "SendGrid Suppressions"
short_description: "Manage SendGrid email suppressions: bounces, blocks, spam reports, invalid emails, and unsubscribe groups."
icon_small: "./assets/icon-small.png"
icon_large: "./assets/icon-large.png"
brand_color: "#EF223A"
default_prompt: "How do I manage email bounces and unsubscribes in SendGrid?"
policy:
allow_implicit_invocation: true
Related skills
FAQ
What is the difference between a hard bounce and a soft bounce?
Hard bounces are permanent delivery failures (invalid mailbox, domain doesn't exist) and immediately suppress the address. Soft bounces are temporary failures (mailbox full, server down) and trigger automatic retries by SendGrid before eventually suppressing if the issue persists
Can I remove a suppression record and resend to that address?
Yes, but only with documented business reason and user consent. Deletion via DELETE /v3/suppression/bounces/{email} allows retry, but if the underlying issue (invalid mailbox, spam complaint) still exists, re-sending damages sender reputation. Never bypass spam report suppression
What are ASM suppression groups and when should I use them?
ASM groups enable category-based unsubscribes (e.g., Marketing, Transactional, Product Updates). Recipients unsubscribe from one category without being suppressed from all email. Include asm.group_id in Mail Send requests. Use when you have multiple email categories and want fine