mcpbeat

Intercom Automation

claude-office-skills/intercom automation

Automate Intercom customer messaging, support workflows, user engagement, and product tours

3k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
353
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/claude-office-skills/skills --skill Intercom Automation

The instruction itself

22 sections, as written by the author

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: "[email protected]",
  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 time

How to use it

Copy the folder

Take claude-office-skills/intercom automation from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

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.