Automate Intercom customer messaging, support workflows, user engagement, and product tours
Intercom Automation
Comprehensive skill for automating Intercom customer communication and support workflows.
Core Workflows
1. Conversation Flow
CUSTOMER CONVERSATION FLOW:
┌─────────────────┐
│ User Message │
│ (Inbound) │
└────────┬────────┘
▼
┌─────────────────┐
│ Bot Triage │
│ - Intent │
│ - Route │
└────────┬────────┘
│
┌────┴────┐
▼ ▼
┌───────┐ ┌───────┐
│ Bot │ │ Human │
│ Reply │ │ Agent │
└───┬───┘ └───┬───┘
│ │
└────┬────┘
▼
┌─────────────────┐
│ Resolution │
│ - Close │
│ - Follow-up │
└─────────────────┘
2. Automation Rules
automations:
- name: welcome_new_users
trigger:
event: user.created
conditions:
- signed_up_at: within_last_hour
action:
send_message:
type: chat
delay: 5_minutes
message: |
Hey {{first_name}}! 👋
Welcome to {{company_name}}! I'm here to help you
get started. What brings you here today?
buttons:
- "Explore features"
- "I have a question"
- "Just looking around"
- name: trial_expiring
trigger:
event: user.attribute_changed
attribute: trial_days_remaining
value: 3
action:
send_message:
type: email
template: trial_expiring
- name: feature_announcement
trigger:
segment: power_users
event: feature_released
action:
send_message:
type: in_app
message: "🎉 New Feature: {{feature_name}}"
User Segmentation
Segment Definitions
segments:
- name: trial_users
filter:
subscription_status: trial
- name: power_users
filter:
sessions_count: "> 50"
last_seen: "< 7 days"
features_used: "> 5"
- name: at_risk_users
filter:
subscription_status: active
last_seen: "> 30 days"
- name: enterprise_prospects
filter:
company_size: "> 100"
plan: free
- name: feature_requesters
filter:
tag: feature_request
conversations_count: "> 0"
Dynamic Attributes
custom_attributes:
- name: health_score
type: number
compute: |
(sessions_last_30_days * 2) +
(features_used * 3) +
(team_members_active * 5)
- name: lifecycle_stage
type: string
rules:
- condition: signed_up_at < 7_days
value: "onboarding"
- condition: subscription_status == "trial"
value: "trial"
- condition: subscription_status == "active"
value: "customer"
- condition: subscription_status == "cancelled"
value: "churned"
- name: account_tier
type: string
source: company.plan
Messaging Campaigns
Onboarding Series
onboarding_campaign:
name: "New User Onboarding"
audience:
segment: new_signups
messages:
- day: 0
channel: in_app
content: |
Welcome to {{company}}! 🎉
Let me show you around. Click below to take a
quick 2-minute tour.
cta: "Start Tour"
- day: 1
channel: email
subject: "Quick tip: {{feature_1}}"
content: |
Hi {{first_name}},
Did you know you can {{feature_1_benefit}}?
Here's how: {{feature_1_tutorial_link}}
- day: 3
channel: in_app
trigger:
not_completed: "setup_wizard"
content: |
Hey {{first_name}}, I noticed you haven't
finished setting up. Need any help?
- day: 7
channel: email
subject: "How's it going?"
content: |
Hi {{first_name}},
You've been using {{company}} for a week now.
Any questions or feedback? Just reply to this email!
Product Tours
product_tours:
- name: "Welcome Tour"
trigger:
event: first_login
steps:
- element: "#dashboard"
title: "Your Dashboard"
body: "This is where you'll see your key metrics"
position: bottom
- element: "#create-button"
title: "Create New"
body: "Click here to create your first project"
position: left
- element: "#help-menu"
title: "Need Help?"
body: "Find docs and contact support here"
position: bottom
- name: "Feature Tour: Reports"
trigger:
event: page_viewed
url: "/reports"
first_time: true
steps:
- element: "#date-picker"
title: "Date Range"
body: "Select your reporting period"
Support Workflows
Conversation Routing
routing_rules:
- name: vip_priority
conditions:
- company.plan: enterprise
actions:
- set_priority: urgent
- assign_team: enterprise_support
- send_notification: slack_vip
- name: billing_issues
conditions:
- message_contains: ["billing", "charge", "invoice", "refund"]
actions:
- add_tag: billing
- assign_team: billing_support
- name: technical_support
conditions:
- message_contains: ["error", "bug", "not working", "broken"]
actions:
- add_tag: technical
- assign_team: tech_support
- create_ticket: jira
Bot Responses
bot_responses:
- intent: greeting
patterns: ["hi", "hello", "hey"]
response: |
Hi there! 👋 How can I help you today?
- intent: pricing
patterns: ["pricing", "cost", "how much", "plans"]
response: |
Great question! Here's our pricing:
• **Starter**: $29/mo
• **Growth**: $79/mo
• **Enterprise**: Custom
Would you like me to connect you with sales?
buttons:
- "Yes, talk to sales"
- "See full comparison"
- intent: password_reset
patterns: ["forgot password", "reset password", "can't login"]
response: |
No problem! You can reset your password here:
{{password_reset_link}}
The link will expire in 24 hours.
auto_close: true
Analytics & Reporting
Conversation Metrics
SUPPORT METRICS - THIS WEEK
═══════════════════════════════════════
Conversations:
New: 234 (+12%)
Closed: 256 (+8%)
Open: 45
Response Times:
First Reply: 2.3 min (target: 5 min) ✓
Median: 8 min
Resolution: 2.4 hours
CSAT Score: 4.7/5 ⭐ (+0.2)
BY CHANNEL:
Chat ████████████░░░░ 156
Email ██████░░░░░░░░░░ 58
In-App ████░░░░░░░░░░░░ 20
TOP TOPICS:
┌────────────────────┬───────┐
│ Topic │ Count │
├────────────────────┼───────┤
│ Billing questions │ 45 │
│ Feature requests │ 38 │
│ Bug reports │ 32 │
│ How-to questions │ 28 │
└────────────────────┴───────┘
Engagement Dashboard
engagement_metrics:
- name: message_open_rate
formula: opened / sent * 100
target: 40%
- name: click_through_rate
formula: clicked / opened * 100
target: 10%
- name: tour_completion_rate
formula: completed / started * 100
target: 60%
- name: bot_resolution_rate
formula: resolved_by_bot / total * 100
target: 30%
Integration Workflows
CRM Sync
crm_integration:
salesforce:
sync_fields:
- intercom: company.name
salesforce: Account.Name
- intercom: user.email
salesforce: Contact.Email
- intercom: custom.mrr
salesforce: Account.MRR__c
events:
- trigger: conversation_closed
action: log_activity
type: "Support Interaction"
- trigger: user.tag_added
tag: "sales_qualified"
action: create_lead
Slack Integration
slack_integration:
notifications:
- trigger: new_conversation
channel: "#support-inbox"
conditions:
- priority: urgent
message: "🚨 Urgent: {{user.name}} needs help"
- trigger: conversation_assigned
notify: assignee_dm
message: "New conversation assigned to you"
commands:
/intercom:
- lookup_user
- send_message
- add_tag
API Examples
Create or Update User
// Create/Update User
const user = await intercom.users.create({
user_id: "12345",
email: "user@example.com",
name: "John Doe",
signed_up_at: Math.floor(Date.now() / 1000),
custom_attributes: {
plan: "pro",
team_size: 10,
onboarding_complete: true
}
});
// Send Message
await intercom.messages.create({
message_type: "inapp",
body: "Hey! New feature alert 🎉",
from: {
type: "admin",
id: "admin_id"
},
to: {
type: "user",
user_id: "12345"
}
});
// Search Conversations
const conversations = await intercom.conversations.search({
query: {
field: "state",
operator: "=",
value: "open"
}
});
Best Practices
Personalize Messages: Use user attributes
Time Appropriately: Consider user timezone
Don't Over-Message: Respect frequency limits
Bot + Human: Know when to escalate
Track Everything: Measure message effectiveness
Segment Thoughtfully: Target the right users
A/B Test: Optimize message content
Quick Resolution: Minimize response timedon't have the plugin yet? install it then click "run inline in claude" again.