Back to skills
SKILL.md
Intercom Install Auth
ASecurity'Install and configure Intercom API authentication with access tokens
- 2,688 stars
- 0 votes
- 0 copies
- 2 views
- Added May 29, 2026
Works with
Security analysis
96/100- Installs packages at runtime which could introduce malicious dependencies
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill intercom-install-auth --agent claude-codeAre you the author of Intercom Install Auth?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/jeremylongshore-intercom-install-auth)---
name: intercom-install-auth
description: 'Install and configure Intercom API authentication with access tokens
or OAuth.
Use when setting up a new Intercom integration, configuring API credentials,
or initializing the intercom-client SDK in your project.
Trigger with phrases like "install intercom", "setup intercom",
"intercom auth", "configure intercom API key", "intercom access token".
'
allowed-tools: Read, Write, Edit, Bash(npm:*), Bash(npx:*), Grep
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- support
- messaging
- intercom
compatibility: Designed for Claude Code
---
# 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
```bash
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.
```typescript
import { IntercomClient } from "intercom-client";
const client = new IntercomClient({
token: process.env.INTERCOM_ACCESS_TOKEN!,
});
```
Store the token securely:
```bash
# .env (add to .gitignore)
INTERCOM_ACCESS_TOKEN=dG9rOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
# Verify .gitignore includes .env
echo '.env' >> .gitignore
```
### Step 3: Verify Connection
```typescript
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:
```typescript
// 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:
```typescript
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
| Scope | Access Granted |
|-------|---------------|
| Read admins | List workspace admins |
| Read/write contacts | Create, update, search contacts |
| Read/write conversations | Manage conversations and replies |
| Read/write messages | Send outbound messages |
| Read/write articles | Manage Help Center content |
| Read/write tags | Tag contacts, companies, conversations |
| Read/write events | Submit and read data events |
| Read/write companies | Manage company records |
## Error Handling
| Error | HTTP Code | Cause | Solution |
|-------|-----------|-------|----------|
| `unauthorized` | 401 | Invalid or expired token | Regenerate in Developer Hub |
| `forbidden` | 403 | Missing OAuth scope | Add required scope in app config |
| `token_revoked` | 401 | Token was revoked | Generate new access token |
| `invalid_grant` | 400 | OAuth code expired | Restart OAuth flow |
```typescript
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
- [Authentication Guide](https://developers.intercom.com/docs/build-an-integration/learn-more/authentication)
- [OAuth Scopes](https://developers.intercom.com/docs/build-an-integration/learn-more/authentication/oauth-scopes)
- [Setting up OAuth](https://developers.intercom.com/docs/build-an-integration/learn-more/authentication/setting-up-oauth)
- [intercom-client npm](https://www.npmjs.com/package/intercom-client)
## Next Steps
After successful auth, proceed to `intercom-hello-world` for your first API call.
Attribution
Comments
Loading comments…