Claude-code-plugins-plus-skills intercom-upgrade-migration
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-upgrade-migration" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-intercom-upgrade-migration && rm -rf "$T"
manifest:
plugins/saas-packs/intercom-pack/skills/intercom-upgrade-migration/SKILL.mdsource content
Intercom Upgrade & Migration
Overview
Guide for upgrading the
intercom-client npm package and handling Intercom API version changes. The SDK was rewritten in TypeScript starting at v6, which introduced significant breaking changes from the v5 CommonJS API.
Prerequisites
- Current
installedintercom-client - Git for version control
- Test suite available
Instructions
Step 1: Check Current Versions
# Current SDK version npm list intercom-client # Latest available npm view intercom-client version # Current API version (check response headers) curl -s -D - -o /dev/null \ -H "Authorization: Bearer $INTERCOM_ACCESS_TOKEN" \ https://api.intercom.io/me 2>/dev/null | grep -i intercom-version
Step 2: SDK v5 to v6 Migration (Major Breaking Change)
The v6 SDK is a full TypeScript rewrite with a new API surface.
Client Initialization:
// v5 (CommonJS) const Intercom = require("intercom-client"); const client = new Intercom.Client({ token: "xxx" }); // v6+ (TypeScript ESM) import { IntercomClient } from "intercom-client"; const client = new IntercomClient({ token: "xxx" });
Contact Operations:
// v5 await client.users.create({ email: "test@example.com" }); await client.leads.create({ email: "lead@example.com" }); await client.users.find({ id: "abc" }); await client.users.list(); // v6+ (unified contacts API) await client.contacts.create({ role: "user", email: "test@example.com" }); await client.contacts.create({ role: "lead", email: "lead@example.com" }); await client.contacts.find({ contactId: "abc" }); await client.contacts.list();
Conversation Operations:
// v5 await client.conversations.reply({ id: "123", body: "Hello", type: "admin", admin_id: "456" }); // v6+ await client.conversations.reply({ conversationId: "123", body: "Hello", type: "admin", adminId: "456", });
Error Handling:
// v5 try { ... } catch (e) { console.log(e.statusCode, e.body); } // v6+ import { IntercomError } from "intercom-client"; try { ... } catch (e) { if (e instanceof IntercomError) { console.log(e.statusCode, e.message, e.body); } }
Pagination:
// v5 - callback style client.users.scroll.each({}, (users) => { /* ... */ }); // v6+ - async iteration const response = await client.contacts.list(); for await (const contact of response) { // Auto-paginates } // Or manual cursor-based pagination let startingAfter: string | undefined; do { const page = await client.contacts.list({ perPage: 50, startingAfter }); // process page.data startingAfter = page.pages?.next?.startingAfter ?? undefined; } while (startingAfter);
Step 3: API Version Pinning
Intercom API versions control response shapes. The SDK defaults to a compatible version, but you can pin explicitly.
// Current stable version: 2.11 // SDK handles version headers automatically // To use specific version via raw requests: const response = await fetch("https://api.intercom.io/contacts", { headers: { Authorization: `Bearer ${token}`, "Intercom-Version": "2.11", "Content-Type": "application/json", }, });
Step 4: Upgrade Procedure
# 1. Create upgrade branch git checkout -b upgrade/intercom-client-v6 # 2. Install new version npm install intercom-client@latest # 3. Run type checks (will surface breaking changes) npx tsc --noEmit 2>&1 | grep "intercom" # 4. Run tests npm test # 5. Fix breaking changes identified by TypeScript and tests # 6. Test against dev workspace INTERCOM_ACCESS_TOKEN=$DEV_TOKEN npm run test:integration # 7. Commit and PR git add -A && git commit -m "chore: upgrade intercom-client to v6"
Step 5: Type Import Changes
// v6+ exports types under Intercom namespace import { Intercom } from "intercom-client"; // Use typed request/response interfaces const request: Intercom.CreateContactRequest = { role: "user", email: "test@example.com", }; const contact: Intercom.Contact = await client.contacts.create(request);
v5 to v6 Migration Cheat Sheet
| v5 Method | v6 Method |
|---|---|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
Error Handling
| Issue | Detection | Solution |
|---|---|---|
| Import fails | |
| TypeScript error | Migrate / to |
| Changed param names | Use , |
| Response shape changed | Runtime errors | Check API version headers |
Resources
Next Steps
For CI integration during upgrades, see
intercom-ci-integration.