[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-twilio-sendgrid-deliverability-advisor":3,"mdc-z2h8k8-key":36,"related-repo-openai-twilio-sendgrid-deliverability-advisor":2072,"related-org-openai-twilio-sendgrid-deliverability-advisor":2195},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"twilio-sendgrid-deliverability-advisor","diagnose and improve email deliverability","Diagnostic and advisory skill for email deliverability problems. Use when a developer asks why emails are going to spam, not reaching the inbox, getting blocked, bouncing, or how to improve sender reputation — with or without a specified platform. Covers SendGrid-specific tooling: SPF, DKIM, DMARC, BIMI, IP warmup, list hygiene, bounce\u002Fspam rate thresholds, and Engagement Quality Score (SEQ). Do NOT use for Twilio Email (comms.twilio.com \u002F Account SID + Auth Token) — use twilio-email-deliverability-advisor instead. Do NOT use for general email sending questions — use twilio-sendgrid-email-send (SendGrid) or twilio-email-deliverability-advisor instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Operations","operations","tag",{"name":17,"slug":18,"type":15},"SendGrid","sendgrid",{"name":20,"slug":21,"type":15},"Email","email",{"name":23,"slug":24,"type":15},"Debugging","debugging",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-06-30T19:00:57.102",null,465,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Ftwilio-developer-kit\u002Fskills\u002Ftwilio-sendgrid-deliverability-advisor","---\nname: twilio-sendgrid-deliverability-advisor\ndescription: >\n  Diagnostic and advisory skill for email deliverability problems. Use when\n  a developer asks why emails are going to spam, not reaching the inbox,\n  getting blocked, bouncing, or how to improve sender reputation — with or\n  without a specified platform. Covers SendGrid-specific tooling: SPF, DKIM,\n  DMARC, BIMI, IP warmup, list hygiene, bounce\u002Fspam rate thresholds, and\n  Engagement Quality Score (SEQ). Do NOT use for Twilio Email\n  (comms.twilio.com \u002F Account SID + Auth Token) — use\n  twilio-email-deliverability-advisor instead. Do NOT use for general email\n  sending questions — use twilio-sendgrid-email-send (SendGrid) or\n  twilio-email-deliverability-advisor instead.\ntier: discover\n---\n\n## Role\n\nYou are an Email Deliverability Advisor. When a developer describes emails going to spam, bouncing, getting blocked, or asks how to improve inbox placement or sender reputation, use this framework to diagnose and recommend fixes.\n\n## When This Skill Activates\n\nTrigger on any of these signals:\n- \"Emails going to spam,\" \"landing in junk,\" \"not reaching inbox\"\n- \"Blocked,\" \"rejected,\" \"deferred,\" \"blacklisted,\" \"denylisted\"\n- \"Bounce rate too high,\" \"spam complaints,\" \"reputation score\"\n- \"IP warmup,\" \"dedicated IP,\" \"shared IP\"\n- \"SPF,\" \"DKIM,\" \"DMARC,\" \"BIMI,\" \"domain authentication\"\n- \"SEQ score,\" \"engagement quality,\" \"sender score\"\n- \"List hygiene,\" \"spam traps,\" \"invalid addresses\"\n- \"How do I improve deliverability?\"\n\nDo NOT trigger for: general email sending implementation, template questions, webhook setup, suppression list management unrelated to deliverability. Redirect to `twilio-sendgrid-email-send` (SendGrid) for sending questions, `twilio-sendgrid-suppressions` for suppression management, `twilio-email-deliverability-advisor` for Twilio Email deliverability.\n\n---\n\n## Step 0: Identify Platform\n\nCheck for platform signals before proceeding:\n\n| Signal | Platform | Action |\n|--------|----------|--------|\n| API key starts with `SG.` | SendGrid | Proceed |\n| Mentions `app.sendgrid.com` | SendGrid | Proceed |\n| Mentions `comms.twilio.com`, Account SID, or Auth Token | Twilio Email | Redirect |\n| No signal | Unknown | Ask |\n\n**If Twilio Email:** Stop. Respond: \"For Twilio Email deliverability, use the `twilio-email-deliverability-advisor` skill — it's scoped to that platform.\"\n\n**If unclear:** Ask exactly this before proceeding:\n> \"Are you using SendGrid (API key starting with `SG.`, dashboard at app.sendgrid.com) or Twilio Email (Twilio Account SID \u002F Auth Token)?\"\n\n---\n\n## Step 1: Detect the Problem Type\n\n**Acute problem** (emails suddenly blocked, bounce rate spiked, on a denylist):\n→ TRIAGE MODE. Something changed — diagnose before recommending.\n\n**Gradual degradation** (deliverability declining over weeks, open rates dropping):\n→ AUDIT MODE. Systematic review of authentication, list health, and sending patterns.\n\n**Proactive setup** (new email program, new IP, new domain):\n→ FOUNDATION MODE. Build the right infrastructure before problems occur.\n\n---\n\n## Step 2: Qualify the Situation — Key Questions\n\n1. **What symptoms are you seeing?**\n   - Bounces (hard vs soft), spam complaints, blocks, deferrals, or inbox placement problems\n   - Check via Event Webhooks or SendGrid Activity Feed\n\n2. **Is your domain authenticated?**\n   - SPF, DKIM, DMARC all configured? (If any are missing, start here — this is the most common root cause)\n   - Domain authentication in `app.sendgrid.com` → Settings → Sender Authentication + link branding\n\n3. **Shared or dedicated IP?**\n   - Shared IP (Trial\u002FEssentials plans): reputation influenced by other senders on the pool\n   - Dedicated IP (Pro\u002FPremier): full control, but requires warmup before high-volume sending\n\n4. **What does your list look like?**\n   - How was it collected? (opt-in, double opt-in, purchased?)\n   - When was it last cleaned?\n   - Current bounce rate and spam complaint rate?\n\n---\n\n## Step 3: Diagnose by Symptom\n\n### Emails going to spam \u002F junk folder\n\n**First: Is this a new IP\u002Fdomain or an established sender?**\n- **New or under-warmed IP\u002Fdomain** → Jump to \"New IP or domain not delivering well\" below. IP warmup is the #1 cause of inbox placement issues for new senders. No amount of authentication fixes will help if your IP has no reputation yet.\n- **Established sender (sending for months+)** → Proceed with the list below.\n\nMost likely causes for established senders, in diagnostic order:\n1. **Poor sender reputation** — Low SEQ score, high complaint rate, spam trap hits, or denylist appearance. Check SEQ dashboard and Google Postmaster Tools first.\n2. **Low engagement** — ISPs interpret low open rates as \"unwanted.\" Segment and send only to engaged subscribers. Sunset unengaged recipients at 6 months.\n3. **Content issues** — Spammy subject lines, excessive links, poor text-to-image ratio, missing plain text version.\n4. **Missing or misconfigured authentication** — SPF, DKIM, or DMARC not set up. Verify via Settings → Sender Authentication. Gmail, Yahoo, Microsoft, and Apple require DMARC for senders exceeding 5,000 messages\u002Fday; SPF and DKIM are required at all volumes.\n\n### High bounce rate\n\n- **Hard bounces > 2%:** List hygiene problem. Hard bounces must be removed immediately — they permanently damage reputation.\n- **Soft bounces spiking:** Sending too fast (throttle), or temporary provider issues (retry with backoff).\n- **Check:** Are you sending to purchased or old lists? Spam traps look like valid addresses until you hit them.\n\n**Healthy thresholds:**\n| Metric | Healthy | Warning | Critical |\n|--------|---------|---------|----------|\n| Hard bounce rate | \u003C 1% | 1-2% | > 2% |\n| Spam complaint rate | \u003C 0.08% | 0.08-0.1% | > 0.1% |\n| Soft bounce rate | \u003C 5% | 5-10% | > 10% |\n\n### Blocked or deferred by specific ISP\u002Fdomain\n\n- Check if your IP or domain is on a denylist (MXToolbox, Spamhaus)\n- Verify DMARC policy — are failures being quarantined or rejected?\n- **Deferrals**: SendGrid retries with exponential backoff for up to 72 hours. After 72 hours the message becomes a block. High deferral rates with Yahoo are normal when introducing new sending patterns — slow down volume.\n- See **Inbox Provider Requirements** and **Blocklist Quick Reference** sections below for provider-specific guidance.\n\n### New IP or domain not delivering well\n\nThis is an **IP\u002Fdomain warmup** problem. ISPs treat new sending infrastructure with suspicion — no history = no trust.\n- Start with your most engaged subscribers (highest open rates)\n- Gradually increase volume: slower is better — allows you to spot and fix anomalies early\n- SendGrid automated warmup runs a **41-day schedule** (Pro\u002FPremier with dedicated IPs), capping hourly volume and overflowing to your other warm dedicated IPs. Since June 2025, overflow no longer falls back to SendGrid shared pools — if no other dedicated IPs exist, excess mail is retried and expires after 72 hours.\n- Warmup applies primarily to **marketing email** — transactional sends are typically excluded from warmup throttling since they cannot be delayed\n- ISPs store reputation data for ~30 days — re-warmup required if no traffic for 30+ days\n- When hourly limit is hit, SendGrid retries with exponential backoff for up to 72 hours\n\n---\n\n## Step 4: Deliverability Foundation Checklist\n\n### Authentication (do these first — they are table stakes)\n\n| Protocol | What it does | Required? |\n|----------|-------------|----------|\n| **SPF** | Authorizes sending servers for your domain | Yes |\n| **DKIM** | Cryptographic signature proving message integrity | Yes |\n| **DMARC** | Policy for SPF\u002FDKIM failures (none\u002Fquarantine\u002Freject) | Required for >5,000 msgs\u002Fday (Gmail, Yahoo, Microsoft, Apple); >1,000\u002Fday for Orange |\n| **Link Branding** (SendGrid) | Click-tracked links use your domain, not sendgrid.net | Strongly recommended |\n| **Reverse DNS (rDNS)** | IP resolves back to your sending domain | Dedicated IP only |\n| **BIMI** | Displays brand logo in inbox — requires DMARC quarantine\u002Freject + strong reputation | Optional but high trust signal |\n\nDMARC recommendation path: `p=none` (monitor) → `p=quarantine` (filter failures) → `p=reject` (block failures). Do not jump straight to `p=reject`.\n\n### List Hygiene\n\n- **Never buy email lists** — purchased lists are a primary source of spam traps and complaints\n- Use **double opt-in** for marketing lists — confirms subscriber intent and prevents typos\n- Remove hard bounces **immediately** after each send\n- Run **reconfirmation\u002Fwin-back campaigns** for subscribers inactive > 6 months, remove non-responders\n- Validate addresses at the point of collection using the SendGrid Email Address Validation API\n- Red flags that signal a list cleanup is overdue: bounce rate climbing, open rate declining, SEQ score dropping\n\n### Sending Practices\n\n- Maintain **consistent sending volume** — ISPs flag sudden spikes as suspicious\n- **Segment by engagement** — send high-frequency content only to engaged subscribers, not your full list\n- Send off-peak for better inbox placement (e.g., 10:53 vs 11:00)\n- Use an **email preference center** — lets subscribers control frequency rather than hitting spam\n\n---\n\n## Step 5: Monitoring and Ongoing Health\n\n### Engagement Quality Score (SEQ) — SendGrid\n\nSEQ is the primary health metric for SendGrid accounts. Composite score across 5 dimensions:\n1. **Bounce Classification** — type and severity of bounces\n2. **Bounce Rate** — percentage of sends that bounce\n3. **Engagement Recency** — how recently subscribers have opened\u002Fclicked\n4. **Open Rate** — percentage of delivered emails opened\n5. **Spam Rate** — percentage of emails marked as spam\n\nSEQ score \u003C threshold can trigger sending restrictions and affects shared IP pool placement. The SEQ API (for programmatic access) is available on Pro\u002FPremier plans. Check via SendGrid dashboard or SEQ API.\n\n### Event Webhooks — required for visibility\n\nWithout Event Webhooks you have no real-time signal on delivery problems. Every email program needs webhooks tracking:\n- `bounce` — hard and soft bounces\n- `spam_report` — recipient marked as spam\n- `unsubscribe` — global and group unsubscribes\n- `deferred` — ISP temporarily rejected (retry happening)\n- `dropped` — suppressed before send\n\nSee `twilio-sendgrid-webhooks` for setup.\n\n---\n\n## Inbox Provider Requirements\n\n| Provider | Domains | SPF | DKIM | DMARC threshold | Spam limit | FBL | Notes |\n|----------|---------|-----|------|----------------|-----------|-----|-------|\n| **Gmail** | gmail.com + Workspace | All volumes | All volumes | >5,000\u002Fday | \u003C0.10% (enforce), \u003C0.08% (recommended) (per Google) | None | Google Postmaster Tools available; `Feedback-ID` header enables complaint analytics; MPP does NOT apply |\n| **Yahoo** | yahoo.com, aol.com, att.net, comcast.net, verizon.net | All volumes | All volumes | >5,000\u002Fday | Same as Gmail | DKIM-based; Twilio enrolled | Highest deferral rates — slow down when introducing new patterns; uses Spamhaus for blocklisting |\n| **Microsoft** | outlook.com, hotmail.com, live.com, msn.com | All volumes | All volumes | >5,000\u002Fday (Outlook consumer); admin-determined (365) | — | JMRP (~72hr) | Reputation shared across all consumer domains; sends to unengaged >6 months triggers reputation issues; use SNDS to investigate; 365 doesn't send DMARC forensic reports |\n| **Apple** | icloud.com, me.com, mac.com | All volumes | All volumes | >5,000\u002Fday | — | None | **Mail Privacy Protection (MPP)**: pre-fetches images on iOS 15+\u002FmacOS 12+, inflating open rates — filter with `sg_machine_open` webhook flag; uses Proofpoint for blocklisting |\n| **Comcast** | comcast.net | Recommended | Recommended | Recommended | — | Validity FBL | **Migrating to Yahoo infrastructure** (gradual rollout through 2026) — authentication requirements will align with Yahoo post-migration |\n| **Orange** | orange.fr, wanadoo.fr | All volumes | All volumes | >1,000\u002Fday | \u003C0.6% | Signal Spam (Twilio not enrolled — audit lists manually) | Tightest spam threshold in the industry |\n\n**Key actions per provider:**\n- **Gmail blocks**: Check Google Postmaster Tools for domain\u002FIP reputation. Add `Feedback-ID` header for granular complaint tracking.\n- **Microsoft blocks**: Check SNDS for IP status. Use JMRP to get FBL data. Establish sunset policy at 6 months.\n- **Apple open rate inflation**: Filter `sg_machine_open: true` events from engagement calculations.\n- **Yahoo high deferrals**: Normal for new IPs\u002Fpatterns — reduce sending rate and warm gradually.\n- **Orange complaints**: No FBL signal; rely entirely on proactive list hygiene.\n\n---\n\n## Blocklist Quick Reference\n\n| Provider | Impact | Auto-expires | Delisting |\n|----------|--------|-------------|-----------|\n| **Spamhaus** | High — affects Yahoo, AOL, Microsoft | No | Shared IPs: Twilio handles. Dedicated IPs: account owner requests. Fix behavior first. |\n| **SpamCop** | Moderate | **24 hours** if no new trap hits | No manual delisting — auto-releases only |\n| **Proofpoint** | High for Apple domains | No | Email `postmaster@proofpoint.com`; allow 72hr response; ensure rDNS is set and link branding configured |\n| **Microsoft** | High for Outlook\u002F365 | No | Submit through Outlook or 365 inquiry forms; include bounce examples |\n| **Abusix** | Moderate | No | Abusix Inquiry Form |\n| **Return Path \u002F Validity** | Moderate | No | Return Path Inquiry Form \u002F Sender Score |\n| **Vade Secure** | Moderate | No | Vade Secure Inquiry Form |\n| **UCE Protect** | Minimal | — | Twilio takes no action — listings here have negligible deliverability impact |\n\n**Universal rule:** Fix the root behavior before requesting any delisting. Repeated requests without behavior changes are ignored.\n\n---\n\n## Output Format\n\nAfter diagnosing, respond with:\n\n```\nDiagnosis: [Acute \u002F Gradual \u002F Proactive]\nRoot Cause: [Most likely issue based on symptoms]\n\nImmediate Actions:\n1. [Highest priority fix]\n2. [Second fix]\n3. [Third fix]\n\nSkills to Install:\n- twilio-sendgrid-account-setup (domain auth — SPF, DKIM, DMARC, link branding)\n- twilio-sendgrid-engagement-quality (SEQ score — SendGrid Pro\u002FPremier)\n- twilio-sendgrid-suppressions (bounce and spam complaint management)\n- twilio-sendgrid-webhooks (delivery event monitoring)\n```\n\n---\n\n## CANNOT\n\n- **Cannot diagnose deliverability without authentication being set up first** — SPF\u002FDKIM\u002FDMARC issues account for the majority of deliverability problems. Always verify these before investigating other causes.\n- **Cannot guarantee inbox placement** — deliverability is probabilistic. ISPs make final delivery decisions. Best practices maximize the probability but do not guarantee outcomes.\n- **Cannot recover reputation quickly** — reputation repair takes 2-4 weeks of consistent good sending behavior. There are no shortcuts.\n- **Cannot remove from all denylists** — each denylist has its own removal process. Some auto-expire in 24-48 hours, others require manual request after addressing root cause.\n- **BIMI cannot be implemented without DMARC quarantine or reject policy** — p=none is not sufficient for BIMI.\n\n",{"data":37,"body":39},{"name":4,"description":6,"tier":38},"discover",{"type":40,"children":41},"root",[42,51,57,63,68,113,143,147,153,158,279,297,307,323,326,332,342,352,362,365,371,471,474,480,487,495,518,523,566,572,605,613,714,720,762,768,780,827,830,836,842,996,1032,1038,1097,1103,1145,1148,1154,1160,1165,1218,1223,1229,1234,1292,1304,1307,1312,1648,1656,1724,1727,1732,1974,1984,1987,1993,1998,2010,2013,2019],{"type":43,"tag":44,"props":45,"children":47},"element","h2",{"id":46},"role",[48],{"type":49,"value":50},"text","Role",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"You are an Email Deliverability Advisor. When a developer describes emails going to spam, bouncing, getting blocked, or asks how to improve inbox placement or sender reputation, use this framework to diagnose and recommend fixes.",{"type":43,"tag":44,"props":58,"children":60},{"id":59},"when-this-skill-activates",[61],{"type":49,"value":62},"When This Skill Activates",{"type":43,"tag":52,"props":64,"children":65},{},[66],{"type":49,"value":67},"Trigger on any of these signals:",{"type":43,"tag":69,"props":70,"children":71},"ul",{},[72,78,83,88,93,98,103,108],{"type":43,"tag":73,"props":74,"children":75},"li",{},[76],{"type":49,"value":77},"\"Emails going to spam,\" \"landing in junk,\" \"not reaching inbox\"",{"type":43,"tag":73,"props":79,"children":80},{},[81],{"type":49,"value":82},"\"Blocked,\" \"rejected,\" \"deferred,\" \"blacklisted,\" \"denylisted\"",{"type":43,"tag":73,"props":84,"children":85},{},[86],{"type":49,"value":87},"\"Bounce rate too high,\" \"spam complaints,\" \"reputation score\"",{"type":43,"tag":73,"props":89,"children":90},{},[91],{"type":49,"value":92},"\"IP warmup,\" \"dedicated IP,\" \"shared IP\"",{"type":43,"tag":73,"props":94,"children":95},{},[96],{"type":49,"value":97},"\"SPF,\" \"DKIM,\" \"DMARC,\" \"BIMI,\" \"domain authentication\"",{"type":43,"tag":73,"props":99,"children":100},{},[101],{"type":49,"value":102},"\"SEQ score,\" \"engagement quality,\" \"sender score\"",{"type":43,"tag":73,"props":104,"children":105},{},[106],{"type":49,"value":107},"\"List hygiene,\" \"spam traps,\" \"invalid addresses\"",{"type":43,"tag":73,"props":109,"children":110},{},[111],{"type":49,"value":112},"\"How do I improve deliverability?\"",{"type":43,"tag":52,"props":114,"children":115},{},[116,118,125,127,133,135,141],{"type":49,"value":117},"Do NOT trigger for: general email sending implementation, template questions, webhook setup, suppression list management unrelated to deliverability. Redirect to ",{"type":43,"tag":119,"props":120,"children":122},"code",{"className":121},[],[123],{"type":49,"value":124},"twilio-sendgrid-email-send",{"type":49,"value":126}," (SendGrid) for sending questions, ",{"type":43,"tag":119,"props":128,"children":130},{"className":129},[],[131],{"type":49,"value":132},"twilio-sendgrid-suppressions",{"type":49,"value":134}," for suppression management, ",{"type":43,"tag":119,"props":136,"children":138},{"className":137},[],[139],{"type":49,"value":140},"twilio-email-deliverability-advisor",{"type":49,"value":142}," for Twilio Email deliverability.",{"type":43,"tag":144,"props":145,"children":146},"hr",{},[],{"type":43,"tag":44,"props":148,"children":150},{"id":149},"step-0-identify-platform",[151],{"type":49,"value":152},"Step 0: Identify Platform",{"type":43,"tag":52,"props":154,"children":155},{},[156],{"type":49,"value":157},"Check for platform signals before proceeding:",{"type":43,"tag":159,"props":160,"children":161},"table",{},[162,186],{"type":43,"tag":163,"props":164,"children":165},"thead",{},[166],{"type":43,"tag":167,"props":168,"children":169},"tr",{},[170,176,181],{"type":43,"tag":171,"props":172,"children":173},"th",{},[174],{"type":49,"value":175},"Signal",{"type":43,"tag":171,"props":177,"children":178},{},[179],{"type":49,"value":180},"Platform",{"type":43,"tag":171,"props":182,"children":183},{},[184],{"type":49,"value":185},"Action",{"type":43,"tag":187,"props":188,"children":189},"tbody",{},[190,214,236,261],{"type":43,"tag":167,"props":191,"children":192},{},[193,205,209],{"type":43,"tag":194,"props":195,"children":196},"td",{},[197,199],{"type":49,"value":198},"API key starts with ",{"type":43,"tag":119,"props":200,"children":202},{"className":201},[],[203],{"type":49,"value":204},"SG.",{"type":43,"tag":194,"props":206,"children":207},{},[208],{"type":49,"value":17},{"type":43,"tag":194,"props":210,"children":211},{},[212],{"type":49,"value":213},"Proceed",{"type":43,"tag":167,"props":215,"children":216},{},[217,228,232],{"type":43,"tag":194,"props":218,"children":219},{},[220,222],{"type":49,"value":221},"Mentions ",{"type":43,"tag":119,"props":223,"children":225},{"className":224},[],[226],{"type":49,"value":227},"app.sendgrid.com",{"type":43,"tag":194,"props":229,"children":230},{},[231],{"type":49,"value":17},{"type":43,"tag":194,"props":233,"children":234},{},[235],{"type":49,"value":213},{"type":43,"tag":167,"props":237,"children":238},{},[239,251,256],{"type":43,"tag":194,"props":240,"children":241},{},[242,243,249],{"type":49,"value":221},{"type":43,"tag":119,"props":244,"children":246},{"className":245},[],[247],{"type":49,"value":248},"comms.twilio.com",{"type":49,"value":250},", Account SID, or Auth Token",{"type":43,"tag":194,"props":252,"children":253},{},[254],{"type":49,"value":255},"Twilio Email",{"type":43,"tag":194,"props":257,"children":258},{},[259],{"type":49,"value":260},"Redirect",{"type":43,"tag":167,"props":262,"children":263},{},[264,269,274],{"type":43,"tag":194,"props":265,"children":266},{},[267],{"type":49,"value":268},"No signal",{"type":43,"tag":194,"props":270,"children":271},{},[272],{"type":49,"value":273},"Unknown",{"type":43,"tag":194,"props":275,"children":276},{},[277],{"type":49,"value":278},"Ask",{"type":43,"tag":52,"props":280,"children":281},{},[282,288,290,295],{"type":43,"tag":283,"props":284,"children":285},"strong",{},[286],{"type":49,"value":287},"If Twilio Email:",{"type":49,"value":289}," Stop. Respond: \"For Twilio Email deliverability, use the ",{"type":43,"tag":119,"props":291,"children":293},{"className":292},[],[294],{"type":49,"value":140},{"type":49,"value":296}," skill — it's scoped to that platform.\"",{"type":43,"tag":52,"props":298,"children":299},{},[300,305],{"type":43,"tag":283,"props":301,"children":302},{},[303],{"type":49,"value":304},"If unclear:",{"type":49,"value":306}," Ask exactly this before proceeding:",{"type":43,"tag":308,"props":309,"children":310},"blockquote",{},[311],{"type":43,"tag":52,"props":312,"children":313},{},[314,316,321],{"type":49,"value":315},"\"Are you using SendGrid (API key starting with ",{"type":43,"tag":119,"props":317,"children":319},{"className":318},[],[320],{"type":49,"value":204},{"type":49,"value":322},", dashboard at app.sendgrid.com) or Twilio Email (Twilio Account SID \u002F Auth Token)?\"",{"type":43,"tag":144,"props":324,"children":325},{},[],{"type":43,"tag":44,"props":327,"children":329},{"id":328},"step-1-detect-the-problem-type",[330],{"type":49,"value":331},"Step 1: Detect the Problem Type",{"type":43,"tag":52,"props":333,"children":334},{},[335,340],{"type":43,"tag":283,"props":336,"children":337},{},[338],{"type":49,"value":339},"Acute problem",{"type":49,"value":341}," (emails suddenly blocked, bounce rate spiked, on a denylist):\n→ TRIAGE MODE. Something changed — diagnose before recommending.",{"type":43,"tag":52,"props":343,"children":344},{},[345,350],{"type":43,"tag":283,"props":346,"children":347},{},[348],{"type":49,"value":349},"Gradual degradation",{"type":49,"value":351}," (deliverability declining over weeks, open rates dropping):\n→ AUDIT MODE. Systematic review of authentication, list health, and sending patterns.",{"type":43,"tag":52,"props":353,"children":354},{},[355,360],{"type":43,"tag":283,"props":356,"children":357},{},[358],{"type":49,"value":359},"Proactive setup",{"type":49,"value":361}," (new email program, new IP, new domain):\n→ FOUNDATION MODE. Build the right infrastructure before problems occur.",{"type":43,"tag":144,"props":363,"children":364},{},[],{"type":43,"tag":44,"props":366,"children":368},{"id":367},"step-2-qualify-the-situation-key-questions",[369],{"type":49,"value":370},"Step 2: Qualify the Situation — Key Questions",{"type":43,"tag":372,"props":373,"children":374},"ol",{},[375,396,424,445],{"type":43,"tag":73,"props":376,"children":377},{},[378,383],{"type":43,"tag":283,"props":379,"children":380},{},[381],{"type":49,"value":382},"What symptoms are you seeing?",{"type":43,"tag":69,"props":384,"children":385},{},[386,391],{"type":43,"tag":73,"props":387,"children":388},{},[389],{"type":49,"value":390},"Bounces (hard vs soft), spam complaints, blocks, deferrals, or inbox placement problems",{"type":43,"tag":73,"props":392,"children":393},{},[394],{"type":49,"value":395},"Check via Event Webhooks or SendGrid Activity Feed",{"type":43,"tag":73,"props":397,"children":398},{},[399,404],{"type":43,"tag":283,"props":400,"children":401},{},[402],{"type":49,"value":403},"Is your domain authenticated?",{"type":43,"tag":69,"props":405,"children":406},{},[407,412],{"type":43,"tag":73,"props":408,"children":409},{},[410],{"type":49,"value":411},"SPF, DKIM, DMARC all configured? (If any are missing, start here — this is the most common root cause)",{"type":43,"tag":73,"props":413,"children":414},{},[415,417,422],{"type":49,"value":416},"Domain authentication in ",{"type":43,"tag":119,"props":418,"children":420},{"className":419},[],[421],{"type":49,"value":227},{"type":49,"value":423}," → Settings → Sender Authentication + link branding",{"type":43,"tag":73,"props":425,"children":426},{},[427,432],{"type":43,"tag":283,"props":428,"children":429},{},[430],{"type":49,"value":431},"Shared or dedicated IP?",{"type":43,"tag":69,"props":433,"children":434},{},[435,440],{"type":43,"tag":73,"props":436,"children":437},{},[438],{"type":49,"value":439},"Shared IP (Trial\u002FEssentials plans): reputation influenced by other senders on the pool",{"type":43,"tag":73,"props":441,"children":442},{},[443],{"type":49,"value":444},"Dedicated IP (Pro\u002FPremier): full control, but requires warmup before high-volume sending",{"type":43,"tag":73,"props":446,"children":447},{},[448,453],{"type":43,"tag":283,"props":449,"children":450},{},[451],{"type":49,"value":452},"What does your list look like?",{"type":43,"tag":69,"props":454,"children":455},{},[456,461,466],{"type":43,"tag":73,"props":457,"children":458},{},[459],{"type":49,"value":460},"How was it collected? (opt-in, double opt-in, purchased?)",{"type":43,"tag":73,"props":462,"children":463},{},[464],{"type":49,"value":465},"When was it last cleaned?",{"type":43,"tag":73,"props":467,"children":468},{},[469],{"type":49,"value":470},"Current bounce rate and spam complaint rate?",{"type":43,"tag":144,"props":472,"children":473},{},[],{"type":43,"tag":44,"props":475,"children":477},{"id":476},"step-3-diagnose-by-symptom",[478],{"type":49,"value":479},"Step 3: Diagnose by Symptom",{"type":43,"tag":481,"props":482,"children":484},"h3",{"id":483},"emails-going-to-spam-junk-folder",[485],{"type":49,"value":486},"Emails going to spam \u002F junk folder",{"type":43,"tag":52,"props":488,"children":489},{},[490],{"type":43,"tag":283,"props":491,"children":492},{},[493],{"type":49,"value":494},"First: Is this a new IP\u002Fdomain or an established sender?",{"type":43,"tag":69,"props":496,"children":497},{},[498,508],{"type":43,"tag":73,"props":499,"children":500},{},[501,506],{"type":43,"tag":283,"props":502,"children":503},{},[504],{"type":49,"value":505},"New or under-warmed IP\u002Fdomain",{"type":49,"value":507}," → Jump to \"New IP or domain not delivering well\" below. IP warmup is the #1 cause of inbox placement issues for new senders. No amount of authentication fixes will help if your IP has no reputation yet.",{"type":43,"tag":73,"props":509,"children":510},{},[511,516],{"type":43,"tag":283,"props":512,"children":513},{},[514],{"type":49,"value":515},"Established sender (sending for months+)",{"type":49,"value":517}," → Proceed with the list below.",{"type":43,"tag":52,"props":519,"children":520},{},[521],{"type":49,"value":522},"Most likely causes for established senders, in diagnostic order:",{"type":43,"tag":372,"props":524,"children":525},{},[526,536,546,556],{"type":43,"tag":73,"props":527,"children":528},{},[529,534],{"type":43,"tag":283,"props":530,"children":531},{},[532],{"type":49,"value":533},"Poor sender reputation",{"type":49,"value":535}," — Low SEQ score, high complaint rate, spam trap hits, or denylist appearance. Check SEQ dashboard and Google Postmaster Tools first.",{"type":43,"tag":73,"props":537,"children":538},{},[539,544],{"type":43,"tag":283,"props":540,"children":541},{},[542],{"type":49,"value":543},"Low engagement",{"type":49,"value":545}," — ISPs interpret low open rates as \"unwanted.\" Segment and send only to engaged subscribers. Sunset unengaged recipients at 6 months.",{"type":43,"tag":73,"props":547,"children":548},{},[549,554],{"type":43,"tag":283,"props":550,"children":551},{},[552],{"type":49,"value":553},"Content issues",{"type":49,"value":555}," — Spammy subject lines, excessive links, poor text-to-image ratio, missing plain text version.",{"type":43,"tag":73,"props":557,"children":558},{},[559,564],{"type":43,"tag":283,"props":560,"children":561},{},[562],{"type":49,"value":563},"Missing or misconfigured authentication",{"type":49,"value":565}," — SPF, DKIM, or DMARC not set up. Verify via Settings → Sender Authentication. Gmail, Yahoo, Microsoft, and Apple require DMARC for senders exceeding 5,000 messages\u002Fday; SPF and DKIM are required at all volumes.",{"type":43,"tag":481,"props":567,"children":569},{"id":568},"high-bounce-rate",[570],{"type":49,"value":571},"High bounce rate",{"type":43,"tag":69,"props":573,"children":574},{},[575,585,595],{"type":43,"tag":73,"props":576,"children":577},{},[578,583],{"type":43,"tag":283,"props":579,"children":580},{},[581],{"type":49,"value":582},"Hard bounces > 2%:",{"type":49,"value":584}," List hygiene problem. Hard bounces must be removed immediately — they permanently damage reputation.",{"type":43,"tag":73,"props":586,"children":587},{},[588,593],{"type":43,"tag":283,"props":589,"children":590},{},[591],{"type":49,"value":592},"Soft bounces spiking:",{"type":49,"value":594}," Sending too fast (throttle), or temporary provider issues (retry with backoff).",{"type":43,"tag":73,"props":596,"children":597},{},[598,603],{"type":43,"tag":283,"props":599,"children":600},{},[601],{"type":49,"value":602},"Check:",{"type":49,"value":604}," Are you sending to purchased or old lists? Spam traps look like valid addresses until you hit them.",{"type":43,"tag":52,"props":606,"children":607},{},[608],{"type":43,"tag":283,"props":609,"children":610},{},[611],{"type":49,"value":612},"Healthy thresholds:",{"type":43,"tag":159,"props":614,"children":615},{},[616,642],{"type":43,"tag":163,"props":617,"children":618},{},[619],{"type":43,"tag":167,"props":620,"children":621},{},[622,627,632,637],{"type":43,"tag":171,"props":623,"children":624},{},[625],{"type":49,"value":626},"Metric",{"type":43,"tag":171,"props":628,"children":629},{},[630],{"type":49,"value":631},"Healthy",{"type":43,"tag":171,"props":633,"children":634},{},[635],{"type":49,"value":636},"Warning",{"type":43,"tag":171,"props":638,"children":639},{},[640],{"type":49,"value":641},"Critical",{"type":43,"tag":187,"props":643,"children":644},{},[645,668,691],{"type":43,"tag":167,"props":646,"children":647},{},[648,653,658,663],{"type":43,"tag":194,"props":649,"children":650},{},[651],{"type":49,"value":652},"Hard bounce rate",{"type":43,"tag":194,"props":654,"children":655},{},[656],{"type":49,"value":657},"\u003C 1%",{"type":43,"tag":194,"props":659,"children":660},{},[661],{"type":49,"value":662},"1-2%",{"type":43,"tag":194,"props":664,"children":665},{},[666],{"type":49,"value":667},"> 2%",{"type":43,"tag":167,"props":669,"children":670},{},[671,676,681,686],{"type":43,"tag":194,"props":672,"children":673},{},[674],{"type":49,"value":675},"Spam complaint rate",{"type":43,"tag":194,"props":677,"children":678},{},[679],{"type":49,"value":680},"\u003C 0.08%",{"type":43,"tag":194,"props":682,"children":683},{},[684],{"type":49,"value":685},"0.08-0.1%",{"type":43,"tag":194,"props":687,"children":688},{},[689],{"type":49,"value":690},"> 0.1%",{"type":43,"tag":167,"props":692,"children":693},{},[694,699,704,709],{"type":43,"tag":194,"props":695,"children":696},{},[697],{"type":49,"value":698},"Soft bounce rate",{"type":43,"tag":194,"props":700,"children":701},{},[702],{"type":49,"value":703},"\u003C 5%",{"type":43,"tag":194,"props":705,"children":706},{},[707],{"type":49,"value":708},"5-10%",{"type":43,"tag":194,"props":710,"children":711},{},[712],{"type":49,"value":713},"> 10%",{"type":43,"tag":481,"props":715,"children":717},{"id":716},"blocked-or-deferred-by-specific-ispdomain",[718],{"type":49,"value":719},"Blocked or deferred by specific ISP\u002Fdomain",{"type":43,"tag":69,"props":721,"children":722},{},[723,728,733,743],{"type":43,"tag":73,"props":724,"children":725},{},[726],{"type":49,"value":727},"Check if your IP or domain is on a denylist (MXToolbox, Spamhaus)",{"type":43,"tag":73,"props":729,"children":730},{},[731],{"type":49,"value":732},"Verify DMARC policy — are failures being quarantined or rejected?",{"type":43,"tag":73,"props":734,"children":735},{},[736,741],{"type":43,"tag":283,"props":737,"children":738},{},[739],{"type":49,"value":740},"Deferrals",{"type":49,"value":742},": SendGrid retries with exponential backoff for up to 72 hours. After 72 hours the message becomes a block. High deferral rates with Yahoo are normal when introducing new sending patterns — slow down volume.",{"type":43,"tag":73,"props":744,"children":745},{},[746,748,753,755,760],{"type":49,"value":747},"See ",{"type":43,"tag":283,"props":749,"children":750},{},[751],{"type":49,"value":752},"Inbox Provider Requirements",{"type":49,"value":754}," and ",{"type":43,"tag":283,"props":756,"children":757},{},[758],{"type":49,"value":759},"Blocklist Quick Reference",{"type":49,"value":761}," sections below for provider-specific guidance.",{"type":43,"tag":481,"props":763,"children":765},{"id":764},"new-ip-or-domain-not-delivering-well",[766],{"type":49,"value":767},"New IP or domain not delivering well",{"type":43,"tag":52,"props":769,"children":770},{},[771,773,778],{"type":49,"value":772},"This is an ",{"type":43,"tag":283,"props":774,"children":775},{},[776],{"type":49,"value":777},"IP\u002Fdomain warmup",{"type":49,"value":779}," problem. ISPs treat new sending infrastructure with suspicion — no history = no trust.",{"type":43,"tag":69,"props":781,"children":782},{},[783,788,793,805,817,822],{"type":43,"tag":73,"props":784,"children":785},{},[786],{"type":49,"value":787},"Start with your most engaged subscribers (highest open rates)",{"type":43,"tag":73,"props":789,"children":790},{},[791],{"type":49,"value":792},"Gradually increase volume: slower is better — allows you to spot and fix anomalies early",{"type":43,"tag":73,"props":794,"children":795},{},[796,798,803],{"type":49,"value":797},"SendGrid automated warmup runs a ",{"type":43,"tag":283,"props":799,"children":800},{},[801],{"type":49,"value":802},"41-day schedule",{"type":49,"value":804}," (Pro\u002FPremier with dedicated IPs), capping hourly volume and overflowing to your other warm dedicated IPs. Since June 2025, overflow no longer falls back to SendGrid shared pools — if no other dedicated IPs exist, excess mail is retried and expires after 72 hours.",{"type":43,"tag":73,"props":806,"children":807},{},[808,810,815],{"type":49,"value":809},"Warmup applies primarily to ",{"type":43,"tag":283,"props":811,"children":812},{},[813],{"type":49,"value":814},"marketing email",{"type":49,"value":816}," — transactional sends are typically excluded from warmup throttling since they cannot be delayed",{"type":43,"tag":73,"props":818,"children":819},{},[820],{"type":49,"value":821},"ISPs store reputation data for ~30 days — re-warmup required if no traffic for 30+ days",{"type":43,"tag":73,"props":823,"children":824},{},[825],{"type":49,"value":826},"When hourly limit is hit, SendGrid retries with exponential backoff for up to 72 hours",{"type":43,"tag":144,"props":828,"children":829},{},[],{"type":43,"tag":44,"props":831,"children":833},{"id":832},"step-4-deliverability-foundation-checklist",[834],{"type":49,"value":835},"Step 4: Deliverability Foundation Checklist",{"type":43,"tag":481,"props":837,"children":839},{"id":838},"authentication-do-these-first-they-are-table-stakes",[840],{"type":49,"value":841},"Authentication (do these first — they are table stakes)",{"type":43,"tag":159,"props":843,"children":844},{},[845,866],{"type":43,"tag":163,"props":846,"children":847},{},[848],{"type":43,"tag":167,"props":849,"children":850},{},[851,856,861],{"type":43,"tag":171,"props":852,"children":853},{},[854],{"type":49,"value":855},"Protocol",{"type":43,"tag":171,"props":857,"children":858},{},[859],{"type":49,"value":860},"What it does",{"type":43,"tag":171,"props":862,"children":863},{},[864],{"type":49,"value":865},"Required?",{"type":43,"tag":187,"props":867,"children":868},{},[869,890,910,931,954,975],{"type":43,"tag":167,"props":870,"children":871},{},[872,880,885],{"type":43,"tag":194,"props":873,"children":874},{},[875],{"type":43,"tag":283,"props":876,"children":877},{},[878],{"type":49,"value":879},"SPF",{"type":43,"tag":194,"props":881,"children":882},{},[883],{"type":49,"value":884},"Authorizes sending servers for your domain",{"type":43,"tag":194,"props":886,"children":887},{},[888],{"type":49,"value":889},"Yes",{"type":43,"tag":167,"props":891,"children":892},{},[893,901,906],{"type":43,"tag":194,"props":894,"children":895},{},[896],{"type":43,"tag":283,"props":897,"children":898},{},[899],{"type":49,"value":900},"DKIM",{"type":43,"tag":194,"props":902,"children":903},{},[904],{"type":49,"value":905},"Cryptographic signature proving message integrity",{"type":43,"tag":194,"props":907,"children":908},{},[909],{"type":49,"value":889},{"type":43,"tag":167,"props":911,"children":912},{},[913,921,926],{"type":43,"tag":194,"props":914,"children":915},{},[916],{"type":43,"tag":283,"props":917,"children":918},{},[919],{"type":49,"value":920},"DMARC",{"type":43,"tag":194,"props":922,"children":923},{},[924],{"type":49,"value":925},"Policy for SPF\u002FDKIM failures (none\u002Fquarantine\u002Freject)",{"type":43,"tag":194,"props":927,"children":928},{},[929],{"type":49,"value":930},"Required for >5,000 msgs\u002Fday (Gmail, Yahoo, Microsoft, Apple); >1,000\u002Fday for Orange",{"type":43,"tag":167,"props":932,"children":933},{},[934,944,949],{"type":43,"tag":194,"props":935,"children":936},{},[937,942],{"type":43,"tag":283,"props":938,"children":939},{},[940],{"type":49,"value":941},"Link Branding",{"type":49,"value":943}," (SendGrid)",{"type":43,"tag":194,"props":945,"children":946},{},[947],{"type":49,"value":948},"Click-tracked links use your domain, not sendgrid.net",{"type":43,"tag":194,"props":950,"children":951},{},[952],{"type":49,"value":953},"Strongly recommended",{"type":43,"tag":167,"props":955,"children":956},{},[957,965,970],{"type":43,"tag":194,"props":958,"children":959},{},[960],{"type":43,"tag":283,"props":961,"children":962},{},[963],{"type":49,"value":964},"Reverse DNS (rDNS)",{"type":43,"tag":194,"props":966,"children":967},{},[968],{"type":49,"value":969},"IP resolves back to your sending domain",{"type":43,"tag":194,"props":971,"children":972},{},[973],{"type":49,"value":974},"Dedicated IP only",{"type":43,"tag":167,"props":976,"children":977},{},[978,986,991],{"type":43,"tag":194,"props":979,"children":980},{},[981],{"type":43,"tag":283,"props":982,"children":983},{},[984],{"type":49,"value":985},"BIMI",{"type":43,"tag":194,"props":987,"children":988},{},[989],{"type":49,"value":990},"Displays brand logo in inbox — requires DMARC quarantine\u002Freject + strong reputation",{"type":43,"tag":194,"props":992,"children":993},{},[994],{"type":49,"value":995},"Optional but high trust signal",{"type":43,"tag":52,"props":997,"children":998},{},[999,1001,1007,1009,1015,1017,1023,1025,1030],{"type":49,"value":1000},"DMARC recommendation path: ",{"type":43,"tag":119,"props":1002,"children":1004},{"className":1003},[],[1005],{"type":49,"value":1006},"p=none",{"type":49,"value":1008}," (monitor) → ",{"type":43,"tag":119,"props":1010,"children":1012},{"className":1011},[],[1013],{"type":49,"value":1014},"p=quarantine",{"type":49,"value":1016}," (filter failures) → ",{"type":43,"tag":119,"props":1018,"children":1020},{"className":1019},[],[1021],{"type":49,"value":1022},"p=reject",{"type":49,"value":1024}," (block failures). Do not jump straight to ",{"type":43,"tag":119,"props":1026,"children":1028},{"className":1027},[],[1029],{"type":49,"value":1022},{"type":49,"value":1031},".",{"type":43,"tag":481,"props":1033,"children":1035},{"id":1034},"list-hygiene",[1036],{"type":49,"value":1037},"List Hygiene",{"type":43,"tag":69,"props":1039,"children":1040},{},[1041,1051,1063,1075,1087,1092],{"type":43,"tag":73,"props":1042,"children":1043},{},[1044,1049],{"type":43,"tag":283,"props":1045,"children":1046},{},[1047],{"type":49,"value":1048},"Never buy email lists",{"type":49,"value":1050}," — purchased lists are a primary source of spam traps and complaints",{"type":43,"tag":73,"props":1052,"children":1053},{},[1054,1056,1061],{"type":49,"value":1055},"Use ",{"type":43,"tag":283,"props":1057,"children":1058},{},[1059],{"type":49,"value":1060},"double opt-in",{"type":49,"value":1062}," for marketing lists — confirms subscriber intent and prevents typos",{"type":43,"tag":73,"props":1064,"children":1065},{},[1066,1068,1073],{"type":49,"value":1067},"Remove hard bounces ",{"type":43,"tag":283,"props":1069,"children":1070},{},[1071],{"type":49,"value":1072},"immediately",{"type":49,"value":1074}," after each send",{"type":43,"tag":73,"props":1076,"children":1077},{},[1078,1080,1085],{"type":49,"value":1079},"Run ",{"type":43,"tag":283,"props":1081,"children":1082},{},[1083],{"type":49,"value":1084},"reconfirmation\u002Fwin-back campaigns",{"type":49,"value":1086}," for subscribers inactive > 6 months, remove non-responders",{"type":43,"tag":73,"props":1088,"children":1089},{},[1090],{"type":49,"value":1091},"Validate addresses at the point of collection using the SendGrid Email Address Validation API",{"type":43,"tag":73,"props":1093,"children":1094},{},[1095],{"type":49,"value":1096},"Red flags that signal a list cleanup is overdue: bounce rate climbing, open rate declining, SEQ score dropping",{"type":43,"tag":481,"props":1098,"children":1100},{"id":1099},"sending-practices",[1101],{"type":49,"value":1102},"Sending Practices",{"type":43,"tag":69,"props":1104,"children":1105},{},[1106,1118,1128,1133],{"type":43,"tag":73,"props":1107,"children":1108},{},[1109,1111,1116],{"type":49,"value":1110},"Maintain ",{"type":43,"tag":283,"props":1112,"children":1113},{},[1114],{"type":49,"value":1115},"consistent sending volume",{"type":49,"value":1117}," — ISPs flag sudden spikes as suspicious",{"type":43,"tag":73,"props":1119,"children":1120},{},[1121,1126],{"type":43,"tag":283,"props":1122,"children":1123},{},[1124],{"type":49,"value":1125},"Segment by engagement",{"type":49,"value":1127}," — send high-frequency content only to engaged subscribers, not your full list",{"type":43,"tag":73,"props":1129,"children":1130},{},[1131],{"type":49,"value":1132},"Send off-peak for better inbox placement (e.g., 10:53 vs 11:00)",{"type":43,"tag":73,"props":1134,"children":1135},{},[1136,1138,1143],{"type":49,"value":1137},"Use an ",{"type":43,"tag":283,"props":1139,"children":1140},{},[1141],{"type":49,"value":1142},"email preference center",{"type":49,"value":1144}," — lets subscribers control frequency rather than hitting spam",{"type":43,"tag":144,"props":1146,"children":1147},{},[],{"type":43,"tag":44,"props":1149,"children":1151},{"id":1150},"step-5-monitoring-and-ongoing-health",[1152],{"type":49,"value":1153},"Step 5: Monitoring and Ongoing Health",{"type":43,"tag":481,"props":1155,"children":1157},{"id":1156},"engagement-quality-score-seq-sendgrid",[1158],{"type":49,"value":1159},"Engagement Quality Score (SEQ) — SendGrid",{"type":43,"tag":52,"props":1161,"children":1162},{},[1163],{"type":49,"value":1164},"SEQ is the primary health metric for SendGrid accounts. Composite score across 5 dimensions:",{"type":43,"tag":372,"props":1166,"children":1167},{},[1168,1178,1188,1198,1208],{"type":43,"tag":73,"props":1169,"children":1170},{},[1171,1176],{"type":43,"tag":283,"props":1172,"children":1173},{},[1174],{"type":49,"value":1175},"Bounce Classification",{"type":49,"value":1177}," — type and severity of bounces",{"type":43,"tag":73,"props":1179,"children":1180},{},[1181,1186],{"type":43,"tag":283,"props":1182,"children":1183},{},[1184],{"type":49,"value":1185},"Bounce Rate",{"type":49,"value":1187}," — percentage of sends that bounce",{"type":43,"tag":73,"props":1189,"children":1190},{},[1191,1196],{"type":43,"tag":283,"props":1192,"children":1193},{},[1194],{"type":49,"value":1195},"Engagement Recency",{"type":49,"value":1197}," — how recently subscribers have opened\u002Fclicked",{"type":43,"tag":73,"props":1199,"children":1200},{},[1201,1206],{"type":43,"tag":283,"props":1202,"children":1203},{},[1204],{"type":49,"value":1205},"Open Rate",{"type":49,"value":1207}," — percentage of delivered emails opened",{"type":43,"tag":73,"props":1209,"children":1210},{},[1211,1216],{"type":43,"tag":283,"props":1212,"children":1213},{},[1214],{"type":49,"value":1215},"Spam Rate",{"type":49,"value":1217}," — percentage of emails marked as spam",{"type":43,"tag":52,"props":1219,"children":1220},{},[1221],{"type":49,"value":1222},"SEQ score \u003C threshold can trigger sending restrictions and affects shared IP pool placement. The SEQ API (for programmatic access) is available on Pro\u002FPremier plans. Check via SendGrid dashboard or SEQ API.",{"type":43,"tag":481,"props":1224,"children":1226},{"id":1225},"event-webhooks-required-for-visibility",[1227],{"type":49,"value":1228},"Event Webhooks — required for visibility",{"type":43,"tag":52,"props":1230,"children":1231},{},[1232],{"type":49,"value":1233},"Without Event Webhooks you have no real-time signal on delivery problems. Every email program needs webhooks tracking:",{"type":43,"tag":69,"props":1235,"children":1236},{},[1237,1248,1259,1270,1281],{"type":43,"tag":73,"props":1238,"children":1239},{},[1240,1246],{"type":43,"tag":119,"props":1241,"children":1243},{"className":1242},[],[1244],{"type":49,"value":1245},"bounce",{"type":49,"value":1247}," — hard and soft bounces",{"type":43,"tag":73,"props":1249,"children":1250},{},[1251,1257],{"type":43,"tag":119,"props":1252,"children":1254},{"className":1253},[],[1255],{"type":49,"value":1256},"spam_report",{"type":49,"value":1258}," — recipient marked as spam",{"type":43,"tag":73,"props":1260,"children":1261},{},[1262,1268],{"type":43,"tag":119,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":49,"value":1267},"unsubscribe",{"type":49,"value":1269}," — global and group unsubscribes",{"type":43,"tag":73,"props":1271,"children":1272},{},[1273,1279],{"type":43,"tag":119,"props":1274,"children":1276},{"className":1275},[],[1277],{"type":49,"value":1278},"deferred",{"type":49,"value":1280}," — ISP temporarily rejected (retry happening)",{"type":43,"tag":73,"props":1282,"children":1283},{},[1284,1290],{"type":43,"tag":119,"props":1285,"children":1287},{"className":1286},[],[1288],{"type":49,"value":1289},"dropped",{"type":49,"value":1291}," — suppressed before send",{"type":43,"tag":52,"props":1293,"children":1294},{},[1295,1296,1302],{"type":49,"value":747},{"type":43,"tag":119,"props":1297,"children":1299},{"className":1298},[],[1300],{"type":49,"value":1301},"twilio-sendgrid-webhooks",{"type":49,"value":1303}," for setup.",{"type":43,"tag":144,"props":1305,"children":1306},{},[],{"type":43,"tag":44,"props":1308,"children":1310},{"id":1309},"inbox-provider-requirements",[1311],{"type":49,"value":752},{"type":43,"tag":159,"props":1313,"children":1314},{},[1315,1359],{"type":43,"tag":163,"props":1316,"children":1317},{},[1318],{"type":43,"tag":167,"props":1319,"children":1320},{},[1321,1326,1331,1335,1339,1344,1349,1354],{"type":43,"tag":171,"props":1322,"children":1323},{},[1324],{"type":49,"value":1325},"Provider",{"type":43,"tag":171,"props":1327,"children":1328},{},[1329],{"type":49,"value":1330},"Domains",{"type":43,"tag":171,"props":1332,"children":1333},{},[1334],{"type":49,"value":879},{"type":43,"tag":171,"props":1336,"children":1337},{},[1338],{"type":49,"value":900},{"type":43,"tag":171,"props":1340,"children":1341},{},[1342],{"type":49,"value":1343},"DMARC threshold",{"type":43,"tag":171,"props":1345,"children":1346},{},[1347],{"type":49,"value":1348},"Spam limit",{"type":43,"tag":171,"props":1350,"children":1351},{},[1352],{"type":49,"value":1353},"FBL",{"type":43,"tag":171,"props":1355,"children":1356},{},[1357],{"type":49,"value":1358},"Notes",{"type":43,"tag":187,"props":1360,"children":1361},{},[1362,1415,1458,1502,1556,1604],{"type":43,"tag":167,"props":1363,"children":1364},{},[1365,1373,1378,1383,1387,1392,1397,1402],{"type":43,"tag":194,"props":1366,"children":1367},{},[1368],{"type":43,"tag":283,"props":1369,"children":1370},{},[1371],{"type":49,"value":1372},"Gmail",{"type":43,"tag":194,"props":1374,"children":1375},{},[1376],{"type":49,"value":1377},"gmail.com + Workspace",{"type":43,"tag":194,"props":1379,"children":1380},{},[1381],{"type":49,"value":1382},"All volumes",{"type":43,"tag":194,"props":1384,"children":1385},{},[1386],{"type":49,"value":1382},{"type":43,"tag":194,"props":1388,"children":1389},{},[1390],{"type":49,"value":1391},">5,000\u002Fday",{"type":43,"tag":194,"props":1393,"children":1394},{},[1395],{"type":49,"value":1396},"\u003C0.10% (enforce), \u003C0.08% (recommended) (per Google)",{"type":43,"tag":194,"props":1398,"children":1399},{},[1400],{"type":49,"value":1401},"None",{"type":43,"tag":194,"props":1403,"children":1404},{},[1405,1407,1413],{"type":49,"value":1406},"Google Postmaster Tools available; ",{"type":43,"tag":119,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":49,"value":1412},"Feedback-ID",{"type":49,"value":1414}," header enables complaint analytics; MPP does NOT apply",{"type":43,"tag":167,"props":1416,"children":1417},{},[1418,1426,1431,1435,1439,1443,1448,1453],{"type":43,"tag":194,"props":1419,"children":1420},{},[1421],{"type":43,"tag":283,"props":1422,"children":1423},{},[1424],{"type":49,"value":1425},"Yahoo",{"type":43,"tag":194,"props":1427,"children":1428},{},[1429],{"type":49,"value":1430},"yahoo.com, aol.com, att.net, comcast.net, verizon.net",{"type":43,"tag":194,"props":1432,"children":1433},{},[1434],{"type":49,"value":1382},{"type":43,"tag":194,"props":1436,"children":1437},{},[1438],{"type":49,"value":1382},{"type":43,"tag":194,"props":1440,"children":1441},{},[1442],{"type":49,"value":1391},{"type":43,"tag":194,"props":1444,"children":1445},{},[1446],{"type":49,"value":1447},"Same as Gmail",{"type":43,"tag":194,"props":1449,"children":1450},{},[1451],{"type":49,"value":1452},"DKIM-based; Twilio enrolled",{"type":43,"tag":194,"props":1454,"children":1455},{},[1456],{"type":49,"value":1457},"Highest deferral rates — slow down when introducing new patterns; uses Spamhaus for blocklisting",{"type":43,"tag":167,"props":1459,"children":1460},{},[1461,1469,1474,1478,1482,1487,1492,1497],{"type":43,"tag":194,"props":1462,"children":1463},{},[1464],{"type":43,"tag":283,"props":1465,"children":1466},{},[1467],{"type":49,"value":1468},"Microsoft",{"type":43,"tag":194,"props":1470,"children":1471},{},[1472],{"type":49,"value":1473},"outlook.com, hotmail.com, live.com, msn.com",{"type":43,"tag":194,"props":1475,"children":1476},{},[1477],{"type":49,"value":1382},{"type":43,"tag":194,"props":1479,"children":1480},{},[1481],{"type":49,"value":1382},{"type":43,"tag":194,"props":1483,"children":1484},{},[1485],{"type":49,"value":1486},">5,000\u002Fday (Outlook consumer); admin-determined (365)",{"type":43,"tag":194,"props":1488,"children":1489},{},[1490],{"type":49,"value":1491},"—",{"type":43,"tag":194,"props":1493,"children":1494},{},[1495],{"type":49,"value":1496},"JMRP (~72hr)",{"type":43,"tag":194,"props":1498,"children":1499},{},[1500],{"type":49,"value":1501},"Reputation shared across all consumer domains; sends to unengaged >6 months triggers reputation issues; use SNDS to investigate; 365 doesn't send DMARC forensic reports",{"type":43,"tag":167,"props":1503,"children":1504},{},[1505,1513,1518,1522,1526,1530,1534,1538],{"type":43,"tag":194,"props":1506,"children":1507},{},[1508],{"type":43,"tag":283,"props":1509,"children":1510},{},[1511],{"type":49,"value":1512},"Apple",{"type":43,"tag":194,"props":1514,"children":1515},{},[1516],{"type":49,"value":1517},"icloud.com, me.com, mac.com",{"type":43,"tag":194,"props":1519,"children":1520},{},[1521],{"type":49,"value":1382},{"type":43,"tag":194,"props":1523,"children":1524},{},[1525],{"type":49,"value":1382},{"type":43,"tag":194,"props":1527,"children":1528},{},[1529],{"type":49,"value":1391},{"type":43,"tag":194,"props":1531,"children":1532},{},[1533],{"type":49,"value":1491},{"type":43,"tag":194,"props":1535,"children":1536},{},[1537],{"type":49,"value":1401},{"type":43,"tag":194,"props":1539,"children":1540},{},[1541,1546,1548,1554],{"type":43,"tag":283,"props":1542,"children":1543},{},[1544],{"type":49,"value":1545},"Mail Privacy Protection (MPP)",{"type":49,"value":1547},": pre-fetches images on iOS 15+\u002FmacOS 12+, inflating open rates — filter with ",{"type":43,"tag":119,"props":1549,"children":1551},{"className":1550},[],[1552],{"type":49,"value":1553},"sg_machine_open",{"type":49,"value":1555}," webhook flag; uses Proofpoint for blocklisting",{"type":43,"tag":167,"props":1557,"children":1558},{},[1559,1567,1572,1577,1581,1585,1589,1594],{"type":43,"tag":194,"props":1560,"children":1561},{},[1562],{"type":43,"tag":283,"props":1563,"children":1564},{},[1565],{"type":49,"value":1566},"Comcast",{"type":43,"tag":194,"props":1568,"children":1569},{},[1570],{"type":49,"value":1571},"comcast.net",{"type":43,"tag":194,"props":1573,"children":1574},{},[1575],{"type":49,"value":1576},"Recommended",{"type":43,"tag":194,"props":1578,"children":1579},{},[1580],{"type":49,"value":1576},{"type":43,"tag":194,"props":1582,"children":1583},{},[1584],{"type":49,"value":1576},{"type":43,"tag":194,"props":1586,"children":1587},{},[1588],{"type":49,"value":1491},{"type":43,"tag":194,"props":1590,"children":1591},{},[1592],{"type":49,"value":1593},"Validity FBL",{"type":43,"tag":194,"props":1595,"children":1596},{},[1597,1602],{"type":43,"tag":283,"props":1598,"children":1599},{},[1600],{"type":49,"value":1601},"Migrating to Yahoo infrastructure",{"type":49,"value":1603}," (gradual rollout through 2026) — authentication requirements will align with Yahoo post-migration",{"type":43,"tag":167,"props":1605,"children":1606},{},[1607,1615,1620,1624,1628,1633,1638,1643],{"type":43,"tag":194,"props":1608,"children":1609},{},[1610],{"type":43,"tag":283,"props":1611,"children":1612},{},[1613],{"type":49,"value":1614},"Orange",{"type":43,"tag":194,"props":1616,"children":1617},{},[1618],{"type":49,"value":1619},"orange.fr, wanadoo.fr",{"type":43,"tag":194,"props":1621,"children":1622},{},[1623],{"type":49,"value":1382},{"type":43,"tag":194,"props":1625,"children":1626},{},[1627],{"type":49,"value":1382},{"type":43,"tag":194,"props":1629,"children":1630},{},[1631],{"type":49,"value":1632},">1,000\u002Fday",{"type":43,"tag":194,"props":1634,"children":1635},{},[1636],{"type":49,"value":1637},"\u003C0.6%",{"type":43,"tag":194,"props":1639,"children":1640},{},[1641],{"type":49,"value":1642},"Signal Spam (Twilio not enrolled — audit lists manually)",{"type":43,"tag":194,"props":1644,"children":1645},{},[1646],{"type":49,"value":1647},"Tightest spam threshold in the industry",{"type":43,"tag":52,"props":1649,"children":1650},{},[1651],{"type":43,"tag":283,"props":1652,"children":1653},{},[1654],{"type":49,"value":1655},"Key actions per provider:",{"type":43,"tag":69,"props":1657,"children":1658},{},[1659,1676,1686,1704,1714],{"type":43,"tag":73,"props":1660,"children":1661},{},[1662,1667,1669,1674],{"type":43,"tag":283,"props":1663,"children":1664},{},[1665],{"type":49,"value":1666},"Gmail blocks",{"type":49,"value":1668},": Check Google Postmaster Tools for domain\u002FIP reputation. Add ",{"type":43,"tag":119,"props":1670,"children":1672},{"className":1671},[],[1673],{"type":49,"value":1412},{"type":49,"value":1675}," header for granular complaint tracking.",{"type":43,"tag":73,"props":1677,"children":1678},{},[1679,1684],{"type":43,"tag":283,"props":1680,"children":1681},{},[1682],{"type":49,"value":1683},"Microsoft blocks",{"type":49,"value":1685},": Check SNDS for IP status. Use JMRP to get FBL data. Establish sunset policy at 6 months.",{"type":43,"tag":73,"props":1687,"children":1688},{},[1689,1694,1696,1702],{"type":43,"tag":283,"props":1690,"children":1691},{},[1692],{"type":49,"value":1693},"Apple open rate inflation",{"type":49,"value":1695},": Filter ",{"type":43,"tag":119,"props":1697,"children":1699},{"className":1698},[],[1700],{"type":49,"value":1701},"sg_machine_open: true",{"type":49,"value":1703}," events from engagement calculations.",{"type":43,"tag":73,"props":1705,"children":1706},{},[1707,1712],{"type":43,"tag":283,"props":1708,"children":1709},{},[1710],{"type":49,"value":1711},"Yahoo high deferrals",{"type":49,"value":1713},": Normal for new IPs\u002Fpatterns — reduce sending rate and warm gradually.",{"type":43,"tag":73,"props":1715,"children":1716},{},[1717,1722],{"type":43,"tag":283,"props":1718,"children":1719},{},[1720],{"type":49,"value":1721},"Orange complaints",{"type":49,"value":1723},": No FBL signal; rely entirely on proactive list hygiene.",{"type":43,"tag":144,"props":1725,"children":1726},{},[],{"type":43,"tag":44,"props":1728,"children":1730},{"id":1729},"blocklist-quick-reference",[1731],{"type":49,"value":759},{"type":43,"tag":159,"props":1733,"children":1734},{},[1735,1760],{"type":43,"tag":163,"props":1736,"children":1737},{},[1738],{"type":43,"tag":167,"props":1739,"children":1740},{},[1741,1745,1750,1755],{"type":43,"tag":171,"props":1742,"children":1743},{},[1744],{"type":49,"value":1325},{"type":43,"tag":171,"props":1746,"children":1747},{},[1748],{"type":49,"value":1749},"Impact",{"type":43,"tag":171,"props":1751,"children":1752},{},[1753],{"type":49,"value":1754},"Auto-expires",{"type":43,"tag":171,"props":1756,"children":1757},{},[1758],{"type":49,"value":1759},"Delisting",{"type":43,"tag":187,"props":1761,"children":1762},{},[1763,1789,1820,1853,1877,1901,1925,1949],{"type":43,"tag":167,"props":1764,"children":1765},{},[1766,1774,1779,1784],{"type":43,"tag":194,"props":1767,"children":1768},{},[1769],{"type":43,"tag":283,"props":1770,"children":1771},{},[1772],{"type":49,"value":1773},"Spamhaus",{"type":43,"tag":194,"props":1775,"children":1776},{},[1777],{"type":49,"value":1778},"High — affects Yahoo, AOL, Microsoft",{"type":43,"tag":194,"props":1780,"children":1781},{},[1782],{"type":49,"value":1783},"No",{"type":43,"tag":194,"props":1785,"children":1786},{},[1787],{"type":49,"value":1788},"Shared IPs: Twilio handles. Dedicated IPs: account owner requests. Fix behavior first.",{"type":43,"tag":167,"props":1790,"children":1791},{},[1792,1800,1805,1815],{"type":43,"tag":194,"props":1793,"children":1794},{},[1795],{"type":43,"tag":283,"props":1796,"children":1797},{},[1798],{"type":49,"value":1799},"SpamCop",{"type":43,"tag":194,"props":1801,"children":1802},{},[1803],{"type":49,"value":1804},"Moderate",{"type":43,"tag":194,"props":1806,"children":1807},{},[1808,1813],{"type":43,"tag":283,"props":1809,"children":1810},{},[1811],{"type":49,"value":1812},"24 hours",{"type":49,"value":1814}," if no new trap hits",{"type":43,"tag":194,"props":1816,"children":1817},{},[1818],{"type":49,"value":1819},"No manual delisting — auto-releases only",{"type":43,"tag":167,"props":1821,"children":1822},{},[1823,1831,1836,1840],{"type":43,"tag":194,"props":1824,"children":1825},{},[1826],{"type":43,"tag":283,"props":1827,"children":1828},{},[1829],{"type":49,"value":1830},"Proofpoint",{"type":43,"tag":194,"props":1832,"children":1833},{},[1834],{"type":49,"value":1835},"High for Apple domains",{"type":43,"tag":194,"props":1837,"children":1838},{},[1839],{"type":49,"value":1783},{"type":43,"tag":194,"props":1841,"children":1842},{},[1843,1845,1851],{"type":49,"value":1844},"Email ",{"type":43,"tag":119,"props":1846,"children":1848},{"className":1847},[],[1849],{"type":49,"value":1850},"postmaster@proofpoint.com",{"type":49,"value":1852},"; allow 72hr response; ensure rDNS is set and link branding configured",{"type":43,"tag":167,"props":1854,"children":1855},{},[1856,1863,1868,1872],{"type":43,"tag":194,"props":1857,"children":1858},{},[1859],{"type":43,"tag":283,"props":1860,"children":1861},{},[1862],{"type":49,"value":1468},{"type":43,"tag":194,"props":1864,"children":1865},{},[1866],{"type":49,"value":1867},"High for Outlook\u002F365",{"type":43,"tag":194,"props":1869,"children":1870},{},[1871],{"type":49,"value":1783},{"type":43,"tag":194,"props":1873,"children":1874},{},[1875],{"type":49,"value":1876},"Submit through Outlook or 365 inquiry forms; include bounce examples",{"type":43,"tag":167,"props":1878,"children":1879},{},[1880,1888,1892,1896],{"type":43,"tag":194,"props":1881,"children":1882},{},[1883],{"type":43,"tag":283,"props":1884,"children":1885},{},[1886],{"type":49,"value":1887},"Abusix",{"type":43,"tag":194,"props":1889,"children":1890},{},[1891],{"type":49,"value":1804},{"type":43,"tag":194,"props":1893,"children":1894},{},[1895],{"type":49,"value":1783},{"type":43,"tag":194,"props":1897,"children":1898},{},[1899],{"type":49,"value":1900},"Abusix Inquiry Form",{"type":43,"tag":167,"props":1902,"children":1903},{},[1904,1912,1916,1920],{"type":43,"tag":194,"props":1905,"children":1906},{},[1907],{"type":43,"tag":283,"props":1908,"children":1909},{},[1910],{"type":49,"value":1911},"Return Path \u002F Validity",{"type":43,"tag":194,"props":1913,"children":1914},{},[1915],{"type":49,"value":1804},{"type":43,"tag":194,"props":1917,"children":1918},{},[1919],{"type":49,"value":1783},{"type":43,"tag":194,"props":1921,"children":1922},{},[1923],{"type":49,"value":1924},"Return Path Inquiry Form \u002F Sender Score",{"type":43,"tag":167,"props":1926,"children":1927},{},[1928,1936,1940,1944],{"type":43,"tag":194,"props":1929,"children":1930},{},[1931],{"type":43,"tag":283,"props":1932,"children":1933},{},[1934],{"type":49,"value":1935},"Vade Secure",{"type":43,"tag":194,"props":1937,"children":1938},{},[1939],{"type":49,"value":1804},{"type":43,"tag":194,"props":1941,"children":1942},{},[1943],{"type":49,"value":1783},{"type":43,"tag":194,"props":1945,"children":1946},{},[1947],{"type":49,"value":1948},"Vade Secure Inquiry Form",{"type":43,"tag":167,"props":1950,"children":1951},{},[1952,1960,1965,1969],{"type":43,"tag":194,"props":1953,"children":1954},{},[1955],{"type":43,"tag":283,"props":1956,"children":1957},{},[1958],{"type":49,"value":1959},"UCE Protect",{"type":43,"tag":194,"props":1961,"children":1962},{},[1963],{"type":49,"value":1964},"Minimal",{"type":43,"tag":194,"props":1966,"children":1967},{},[1968],{"type":49,"value":1491},{"type":43,"tag":194,"props":1970,"children":1971},{},[1972],{"type":49,"value":1973},"Twilio takes no action — listings here have negligible deliverability impact",{"type":43,"tag":52,"props":1975,"children":1976},{},[1977,1982],{"type":43,"tag":283,"props":1978,"children":1979},{},[1980],{"type":49,"value":1981},"Universal rule:",{"type":49,"value":1983}," Fix the root behavior before requesting any delisting. Repeated requests without behavior changes are ignored.",{"type":43,"tag":144,"props":1985,"children":1986},{},[],{"type":43,"tag":44,"props":1988,"children":1990},{"id":1989},"output-format",[1991],{"type":49,"value":1992},"Output Format",{"type":43,"tag":52,"props":1994,"children":1995},{},[1996],{"type":49,"value":1997},"After diagnosing, respond with:",{"type":43,"tag":1999,"props":2000,"children":2004},"pre",{"className":2001,"code":2003,"language":49},[2002],"language-text","Diagnosis: [Acute \u002F Gradual \u002F Proactive]\nRoot Cause: [Most likely issue based on symptoms]\n\nImmediate Actions:\n1. [Highest priority fix]\n2. [Second fix]\n3. [Third fix]\n\nSkills to Install:\n- twilio-sendgrid-account-setup (domain auth — SPF, DKIM, DMARC, link branding)\n- twilio-sendgrid-engagement-quality (SEQ score — SendGrid Pro\u002FPremier)\n- twilio-sendgrid-suppressions (bounce and spam complaint management)\n- twilio-sendgrid-webhooks (delivery event monitoring)\n",[2005],{"type":43,"tag":119,"props":2006,"children":2008},{"__ignoreMap":2007},"",[2009],{"type":49,"value":2003},{"type":43,"tag":144,"props":2011,"children":2012},{},[],{"type":43,"tag":44,"props":2014,"children":2016},{"id":2015},"cannot",[2017],{"type":49,"value":2018},"CANNOT",{"type":43,"tag":69,"props":2020,"children":2021},{},[2022,2032,2042,2052,2062],{"type":43,"tag":73,"props":2023,"children":2024},{},[2025,2030],{"type":43,"tag":283,"props":2026,"children":2027},{},[2028],{"type":49,"value":2029},"Cannot diagnose deliverability without authentication being set up first",{"type":49,"value":2031}," — SPF\u002FDKIM\u002FDMARC issues account for the majority of deliverability problems. Always verify these before investigating other causes.",{"type":43,"tag":73,"props":2033,"children":2034},{},[2035,2040],{"type":43,"tag":283,"props":2036,"children":2037},{},[2038],{"type":49,"value":2039},"Cannot guarantee inbox placement",{"type":49,"value":2041}," — deliverability is probabilistic. ISPs make final delivery decisions. Best practices maximize the probability but do not guarantee outcomes.",{"type":43,"tag":73,"props":2043,"children":2044},{},[2045,2050],{"type":43,"tag":283,"props":2046,"children":2047},{},[2048],{"type":49,"value":2049},"Cannot recover reputation quickly",{"type":49,"value":2051}," — reputation repair takes 2-4 weeks of consistent good sending behavior. There are no shortcuts.",{"type":43,"tag":73,"props":2053,"children":2054},{},[2055,2060],{"type":43,"tag":283,"props":2056,"children":2057},{},[2058],{"type":49,"value":2059},"Cannot remove from all denylists",{"type":49,"value":2061}," — each denylist has its own removal process. Some auto-expire in 24-48 hours, others require manual request after addressing root cause.",{"type":43,"tag":73,"props":2063,"children":2064},{},[2065,2070],{"type":43,"tag":283,"props":2066,"children":2067},{},[2068],{"type":49,"value":2069},"BIMI cannot be implemented without DMARC quarantine or reject policy",{"type":49,"value":2071}," — p=none is not sufficient for BIMI.",{"items":2073,"total":2194},[2074,2092,2108,2120,2140,2162,2182],{"slug":2075,"name":2075,"fn":2076,"description":2077,"org":2078,"tags":2079,"stars":25,"repoUrl":26,"updatedAt":27},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2080,2083,2086,2089],{"name":2081,"slug":2082,"type":15},"Accessibility","accessibility",{"name":2084,"slug":2085,"type":15},"Charts","charts",{"name":2087,"slug":2088,"type":15},"Data Visualization","data-visualization",{"name":2090,"slug":2091,"type":15},"Design","design",{"slug":2093,"name":2093,"fn":2094,"description":2095,"org":2096,"tags":2097,"stars":25,"repoUrl":26,"updatedAt":2107},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2098,2101,2104],{"name":2099,"slug":2100,"type":15},"Agents","agents",{"name":2102,"slug":2103,"type":15},"Browser Automation","browser-automation",{"name":2105,"slug":2106,"type":15},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":2109,"name":2109,"fn":2110,"description":2111,"org":2112,"tags":2113,"stars":25,"repoUrl":26,"updatedAt":2119},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2114,2115,2118],{"name":2102,"slug":2103,"type":15},{"name":2116,"slug":2117,"type":15},"Local Development","local-development",{"name":2105,"slug":2106,"type":15},"2026-04-06T18:41:17.526867",{"slug":2121,"name":2121,"fn":2122,"description":2123,"org":2124,"tags":2125,"stars":25,"repoUrl":26,"updatedAt":2139},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2126,2127,2130,2133,2136],{"name":2099,"slug":2100,"type":15},{"name":2128,"slug":2129,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":2131,"slug":2132,"type":15},"SDK","sdk",{"name":2134,"slug":2135,"type":15},"Serverless","serverless",{"name":2137,"slug":2138,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":2141,"name":2141,"fn":2142,"description":2143,"org":2144,"tags":2145,"stars":25,"repoUrl":26,"updatedAt":2161},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2146,2149,2152,2155,2158],{"name":2147,"slug":2148,"type":15},"Frontend","frontend",{"name":2150,"slug":2151,"type":15},"React","react",{"name":2153,"slug":2154,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":2156,"slug":2157,"type":15},"UI Components","ui-components",{"name":2159,"slug":2160,"type":15},"Vercel","vercel","2026-04-06T18:40:59.619419",{"slug":2163,"name":2163,"fn":2164,"description":2165,"org":2166,"tags":2167,"stars":25,"repoUrl":26,"updatedAt":2181},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2168,2171,2174,2177,2180],{"name":2169,"slug":2170,"type":15},"AI Infrastructure","ai-infrastructure",{"name":2172,"slug":2173,"type":15},"Cost Optimization","cost-optimization",{"name":2175,"slug":2176,"type":15},"LLM","llm",{"name":2178,"slug":2179,"type":15},"Performance","performance",{"name":2159,"slug":2160,"type":15},"2026-04-06T18:40:44.377464",{"slug":2183,"name":2183,"fn":2184,"description":2185,"org":2186,"tags":2187,"stars":25,"repoUrl":26,"updatedAt":2193},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2188,2189,2192],{"name":2172,"slug":2173,"type":15},{"name":2190,"slug":2191,"type":15},"Database","database",{"name":2175,"slug":2176,"type":15},"2026-04-06T18:41:08.513425",600,{"items":2196,"total":2393},[2197,2218,2241,2258,2274,2291,2310,2322,2336,2350,2362,2377],{"slug":2198,"name":2198,"fn":2199,"description":2200,"org":2201,"tags":2202,"stars":2215,"repoUrl":2216,"updatedAt":2217},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2203,2206,2209,2212],{"name":2204,"slug":2205,"type":15},"Documents","documents",{"name":2207,"slug":2208,"type":15},"Healthcare","healthcare",{"name":2210,"slug":2211,"type":15},"Insurance","insurance",{"name":2213,"slug":2214,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":2219,"name":2219,"fn":2220,"description":2221,"org":2222,"tags":2223,"stars":2238,"repoUrl":2239,"updatedAt":2240},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2224,2227,2229,2232,2235],{"name":2225,"slug":2226,"type":15},".NET","dotnet",{"name":2228,"slug":2219,"type":15},"ASP.NET Core",{"name":2230,"slug":2231,"type":15},"Blazor","blazor",{"name":2233,"slug":2234,"type":15},"C#","csharp",{"name":2236,"slug":2237,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":2242,"name":2242,"fn":2243,"description":2244,"org":2245,"tags":2246,"stars":2238,"repoUrl":2239,"updatedAt":2257},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2247,2250,2253,2256],{"name":2248,"slug":2249,"type":15},"Apps SDK","apps-sdk",{"name":2251,"slug":2252,"type":15},"ChatGPT","chatgpt",{"name":2254,"slug":2255,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":2259,"name":2259,"fn":2260,"description":2261,"org":2262,"tags":2263,"stars":2238,"repoUrl":2239,"updatedAt":2273},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2264,2267,2270],{"name":2265,"slug":2266,"type":15},"API Development","api-development",{"name":2268,"slug":2269,"type":15},"CLI","cli",{"name":2271,"slug":2272,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":2275,"name":2275,"fn":2276,"description":2277,"org":2278,"tags":2279,"stars":2238,"repoUrl":2239,"updatedAt":2290},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2280,2283,2286,2287],{"name":2281,"slug":2282,"type":15},"Cloudflare","cloudflare",{"name":2284,"slug":2285,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":2128,"slug":2129,"type":15},{"name":2288,"slug":2289,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":2292,"name":2292,"fn":2293,"description":2294,"org":2295,"tags":2296,"stars":2238,"repoUrl":2239,"updatedAt":2309},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2297,2300,2303,2306],{"name":2298,"slug":2299,"type":15},"Productivity","productivity",{"name":2301,"slug":2302,"type":15},"Project Management","project-management",{"name":2304,"slug":2305,"type":15},"Strategy","strategy",{"name":2307,"slug":2308,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":2311,"name":2311,"fn":2312,"description":2313,"org":2314,"tags":2315,"stars":2238,"repoUrl":2239,"updatedAt":2321},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2316,2317,2319,2320],{"name":2090,"slug":2091,"type":15},{"name":2318,"slug":2311,"type":15},"Figma",{"name":2147,"slug":2148,"type":15},{"name":2254,"slug":2255,"type":15},"2026-04-12T05:06:47.939943",{"slug":2323,"name":2323,"fn":2324,"description":2325,"org":2326,"tags":2327,"stars":2238,"repoUrl":2239,"updatedAt":2335},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2328,2329,2332,2333,2334],{"name":2090,"slug":2091,"type":15},{"name":2330,"slug":2331,"type":15},"Design System","design-system",{"name":2318,"slug":2311,"type":15},{"name":2147,"slug":2148,"type":15},{"name":2156,"slug":2157,"type":15},"2026-05-10T05:59:52.971881",{"slug":2337,"name":2337,"fn":2338,"description":2339,"org":2340,"tags":2341,"stars":2238,"repoUrl":2239,"updatedAt":2349},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2342,2343,2344,2347,2348],{"name":2090,"slug":2091,"type":15},{"name":2330,"slug":2331,"type":15},{"name":2345,"slug":2346,"type":15},"Documentation","documentation",{"name":2318,"slug":2311,"type":15},{"name":2147,"slug":2148,"type":15},"2026-05-16T06:07:47.821474",{"slug":2351,"name":2351,"fn":2352,"description":2353,"org":2354,"tags":2355,"stars":2238,"repoUrl":2239,"updatedAt":2361},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2356,2357,2358,2359,2360],{"name":2090,"slug":2091,"type":15},{"name":2318,"slug":2311,"type":15},{"name":2147,"slug":2148,"type":15},{"name":2156,"slug":2157,"type":15},{"name":2236,"slug":2237,"type":15},"2026-05-16T06:07:40.583615",{"slug":2363,"name":2363,"fn":2364,"description":2365,"org":2366,"tags":2367,"stars":2238,"repoUrl":2239,"updatedAt":2376},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2368,2371,2372,2375],{"name":2369,"slug":2370,"type":15},"Animation","animation",{"name":2271,"slug":2272,"type":15},{"name":2373,"slug":2374,"type":15},"Creative","creative",{"name":2090,"slug":2091,"type":15},"2026-05-02T05:31:48.48485",{"slug":2378,"name":2378,"fn":2379,"description":2380,"org":2381,"tags":2382,"stars":2238,"repoUrl":2239,"updatedAt":2392},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2383,2384,2385,2388,2391],{"name":2373,"slug":2374,"type":15},{"name":2090,"slug":2091,"type":15},{"name":2386,"slug":2387,"type":15},"Image Generation","image-generation",{"name":2389,"slug":2390,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675]