intercom-automation

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

INSTALLATION
npx skills add https://github.com/claude-office-skills/skills --skill intercom-automation
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

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 &#x26; 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 time
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card