Marketing Automation

Klaviyo, worked by an AI employee

Not another app for your team to learn, and not a set of rules for you to build. You hire an AI employee, you give it access to your Klaviyo account, and you ask it for things in Slack or Teams the way you would ask anyone else on the team. There is nothing to map and nothing to maintain.

  • Marketing Automation
  • Signs in to your account
  • 100 ready-made tools
  • Asked in Slack or Teams
At work

An illustration of how the conversation reads, not a transcript from a client account.

What Klaviyo is

Klaviyo is a data-driven email and SMS marketing platform that allows e-commerce brands to deliver targeted messages, track conversions, and scale customer relationships

You sign in with your own Klaviyo account, the same way you already do. We never see or hold your password.

How a run works

One message in, the work done in Klaviyo.

  1. 01

    You ask

    You message your AI employee in the chat your team already has open, in one sentence, in your own words.

  2. 02

    It works out the step

    It decides what the job needs in Klaviyo. You do not pick anything from a menu or wire anything together.

  3. 03

    It does the work

    Signed in to your own Klaviyo account, inside the access you granted it, doing the thing you asked for.

  4. 04

    It reports back

    It tells you what it did, in the same thread. If it could not do something, it says so rather than guessing.

100 tools it already has

What it can do in Klaviyo

These are the ready-made tools your AI employee already has in Klaviyo. It is not limited to them, but it never has to be taught these.

  • Add Profile to ListAdd 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 t
  • Assign campaign message templateCreates a non-reusable version of the template and assigns it to the message.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:write
  • Bulk create client eventsUse 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 t
  • Bulk create eventsThis api endpoint creates or updates profiles by batching up to 1,000 events, with a 5mb payload limit. minimum required: a profile id and metric name. it has rate limits of 10 eve
  • Create back in stock subscriptionUse 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 35
  • Create campaignCreates a campaign given a set of parameters, then returns it.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:write
  • Create campaign cloneClones an existing campaign, returning a new campaign based on the original with a new id and name.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:write
  • Create Campaign Recipient Estimation JobStart 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 ba
  • Create campaign send jobTrigger a campaign to send asynchronously<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:write
  • Create catalog categoryCreate a new catalog category.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Create catalog category relationships itemsCreate a new item relationship for the given category id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Create catalog itemCreate a new catalog item.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Create catalog item relationships categoriesCreate a new catalog category relationship for the given item id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Create catalog variantCreate a new variant for a related catalog item.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Create client back in stock subscriptionUse the endpoint for client-side back in stock notifications with a public api key. for server-side, use post /api/back-in-stock-subscriptions. limits are 350 requests per second a
  • Create client eventCreate client-side events to track profiles using a public api key, not for updating identifiers (server-side only). rate limits: 350/s, 3500/m. use events:write scope.
  • Create client subscriptionEndpoint manages email/sms opt-ins using consent and requires public api key for client use. allows single-channel with details. rate limit: 100/s burst, 700/m steady, under 'subsc
  • Create couponCreates a new coupon.<br<brrate limits:<brburst: 3/s<brsteady: 60/m scopes: coupons:write
  • Create coupon codeSynchronously creates a coupon code for the given coupon.<br<brrate limits:<brburst: 350/s<brsteady: 3500/m scopes: coupon-codes:write
  • Create eventCreate 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:writ
  • Create listCreate a new list.<br<brrate limits:<brburst: 10/s<brsteady: 150/m<brdaily: 100/d scopes: lists:write
  • Create or update client profileUpdate 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 wit
  • Create or update client push tokenThis 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
  • Create or Update ProfileCreate 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 ot
  • Create or update push tokenMigrate or create push tokens with klaviyo's endpoint, utilizing their mobile sdks for ios & android. rate limits: 75/s burst, 700/m steady. requires profiles:write and push-tokens
  • Create profileCreate a new profile.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: profiles:write
  • Create segmentCreate a segment.<br<brrate limits:<brburst: 1/s<brsteady: 15/m<brdaily: 100/d scopes: segments:write
  • Create tagSummary: instructions on creating a tag within an account's designated tag group with a maximum of 500 tags, with optional tag group specification. rate limits are 3/s burst and 60
  • Create tag groupCreate tag groups up to 50 per account, defaulting to non-exclusive unless specified. related resources can have multiple non-exclusive tags but only one if exclusive. rate limits:
  • Create tag relationships campaignsSummary: link a tag to campaigns, ensuring a limit of 100 tags per campaign. campaign ids should be sent via request body. rate limit: 3/s, 60/m. required scopes: campaigns:write,
  • Create tag relationships flowsAssign tags to flows using their ids in the request body, ensuring a flow is not linked to over 100 tags. rate limits are 3/s burst and 60/m steady. required scopes: flows:write an
  • Create tag relationships listsSummary: a tag can be added to one or more lists, with a max of 100 tags per list. use the request body to link tag and list ids. tag: apiusagelimits scopes: lists:write, tags:writ
  • Create tag relationships segmentsSummary: set tag associations with segments using the request body, limited to one tag per segment and up to 100 tags per segment. rate limits are three requests per second and six
  • Create templateSummary: custom html templates can be created unless an account reaches 1,000 template limit. use sparse fieldsets to request specific fields. rate limits are 10 per second and 150
  • Create template cloneClone a template by its id, but cloning fails if account has 1,000+ templates. api limit: 1,000 templates. rate limits are 10 per second and 150 per minute. requires templates:writ
  • Create template renderRender 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.
  • Create webhookCreate a new webhook<br<brrate limits:<brburst: 1/s<brsteady: 15/m scopes: webhooks:write
  • Delete campaignDelete a campaign with the given campaign id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:write
  • Delete catalog categoryDelete a catalog category using the given category id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Delete catalog category relationships itemsDelete item relationships for the given category id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Delete catalog itemDelete a catalog item with the given item id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Delete catalog item relationships categoriesDelete catalog category relationships for the given item id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Delete catalog variantDelete a catalog item variant with the given variant id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: catalogs:write
  • Delete couponDelete the coupon with the given coupon id.<br<brrate limits:<brburst: 3/s<brsteady: 60/m scopes: coupons:write
  • Delete coupon codeDeletes 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<brrate limits:<brburst: 350
  • Delete flowDelete a flow with the given flow id.<br<brrate limits:<brburst: 3/s<brsteady: 60/m scopes: flows:write
  • Delete listDelete a list with the given list id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: lists:write
  • Delete segmentDelete a segment with the given segment id.<br<brrate limits:<brburst: 3/s<brsteady: 60/m scopes: segments:write
  • Delete tagDelete the tag with the given tag id. any associations between the tag and other resources will also be removed.<br<brrate limits:<brburst: 3/s<brsteady: 60/m scopes: tags:read tag
  • Delete tag groupDelete a specified tag group and its contents; associated resource links will be removed. the default group is undeletable. rate limits: 3/s burst, 60/m steady. requires tags:read
  • Delete tag relationships campaignsDisconnect a tag from campaigns using the campaign id(s) in the request body. rate limits: 3 requests/second, 60 requests/minute. required scopes: campaigns:write, tags:write.
  • Delete tag relationships flowsRemove a tag's association with one or more flows. use the request body to pass in the id(s) of the flows(s) whose association with the tag will be removed.<br<brrate limits:<brbur
  • Delete tag relationships listsRemove a tag's association with one or more lists. use the request body to pass in the id(s) of the list(s) whose association with the tag will be removed.<br<brrate limits:<brburs
  • Delete tag relationships segmentsUse the request body to de-associate a tag from specified segment ids. rate limits are 3 requests/sec and 60 requests/min. required scopes are 'segments:write' and 'tags:write'.
  • Delete templateDelete a template with the given template id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: templates:write
  • Delete webhookDelete a webhook with the given id.<br<brrate limits:<brburst: 1/s<brsteady: 15/m scopes: webhooks:write
  • Get accountRetrieve a single account object by its account id. you can only request the account by which the private api key was generated.<br<brrate limits:<brburst: 1/s<brsteady: 15/m scope
  • Get accountsUse 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/min
  • Get bulk profile import jobGet a bulk profile import job with the given job id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: lists:read profiles:read
  • Get bulk profile import job errorsGet import errors for the bulk profile import job with the given id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: profiles:read
  • Get bulk profile import job listsGet list for the bulk profile import job with the given id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: lists:read
  • Get bulk profile import job profilesGet profiles for the bulk profile import job with the given id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: profiles:read
  • Get bulk profile import job relationships listsGet list relationship for the bulk profile import job with the given id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: lists:read
  • Get bulk profile import job relationships profilesGet profile relationships for the bulk profile import job with the given id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: profiles:read
  • Get bulk profile import jobsGet all bulk profile import jobs. returns a maximum of 100 jobs per request.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: lists:read profiles:read
  • Get CampaignRetrieve 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,
  • Get campaign campaign messagesReturn all messages that belong to the given campaign.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:read
  • Get campaign messageReturns a specific message based on a required id.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:read
  • Get campaign message campaignReturn the related campaign<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:read
  • Get campaign message relationships campaignReturns the id of the related campaign<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:read
  • Get campaign message relationships templateReturns the id of the related template<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:read templates:read
  • Get campaign message templateReturn the related template<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:read templates:read
  • Get campaign recipient estimationGet estimated recipients for a given campaign id using create campaign recipient estimation job. rate limits are 10/s burst and 150/m steady. required scope: campaigns:read.
  • Get campaign recipient estimation jobRetrieve the status of a recipient estimation job triggered with the create campaign recipient estimation job endpoint.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: camp
  • Get campaign relationships campaign messagesReturns the ids of all messages associated with the given campaign.<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:read
  • Get campaign relationships tagsReturns the ids of all tags associated with the given campaign.<br<brrate limits:<brburst: 3/s<brsteady: 60/m scopes: campaigns:read tags:read
  • Get campaign send jobGet a campaign send job<br<brrate limits:<brburst: 10/s<brsteady: 150/m scopes: campaigns:read
  • Get campaign tagsReturn all tags that belong to the given campaign.<br<brrate limits:<brburst: 3/s<brsteady: 60/m scopes: campaigns:read tags:read
  • Get CampaignsRetrieve 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
  • Get catalog categoriesRetrieve up to 100 account catalog categories, sortable by creation date. only $custom integration and $default catalog types supported. rate limits are 350/s and 3500/m. requires
  • Get catalog categoryGet a catalog category with the given category id.<br<brrate limits:<brburst: 350/s<brsteady: 3500/m scopes: catalogs:read
  • Get catalog category itemsRetrieve up to 100 sorted items per request from a category using the category id. sort by 'created' field. rate limits are 350/s burst and 3500/m steady. requires 'catalogs:read'
  • Get catalog category relationships itemsGet all items in the given category id. returns a maximum of 100 items per request.<br<brrate limits:<brburst: 350/s<brsteady: 3500/m scopes: catalogs:read
  • Get catalog itemGet a specific catalog item with the given item id.<br<brrate limits:<brburst: 350/s<brsteady: 3500/m scopes: catalogs:read
  • Get catalog item categoriesRetrieve the catalog categories for an item by id, sorted by 'created' date, with a 100-category maximum per request. rate limits: 350/s burst, 3500/m steady. requires 'catalogs:re
  • Get catalog item relationships categoriesGet all catalog categories that a particular item is in. returns a maximum of 100 categories per request.<br<brrate limits:<brburst: 350/s<brsteady: 3500/m scopes: catalogs:read
  • Get catalog item variantsRetrieve up to 100 variants per request for a specific item id, sortable by creation date. rate limits are 350/s burst and 3500/m steady. requires 'catalogs:read' scope.
  • Get catalog itemsRetrieve up to 100 sorted catalog items per account, with $custom integration and $default type. rate limits: 350/s burst, 3500/m steady. scope required: catalogs:read.
  • Get catalog variantGet a catalog item variant with the given variant id.<br<brrate limits:<brburst: 350/s<brsteady: 3500/m scopes: catalogs:read
  • Get catalog variantsRetrieve up to 100 account variants per request, sortable by creation date. supports only $custom integration and $default catalog types. rate limits are 350/s burst and 3500/m ste
  • Get couponGet a specific coupon with the given coupon id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: coupons:read
  • Get coupon codeReturns a coupon code specified by the given identifier.<br<brrate limits:<brburst: 350/s<brsteady: 3500/m scopes: coupon-codes:read
  • Get coupon code bulk create jobGet a coupon code bulk create job with the given job id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: coupon-codes:read
  • Get coupon code bulk create jobsGet all coupon code bulk create jobs. returns a maximum of 100 jobs per request.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: coupon-codes:read
  • Get coupon code relationships couponGets a list of coupon code relationships associated with the given coupon id<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: coupon-codes:read
  • Get coupon codesObtains coupon codes using necessary coupon or profile filters. rate limits: 350/s, 3500/m. requires 'coupon-codes:read' scope.
  • Get coupon codes for couponGets a list of coupon codes associated with the given coupon id<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: coupon-codes:read
  • Get coupon for coupon codeGet the coupon associated with a given coupon code id.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: coupons:read
  • Get coupon relationships coupon codesGets the coupon relationship associated with the given coupon code id<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: coupons:read
  • Get couponsGet all coupons in an account. to learn more, see our coupons api guide.<br<brrate limits:<brburst: 75/s<brsteady: 700/m scopes: coupons:read
