Klaviyo
Email and SMS marketing with lists, segments, campaigns, automated flows, and subscriber profiles.
Adds someone to a segment, checks how a campaign performed, and reviews what a subscriber has been sent and opened.
Use Klaviyo with Snow
Snow is a personal AI assistant that builds real apps for you, and they can put Klaviyo to work.
What Snow can do with Klaviyo
These are the Klaviyo operations Snow and the apps you build with it can run. Sign in to choose which ones Snow may run without asking.
Reads133
Look at your data without changing it.
- Get Bulk Delete Catalog Items Job
Get a catalog item bulk delete job with the given job ID. Use this to check the status and progress of a bulk delete operation for catalog items. Rate limits: 350/s burst, 3500/m steady. Required scope: `catalogs:read`. Preconditions: - Valid API key with catalogs:read scope - Job ID must exist and be accessible
- Get Bulk Update Categories Job
Retrieve a catalog category bulk update job by its ID from Klaviyo. This action fetches the status and details of a bulk update job for catalog categories, including progress metrics (total, completed, failed counts) and optionally the related category resources. Use this to track the progress of bulk category update operations. Rate limits: 350/s burst, 3500/m steady. Required scope: `catalogs:read`. Preconditions: - Valid API key with catalogs:read scope - Job ID must exist and be accessible
- Get Campaign
Retrieve a specific campaign by its ID from Klaviyo. This action fetches detailed information about a single campaign including its name, status, audience settings, send strategy, and optionally related messages and tags. Rate limits: 10/s burst, 150/m steady. Required scope: `campaigns:read`. Preconditions: - Valid API key with campaigns:read scope - Campaign ID must exist and be accessible
- Get Campaigns
Retrieve campaigns from your Klaviyo account. This action allows you to fetch campaigns with optional filtering and sorting. Klaviyo requires specifying a channel (email or sms) to list campaigns. You can add additional filters for status, name, creation date, and other attributes. Results are paginated with a default of 10 campaigns per page. Rate limits: 10/s burst, 150/m steady. Required scope: `campaigns:read`. Preconditions: - Valid API key with campaigns:read scope - Channel must be specified (email or sms) - Additional filter syntax must be valid if provided
- Get events
Get all events in an account Requests can be sorted by the following fields: `datetime`, `timestamp` Returns a maximum of 200 events per page.<br><br>*Rate limits*:<br>Burst: `350/s`<br>Steady: `3500/m` Scopes: `events:read`
- Get Lists
Retrieve marketing lists from your Klaviyo account. This action allows you to fetch lists with optional filtering and sorting. You can filter by name, creation date, and other attributes. Results are paginated with a default of 10 lists per page. Rate limits: 75/s burst, 700/m steady. Required scope: `lists:read`. Preconditions: - Valid API key with lists:read scope - Filter syntax must be valid if provided
- Get Profiles
Retrieve profiles from your Klaviyo account. This action allows you to fetch profiles with optional filtering and sorting. You can filter by email, external_id, creation date, and other attributes. Results are paginated with a configurable page size. Rate limits: 75/s burst, 700/m steady (lower with predictive_analytics). Required scope: `profiles:read`. Preconditions: - Valid API key with profiles:read scope - Filter syntax must be valid if provided - Page size must be between 1 and 100
- Create template render
Render an email template with specific context and sparse fieldsets, then get HTML/plain text. Rate limit: 3/s burst, 60/m steady. Scope: templates:read.
- Get account
Retrieve a single account object by its account ID. You can only request the account by which the private API key was generated.<br><br>*Rate limits*:<br>Burst: `1/s`<br>Steady: `15/m` Scopes: `accounts:read`
- Get accounts
Use a private API key to fetch an associated account's details like contact info, timezone, and currency, as well as validate the key. Rate limit: 1 request/second, 15 requests/minute. Scope required: `accounts:read`.
Creates32
Add something new to your account.
- Create Campaign Recipient Estimation Job
Start an asynchronous task to estimate the number of recipients for a campaign. This action creates a background job that calculates how many profiles would receive the campaign based on its current audience settings. Use the job ID returned to track progress with the 'Get Campaign Recipient Estimation Job' action, and get the final count via 'Get Campaign Recipient Estimation' action. Rate limits: 10/s burst, 150/m steady. Required scope: `campaigns:write`. Preconditions: - Valid API key with campaigns:write scope - Campaign ID must exist and be accessible - Campaign must have audience settings configured
- Create list
Create a new list.<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m`<br>Daily: `100/d` Scopes: `lists:write`
- Create profile
Create a new profile.<br><br>*Rate limits*:<br>Burst: `75/s`<br>Steady: `700/m` Scopes: `profiles:write`
- Bulk create events
Bulk create events for multiple profiles in a single request. Accepts up to 1,000 events with a 5MB max payload. Each event requires a profile identifier (email, phone_number, or external_id) and a metric name. Events are processed asynchronously; a 202 response indicates acceptance, not completion. Rate limits: 10/s burst, 150/min steady.
- Create back in stock subscription
Use the server-side endpoint to subscribe to restock alerts, following the Back in Stock API guide. For client-side, use the POST endpoint provided. Rate limits: 350/s burst and 3500/m steady. Required scopes: catalogs:write, profiles:write.
- Create campaign
Creates a campaign given a set of parameters, then returns it.<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m` Scopes: `campaigns:write`
- Create campaign clone
Clones an existing campaign, returning a new campaign based on the original with a new ID and name.<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m` Scopes: `campaigns:write`
- Create campaign send job
Trigger a campaign to send asynchronously<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m` Scopes: `campaigns:write`
- Create catalog category
Create a new catalog category.<br><br>*Rate limits*:<br>Burst: `75/s`<br>Steady: `700/m` Scopes: `catalogs:write`
- Create catalog category relationships items
Create a new item relationship for the given category ID.<br><br>*Rate limits*:<br>Burst: `75/s`<br>Steady: `700/m` Scopes: `catalogs:write`
Updates33
Change something that is already there.
- Add Profile to List
Add profiles to a Klaviyo list by profile IDs or email addresses. This action subscribes profiles to a marketing list, which is ideal for giving marketing consent. You can add up to 1000 profiles per call using either their Klaviyo profile IDs or email addresses. Rate limits: 10/s burst, 150/m steady. Required scopes: `lists:write` and `profiles:write`. Preconditions: - Either profile_ids or emails must be provided (not both) - Maximum 1000 profiles per call - Email addresses must be valid format - The list must exist and be accessible
- Create event
Create or update a profile event with minimum identifiers and metric name. Success means validation, not completion. Burst limit: 350/s, Steady: 3500/m. Scope required: `events:write`.
- Create or Update Profile
Create or update a profile in Klaviyo with the given attributes. This action allows you to create a new profile or update an existing one if it already exists (based on email or other identifiers). Returns 201 for creation, 200 for update. Empty fields are cleared with `null`; omitted fields remain unchanged. Rate limits: 75/s burst, 700/m steady. Required scope: `profiles:write`. Preconditions: - At least one identifier (email, phone_number, external_id, or anonymous_id) must be provided - Email must be in valid format if provided - Phone number must be in E.164 format if provided
- Update Campaign
Update a campaign with the specified attributes. This action allows you to modify campaign settings including name, audiences, and send strategy. Only the fields you provide will be updated; others remain unchanged. Rate limits: 10/s burst, 150/m steady. Required scope: `campaigns:write`. Preconditions: - Valid API key with campaigns:write scope - Campaign ID must exist and be accessible - Campaign must be in a state that allows updates (usually draft status) - Send strategy options must match the selected method
- Assign campaign message template
Creates a non-reusable version of the template and assigns it to the message.<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m` Scopes: `campaigns:write`
- Bulk create client events
Use the client-side endpoint with a public API key to track profile activity. It accepts up to 1000 events/request with rates of 10/s burst and 150/m steady. For server-side, use the bulk create event endpoint.
- Create or update client profile
Update user profiles without tracking using a public client-side API; use a private server-side API for identifier changes. Burst rate is 350 requests/sec and 3500 requests/min with 'profiles:write' access.
- Create or update client push token
This endpoint for mobile SDKs (iOS & Android) creates/updates push tokens using a public API key. Push notifications must be enabled. For migrating tokens use the server-side POST endpoint. Rate limits are 3/s burst, 150/m steady.
- Create or update push token
Create or update a push token for mobile push notifications. This server-side endpoint is used for migrating push tokens from other platforms to Klaviyo. For creating tokens from mobile devices, use Klaviyo's mobile SDKs instead. Prerequisites: Push notifications must be enabled for the Klaviyo account. Required fields: - data__type: Must be 'push-token' - data__attributes__token: The push token from APNS or FCM - data__attributes__platform: 'ios' or 'android' - data__attributes__vendor: 'apns' (iOS) or 'fcm' (Android) - data__attributes__profile__data__type: Must be 'profile' - At least one profile identifier (email, phone_number, external_id, anonymous_id, or profile id) Rate limits: 75/s burst, 700/m steady. Max payload: 100KB. Requires scopes: profiles:write, push-tokens:write
- Spawn bulk profile import job
Initiate a job to create/update a batch of profiles, up to 10,000 with a max size of 5MB per request. Rate limits: 10/s burst, 150/m steady. Requires `lists:write` and `profiles:write` scopes. More info in the Bulk Profile Import API guide.
Deletes27
Remove something. This often cannot be undone.
- Cancel Campaign Send
Cancel or revert a campaign send job. Use 'cancel' to permanently stop a campaign (status becomes CANCELED), or 'revert' to return it to DRAFT for editing. This action modifies a campaign send job that is currently queued or sending. The cancel action is irreversible and sets the status to CANCELED. The revert action returns the campaign to DRAFT status, allowing further modifications. Rate limits: 10/s burst, 150/m steady. Required scope: `campaigns:write`. Preconditions: - Valid API key with campaigns:write scope - Campaign send job ID must exist and be accessible - Campaign must be in a state that allows cancellation (queued or sending)
- Delete campaign
Delete a campaign with the given campaign ID.<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m` Scopes: `campaigns:write`
- Delete catalog category
Delete a catalog category using the given category ID.<br><br>*Rate limits*:<br>Burst: `75/s`<br>Steady: `700/m` Scopes: `catalogs:write`
- Delete catalog category relationships items
Delete item relationships for the given category ID.<br><br>*Rate limits*:<br>Burst: `75/s`<br>Steady: `700/m` Scopes: `catalogs:write`
- Delete catalog item
Delete a catalog item with the given item ID.<br><br>*Rate limits*:<br>Burst: `75/s`<br>Steady: `700/m` Scopes: `catalogs:write`
- Delete catalog item relationships categories
Delete catalog category relationships for the given item ID.<br><br>*Rate limits*:<br>Burst: `75/s`<br>Steady: `700/m` Scopes: `catalogs:write`
- Delete catalog variant
Delete a catalog item variant with the given variant ID.<br><br>*Rate limits*:<br>Burst: `75/s`<br>Steady: `700/m` Scopes: `catalogs:write`
- Delete coupon
Delete the coupon with the given coupon ID.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m` Scopes: `coupons:write`
- Delete coupon code
Deletes a coupon code specified by the given identifier synchronously. If a profile has been assigned to the coupon code, an exception will be raised<br><br>*Rate limits*:<br>Burst: `350/s`<br>Steady: `3500/m` Scopes: `coupon-codes:write`
- Delete flow
Delete a flow with the given flow ID.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m` Scopes: `flows:write`
Related integrations
Ready to put Klaviyo to work?
Sign up free, build an app by chatting, and connect Klaviyo in minutes. No credit card required.