Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
twilio avatar

Twilio Whatsapp Manage Senders

  • 83 installs
  • 26 repo stars
  • Updated July 29, 2026
  • twilio/ai

twilio-whatsapp-manage-senders is an agent skill that creates, verifies, and configures production WhatsApp Business senders through Twilio's Channels Senders API.

About

The twilio-whatsapp-manage-senders skill registers WhatsApp Business phone numbers through Twilio's Channels Senders API for production messaging beyond sandbox testing. Prerequisites include an upgraded Twilio account, SMS or voice reachable number, TWILIO_ACCOUNT_SID and TWILIO_AUTH_TOKEN, and a number not already on WhatsApp. Quickstart flows initiate registration with verification_method sms, submit the OTP, and progress through lifecycle statuses from CREATING and PENDING_VERIFICATION to TWILIO_REVIEW and ONLINE. Developers can set business profile fields, inbound and status callback webhooks, list senders, and diagnose OFFLINE offlineReasons such as code 63020 for pending Meta invitations. ISV flows register senders under a client waba_id after the client accepts Twilio in Meta Business Manager. Migration guidance covers numbers already on WhatsApp and competing 2FA platforms. CANNOT limits include one WABA per number, two senders without Meta verification, and twenty senders maximum for verified accounts. Use when registering production WhatsApp senders for Verify OTP or outbound messaging skills.

  • Registers WhatsApp senders via messaging.v2.channels.senders with SMS OTP verification.
  • Documents lifecycle statuses from CREATING through ONLINE and OFFLINE reasons.
  • Covers business profile, inbound webhook, and status callback configuration.
  • Supports ISV registration under a client WABA ID.
  • Lists Meta verification limits on sender count per business account.

Twilio Whatsapp Manage Senders by the numbers

  • 83 all-time installs (skills.sh)
  • +5 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #3,040 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

twilio-whatsapp-manage-senders capabilities & compatibility

Capabilities
sender registration and otp verification · lifecycle status troubleshooting · business profile and webhook configuration · sender list and fetch operations · isv waba registration flow
Works with
aws
Use cases
api development · email
Pricing
Bring your own API key
From the docs

What twilio-whatsapp-manage-senders says it does

A WhatsApp sender is a phone number registered with WhatsApp Business through Twilio.
SKILL.md
Cannot register a phone number to multiple WABAs
SKILL.md
npx skills add https://github.com/twilio/ai --skill twilio-whatsapp-manage-senders

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs83
repo stars26
Last updatedJuly 29, 2026
Repositorytwilio/ai

How do I register a production WhatsApp sender on Twilio with OTP verification and business profile setup?

Register and manage production WhatsApp Business senders via Twilio Channels Senders API with OTP verification and profile setup.

Who is it for?

Developers registering production WhatsApp numbers on Twilio for messaging or OTP beyond sandbox mode.

Skip if: Skip for sandbox-only WhatsApp testing without production sender registration.

When should I use this skill?

User registers WhatsApp Business senders, sets sender webhooks, or troubleshoots OFFLINE sender status.

What you get

An ONLINE WhatsApp sender with profile, webhooks, and documented lifecycle status for outbound or Verify use.

Files

SKILL.mdMarkdownGitHub ↗

Overview

A WhatsApp sender is a phone number registered with WhatsApp Business through Twilio. Registration goes through a lifecycle of statuses before becoming ONLINE. Sandbox testing does not require a registered sender — see twilio-whatsapp-send-message.

---

Prerequisites

  • Upgraded Twilio account (trial accounts cannot register production senders)

— See twilio-account-setup for signup and upgrade steps

  • A phone number capable of receiving SMS or voice verification
  • Number must not already be registered with WhatsApp
  • Environment variables:
  • TWILIO_ACCOUNT_SID
  • TWILIO_AUTH_TOKEN

— See twilio-iam-auth-setup for credential setup and best practices

  • SDK: pip install twilio / npm install twilio

---

Quickstart

Python

import os
from twilio.rest import Client

client = Client(os.environ["TWILIO_ACCOUNT_SID"], os.environ["TWILIO_AUTH_TOKEN"])

# Step 1: Initiate registration
sender = client.messaging.v2.channels.senders.create(
    sender_id="whatsapp:+15017122661",
    verification_method="sms"
)
print(sender.sid)     # XExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
print(sender.status)  # CREATING

# Step 2: Submit the OTP Twilio sends to the number
sender = client.messaging.v2.channels.senders(sender.sid).update(
    verification_code="123456"
)
print(sender.status)  # ONLINE (may pass through TWILIO_REVIEW first)

