Verification log

July 30, 2026 · View on GitHub

What was actually checked, when, and how. Each revalidation pass appends a section; nothing is rewritten, so the drift in a vendor's support arrangements is readable over time.


Twilio — 2026-07-30

Method. Four layers, in escalating order, because each one failed for a different reason:

  1. HTTP status and redirect observation on every target (curl -o /dev/null -w '%{http_code} -> %{redirect_url}', browser user agent, 20s timeout).
  2. Full page reads of /en-us/support-plans, /en-us/help/abuse, /en-us/developers.
  3. Raw-HTML mailto: href extraction on live www.twilio.com pages — the only reliable way to get an address off a page whose prose is client-rendered.
  4. Wayback Machine snapshots of the pre-migration support.twilio.com Zendesk, to read help-centre article bodies. This is the step that made the entry real; see below.

Also: the Discord invite code resolved against discord.com/api/v10/invites/, which is the only way to tell a live vanity redirect from a live invite.

Why the archive was necessary, and why it is legitimate

help.twilio.com is a client-rendered single-page app. It returns HTTP 200 with nothing but <title>Twilio Help Center</title> to every non-browser fetcher tried, and its /api/v2/help_center/en-us/articles/<id>.json path returns the same SPA shell rather than JSON — so it is not a stock Zendesk instance addressable through the Zendesk API. Its JS entry point (main.081580c71f891a32.js, 5 KB) is a loader with no API base URL in it.

The way through: support.twilio.com, the Zendesk help centre that help.twilio.com replaced, was server-rendered, and article IDs were preserved across the migration. A Wayback snapshot of support.twilio.com/hc/en-us/articles/<id>-<slug> therefore yields the article body, with mailto: hrefs and HTML tables intact.

The snapshots read are dated, and each claim below carries its snapshot date. A fact read this way is a confirmed reading of Twilio's own published text at that date — not proof the text is unchanged today. Where a fact was independently corroborated against a live page, that is noted.

