twilio sms automation

Twilio SMS Automation

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "twilio sms automation" with this command: npx skills add claude-office-skills/skills/claude-office-skills-skills-twilio-sms-automation

Twilio SMS Automation

Comprehensive skill for automating SMS, voice, and verification workflows with Twilio.

Core Workflows

  1. SMS Messaging Flow

SMS AUTOMATION FLOW: ┌─────────────────┐ │ Trigger │ │ (Event/API) │ └────────┬────────┘ ▼ ┌─────────────────┐ │ Message Build │ │ - Template │ │ - Personalize │ └────────┬────────┘ ▼ ┌─────────────────┐ │ Number Lookup │ │ - Validate │ │ - Format │ └────────┬────────┘ ▼ ┌─────────────────┐ │ Send │ │ - Twilio API │ │ - Queue │ └────────┬────────┘ ▼ ┌─────────────────┐ │ Delivery │ │ - Status │ │ - Callback │ └─────────────────┘

  1. Message Configuration

sms_config: sender: phone_number: "+1234567890" messaging_service_sid: "MG..." # For higher throughput

defaults: status_callback: "https://api.example.com/sms/status" validity_period: 14400 # 4 hours

rate_limiting: messages_per_second: 10 daily_limit_per_recipient: 5

compliance: opt_out_keywords: ["STOP", "UNSUBSCRIBE", "CANCEL"] opt_in_required: true quiet_hours: start: "21:00" end: "09:00" timezone: "America/New_York"

Message Templates

Notification Templates

templates: order_confirmation: content: | {{company}}: Your order #{{order_id}} has been confirmed! Total: ${{total}} Track: {{tracking_url}} Reply HELP for assistance. max_length: 160

shipping_update: content: | {{company}}: Your order #{{order_id}} has shipped! Carrier: {{carrier}} Tracking: {{tracking_number}} Delivery: {{estimated_date}}

appointment_reminder: content: | Reminder: Your appointment with {{provider}} is tomorrow at {{time}}. Location: {{address}} Reply C to confirm or R to reschedule.

two_factor: content: | Your {{company}} verification code is: {{code}} This code expires in 10 minutes. Don't share this code with anyone.

Conversational Templates

two_way_messaging: welcome: trigger: opt_in response: | Welcome to {{company}} updates! You'll receive order and shipping notifications. Reply HELP for commands or STOP to unsubscribe.

help: trigger: ["HELP", "?", "INFO"] response: | {{company}} SMS Commands: STATUS - Check order status TRACK - Get tracking info SUPPORT - Contact support STOP - Unsubscribe

status_inquiry: trigger: ["STATUS", "ORDER"] action: lookup_order response: | Order #{{order_id}}: {{status}} {{#if tracking}} Tracking: {{tracking_url}} {{/if}}

unsubscribe: trigger: ["STOP", "UNSUBSCRIBE"] action: opt_out response: | You've been unsubscribed from {{company}} messages. Reply START to resubscribe anytime.

Verification (2FA)

Verify API Integration

verification_config: channel: sms # or: call, email, whatsapp

code_settings: length: 6 expiry_minutes: 10

rate_limits: max_attempts: 5 lockout_minutes: 30

templates: sms: "Your {{company}} code is {{code}}" call: "Your verification code is {{code_spoken}}"

Verification Flow

// Start Verification const verification = await twilio.verify.v2 .services('VA...') .verifications .create({ to: '+1234567890', channel: 'sms', customCode: '123456', // Optional locale: 'en' });

// Check Verification const check = await twilio.verify.v2 .services('VA...') .verificationChecks .create({ to: '+1234567890', code: '123456' });

// Result if (check.status === 'approved') { // Verification successful } else { // Invalid code }

Voice Automation

Outbound Calls

voice_config: outbound_call: from: "+1234567890" twiml_url: "https://api.example.com/voice/script" status_callback: "https://api.example.com/voice/status" timeout: 30 record: true

twiml_script: | <?xml version="1.0" encoding="UTF-8"?> <Response> <Say voice="alice"> Hello {{name}}, this is a reminder about your appointment tomorrow at {{time}}. </Say> <Gather numDigits="1" action="/handle-response"> <Say>Press 1 to confirm, 2 to reschedule.</Say> </Gather> </Response>

IVR Menu

ivr_menu: greeting: | Thank you for calling {{company}}. For sales, press 1. For support, press 2. For billing, press 3. To speak with an operator, press 0.

