Klaviyo Production Checklist
Overview
Complete checklist for deploying Klaviyo integrations to production, with health
checks, rollback procedures, and validation against real Klaviyo API endpoints.
Work the pre-deployment checklist below, run the pre-flight script, then verify
the live health endpoint before declaring the deploy done.
Prerequisites
- Staging environment tested and verified
- Production API key with correct scopes (
pk_*)
- Webhook signing secret configured
- Monitoring and alerting ready
Instructions
Follow these steps in order. Steps 1–2 are read-only audits of the codebase and
config; steps 3–5 exercise the live API and health surface.
- Audit secrets and code. Confirm the production key lives in a secret
manager and no keys are hardcoded — run
Grep/grep -r "pk_" src/ to catch
leaks, and Read the deployment manifest to verify scopes. See the
Pre-Deployment Checklist below.
- Audit the integration, resilience, and webhooks. Walk the remaining
checklist sections (API integration, error handling, webhook security,
monitoring).
- Run the pre-flight script (
scripts/preflight-klaviyo.sh) to validate the
status page, API auth, rate-limit headroom, and pinned SDK version.
- Deploy, then verify the health endpoint returns
healthy.
- Keep the rollback path ready (feature flag first) in case metrics regress.
Health check, pre-flight script, and rollback code are in
references/implementation.md.
Pre-Deployment Checklist
Authentication & Secrets
API Integration
Error Handling & Resilience
Webhook Security
Monitoring
Output
Working through this skill produces:
- A completed pre-deployment checklist (every box ticked, or a documented
exception).
- A pre-flight run that exits
0 with all four gates green (status page, API
auth 200, rate-limit headroom, pinned SDK version) — see
references/examples.md.
- A live
/health endpoint that returns healthy with sub-500ms latency and
the resolved accountId.
- A rehearsed rollback path (feature flag → git revert →
kubectl rollout undo).
A go-live is "prod ready" only when the checklist is complete, pre-flight is
green, and the health endpoint reports healthy.
Error Handling
Map each failure to the correct severity and response. Full alert-threshold
table:
| Alert |
Condition |
Severity |
| API Auth Failure |
Any 401/403 |
P1 -- key may be revoked |
| API Unreachable |
5xx > 10/min |
P1 -- check status page |
| Rate Limited |
429 > 5/min |
P2 -- reduce request volume |
| High Latency |
P95 > 5s |
P2 -- check network/Klaviyo load |
| Webhook Signature Invalid |
Any rejection |
P2 -- verify signing secret |
- Pre-flight fails auth (
403/401): the key is revoked or under-scoped.
Rotate/repair before deploying — do not proceed (see Example 2 in
references/examples.md).
- Health endpoint
degraded: Klaviyo returned 429. Back off; honor
Retry-After and confirm the request queue caps at 75 req/s.
- Health endpoint
down: Klaviyo unreachable (5xx) — check
status.klaviyo.com and trip the circuit breaker.
- Metrics regress post-deploy: execute the rollback procedure, feature flag
first, from references/implementation.md.
Examples
Read the full endpoint on a live integration to confirm health before sign-off:
curl -s localhost:3000/health | python3 -m json.tool
# → { "status": "healthy", "services": { "klaviyo": { "status": "healthy", "latencyMs": 142, ... } } }
Four worked runs — green pre-flight, a blocked 403, reading the health
endpoint, and an instant feature-flag rollback — are in
references/examples.md.
Resources
Next Steps
For version upgrades, see klaviyo-upgrade-migration.
Source: jeremylongshore/claude-code-plugins-plus-skills → plugins/saas-packs/klaviyo-pack/skills/klaviyo-prod-checklist/SKILL.md
1---2name: klaviyo-prod-checklist3description: "'Execute Klaviyo production deployment checklist and validation procedures. Use when deploying Klaviyo integrations to production, preparing for launch, or implementing go-live procedures for email/SMS marketing. Trigger with phrases like \"klaviyo production\", \"deploy klaviyo\", \"klaviyo go-live\", \"klaviyo launch checklist\", \"klaviyo prod ready\". '"4allowed-tools: "Read, Bash(curl:*), Bash(npm:*), Grep"5category: productivity-and-workflow6source_repo: jeremylongshore/claude-code-plugins-plus-skills7source_path: "plugins/saas-packs/klaviyo-pack/skills/klaviyo-prod-checklist/SKILL.md"8source_url: https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/HEAD/plugins/saas-packs/klaviyo-pack/skills/klaviyo-prod-checklist/SKILL.md9---1011# Klaviyo Production Checklist1213## Overview1415Complete checklist for deploying Klaviyo integrations to production, with health16checks, rollback procedures, and validation against real Klaviyo API endpoints.17Work the pre-deployment checklist below, run the pre-flight script, then verify18the live health endpoint before declaring the deploy done.1920## Prerequisites2122- Staging environment tested and verified23- Production API key with correct scopes (`pk_*`)24- Webhook signing secret configured25- Monitoring and alerting ready2627## Instructions2829Follow these steps in order. Steps 1–2 are read-only audits of the codebase and30config; steps 3–5 exercise the live API and health surface.31321. **Audit secrets and code.** Confirm the production key lives in a secret33 manager and no keys are hardcoded — run `Grep`/`grep -r "pk_" src/` to catch34 leaks, and `Read` the deployment manifest to verify scopes. See the35 Pre-Deployment Checklist below.362. **Audit the integration, resilience, and webhooks.** Walk the remaining37 checklist sections (API integration, error handling, webhook security,38 monitoring).393. **Run the pre-flight script** (`scripts/preflight-klaviyo.sh`) to validate the40 status page, API auth, rate-limit headroom, and pinned SDK version.414. **Deploy**, then **verify the health endpoint** returns `healthy`.425. **Keep the rollback path ready** (feature flag first) in case metrics regress.4344Health check, pre-flight script, and rollback code are in45[references/implementation.md](references/implementation.md).4647### Pre-Deployment Checklist4849#### Authentication & Secrets5051- [ ] Production `KLAVIYO_PRIVATE_KEY` stored in secret manager (not env file)52- [ ] Key has minimal scopes (only what the app needs)53- [ ] Webhook signing secret (`KLAVIYO_WEBHOOK_SIGNING_SECRET`) configured54- [ ] Public key (`KLAVIYO_PUBLIC_KEY`) set for client-side tracking (if used)55- [ ] No hardcoded keys in codebase (`grep -r "pk_" src/`)5657#### API Integration5859- [ ] All API calls use `klaviyo-api` SDK (not raw HTTP)60- [ ] SDK version pinned in `package.json` (not `^` or `*`)61- [ ] `revision` header set to `2024-10-15` (or current supported revision)62- [ ] All profile creates use `createOrUpdateProfile` (upsert, not create)63- [ ] Events include `uniqueId` for deduplication where applicable64- [ ] Phone numbers validated as E.164 format (`+15551234567`)6566#### Error Handling & Resilience6768- [ ] 429 retry logic honors `Retry-After` header69- [ ] 5xx errors retried with exponential backoff70- [ ] 401/403 errors logged with alert (key rotation needed)71- [ ] Circuit breaker or graceful degradation when Klaviyo is down72- [ ] Request queue prevents exceeding 75 req/s burst limit7374#### Webhook Security7576- [ ] Webhook endpoint uses HTTPS only77- [ ] HMAC-SHA256 signature verification enabled78- [ ] Idempotency handling (dedup by event ID)79- [ ] Webhook endpoint returns 200 within 30 seconds8081#### Monitoring8283- [ ] Health check endpoint includes Klaviyo connectivity test84- [ ] Alert on 429 rate (>5/min = P2)85- [ ] Alert on 401/403 errors (any = P1)86- [ ] Alert on 5xx errors (>10/min = P1)87- [ ] API latency tracked (P95 > 5s = P2)88- [ ] Klaviyo status page monitored ([status.klaviyo.com](https://status.klaviyo.com))8990## Output9192Working through this skill produces:9394- A completed pre-deployment checklist (every box ticked, or a documented95 exception).96- A pre-flight run that exits `0` with all four gates green (status page, API97 auth `200`, rate-limit headroom, pinned SDK version) — see98 [references/examples.md](references/examples.md).99- A live `/health` endpoint that returns `healthy` with sub-500ms latency and100 the resolved `accountId`.101- A rehearsed rollback path (feature flag → git revert → `kubectl rollout undo`).102103A go-live is "prod ready" only when the checklist is complete, pre-flight is104green, and the health endpoint reports `healthy`.105106## Error Handling107108Map each failure to the correct severity and response. Full alert-threshold109table:110111| Alert | Condition | Severity |112|-------|-----------|----------|113| API Auth Failure | Any 401/403 | P1 -- key may be revoked |114| API Unreachable | 5xx > 10/min | P1 -- check status page |115| Rate Limited | 429 > 5/min | P2 -- reduce request volume |116| High Latency | P95 > 5s | P2 -- check network/Klaviyo load |117| Webhook Signature Invalid | Any rejection | P2 -- verify signing secret |118119- **Pre-flight fails auth (`403`/`401`):** the key is revoked or under-scoped.120 Rotate/repair before deploying — do not proceed (see Example 2 in121 [references/examples.md](references/examples.md)).122- **Health endpoint `degraded`:** Klaviyo returned `429`. Back off; honor123 `Retry-After` and confirm the request queue caps at 75 req/s.124- **Health endpoint `down`:** Klaviyo unreachable (5xx) — check125 [status.klaviyo.com](https://status.klaviyo.com) and trip the circuit breaker.126- **Metrics regress post-deploy:** execute the rollback procedure, feature flag127 first, from [references/implementation.md](references/implementation.md).128129## Examples130131Read the full endpoint on a live integration to confirm health before sign-off:132133```bash134curl -s localhost:3000/health | python3 -m json.tool135# → { "status": "healthy", "services": { "klaviyo": { "status": "healthy", "latencyMs": 142, ... } } }136```137138Four worked runs — green pre-flight, a blocked `403`, reading the health139endpoint, and an instant feature-flag rollback — are in140[references/examples.md](references/examples.md).141142## Resources143144- [Klaviyo Status Page](https://status.klaviyo.com)145- [API Versioning Policy](https://developers.klaviyo.com/en/docs/api_versioning_and_deprecation_policy)146- [Rate Limits](https://developers.klaviyo.com/en/docs/rate_limits_and_error_handling)147- [Implementation code](references/implementation.md) — health check, pre-flight script, rollback148- [Worked examples](references/examples.md) — green/failed pre-flight, health reads, rollback149150## Next Steps151152For version upgrades, see `klaviyo-upgrade-migration`.153154---155156**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `plugins/saas-packs/klaviyo-pack/skills/klaviyo-prod-checklist/SKILL.md`