revops
Design and optimize systems connecting marketing, sales, and customer success into a unified revenue engine.
dialpad
Send SMS and make voice calls via Dialpad API. Supports single/batch SMS, voice calls with TTS, and caller ID selection.
Full skill instructions
Send SMS and make voice calls via the Dialpad API.
| Number | Purpose | Format |
|---|---|---|
| (415) 520-1316 | Sales Team | Default for sales context |
| (415) 360-2954 | Work/Personal | Default for work context |
| (415) 991-7155 | Support SMS Only | SMS only (no voice) |
Use --from <number> to specify which number appears as caller ID.
Required environment variable:
DIALPAD_API_KEY=your_api_key_here
Optional (for ElevenLabs TTS in calls):
ELEVENLABS_API_KEY=your_elevenlabs_api_key
Get your Dialpad API key from Dialpad API Settings.
# Basic SMS
python3 send_sms.py --to "+14155551234" --message "Hello from Clawdbot!"
# From specific number (e.g., work phone)
python3 send_sms.py --to "+14155551234" --message "Hello!" --from "+14153602954"
# Batch SMS (up to 10 recipients)
python3 send_sms.py --to "+14155551234" "+14155555678" --message "Group update"
# Basic call (ring recipient - they'll answer to speak with you)
python3 make_call.py --to "+14155551234"
# Call with Text-to-Speech greeting (Dialpad's robotic TTS)
python3 make_call.py --to "+14155551234" --text "Hello! This is a call from ShapeScale."
# Call from specific number with TTS
python3 make_call.py --to "+14155551234" --from "+14153602954" --text "Meeting reminder"
# With custom voice (requires ELEVENLABS_API_KEY)
python3 make_call.py --to "+14155551234" --voice "Adam" --text "Premium voice test"
SMS:
python3 send_sms.py --to "+14155551234" --message "Your message here"
Voice Call:
python3 make_call.py --to "+14155551234" --text "Optional TTS message"
| Voice | Style | Notes |
|---|---|---|
| Eric ⭐ | Male, smooth, trustworthy | Low-cost, available! |
| Daniel | Male, British, steady | Budget |
| Sarah | Female, mature | Budget |
| River | Male, neutral | Budget |
| Alice | Female, clear | Budget |
| Brian | Male, deep | Budget |
| Bill | Male, wise | Budget |
| Voice | Style | Notes |
|---|---|---|
| Adam | Male, deep, clear | Best for professional |
| Antoni | Male, warm | Friendly tone |
| Bella | Female, soft | Warm, engaging |
To use a specific voice, add --voice "VoiceName".
POST https://dialpad.com/api/v2/smsPOST https://dialpad.com/api/v2/callphone_number + user_id| Name | Phone | User ID |
|---|---|---|
| Martin | (415) 360-2954 | 5765607478525952 |
| Lilla | (415) 870-1945 | 5625110025338880 |
| Scott | (415) 223-0323 | 5964143916400640 |
{
"id": "4612924117884928",
"status": "pending",
"message_delivery_result": "pending",
"to_numbers": ["+14158235304"],
"from_number": "+14155201316",
"direction": "outbound"
}
{
"call_id": "6342343299702784",
"status": "ringing"
}
| Error | Meaning | Action |
|---|---|---|
invalid_destination | Invalid phone number | Verify E.164 format |
invalid_source | Caller ID not available | Check --from number assignment |
no_route | Cannot deliver | Check carrier/recipient |
user_id required | Missing user ID | Use --from with known number |
Messages are stored in a single SQLite database with full-text search.
~/.dialpad/sms.db # Single file with messages + FTS5 index
# List all SMS conversations
python3 sms_sqlite.py list
# View specific conversation thread
python3 sms_sqlite.py thread "+14155551234"
# Full-text search across all messages
python3 sms_sqlite.py search "demo"
# Show unread message summary
python3 sms_sqlite.py unread
# Statistics
python3 sms_sqlite.py stats
# Mark messages as read
python3 sms_sqlite.py read "+14155551234"
# Migrate from legacy storage
python3 sms_sqlite.py migrate
search "keyword")from webhook_sqlite import handle_sms_webhook, format_notification, get_inbox_summary
# Store incoming message
result = handle_sms_webhook(dialpad_payload)
notification = format_notification(result)
# Get inbox summary
summary = get_inbox_summary()
The original JSON-based storage is still available but not recommended:
python3 sms_storage.py [list|thread|search|unread]
DIALPAD_API_KEY environment variableELEVENLABS_API_KEY + webhook setup for audio playbackDialpad doesn't provide a direct "GET /sms" endpoint. Instead, use:
Receive SMS events in real-time when messages are sent/received.
# Create a webhook subscription
python3 create_sms_webhook.py create --url "https://your-server.com/webhook/dialpad" --direction "all"
# List existing subscriptions
python3 create_sms_webhook.py list
Webhook Events:
sms_sent — Outgoing SMSsms_received — Incoming SMSNote: Add message_content_export scope to receive message text in events.
Export past SMS messages as CSV.
# Export all SMS
python3 export_sms.py --output all_sms.csv
# Export by date range
python3 export_sms.py --start-date 2026-01-01 --end-date 2026-01-31 --output jan_sms.csv
# Export for specific office
python3 export_sms.py --office-id 6194013244489728 --output office_sms.csv
Output: CSV file with columns:
date — Timestampfrom_number — Senderto_number — Recipienttext — Message contentstatus — Delivery statusDialpad SMS Skill
├── send_sms.py # Send SMS (working)
├── make_call.py # Make voice calls (working)
├── create_sms_webhook.py # Create webhook subscriptions (new)
├── export_sms.py # Export historical SMS (new)
├── sms_sqlite.py # SQLite storage with FTS5 (RECOMMENDED)
├── webhook_sqlite.py # Webhook handler for SQLite
├── sms_storage.py # Legacy JSON storage (deprecated)
└── webhook_receiver.py # Legacy webhook handler
Design and optimize systems connecting marketing, sales, and customer success into a unified revenue engine.
Strategic planning and optimization for email capture offers and gated content.
Directory submissions: the foundation layer of distribution that passes backlinks and discovery surface area into your marketing pages.
Sequence and choreograph multi-step animations with precise timing control and nested timelines.
Structured framework for planning product launches, feature announcements, and go-to-market strategies.
Upload files to Google Drive with automatic MIME type detection and metadata.
Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test runners in CI, or establish deployment strategies.
firecrawl lead gen
firecrawl lead research
firecrawl demo walkthrough
Team leadership persona with standup coordination, meeting prep, task delegation, and team communication.
Identify large Google Drive files consuming storage quota.
Revolutionize Video Creation with AI-Generated Avatars and Voices
Social media on autopilot
Design custom logos instantly with AI.
Text-heavy marketing and design images
Boost Your SEO with Content and SEO Silos
Revolutionize Your Marketing with AI-Powered MarketingBlocks!
10X faster & free AI content creation for 100+ use cases
Tribescaler | Make Your Tweets Go Viral