WhatsApp Business automation - customer support, notifications, chatbots, and broadcast messaging
npx skills add https://github.com/claude-office-skills/skills --skill whatsapp-automation
Automate WhatsApp Business communications including customer support, notifications, chatbots, and broadcast messaging. Based on n8n's WhatsApp integration templates.
This skill covers:
setup_requirements:
1. meta_business_account:
- Create at business.facebook.com
- Verify business
2. whatsapp_business_api:
- Access through Meta Developer Portal
- Create WhatsApp Business App
- Get Phone Number ID
- Get Access Token
3. webhook_configuration:
- Set callback URL
- Verify token
- Subscribe to messages
4. message_templates:
- Create templates in Business Manager
- Wait for approval (24-48h)
template_categories:
transactional:
- order_confirmation
- shipping_update
- delivery_notification
- appointment_reminder
marketing:
- promotional_offer
- product_launch
- newsletter
utility:
- account_verification
- password_reset
- payment_reminder
template_example:
name: "order_confirmation"
language: "en"
category: "TRANSACTIONAL"
components:
- type: HEADER
format: TEXT
text: "Order Confirmed! ๐"
- type: BODY
text: |
Hi {{1}},
Your order #{{2}} has been confirmed!
Items: {{3}}
Total: {{4}}
We'll notify you when it ships.
- type: FOOTER
text: "Reply HELP for support"
- type: BUTTONS
buttons:
- type: URL
text: "Track Order"
url: "https://example.com/track/{{1}}"
chatbot_flow:
name: "Customer Support"
welcome:
trigger: first_message
response: |
๐ Welcome to {Company} Support!
How can I help you today?
1๏ธโฃ Track Order
2๏ธโฃ Return/Exchange
3๏ธโฃ Product Questions
4๏ธโฃ Speak to Agent
Reply with a number to continue.
flows:
track_order:
trigger: "1" OR "track" OR "order"
steps:
- ask: "Please enter your order number:"
- validate: order_number_format
- lookup: order_status
- respond: |
๐ฆ *Order #{order_number}*
Status: {status}
{if_shipped: Tracking: {tracking_number}}
Estimated delivery: {eta}
[Track Package]({tracking_url})
return_exchange:
trigger: "2" OR "return" OR "exchange"
steps:
- ask: "Order number for return?"
- check: return_eligibility
- if_eligible:
respond: return_instructions
- if_not:
respond: contact_support
product_questions:
trigger: "3" OR "product" OR "question"
steps:
- ai_response:
model: gpt-4
context: product_faq_knowledge_base
agent_handoff:
trigger: "4" OR "agent" OR "human"
steps:
- check: agent_availability
- if_available:
transfer: to_live_agent
notify: "#support-queue"
- if_unavailable:
respond: "Our team is currently unavailable. Leave a message and we'll get back to you within 24 hours."
create: support_ticket
ai_chatbot:
model: gpt-4
system_prompt: |
You are a WhatsApp customer support agent for {Company}.
Guidelines:
- Be helpful and friendly
- Keep responses concise (WhatsApp prefers short messages)
- Use emojis appropriately
- If you can't help, offer to connect with a human agent
- Never make up information about orders or products
You have access to:
- Order lookup
- Product catalog
- FAQ knowledge base
tools:
- lookup_order: by order number
- search_products: by keyword
- check_inventory: by product id
- create_ticket: for complex issues
escalation_triggers:
- sentiment: very_negative
- keywords: ["complaint", "refund", "angry", "sue"]
- loop_detected: same_question_3x
order_notifications:
order_placed:
trigger: shopify_order_created
template: order_confirmation
variables:
- customer_name
- order_number
- items_summary
- total_amount
payment_received:
trigger: payment_captured
message: |
โ
Payment received for order #{order_number}!
Amount: {amount}
We're preparing your order now.
shipped:
trigger: fulfillment_created
template: shipping_update
variables:
- tracking_number
- carrier
- estimated_delivery
out_for_delivery:
trigger: tracking_status_change
condition: status == "out_for_delivery"
message: |
๐ Your order is out for delivery!
Expected today by {eta}.
Track live: {tracking_url}
delivered:
trigger: tracking_status_change
condition: status == "delivered"
message: |
๐ฆ Your order has been delivered!
We hope you love it!
[Leave a Review]({review_url})
[Need Help?]({support_url})
appointment_reminders:
schedule:
- 24_hours_before
- 1_hour_before
template: appointment_reminder
24h_message: |
๐
*Appointment Reminder*
Hi {name},
You have an appointment tomorrow:
๐ {location}
๐ {time}
๐ค {provider}
Reply:
โ
CONFIRM to confirm
โ CANCEL to cancel
๐
RESCHEDULE to change time
1h_message: |
โฐ Your appointment is in 1 hour!
{provider} at {location}
See you soon!
broadcast_campaigns:
setup:
- import_contacts: from_crm
- segment_audience: by_criteria
- create_template: get_approval
- schedule_send
targeting_options:
- all_contacts
- by_tag: [vip, new_customer, inactive]
- by_purchase_history
- by_location
- custom_segment
compliance:
- opt_in_required: true
- opt_out_easy: reply_STOP
- frequency_limits: per_contact_per_day
- quiet_hours: respect_timezone
tracking:
- delivered
- read
- replied
- clicked_link
- opted_out
campaign_templates:
promotional:
template: |
๐ *Special Offer for You!*
Hi {name},
{offer_description}
Use code: {promo_code}
Valid until: {expiry}
[Shop Now]({url})
Reply STOP to unsubscribe
product_launch:
template: |
๐ *New Arrival Alert*
{name}, check out our latest:
{product_name}
{product_description}
{price}
[View Product]({url})
reengagement:
template: |
๐ *We Miss You, {name}!*
It's been a while since your last visit.
Here's 15% off to welcome you back:
Code: COMEBACK15
[Shop Now]({url})
workflow: "WhatsApp Order Bot"
nodes:
- name: "WhatsApp Trigger"
type: "n8n-nodes-base.whatsAppTrigger"
parameters:
events: ["messages"]
- name: "Parse Message"
type: "n8n-nodes-base.code"
parameters:
code: |
const message = $input.first().json;
return {
from: message.from,
text: message.text.body,
type: message.type
};
- name: "AI Response"
type: "n8n-nodes-base.openAi"
parameters:
model: "gpt-4"
messages: [
{ role: "system", content: "..." },
{ role: "user", content: "{{ $json.text }}" }
]
- name: "Send Reply"
type: "n8n-nodes-base.whatsApp"
parameters:
operation: "sendMessage"
phoneNumberId: "{{ $env.WHATSAPP_PHONE_ID }}"
recipientPhoneNumber: "{{ $json.from }}"
message: "{{ $json.response }}"
Request: "Create WhatsApp order notification flow"
Output:
# WhatsApp Order Notifications
## Message Templates (Need Meta Approval)
### 1. Order Confirmation
Hi {{1}}! ๐
Your order #{{2}} is confirmed!
Items: {{3}}
Total: {{4}}
We'll update you when it ships.
Track Order
### 2. Shipping Update
๐ฆ Your order is on the way!
Order: #{{1}}
Carrier: {{2}}
Tracking: {{3}}
Expected delivery: {{4}}
Track Package
### 3. Delivered
โ Delivered!
Your order #{{1}} has arrived.
Love it? Leave a review!
Need help? Reply to this message.
Review
## n8n Workflow
trigger: Shopify Order Created
steps:
## Automation Rules
- Order placed โ Confirmation (immediate)
- Shipped โ Tracking (immediate)
- Out for delivery โ Alert (immediate)
- Delivered โ Review request (1 day later)
*WhatsApp Automation Skill - Part of Claude Office Skills*
Analyzes meeting transcripts and recordings to uncover behavioral patterns, communication insights, and actionable feedback. Identifies when you avoid conflict, use filler words, dominate conversations, or miss opportunities to listen. Perfect for professionals seeking to improve their communication and leadership skills.
Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack.
A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.
Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application.
Prepare meeting materials with Notion context and Codex research; use when gathering context, drafting agendas/pre-reads, and tailoring materials to attendees.
Interactive daily standup/meeting update generator. Use when user says 'daily', 'standup', 'scrum update', 'status update', 'what did I do yesterday', 'prepare for meeting', 'morning update', or 'team sync'. Pulls activity from GitHub, Jira, and Claude Code session history. Conducts 4-question interview (yesterday, today, blockers, discussion topics) and generates formatted Markdown update.
Take claude-office-skills/whatsapp-automation from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side โ one of them will be ignored.