From intercom-pack
Runs Intercom production checklist for auth, API errors/rate limits, webhooks, data handling, monitoring before deploying integrations to prod.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin intercom-packThis skill is limited to using the following tools:
Complete checklist for deploying Intercom integrations to production, covering authentication, error handling, rate limits, webhooks, and monitoring.
Executes HubSpot production deployment checklist for CRM integrations, including verifications, TypeScript health check endpoint, and monitoring setup.
Deploys Intercom apps to Vercel, Fly.io, and Cloud Run with secrets, webhook handlers, and health checks.
Executes Fireflies.ai production checklist for integrations: API keys, webhooks with signature verification, GraphQL health checks, monitoring, rollback.
Share bugs, ideas, or general feedback.
Complete checklist for deploying Intercom integrations to production, covering authentication, error handling, rate limits, webhooks, and monitoring.
grep -r "dG9r" .)try/catch with IntercomError)X-Hub-Signature verification implemented (HMAC-SHA1)import { IntercomClient, IntercomError } from "intercom-client";
interface IntercomHealthStatus {
status: "healthy" | "degraded" | "unhealthy";
latencyMs: number;
authenticated: boolean;
rateLimitRemaining?: number;
error?: string;
}
async function checkIntercomHealth(
client: IntercomClient
): Promise<IntercomHealthStatus> {
const start = Date.now();
try {
const admins = await client.admins.list();
return {
status: "healthy",
latencyMs: Date.now() - start,
authenticated: true,
rateLimitRemaining: undefined, // Parsed from response headers
};
} catch (err) {
const latencyMs = Date.now() - start;
if (err instanceof IntercomError) {
return {
status: err.statusCode === 429 ? "degraded" : "unhealthy",
latencyMs,
authenticated: err.statusCode !== 401,
error: `${err.statusCode}: ${err.message}`,
};
}
return {
status: "unhealthy",
latencyMs,
authenticated: false,
error: (err as Error).message,
};
}
}
// Express health endpoint
app.get("/health", async (req, res) => {
const intercom = await checkIntercomHealth(client);
const overall = intercom.status === "healthy" ? 200 : 503;
res.status(overall).json({
status: intercom.status,
services: { intercom },
timestamp: new Date().toISOString(),
});
});
#!/bin/bash
set -euo pipefail
echo "=== Intercom Production Pre-Flight ==="
# 1. Auth check
echo -n "Auth: "
STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $INTERCOM_ACCESS_TOKEN" \
https://api.intercom.io/me)
[ "$STATUS" = "200" ] && echo "PASS" || { echo "FAIL ($STATUS)"; exit 1; }
# 2. Rate limit headroom
echo -n "Rate limit remaining: "
REMAINING=$(curl -s -D - -o /dev/null \
-H "Authorization: Bearer $INTERCOM_ACCESS_TOKEN" \
https://api.intercom.io/me 2>/dev/null | grep -i x-ratelimit-remaining | awk '{print $2}')
echo "$REMAINING"
# 3. Intercom platform status
echo -n "Intercom status: "
curl -s https://status.intercom.com/api/v2/status.json | jq -r '.status.indicator'
# 4. Webhook endpoint reachable (if configured)
if [ -n "${WEBHOOK_URL:-}" ]; then
echo -n "Webhook endpoint: "
WH_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$WEBHOOK_URL")
echo "$WH_STATUS"
fi
echo "=== Pre-flight complete ==="
# 1. Disable Intercom integration via feature flag
curl -X PATCH https://your-config-service/flags/intercom_enabled \
-d '{"value": false}'
# 2. If using k8s, rollback deployment
kubectl rollout undo deployment/intercom-service
kubectl rollout status deployment/intercom-service
# 3. Verify rollback
curl -s https://your-app.com/health | jq '.services.intercom'
# 4. Disable webhooks in Intercom Developer Hub
# (prevents queued webhook deliveries to unhealthy endpoint)
| Alert | Condition | Severity | Action |
|---|---|---|---|
| API unreachable | 5xx > 10/min | P1 | Enable fallback, check status page |
| Auth failure | Any 401 | P1 | Rotate token, verify in Developer Hub |
| Rate limited | 429 > 5/min | P2 | Reduce request volume, add queuing |
| High latency | P95 > 3s | P2 | Check Intercom status, enable caching |
| Webhook failures | Delivery errors | P3 | Check endpoint health, verify signature |
For version upgrades, see intercom-upgrade-migration.