Twilio
⚠️ Not used in any Ekinoxis project. Audited every
package.json,.env.exampleand source file on 2026-08-28: zero integration. This skill exists so that adopting Twilio is a decision with the trade-offs written down, not a default.
What we do today instead
| Need | What we actually run |
|---|---|
Meta Graph API directly — ekx-meta-ads, plus a WhatsApp sales agent running on n8n |
|
| Transactional email | Resend — ekx-resend, 4 projects |
| Auth / identity | Privy (email OTP, social, wallet) — ekx-privy, 5 projects. Supabase Auth email OTP elsewhere |
| SMS | nothing |
| Voice | nothing |
SMS and voice are the genuine gaps. Everything else Twilio sells, we already have a working answer for.
Before you adopt
Ask in this order:
- Is it really SMS you need, or just a one-time code? Supabase Auth and Privy both do email OTP today, in production, at no extra vendor. Our commerce stack uses passwordless email OTP and has never needed SMS.
- Is it WhatsApp? We already send WhatsApp through Meta's Graph API. Twilio would be a second path to the same channel — more surface, another bill, another set of template approvals.
- Is it voice, or SMS to a Colombian mobile? Then yes — Twilio, or a local aggregator. Nothing we own covers that.
If the answer is (3), continue. Otherwise stop.
Official skills and MCP
Twilio ships both, in Public Beta — expect changes.
claude plugin install twilio-developer-kit # Claude Code
npx skills add twilio/ai # skills CLI
56 skills, vendored at ../../vendor/twilio/ — far
more than their docs page advertises. The ones that matter for a first integration:
| Category | Skills |
|---|---|
| Setup | twilio-account-setup · twilio-iam-auth-setup · twilio-numbers-senders · twilio-webhook-architecture |
| Send | twilio-sms-send-message · twilio-whatsapp-send-message · twilio-verify-send-otp · twilio-sendgrid-email-send |
| Choose | twilio-identity-verification-advisor · twilio-notifications-alerts-advisor · twilio-messaging-channel-advisor · twilio-voice-ai-agent-advisor |
| Compliance | twilio-compliance-onboarding · twilio-compliance-traffic · twilio-security-hardening · twilio-regulatory-compliance-bundles |
MCP server — live OpenAPI specs across 1,800+ endpoints:
"twilio-docs": { "type": "http", "url": "https://mcp.twilio.com/docs" }
Start with an advisor skill, not a send skill. Twilio has several products that all
send a message and the advisors exist because picking wrong is expensive — Verify is the
right answer for OTP, not raw SMS, because it handles retries, fraud scoring and carrier
rules you would otherwise rebuild.
The part that is not code
Messaging is a compliance product, and this is where the real cost sits:
- US A2P 10DLC registration — brand and campaign registration before you can send to US
numbers at any volume. Days to weeks, not minutes.
twilio-compliance-onboarding. - WhatsApp templates need Meta approval — the same approval flow we already deal with on the Graph API. Twilio does not remove it.
- Colombia — SMS to Colombian mobiles goes through local aggregators with their own rules. Verify the route before promising a delivery rate.
- Never send an OTP and a marketing message from the same sender. Traffic mixing is the
fastest way to get a number filtered.
twilio-compliance-traffic.
Env vars, when the time comes
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN= # or an API key pair — prefer keys, they're revocable
TWILIO_VERIFY_SERVICE_SID= # if using Verify
TWILIO_MESSAGING_SERVICE_SID=
Server-only. Rotate through API keys rather than the account auth token so a leak is revocable without taking down every integration.
Webhooks
Twilio signs with X-Twilio-Signature. Verify it with the SDK's validator on every inbound
request, and fail closed when the token is unset — the same rule as MercadoPago in
ekx-mercadopago. twilio-webhook-architecture covers the
retry and ordering semantics; assume deliveries repeat and arrive out of order, and make the
handler idempotent.
See also
ekx-meta-ads — WhatsApp as we send it today ·
ekx-resend — email ·
ekx-privy — OTP without a messaging vendor