Klaviyo debug bundle
425 plugins, 2,810 skills, 200 agents for Claude Code. Open-source marketplace at tonsofskills.com with the ccpi CLI package manager.
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill klaviyo-debug-bundleAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
'Collect Klaviyo debug evidence for support tickets and troubleshooting.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.5 KB, as published. Nobody here has run it
Klaviyo Debug Bundle
Overview
Collect all diagnostic information needed for a Klaviyo support ticket into one redacted, shareable tarball: SDK version, API connectivity, auth result, rate limit status, recent errors, and environment config. Every secret (API keys, emails, phone numbers, webhook secrets) is redacted before packaging, so the bundle is safe to attach to a ticket.
The workflow builds a single shell script (klaviyo-debug-bundle.sh) in five
steps, then runs it. The full script and a programmatic TypeScript alternative
live in the reference files linked below.
Prerequisites
- The
klaviyo-apiSDK installed (npm list klaviyo-apito confirm). - The
KLAVIYO_PRIVATE_KEYenvironment variable set to a private API key. - Read access to your application's log directory (defaults scanned:
logs/,/var/log/app/). curl,tar, andpython3available on the host.
Instructions
Assemble the five blocks below (verbatim from the reference) into one
klaviyo-debug-bundle.sh, make it executable, and run it from your application
root so the log-collection step can find logs/.
- Create the bundle dir — timestamped
klaviyo-debug-YYYYMMDD-HHMMSS/and asummary.txtheader. - Collect environment info — Node/npm/OS versions,
klaviyo-apiSDK version, and a redacted API-key presence check. - Run connectivity tests — DNS resolve, an authenticated
GET /api/accounts/(captures the HTTP code), rate-limit headers, and the Klaviyo status page. - Collect logs — grep known log dirs for Klaviyo errors, redacting keys and emails inline.
- Package and clean up —
tar -czfthe dir, remove the working copy, print the tarball path.
The skeleton of step 1:
#!/bin/bash
# klaviyo-debug-bundle.sh
set -euo pipefail
BUNDLE_DIR="klaviyo-debug-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BUNDLE_DIR"
See the full shell implementation for all five steps verbatim. To collect the same signals as a structured object (SDK version, connectivity, latency) instead of a tarball, use the TypeScript helper in examples.
Output
klaviyo-debug-YYYYMMDD-HHMMSS.tar.gzcontaining:summary.txt-- Environment, SDK version, API key status, connectivityrate-limits.txt-- Current rate limit header valuesapi-response.json-- Account API response (confirms auth)recent-errors.txt-- Redacted error logs
Redaction rules
ALWAYS redacted: API keys (pk_***), email addresses, phone numbers, webhook secrets.
Safe to include: error/HTTP status codes, SDK and runtime versions, stack traces (with PII redacted), rate limit header values, Klaviyo account ID.
Error Handling
The bundle is designed to never abort on a single failed probe — each check records its failure into the summary rather than exiting, so you always get a complete picture. Read the results with this triage:
KLAVIYO_PRIVATE_KEY: NOT SET— the connectivity and rate-limit steps are skipped. Export the key and re-run before attaching the bundle.API Auth Test: HTTP 401— key is invalid or revoked. Rotate the key.API Auth Test: HTTP 403— key lacks scope for/api/accounts/. Grant the scope in Klaviyo account settings.API Auth Test: HTTP 429— you are rate limited; inspectrate-limits.txtand see theklaviyo-rate-limitsskill.API Auth Test: HTTP 000orDNS resolve ... FAILED— no response reached Klaviyo (DNS, outbound firewall, or TLS). Fix connectivity before ticketing.recent-errors.txtempty — no matching log dir was found; pass your real log path by adding it to thefor logdir in ...loop in step 4.- Before sharing, open
summary.txtand confirm no unredactedpk_prefix or email survived — the script prints a reminder to do this.
See the examples reference for the full HTTP-code decision matrix.
Examples
- Generate a bundle for a failing send — set the key, run the script, read
the
HTTP 200/All Systems Operationalsummary lines. - Programmatic debug info — call
collectKlaviyoDebugInfo()from a health check to return SDK version, connectivity, and latency as an object. - Reading the auth result — map the
API Auth Test: HTTP NNNline to a next action (200 healthy → check logs; 401 → rotate key; 429 → rate limits).
Full runnable code for all three is in examples.
Resources
- Klaviyo Support Portal
- Klaviyo Status Page
- API Error Alerts
- Full shell implementation
- Examples and error-triage table
Next Steps
For rate limit issues surfaced by the bundle (HTTP 429, retry-after headers),
see the klaviyo-rate-limits skill for backoff and quota-management guidance.