Skip to main content

klaviyo-cli

A command-line interface for Klaviyo: campaigns, segments, flows, metrics, and scheduling. Built for humans and AI agents.

uvx --from klaviyo-cli klaviyo --help

No install needed. Or install it: pipx install klaviyo-cli or uv tool install klaviyo-cli. Requires Python 3.11+.

Built and maintained by BS&Co, a retention marketing agency for eCommerce brands.

Unofficial. Not affiliated with, endorsed, or supported by Klaviyo, Inc.

Quickstart

export KLAVIYO_API_KEY=pk_...

Get a private API key from Klaviyo under Settings > API Keys. Read commands need read scopes; commands that change data (patch, schedule, create, upload) need write scopes.

klaviyo list-campaigns --days 30
klaviyo account-health

Using with Claude Code and AI agents

--json is a global flag: put it before the command name for machine-readable output on any command:

klaviyo --json list-campaigns --days 30

Destructive Klaviyo operations are blocked at the CLI level. Klaviyo's DELETE endpoints for profiles, lists, segments, campaigns, and flows are not reachable through this tool, even via the raw api passthrough. Only template deletion is allowlisted (transport.py, DELETE_ALLOWED_PATHS). This is why it's safe to hand klaviyo-cli to an agent with a live API key: the agent can read anything and change campaign content, timing, and audiences, but it cannot delete subscriber data, segments, or send history. One command can stop mail going to real people: suppress. It deletes nothing, but because it halts sends it requires an explicit --yes flag or an interactive confirmation before it runs.

Drop this in your repo's CLAUDE.md so an agent knows the tool exists:

## Klaviyo
Use the `klaviyo` CLI for Klaviyo data and actions (campaigns, segments,
flows, metrics). Auth via KLAVIYO_API_KEY env var. Pass --json before the
command for machine-readable output (e.g. `klaviyo --json list-campaigns`).
Run `klaviyo --help` for the full command list.

Command reference

Run klaviyo COMMAND --help for full options on any command.

Campaigns

Command Description
list-campaigns List/filter campaigns by status, channel, and date (beyond name search)
search-campaigns Search campaigns by name
get-campaign Show details for a specific campaign
get-creative Dump a campaign's creative (subject + text/HTML) via its template
list-drafts List draft email campaigns for a client
patch-campaign Update campaign send time and/or audiences
schedule Schedule a campaign for sending
campaign-performance Show campaign revenue and engagement metrics
metrics Show sent campaigns for a client within a date window

Segments

Command Description
list-audiences List all lists and segments for a client
search-segments Find segments by name keyword; shows a one-line definition summary
get-segment Show a segment's definition (conditions, metric IDs resolved) + count
segment-count Get profile count for a single segment (rate limited: 1/s, 15/min)
segment-sizes Show all segments with profile counts
create-segment Create a segment from a definition, guarding against duplicates

Flows

Command Description
flows List all flows for a client, with optional sort and name search
get-flow Show a flow's basics in one call; --definition adds trigger, action chain, reentry
flow-detail Show full flow structure: trigger, filters, emails with subjects, delays, splits
flow-performance Show flow revenue and engagement metrics
create-flow Create a flow (in draft) from a definition, guarding against duplicates

Profiles

Command Description
get-profile Look up a profile by email or ID; --subscriptions adds consent state and suppressions
segment-members List profiles in a segment: email, name, and when they joined
suppress Suppress profiles from email marketing in bulk (requires --yes or confirmation)
unsuppress Remove manual suppressions in bulk (never resubscribes anyone)
suppression-jobs List bulk suppression jobs (suppress + unsuppress) with status and counts

Events

Command Description
push-event Push a custom event to a profile by email (creates the profile if needed)
events List recent events for a metric ID, newest first, with the profile attached

Metrics

Command Description
account-health Show profiles count, lists, and metrics for a client
list-metrics List event metrics with their IDs and integration (ID<->name catalog)
form-performance Show pop-up/form views, submits, and submit rates

SMS

Command Description
upload-sms Create an SMS campaign draft in Klaviyo

Raw API

Command Description
api Raw API pass-through: klaviyo api <METHOD> <path>

That's 32 commands total.

Multi-account profiles

For managing more than one Klaviyo account, put credentials in ~/.config/klaviyo-cli/config.toml:

default_profile = "acme"

[profiles.acme]
api_key = "pk_acme_..."

[profiles.other-brand]
api_key = "pk_other_..."

Select a profile with --profile (or -p), or set KLAVIYO_PROFILE:

klaviyo --profile other-brand account-health
KLAVIYO_PROFILE=other-brand klaviyo account-health

Precedence: an explicit --profile (or KLAVIYO_PROFILE) wins first. Otherwise KLAVIYO_API_KEY is used if set. Otherwise the CLI falls back to default_profile in the config file.

Agencies running the CLI across many clients can go further and embed it: re-expose every command under a host CLI with per-client auth resolution, so yourcli campaign-performance acme --days 30 resolves credentials for acme before the call. See the wrap_with_account and build_host_group docstrings in src/klaviyo_cli/embed.py.

License

MIT. See LICENSE.

Built and maintained by BS&Co, a retention marketing agency for eCommerce brands.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

klaviyo_cli-0.2.0.tar.gz (48.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

klaviyo_cli-0.2.0-py3-none-any.whl (37.4 kB view details)

Uploaded Python 3

File details

Details for the file klaviyo_cli-0.2.0.tar.gz.

File metadata

  • Download URL: klaviyo_cli-0.2.0.tar.gz
  • Upload date:
  • Size: 48.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for klaviyo_cli-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a6adce442032970ad657d967218845db6ce316885cadc80a5b6d04a5bd14837a
MD5 952e02e11a6509bf5eaa9c208155a28a
BLAKE2b-256 fd74d0ce3796b2375d52fb28dc12a4632927ed24c280f0153965793af413c1c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for klaviyo_cli-0.2.0.tar.gz:

Publisher: publish.yml on BeauchampAndrew/klaviyo-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file klaviyo_cli-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: klaviyo_cli-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 37.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for klaviyo_cli-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 19b6eeb354782dc7f159e5e61ec1c370101f5db40a3acd5c6ea0590c0f213b52
MD5 a75573c7de0af976ab8725516ba73d81
BLAKE2b-256 b2f5b24b50a09e891fc5083bbda7f7d84b6dac73299288be1580eac80cecd958

See more details on using hashes here.

Provenance

The following attestation bundles were made for klaviyo_cli-0.2.0-py3-none-any.whl:

Publisher: publish.yml on BeauchampAndrew/klaviyo-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page