Claude-code-plugins-plus intercom-install-auth

install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/intercom-pack/skills/intercom-install-auth" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-intercom-install-auth && rm -rf "$T"
manifest: plugins/saas-packs/intercom-pack/skills/intercom-install-auth/SKILL.md
source content

Intercom Install & Auth

Overview

Set up the official

intercom-client
TypeScript SDK and configure authentication via access tokens (private apps) or OAuth (public apps).

Prerequisites

  • Node.js 18+
  • npm, pnpm, or yarn
  • Intercom workspace with Developer Hub access
  • Access token from Configure > Authentication in your app settings

Instructions

Step 1: Install the SDK

npm install intercom-client

The package exports

IntercomClient
and all TypeScript types under the
Intercom
namespace.

Step 2: Configure Access Token Authentication

Access tokens authenticate private apps that access your own Intercom workspace.

import { IntercomClient } from "intercom-client";

const client = new IntercomClient({
  token: process.env.INTERCOM_ACCESS_TOKEN!,
});

Store the token securely:

# .env (add to .gitignore)
INTERCOM_ACCESS_TOKEN=dG9rOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6

# Verify .gitignore includes .env
echo '.env' >> .gitignore

Step 3: Verify Connection

async function verifyConnection() {
  try {
    // List admins to verify the token works
    const admins = await client.admins.list();
    console.log("Connected! Admins:", admins.admins.length);
    for (const admin of admins.admins) {
      console.log(`  - ${admin.name} (${admin.email})`);
    }
  } catch (error) {
    if (error instanceof Error) {
      console.error("Connection failed:", error.message);
    }
  }
}

verifyConnection();

Step 4: OAuth Setup (Public Apps)

For apps that access other workspaces, configure OAuth:

// Step 1: Redirect user to Intercom authorization
const authUrl = `https://app.intercom.com/oauth?client_id=${CLIENT_ID}&state=${STATE}`;

// Step 2: Exchange code for token at your callback endpoint
async function handleOAuthCallback(code: string): Promise<string> {
  const response = await fetch("https://api.intercom.io/auth/eagle/token", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      client_id: process.env.INTERCOM_CLIENT_ID,
      client_secret: process.env.INTERCOM_CLIENT_SECRET,
      code,
    }),
  });

  const data = await response.json();
  return data.token; // Use this token for API calls
}

// Step 3: Initialize client with OAuth token
const client = new IntercomClient({ token: oauthToken });

API Versioning

Specify the API version header to pin behavior:

const client = new IntercomClient({
  token: process.env.INTERCOM_ACCESS_TOKEN!,
});

// All requests use Bearer token in Authorization header:
// Authorization: Bearer <token>
// Intercom-Version: 2.11

The current stable API version is 2.11. The SDK handles this automatically.

OAuth Scopes Reference

ScopeAccess Granted
Read adminsList workspace admins
Read/write contactsCreate, update, search contacts
Read/write conversationsManage conversations and replies
Read/write messagesSend outbound messages
Read/write articlesManage Help Center content
Read/write tagsTag contacts, companies, conversations
Read/write eventsSubmit and read data events
Read/write companiesManage company records

Error Handling

ErrorHTTP CodeCauseSolution
unauthorized
401Invalid or expired tokenRegenerate in Developer Hub
forbidden
403Missing OAuth scopeAdd required scope in app config
token_revoked
401Token was revokedGenerate new access token
invalid_grant
400OAuth code expiredRestart OAuth flow
import { IntercomError } from "intercom-client";

try {
  await client.contacts.list();
} catch (error) {
  if (error instanceof IntercomError) {
    console.error(`Intercom error: ${error.statusCode} - ${error.message}`);
    if (error.statusCode === 401) {
      console.error("Token invalid. Regenerate at app.intercom.com > Developer Hub");
    }
  }
}

Resources

Next Steps

After successful auth, proceed to

intercom-hello-world
for your first API call.