Articles read: 360048500694 (Contacting Twilio Support, snapshot 2024-11-08), 223136087 (support ticket priority levels explained, 2024-07-18), 223136127 (Twilio Support business hours), 223136447 (Reporting SMS spam or unwanted calls, 2024-02-21 — five days before that host's reported EOL, so the last state of the pre-migration article), 11918653080475 (submitting a ticket without logging in), 360023394914 (Contacting Twilio SendGrid Support).

The email question, settled

This was the point of the exercise, so it gets its own section.

Twilio publishes no general support email address. Article 360048500694 exists specifically to explain how to contact Twilio support, and it contains zero mailto: links. Every route it gives is help.twilio.com or the Console. Any support@twilio.com or help@twilio.com in circulation is someone's inference.

The spam address is misprinted by Twilio itself. In article 223136447:

Report suspected abuse at <a href=".../www.twilio.com/help/abuse">https://www.twilio.com/help/abuse</a>
or <a href="mailto:stopspam@twilio.com">spam@twilio<wbr>.com</a>.

Visible link text: spam@twilio.com. Actual mailto: target: stopspam@twilio.com. They disagree. The href is the operative address; the printed string is what every scraper, search index and language model reproduces. Both are recorded — stopspam@ as the channel, spam@ in known_dead with the explanation.

fraud@twilio.com is genuine, and is the only address confirmed twice independently: as a live raw-HTML mailto: href on https://www.twilio.com/docs/usage/fraud-response-guide/engage, and in Wayback snapshot 20260419215717 of the same page.

abuse@sendgrid.com remains referenced only — the SendGrid abuse-awareness docs are client-rendered and yielded no mailto: to raw-HTML extraction.

The plan/channel matrix, from article 360048500694

Previously referenced and partly guessed; now confirmed, read as an HTML table:

PlanHelp Center AssistantDirect submit-a-ticket linkLive chatPhone support
Developer
Production
Business
Personalized

Same article: all customers get a ticket-form response "usually within 24 hours"; and these products are ticket-only regardless of plan — Programmable Video, Conversations, Studio, REST API, Functions/Serverless, Twilio CLI, Event Streams, Sync, Notify, Frontline, NTS.

Priority definitions, from article 223136087

Verbatim structure, previously only inferrable from the support-plans page's row labels:

  • Priority 1: Business critical. Only available for production applications. Complete loss of service, or a significant feature completely unavailable with no workaround. Excludes development issues and staging environments.
  • Priority 2: Degraded service. Intermittent issues and reduced quality of service. A workaround may be available. Also excludes development and staging.
  • Priority 3: General issue. Product questions, feature requests, development issues.

Two operationally significant additions: tickets default to Priority 3 if the customer sets none, and Twilio reserves the right to reclassify, stating that reclassification is used almost exclusively to downgrade a P1 that is really a non-production setup issue or a how-to question.

Business hours, from article 223136127

Roughly 09:00–18:00 Mon–Fri, follow-the-sun across Americas, EMEA and APAC, with per-country holiday calendars (Brazil, Canada, Colombia, Mexico, US; Czechia, Estonia, France, Germany ×2, Ireland, Netherlands, Poland, Serbia, Spain, Sweden, UK; Australia, Hong Kong, India, Japan, Singapore). Weekends and local holidays are not standard business hours and staffing is reduced — but P1 and P2 continue to be prioritised through them. So a "business hours" SLA is regional, and computing elapsed time against one needs the right country's calendar.

The no-login fallback, from article 11918653080475

help.twilio.com → "Ask AI" (top right) → ask about account access → ask to contact support → choose "Can't Login? Submit ticket without logging in".

The caveat is the valuable part: a ticket filed this way is handled as if no plan is on file, so a paid plan's guaranteed response does not apply and it is triaged on priority alone. Recover the login first unless the login itself is the problem.

SendGrid, from article 360023394914

Its own help centre, and — unlike Twilio proper — no unauthenticated requests are accepted at all. Hours: ticket 24/7, chat 24/7 (paid only), phone 07:00–17:00 MST Mon–Fri (paid only).

Confirmed by direct reach

TargetObserved
https://help.twilio.com/200 (SPA shell)
https://help.twilio.com/hc/en-us/requests/new200
https://help.twilio.com/support-plans200
https://help.twilio.com/articles/223136447200 (shell only)
https://help.twilio.com/articles/223136527200 (shell only)
https://console.twilio.com/us1/develop/support/tickets200, lands on login gate
https://www.twilio.com/en-us/support-plans200, read in full
https://www.twilio.com/en-us/support-plans/cdp200
https://www.twilio.com/en-us/help/abuse200, form fields read
https://www.twilio.com/en-us/help/contact-sales200
https://www.twilio.com/help/sales.html301 → /en-us/help/sales, also 200
https://www.twilio.com/docs/usage/fraud-response-guide/engage200, mailto:fraud@twilio.com in raw HTML
https://status.twilio.com/200
https://security.twilio.com/200
https://stackoverflow.com/collectives/twilio200
https://www.twilio.com/en-us/developers200, read in full
https://www.twilio.com/en-us/legal/twilio-discord-faq200
https://www.twilio.com/docs/usage/fraud-response-guide200
https://www.twilio.com/en-us/legal/aup200
https://github.com/twilio200

Plan tiers, prices and per-tier response times read directly off /en-us/support-plans.

Still referenced — named by a Twilio source, not reached

  • abuse@sendgrid.com — SendGrid abuse-awareness docs, client-rendered.
  • r/twilio — linked from the Developer Hub; direct fetch returns 403 to non-browser user agents.
  • The Discord server — linked from the Developer Hub, with no stable invite URL published there.
  • support.twilio.com EOL date of 2024-02-27 — from a search result, not from a Twilio page. The 2024-02-21 snapshot being the last available one is consistent with it, but the date itself is not confirmed.

Dead — checked, does not work

TargetObservedNote
help@twilio.comNo Twilio-published source; the how-to-contact-support article has no mailto: at allRecorded as non-existent, not merely unverified.
spam@twilio.comPrinted as link text in article 223136447 whose mailto: href is stopspam@twilio.comThe two disagree. Trust the href.
https://community.twilio.com/Connection failure, host does not resolveThe retired Twilio Forums; final announcement was the move to the Stack Overflow Collective.
https://www.twilio.com/en-us/community404Frequently cited as the community landing page. It is not one.
https://www.twilio.com/community404twilio.com/community 301s here.
https://discord.gg/twilio301 → discord.com/invite/twilio; invites API returns {"message":"Unknown Invite","code":10006}A live redirect fronting a dead invite. Invisible to a link checker.
https://www.twilio.com/en-us/legal/support-plans404twilio.com/legal/support-plans 301s here — a dead end behind a live redirect.
https://www.twilio.com/en-us/legal/acceptable-use-policy404The AUP is at /en-us/legal/aup.
https://www.twilio.com/en-us/legal/report-abuse404The abuse route is /en-us/help/abuse.
https://support.twilio.com/302 → /hc → 301 → /hc/en-us → 403Legacy host, still widely linked and indexed. Article IDs resolve under help.twilio.com/articles/<id>; snapshots of this host are how the bodies were read.

What this pass established about verification itself

Four observations, all from checking one vendor, and all of them now shape support-revalidate and support-add-service:

  1. A 200 can front an empty page. Client-rendered help centres return 200 with no content to a fetcher. Status codes prove the host is up and nothing about the page.
  2. A 301 can front a dead resource. discord.gg/twilio redirects cleanly to an expired invite. Any link checker following redirect chains reports it healthy.
  3. A 403 does not mean gone. support.twilio.com/hc/en-us bot-walls fetchers while remaining perfectly usable in a browser.
  4. Link text and mailto: href can disagree, and when they do, everything downstream of a text scrape is wrong while everything downstream of a link check is right. Extract hrefs, not prose.

Hence evidence is required on any channel claiming confirmed, and scripts/check_registry.py deliberately does not check reachability — a status code is not a verdict.

Not verified

The skills have not been run end to end against a live Twilio ticket. Nothing below the registry — drafting, sending, the follow-up clock — has been exercised on a real support interaction. That is why the plugin is badged work-in-progress.