Node.js

const twilio = require("twilio");
const client = twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);

// Step 1: Initiate registration
const sender = await client.messaging.v2.channels.senders.create({
    senderId: "whatsapp:+15017122661",
    verificationMethod: "sms",
});
console.log(sender.sid, sender.status);

// Step 2: Submit the OTP
const verified = await client.messaging.v2.channels.senders(sender.sid).update({
    verificationCode: "123456",
});
console.log(verified.status);

---

Sender Lifecycle Statuses

StatusMeaning
CREATINGRegistration initiated
PENDING_VERIFICATIONAwaiting OTP submission
VERIFYINGOTP being validated
TWILIO_REVIEWUnder Twilio/Meta review
ONLINEActive and ready to send
OFFLINEInactive — check offlineReasons
DRAFTIncomplete registration

---

Key Patterns

Set Business Profile

Python

sender = client.messaging.v2.channels.senders(SENDER_SID).update(
    profile_name="Acme Support",
    profile_about="Official support channel for Acme Corp",
    profile_address="123 Main St, San Francisco, CA",
    profile_vertical="PROFESSIONAL_SERVICES",
    profile_logo_url="https://acme.com/logo.png",
    profile_websites=["https://acme.com"]
)

Node.js

const sender = await client.messaging.v2.channels.senders(SENDER_SID).update({
    profileName: "Acme Support",
    profileAbout: "Official support channel for Acme Corp",
    profileAddress: "123 Main St, San Francisco, CA",
    profileVertical: "PROFESSIONAL_SERVICES",
    profileLogoUrl: "https://acme.com/logo.png",
    profileWebsites: ["https://acme.com"],
});

Configure Webhooks

Python

sender = client.messaging.v2.channels.senders(SENDER_SID).update(
    callback_url="https://yourapp.com/whatsapp/inbound",
    callback_method="POST",
    status_callback_url="https://yourapp.com/whatsapp/status"
)

Node.js

await client.messaging.v2.channels.senders(SENDER_SID).update({
    callbackUrl: "https://yourapp.com/whatsapp/inbound",
    callbackMethod: "POST",
    statusCallbackUrl: "https://yourapp.com/whatsapp/status",
});

Retrieve and List Senders

Python

sender = client.messaging.v2.channels.senders(SENDER_SID).fetch()
print(sender.status)

for s in client.messaging.v2.channels.senders.list():
    print(s.sid, s.status)

Node.js

const sender = await client.messaging.v2.channels.senders(SENDER_SID).fetch();
const senders = await client.messaging.v2.channels.senders.list();
senders.forEach(s => console.log(s.sid, s.status));

If a sender is OFFLINE, check the offlineReasons array in the response (e.g. code 63020 means business hasn't accepted Twilio's Meta invitation).

Migrate an Existing WhatsApp Number

If a number is already registered on WhatsApp (personal or business): 1. Check: https://wa.me/<PHONE_NUMBER>?text=hi 2. Delete the existing WhatsApp account on the device, or disable 2FA on the competing platform 3. Proceed with registration above

ISV / Tech Provider Flow

Register senders under a client's WhatsApp Business Account (WABA):

Python

sender = client.messaging.v2.channels.senders.create(
    sender_id="whatsapp:+15017122661",
    waba_id="client-waba-id"
)

Node.js

const sender = await client.messaging.v2.channels.senders.create({
    senderId: "whatsapp:+15017122661",
    wabaId: "client-waba-id",
});

The client must accept Twilio's invitation in their Meta Business Manager.

---

CANNOT

  • Cannot register a phone number to multiple WABAs — Each number belongs to one WABA at a time
  • Cannot exceed 2 senders without Meta Business Verification — Unverified accounts are limited to 2
  • Cannot exceed 20 senders without exception — Verified Meta Business Manager: max 20 (50 with exception request)
  • Cannot verify phone number only via SMS — Voice verification is available if SMS cannot be received

---

Next Steps

  • Send WhatsApp messages with this sender: twilio-whatsapp-send-message
  • Create message templates: twilio-content-template-builder
  • Send WhatsApp OTPs: twilio-verify-send-otp

Related skills

FAQ

What is required to register a WhatsApp sender?

An upgraded Twilio account, a phone number reachable by SMS or voice OTP, and Twilio account credentials.

When should I use twilio-whatsapp-manage-senders?

When creating production WhatsApp senders, configuring profiles and webhooks, or diagnosing sender lifecycle status.

Is twilio-whatsapp-manage-senders safe to install?

Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.