Agent skill · marketing growth · jeremylongshore
klaviyo-core-workflow-a
Execute Klaviyo primary workflow: profiles, lists, and subscriptions.
Why this skill is useful
Adds a complete, executable workflow for managing customer profiles and subscriptions in Klaviyo, including specific API commands and error handling that the AI wouldn't generate on its own.
What it needs
Requires klaviyo-api installed locally. Requires klaviyo account access. About 3k tokens when loaded. Last updated 2026-08-07. 2,604 stars on the source repository.
What this skill does
Klaviyo Core Workflow A -- Profiles, Lists & Subscriptions Overview Primary money-path workflow: create/update profiles, manage lists, and subscribe contacts for email and SMS marketing via the klaviyo-api SDK. This skill covers the six-step path from a raw customer record to a consented, segmentable subscriber. High-level flow lives here; the full code for every step is in references/implementation.md. Prerequisites Completed the klaviyo-install-auth setup so KLAVIYOPRIVATEKEY is available in the environment. A Klaviyo private API key scoped to profiles:read, profiles:write, lists:read, and lists:write. The klaviyo-api npm package installed in the project (npm install klaviyo-api). Node.js with TypeScript configured, since all examples use the typed SDK. Instructions Every call authenticates through a single ApiKeySession built from the private key: The workflow runs in six steps. Use the linked walkthrough for the complete code of each: 1. Create or update a profile — prefer createOrUpdateProfile (upsert) over createProfile so re-syncs don't 409 on an existing email. 2. Create a list — listsApi.createList(...) returns the listId you use downstream; getLists() enumerates existing lists. 3. Add profiles to a list — createListRelationships adds membership only; it does NOT grant marketing consent. 4. Subscribe profiles — subscribeProfiles records email/SMS marketing consent with a consentTimestamp. This is the correct way to create real subscribers. 5. Query profiles with filters — getProfiles({ filter, sort }) supports equals, greater-than, and contains for segmentation. 6. Bulk import — batch upserts in groups of 100 to stay within rate limits. Full code for all six steps: references/implementation.md. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills jeremylongshore/klaviyo-core-workflow-a