Access, and who is in charge of it

You stay the boss of your Klaviyo account.

Nothing connects until you approve it. You grant access one app at a time, you can take it back the same way, and everything your AI employee does in there is written down where you can see it.

How we handle your data
  • It signs in to your own Klaviyo account. You are not moving anything into ours.
  • You grant access one app at a time, and you can take it back the same way.
  • Everything it does in Klaviyo is written down, with what it did and when.
  • Anything you tell it to check with you first, it checks with you first.
Other apps in the same corner of the business

It works in Klaviyo and the rest of your software in the same job

A real job rarely stays in one place. Reading a message in one app, checking a record in another and writing the result in a third is one request to your AI employee, not three.

Questions people ask about Klaviyo

Can an AI employee really work inside Klaviyo?
Yes. It signs in to your own Klaviyo account and works in it the way a new hire would, from the chat your team already has open. Nobody installs anything, and nobody learns a new screen.
Do I have to move anything out of Klaviyo?
No. Nothing moves and nothing is replaced. Your records stay in Klaviyo, your team carries on in the same screens they used yesterday, and your AI employee works alongside them in there.
How does it get into my Klaviyo account?
You sign in with your own Klaviyo account, the same way you already do. We never see or hold your password. You approve it before anything connects, and you can take the access back the same way you gave it.
What can it actually do in Klaviyo?
It has 100 ready-made tools in Klaviyo today, among them Add Profile to List, Assign campaign message template and Bulk create client events. The full list is on this page. It is not limited to those, but it never has to be taught them.
Can it use Klaviyo and the rest of my software in the same job?
Yes, and that is usually the point. Reading a message in one app, checking a record in Klaviyo and writing the result somewhere else is one request to your AI employee, not three separate ones you stitch together.
Who decides what it is allowed to do in Klaviyo?
You do. You grant access one app at a time and can withdraw it at any time, anything you ask it to check with you first it checks with you first, and everything it does in Klaviyo is written down with what it did and when.