Intercom Production Checklist
Overview
Complete checklist for deploying Intercom integrations to production, covering
authentication, error handling, rate limits, webhooks, and monitoring. Work the
pre-deployment checklist below section by section, run the pre-flight script as
the go-live gate, and keep the rollback procedure ready before you launch.
Prerequisites
- A production Intercom workspace with an access token issued from the Developer Hub.
$INTERCOM_ACCESS_TOKEN exported in the environment where you run the checks.
curl and jq available for the pre-flight and status probes.
- The integration deployed behind a feature flag so it can be disabled without a redeploy.
- (Optional)
$WEBHOOK_URL set if the integration receives Intercom webhooks.
Instructions
Work through the checklist in order. Each group gates a distinct failure class —
do not skip a group because "it probably works."
Authentication and secrets
API integration quality
Webhook endpoints
Data handling
Monitoring and alerting
Health check and go-live
Minimal health-check skeleton (the full module classifies degraded-vs-unhealthy
from the IntercomError status code and wires an Express /health route — see
the full walkthrough):
async function checkIntercomHealth(client: IntercomClient) {
const start = Date.now();
try {
await client.admins.list();
return { status: "healthy", latencyMs: Date.now() - start };
} catch (err) {
// 429 → degraded, 401 → unhealthy + unauthenticated, else unhealthy
return { status: "unhealthy", latencyMs: Date.now() - start };
}
}
Output
- A completed checklist where every applicable box is checked before launch.
- A pre-flight run that prints
Auth: PASS, current rate-limit headroom, the
Intercom status indicator (none = clear), and the webhook endpoint HTTP code.
A non-200 auth code exits non-zero and blocks the go-live.
- A
/health endpoint returning 200 when Intercom is healthy and 503 when it
is degraded or unhealthy, with the classification reason in the JSON body.
Error Handling
| 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 |
If the integration is failing in production, run the rollback procedure in
references/examples.md: flip the feature flag off first,
then roll back the deployment, verify /health, and disable webhooks in the
Developer Hub to stop queued deliveries reaching an unhealthy endpoint.
Examples
- Production health check — a full TypeScript module plus Express
/health
endpoint with status classification: references/implementation.md.
- Pre-flight verification script — a
set -euo pipefail bash gate that
checks auth, rate-limit headroom, platform status, and webhook reachability,
with expected output: references/examples.md.
- Rollback procedure — feature-flag disable,
kubectl rollout undo, health
verification, and webhook teardown: references/examples.md.
Resources
Next Steps
For version upgrades, see the intercom-upgrade-migration skill in this pack,
which covers breaking-change migration and dependency bumps.
Source: jeremylongshore/claude-code-plugins-plus-skills → plugins/saas-packs/intercom-pack/skills/intercom-prod-checklist/SKILL.md
1---
2name: intercom-prod-checklist
3description: "'Execute Intercom production readiness checklist and rollback procedures. Use when deploying Intercom integrations to production, preparing for launch, or implementing go-live validation. Trigger with phrases like \"intercom production\", \"deploy intercom\", \"intercom go-live\", \"intercom launch checklist\", \"intercom production readiness\". '"
4allowed-tools: "Read, Bash(curl:*), Grep"
5category: productivity-and-workflow
6source_repo: jeremylongshore/claude-code-plugins-plus-skills
7source_path: "plugins/saas-packs/intercom-pack/skills/intercom-prod-checklist/SKILL.md"
8source_url: https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/HEAD/plugins/saas-packs/intercom-pack/skills/intercom-prod-checklist/SKILL.md
9---
10
11# Intercom Production Checklist
12
13## Overview
14
15Complete checklist for deploying Intercom integrations to production, covering
16authentication, error handling, rate limits, webhooks, and monitoring. Work the
17pre-deployment checklist below section by section, run the pre-flight script as
18the go-live gate, and keep the rollback procedure ready before you launch.
19
20## Prerequisites
21
22- A production Intercom workspace with an access token issued from the Developer Hub.
23- `$INTERCOM_ACCESS_TOKEN` exported in the environment where you run the checks.
24- `curl` and `jq` available for the pre-flight and status probes.
25- The integration deployed behind a feature flag so it can be disabled without a redeploy.
26- (Optional) `$WEBHOOK_URL` set if the integration receives Intercom webhooks.
27
28## Instructions
29
30Work through the checklist in order. Each group gates a distinct failure class —
31do not skip a group because "it probably works."
32
33### Authentication and secrets
34
35- [ ] Production access token stored in secret manager (not env files)
36- [ ] Token has minimal required OAuth scopes
37- [ ] Token rotation procedure documented and tested
38- [ ] Separate tokens for dev/staging/production workspaces
39- [ ] No hardcoded tokens in source code (verified with `grep -r "dG9r" .`)
40
41### API integration quality
42
43- [ ] All API calls wrapped in error handling (`try/catch` with `IntercomError`)
44- [ ] 429 rate limit retry with exponential backoff implemented
45- [ ] 5xx server error retry implemented
46- [ ] Request timeouts configured (recommended: 30s)
47- [ ] Pagination handles cursor-based iteration correctly
48- [ ] Contact search uses compound queries efficiently
49
50### Webhook endpoints
51
52- [ ] Webhook URL uses HTTPS (Intercom requires it)
53- [ ] `X-Hub-Signature` verification implemented (HMAC-SHA1)
54- [ ] Webhook handler responds within 5 seconds (Intercom timeout)
55- [ ] Idempotency: duplicate webhooks handled gracefully
56- [ ] Failed webhook retry handled (Intercom retries once after 1 min)
57
58### Data handling
59
60- [ ] PII redacted from logs (emails, names, phone numbers)
61- [ ] Contact data cached with appropriate TTL
62- [ ] GDPR deletion handler implemented for contact data
63- [ ] Custom attributes validated before sending to API
64
65### Monitoring and alerting
66
67- [ ] Health check endpoint includes Intercom connectivity test
68- [ ] Error rate alerting configured (threshold: 5% over 5 min)
69- [ ] Rate limit usage tracked (alert at 80% of limit)
70- [ ] Latency monitoring (alert if P95 > 2 seconds)
71- [ ] Intercom status page monitored (https://status.intercom.com)
72
73### Health check and go-live
74
75- [ ] Production health endpoint returns `503` when Intercom is unhealthy —
76 skeleton below, full implementation in
77 [references/implementation.md](references/implementation.md).
78- [ ] Pre-flight verification script passes against the production token —
79 full script in [references/examples.md](references/examples.md).
80- [ ] Rollback procedure rehearsed — see
81 [references/examples.md](references/examples.md).
82
83Minimal health-check skeleton (the full module classifies degraded-vs-unhealthy
84from the `IntercomError` status code and wires an Express `/health` route — see
85[the full walkthrough](references/implementation.md)):
86
87```typescript
88async function checkIntercomHealth(client: IntercomClient) {
89 const start = Date.now();
90 try {
91 await client.admins.list();
92 return { status: "healthy", latencyMs: Date.now() - start };
93 } catch (err) {
94 // 429 → degraded, 401 → unhealthy + unauthenticated, else unhealthy
95 return { status: "unhealthy", latencyMs: Date.now() - start };
96 }
97}
98```
99
100## Output
101
102- A completed checklist where every applicable box is checked before launch.
103- A pre-flight run that prints `Auth: PASS`, current rate-limit headroom, the
104 Intercom status indicator (`none` = clear), and the webhook endpoint HTTP code.
105 A non-`200` auth code exits non-zero and blocks the go-live.
106- A `/health` endpoint returning `200` when Intercom is healthy and `503` when it
107 is degraded or unhealthy, with the classification reason in the JSON body.
108
109## Error Handling
110
111| Alert | Condition | Severity | Action |
112|-------|-----------|----------|--------|
113| API unreachable | 5xx > 10/min | P1 | Enable fallback, check status page |
114| Auth failure | Any 401 | P1 | Rotate token, verify in Developer Hub |
115| Rate limited | 429 > 5/min | P2 | Reduce request volume, add queuing |
116| High latency | P95 > 3s | P2 | Check Intercom status, enable caching |
117| Webhook failures | Delivery errors | P3 | Check endpoint health, verify signature |
118
119If the integration is failing in production, run the rollback procedure in
120[references/examples.md](references/examples.md): flip the feature flag off first,
121then roll back the deployment, verify `/health`, and disable webhooks in the
122Developer Hub to stop queued deliveries reaching an unhealthy endpoint.
123
124## Examples
125
126- **Production health check** — a full TypeScript module plus Express `/health`
127 endpoint with status classification: [references/implementation.md](references/implementation.md).
128- **Pre-flight verification script** — a `set -euo pipefail` bash gate that
129 checks auth, rate-limit headroom, platform status, and webhook reachability,
130 with expected output: [references/examples.md](references/examples.md).
131- **Rollback procedure** — feature-flag disable, `kubectl rollout undo`, health
132 verification, and webhook teardown: [references/examples.md](references/examples.md).
133
134## Resources
135
136- [Intercom Status](https://status.intercom.com)
137- [Rate Limiting](https://developers.intercom.com/docs/references/rest-api/errors/rate-limiting)
138- [Webhook Setup](https://developers.intercom.com/docs/webhooks/setting-up-webhooks)
139- Production health check + monitoring detail: [references/implementation.md](references/implementation.md)
140- Pre-flight + rollback scripts: [references/examples.md](references/examples.md)
141
142## Next Steps
143
144For version upgrades, see the `intercom-upgrade-migration` skill in this pack,
145which covers breaking-change migration and dependency bumps.
146
147---
148
149**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `plugins/saas-packs/intercom-pack/skills/intercom-prod-checklist/SKILL.md`