routing: - digit: "1" action: transfer destination: "+1987654321" queue: "sales"

- digit: "2"
  action: transfer
  destination: "+1876543210"
  queue: "support"
  
- digit: "3"
  action: transfer
  destination: "+1765432109"
  queue: "billing"
  
- digit: "0"
  action: operator
  fallback: voicemail

Bulk Messaging

Campaign Configuration

bulk_campaign: name: "Holiday Promotion"

audience: source: segment filter: opted_in: true last_purchase: "> 30_days"

message: template: holiday_promo variables: discount_code: "HOLIDAY20"

schedule: start_time: "2024-11-25T10:00:00" timezone: "America/New_York" batch_size: 100 delay_between_batches: 60 # seconds

tracking: delivery_report: true click_tracking: true conversion_tracking: true

Broadcast Status

CAMPAIGN STATUS: Holiday Promotion ═══════════════════════════════════════

Progress: ████████████████░░░░ 78%

DELIVERY STATS: Sent: 7,800 Delivered: 7,450 (95.5%) Failed: 125 (1.6%) Pending: 225 (2.9%)

ENGAGEMENT: Clicks: 1,245 (16.7%) Replies: 89 (1.2%) Opt-outs: 23 (0.3%)

ERRORS: Invalid Number: 45 Unsubscribed: 52 Carrier Block: 18 Rate Limited: 10

ESTIMATED COMPLETION: 25 minutes

Phone Number Management

Number Lookup

number_lookup: capabilities: - carrier_info - caller_name - line_type

validation: - check_format - verify_active - detect_landline_vs_mobile

example_response: phone_number: "+14155551234" country_code: "US" carrier: name: "Verizon" type: "mobile" caller_name: "John Doe" valid: true

Number Provisioning

number_management: search_criteria: country: "US" area_code: "415" capabilities: ["SMS", "MMS", "Voice"]

purchase: phone_number: "+14155559999" friendly_name: "Marketing Line" sms_url: "https://api.example.com/sms/incoming" voice_url: "https://api.example.com/voice/incoming"

Analytics Dashboard

SMS ANALYTICS - LAST 30 DAYS ═══════════════════════════════════════

VOLUME: Sent: 45,230 Delivered: 43,456 (96.1%) Failed: 1,774 (3.9%)

BY TYPE: Notifications ████████████░░░░ 62% Marketing ██████░░░░░░░░░░ 23% 2FA ████░░░░░░░░░░░░ 15%

DELIVERY BY CARRIER: Verizon ████████████████ 97% AT&T ███████████████░ 95% T-Mobile ██████████████░░ 94% Sprint █████████████░░░ 92%

COST: Total Spend: $1,245.67 Per Message: $0.0275 Per Delivered: $0.0287

ENGAGEMENT: Link Clicks: 3,456 (7.9%) Replies: 892 (2.1%) Opt-outs: 56 (0.1%)

API Examples

Send SMS

// Simple SMS const message = await twilio.messages.create({ body: 'Hello from Twilio!', from: '+1234567890', to: '+0987654321', statusCallback: 'https://api.example.com/sms/status' });

// With Messaging Service (recommended for scale) const message = await twilio.messages.create({ body: 'Order confirmed!', messagingServiceSid: 'MG...', to: '+0987654321' });

// MMS with Media const mms = await twilio.messages.create({ body: 'Check out this image!', from: '+1234567890', to: '+0987654321', mediaUrl: ['https://example.com/image.jpg'] });

Handle Incoming SMS

// Express webhook handler app.post('/sms/incoming', (req, res) => { const { From, Body } = req.body;

const twiml = new twilio.twiml.MessagingResponse();

if (Body.toUpperCase() === 'STATUS') { twiml.message('Your order is on the way!'); } else { twiml.message('Thanks for your message. We'll respond shortly.'); }

res.type('text/xml'); res.send(twiml.toString()); });

Best Practices

  • Get Consent: Always have opt-in before messaging

  • Include Opt-Out: STOP keyword in every message

  • Respect Quiet Hours: Don't message late night

  • Validate Numbers: Use Lookup API before sending

  • Handle Failures: Retry logic for transient errors

  • Monitor Delivery: Track delivery rates by carrier

  • Stay Compliant: Follow TCPA/CTIA guidelines

  • Use Templates: Consistent, tested messages

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

excel-automation

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

calendar-automation

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

sheets-automation

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

crm-automation

No summary provided by upstream source.

Repository SourceNeeds Review