From hubspot-pack
Runs HubSpot CRM incident triage via status page, API tests, rate limits; provides decision tree for mitigation and postmortem templates for integration failures.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin hubspot-packThis skill is limited to using the following tools:
Rapid incident response procedures for HubSpot CRM integration failures, including triage, mitigation, and postmortem templates.
Instruments HubSpot API calls with Prometheus metrics, OpenTelemetry traces, and logging to monitor CRM integration health in TypeScript apps.
Executes Intercom incident runbook with bash triage scripts for API status, rate limits, status page checks, error decision tree, and mitigation for outages.
Provides expert patterns for HubSpot CRM integration including OAuth authentication, CRM objects, associations, batch operations, webhooks, and custom objects using Node.js/Python SDKs.
Share bugs, ideas, or general feedback.
Rapid incident response procedures for HubSpot CRM integration failures, including triage, mitigation, and postmortem templates.
HUBSPOT_ACCESS_TOKEN available for manual testing#!/bin/bash
# hubspot-triage.sh -- Run this first during any incident
echo "=== HubSpot Quick Triage ==="
echo "Time: $(date -u)"
# 1. Is HubSpot itself down?
echo ""
echo "--- HubSpot Platform Status ---"
curl -s https://status.hubspot.com/api/v2/summary.json | jq '{
status: .status.description,
active_incidents: [.incidents[] | {name, status, updated_at}]
}'
# 2. Can we reach the API?
echo ""
echo "--- API Connectivity ---"
STATUS=$(curl -so /dev/null -w "%{http_code}" \
https://api.hubapi.com/crm/v3/objects/contacts?limit=1 \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN")
echo "API Status: HTTP $STATUS"
# 3. Rate limit state
echo ""
echo "--- Rate Limits ---"
curl -sI https://api.hubapi.com/crm/v3/objects/contacts?limit=1 \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
| grep -i "ratelimit\|retry-after"
# 4. Check our health endpoint
echo ""
echo "--- Our Health Check ---"
curl -sf https://your-app.com/health | jq '.services.hubspot' || echo "Health check failed"
Is HubSpot status page showing an incident?
├── YES → HubSpot-side outage
│ ├── Enable fallback/degraded mode
│ ├── Notify stakeholders: "HubSpot platform issue"
│ └── Monitor status page for resolution
└── NO → Our integration issue
├── Is the error 401/403?
│ ├── YES → Token revoked or regenerated
│ │ └── Get new token from Settings > Private Apps
│ └── NO → Continue diagnosis
├── Is the error 429?
│ ├── YES → Rate limit exceeded
│ │ ├── Check if another app is consuming quota
│ │ └── Reduce request volume or wait for reset
│ └── NO → Continue diagnosis
├── Is the error 5xx?
│ ├── YES → HubSpot transient error (not on status page)
│ │ └── SDK retries should handle this (numberOfApiCallRetries)
│ └── NO → Application bug
└── Check application logs for the real error
# Verify current token
curl -s https://api.hubapi.com/crm/v3/objects/contacts?limit=1 \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" | jq .category
# If "INVALID_AUTHENTICATION":
# 1. Go to HubSpot Settings > Integrations > Private Apps
# 2. Regenerate the access token
# 3. Update in your secret manager:
aws secretsmanager update-secret --secret-id hubspot/production \
--secret-string '{"access_token":"pat-na1-NEW_TOKEN"}'
# 4. Restart/redeploy application
# 5. Verify connectivity
# Check remaining quota
curl -sI https://api.hubapi.com/crm/v3/objects/contacts?limit=1 \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
| grep -i "daily-remaining"
# If daily limit is exhausted:
# 1. Wait for midnight UTC reset (check Retry-After header)
# 2. Identify the source of excessive calls in logs
# 3. Emergency: request limit increase from HubSpot support
# Enable degraded mode if you have one
# export HUBSPOT_FALLBACK=true
# Typical HubSpot incident resolution: 15 min to 2 hours
# Monitor: https://status.hubspot.com
# Subscribe to updates via email/SMS on status page
Internal (Slack):
:red_circle: P1 INCIDENT: HubSpot CRM Integration
Status: INVESTIGATING
Impact: [e.g., "Contact syncing is delayed", "Deal creation failing"]
Cause: [e.g., "HubSpot API returning 429", "Access token expired"]
ETA: Monitoring / [time estimate]
Next update: [time]
Thread: [link to incident channel thread]
Status Page:
HubSpot Integration Degraded
We are experiencing issues with our HubSpot CRM integration.
[Specific user impact: e.g., "New lead capture is delayed."]
Our team is actively working on resolution.
Last updated: [ISO timestamp]
## Incident: HubSpot [Error Type]
**Date:** YYYY-MM-DD
**Duration:** X hours Y minutes
**Severity:** P[1-4]
**Correlation IDs:** [list from error responses]
### Summary
[1-2 sentence description of what happened]
### Timeline (UTC)
- HH:MM - Alert fired: [description]
- HH:MM - On-call acknowledged
- HH:MM - Root cause identified: [cause]
- HH:MM - Mitigation applied: [action]
- HH:MM - Full recovery confirmed
### Root Cause
[Technical explanation with HubSpot API details]
### Impact
- CRM operations affected: [contacts/deals/tickets]
- Duration: [X minutes/hours]
- Data impact: [any missed webhooks, delayed syncs]
### Action Items
- [ ] [Preventive measure] - Owner - Due date
- [ ] [Monitoring improvement] - Owner - Due date
| Scenario | First Action | Escalation |
|---|---|---|
| 401 Auth failure | Regenerate token | Contact HubSpot if tokens keep expiring |
| 429 Rate limit | Reduce volume, wait for reset | Request limit increase |
| 5xx Platform error | Enable fallback mode | Monitor status.hubspot.com |
| Webhook delivery failure | Check endpoint logs | Verify URL and signature |
For data handling and GDPR compliance, see hubspot-data-handling.