Klaviyo Connector
Description
Klaviyo is a cloud-based email marketing solution that enables e-commerce businesses to create, send, and analyze email and SMS campaigns.
This component provides the ability to manage templates, campaigns, events, profiles, lists, segments, and images.
API Documentation
The component was built using the Klaviyo API Reference.
Connections
API Key
key: klaviyoApiKeyConnectionAPI key authentication is deprecated. Use OAuth 2.0 for new integrations. See the Klaviyo migration guide for details.
Prerequisites
- A Klaviyo account with an existing private API key.
Setup Steps
- Log into Klaviyo and navigate to Settings > API Keys.
- Copy the private API key.
Configure the Connection
Create a connection of type API Key.
| Field | Description |
|---|---|
| API Key | The private API key from Klaviyo. |
| Input | Notes | Example |
|---|---|---|
| API Key | API key for Klaviyo. |
OAuth 2.0
key: klaviyoOAuth2ConnectionOAuth configuration requires setting up an app in Klaviyo. See the Set up OAuth guide for more information.
Prerequisites
- A Klaviyo account with access to the Manage apps page.
Setup Steps
- Log into Klaviyo and navigate to the Manage apps page.
- Select Create App.
- Name the app and copy the Client ID and Client Secret.
- Select Save and continue to proceed.
- Enter the following into the Redirect URL field:
https://oauth2.prismatic.io/callbackand save. - Select Review Submission to submit the app for completion.
Configure the Connection
Create a connection of type OAuth 2.0.
| Field | Description |
|---|---|
| Scopes | Space-separated list of OAuth scopes, if needed. |
| Client ID | The Client ID from the Klaviyo app. |
| Client secret | The Client secret from the Klaviyo app. |
| Input | Notes | Example |
|---|---|---|
| Authorize URL | https://www.klaviyo.com/oauth/authorize | |
| Client ID | The Client ID from the Klaviyo OAuth application. | |
| Client Secret | The Client Secret from the Klaviyo OAuth application. | |
| Scopes | Space separated list of scopes if needed | |
| Token URL | https://a.klaviyo.com/oauth/token |
Triggers
New and Updated Campaigns
Retrieves existing and ongoing campaigns for a specified Klaviyo message channel. Load history once, check for changes on a schedule, or both. | key: pollCampaignChangesTrigger
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Look-back Date | The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record modified on or after this date once. | 2026-01-01 |
| Message Channel | Klaviyo requires a channel filter to list campaigns. Select which channel's campaigns the trigger should return. | |
| Show New Records | When true, newly created records are included in the trigger output. | true |
| Show Updated Records | When true, records updated since the last poll are included in the trigger output. | true |
This trigger polls the Klaviyo API for new and updated campaigns on the selected message channel since the last execution.
How It Works
- The trigger runs on the configured polling schedule
- On the first execution, the Look-back Date determines the starting point. When set, the trigger seeds
lastPolledAtto that date and fetches all records modified on or after it. When empty, the current timestamp is stored as the initiallastPolledAtand no records are returned - On each subsequent execution, a server-side Klaviyo JSON:API filter is built from the configured Message Channel and the stored
lastPolledAt:and(equals(messages.channel,'<channel>'),greater-than(updated_at,<lastPolledAt>)) - All paginated campaign records matching the filter are fetched via the Klaviyo Campaigns API
- Returned records are categorized client-side as created or updated based on the
createdAttimestamp relative tolastPolledAt. Records whosecreatedAtexceedslastPolledAtare classified as created; all other records returned by the filter are classified as updated - After the fetch completes, the current timestamp is stored as the new
lastPolledAt - If both Show New Records and Show Updated Records are disabled, the trigger short-circuits without calling the API and still advances
lastPolledAt
The trigger sets polledNoChanges: true when no matching records are returned, allowing downstream flows to skip execution when there is nothing to process.
Initial sync
Setting a Look-back Date turns the first recurrence into an initial sync: the trigger seeds its position to that date and sweeps every record modified on or after it, each record once. No input is suppressed during the sync. Message Channel, Show New Records, and Show Updated Records apply on the first recurrence exactly as they do on later ones.
The sync window has no fixed upper bound, so a campaign modified while the sync runs is swept into it rather than left for the next recurrence. On completion the position advances to the time that recurrence started, and the next recurrence resumes from exactly there. No field in the payload marks the handoff. The sync drains in a single recurrence whether or not batching is enabled.
Batching
Batching is enabled per flow on this trigger: each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to Klaviyo.
To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.
With batching enabled, each execution receives a single { changeType, record } object instead of the created and updated arrays. Any downstream step that reads body.data.created or body.data.updated must be updated to read the batched shape before enabling batching.
Returned Data
The trigger returns an object with two arrays: created for newly created campaigns and updated for modified campaigns. Both arrays follow the Klaviyo JSON:API resource shape. Fields shown are representative. The full response object includes additional properties.
Example Payload
{
"data": {
"created": [
{
"type": "campaign",
"id": "01HABCDEF0123456789CAMPAIGN1",
"attributes": {
"name": "Spring Sale Email",
"status": "Draft",
"archived": false,
"audiences": {
"included": ["Y6nRLr"],
"excluded": []
},
"sendOptions": {
"useSmartSending": true
},
"trackingOptions": {
"isTrackingClicks": true,
"isTrackingOpens": true
},
"sendStrategy": {
"method": "static"
},
"createdAt": "2026-04-15T14:30:00Z",
"scheduledAt": null,
"updatedAt": "2026-04-15T14:30:00Z",
"sendTime": null
},
"relationships": {
"campaignMessages": {
"data": [{ "type": "campaign-message", "id": "01HMSG0123456789" }]
}
}
}
],
"updated": [
{
"type": "campaign",
"id": "01HABCDEF0123456789CAMPAIGN2",
"attributes": {
"name": "Welcome Series",
"status": "Sent",
"archived": false,
"audiences": {
"included": ["UTd5ui"],
"excluded": []
},
"createdAt": "2026-03-01T09:00:00Z",
"scheduledAt": "2026-03-02T15:00:00Z",
"updatedAt": "2026-04-15T16:22:00Z",
"sendTime": "2026-03-02T15:00:00Z"
}
}
]
}
}
Notes
- The
messages.channelequality filter is required by the Klaviyo Campaigns API. Campaign list calls without it are rejected - The
greater-than(updated_at,...)clause is applied server-side, so only campaigns modified since the last poll are returned - A newly created campaign has
createdAt == updatedAt, so the same record is never classified as both created and updated - Refer to the Klaviyo API rate limits documentation for throttling behavior and the Get Campaigns endpoint reference for the full list of returned attributes
Example Payload for New and Updated Campaigns⤓
New and Updated Profiles and Lists
Retrieves existing and ongoing profiles and lists in Klaviyo. Load history once, check for changes on a schedule, or both. | key: pollProfileAndListChangesTrigger
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Look-back Date | The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record modified on or after this date once. | 2026-01-01 |
| Resource Type | The type of resource to poll for new and updated records. | |
| Show New Records | When true, newly created records are included in the trigger output. | true |
| Show Updated Records | When true, records updated since the last poll are included in the trigger output. | true |
This trigger polls the Klaviyo API for new and updated profiles or lists since the last execution.
How It Works
- The trigger runs on the configured polling schedule
- On the first execution, the Look-back Date determines the starting point. When set, the trigger seeds
lastPolledAtto that date and fetches all records modified on or after it. When empty, the current timestamp is stored as the initiallastPolledAtand no records are returned - On each subsequent execution, a server-side Klaviyo JSON:API filter is built from the stored
lastPolledAt:greater-than(updated,<lastPolledAt>) - All paginated records of the selected Resource Type matching the filter are fetched via the corresponding Klaviyo API (Profiles or Lists)
- Returned records are categorized client-side as created or updated based on the
createdtimestamp relative tolastPolledAt. Records whosecreatedexceedslastPolledAtare classified as created; all other records returned by the filter are classified as updated - After the fetch completes, the current timestamp is stored as the new
lastPolledAt - If both Show New Records and Show Updated Records are disabled, the trigger short-circuits without calling the API and still advances
lastPolledAt
The trigger sets polledNoChanges: true when no matching records are returned, allowing downstream flows to skip execution when there is nothing to process.
Initial sync
Setting a Look-back Date turns the first recurrence into an initial sync: the trigger seeds its position to that date and sweeps every record modified on or after it, each record once. No input is suppressed during the sync. Resource Type, Show New Records, and Show Updated Records apply on the first recurrence exactly as they do on later ones.
The sync window has no fixed upper bound, so a record modified while the sync runs is swept into it rather than left for the next recurrence. On completion the position advances to the time that recurrence started, and the next recurrence resumes from exactly there. No field in the payload marks the handoff. The sync drains in a single recurrence whether or not batching is enabled.
Batching
Batching is enabled per flow on this trigger: each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to Klaviyo.
To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.
With batching enabled, each execution receives a single { changeType, record } object instead of the created and updated arrays. Any downstream step that reads body.data.created or body.data.updated must be updated to read the batched shape before enabling batching.
Supported Resource Types
| Resource Type | Klaviyo Endpoint | Created Field | Updated Field |
|---|---|---|---|
profiles | GET /api/profiles | created | updated |
lists | GET /api/lists | created | updated |
Returned Data
The trigger returns an object with two arrays: created for newly created records and updated for modified records. Each record follows the Klaviyo JSON:API resource shape for the selected resource type. Fields shown are representative. The full response object includes additional properties.
Example Payload (Profiles)
{
"data": {
"created": [
{
"type": "profile",
"id": "01HPROFILE0123456789ABCDEF",
"attributes": {
"email": "jane.doe@example.com",
"phoneNumber": "+15555550123",
"firstName": "Jane",
"lastName": "Doe",
"created": "2026-04-15T14:30:00Z",
"updated": "2026-04-15T14:30:00Z",
"lastEventDate": null,
"subscriptions": {
"email": {
"marketing": {
"canReceiveEmailMarketing": true,
"consent": "SUBSCRIBED"
}
}
}
}
}
],
"updated": [
{
"type": "profile",
"id": "01HPROFILE9876543210ZYXWVU",
"attributes": {
"email": "john.smith@example.com",
"firstName": "John",
"lastName": "Smith",
"created": "2025-12-01T09:00:00Z",
"updated": "2026-04-15T16:22:00Z",
"lastEventDate": "2026-04-15T16:22:00Z"
}
}
]
}
}
Example Payload (Lists)
{
"data": {
"created": [
{
"type": "list",
"id": "Y6nRLr",
"attributes": {
"name": "Spring Newsletter",
"created": "2026-04-15T14:30:00Z",
"updated": "2026-04-15T14:30:00Z",
"optInProcess": "double_opt_in"
},
"relationships": {
"profiles": {
"links": {
"self": "https://a.klaviyo.com/api/lists/Y6nRLr/relationships/profiles/",
"related": "https://a.klaviyo.com/api/lists/Y6nRLr/profiles/"
}
}
}
}
],
"updated": [
{
"type": "list",
"id": "UTd5ui",
"attributes": {
"name": "VIP Customers",
"created": "2025-10-10T12:00:00Z",
"updated": "2026-04-15T16:22:00Z",
"optInProcess": "single_opt_in"
}
}
]
}
}
Notes
- The
greater-than(updated,...)filter is applied server-side, so only records modified since the last poll are returned - A newly created record has
created == updated, so the same record is never classified as both created and updated - Both
profilesandlistsuse thecreatedandupdatedattribute names. These differ from thecreated_at/updated_atnames used by the Campaigns API - Refer to the Klaviyo API rate limits documentation for throttling behavior and the Get Profiles and Get Lists endpoint references for the full list of returned attributes
Example Payload for New and Updated Profiles and Lists⤓
Data Sources
Select Account
Select an account to use. | key: selectAccount | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. |
Example Payload for Select Account⤓
Select Campaign
Select a campaign to use. | key: selectCampaign | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. |
Example Payload for Select Campaign⤓
Select Event
Select an event to use. | key: selectEvent | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. |
Example Payload for Select Event⤓
Select Image
Select an image from a Klaviyo account. | key: selectImage | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. |
Example Payload for Select Image⤓
Select List
Select a list from a Klaviyo account. | key: selectList | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. |
Example Payload for Select List⤓
Select Profile
Select a profile to use. | key: selectProfile | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. |
Example Payload for Select Profile⤓
Select Segment
Select a segment from a Klaviyo account. | key: selectSegment | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. |
Example Payload for Select Segment⤓
Select Template
Select a template to use. | key: selectTemplate | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. |
Example Payload for Select Template⤓
Actions
Bulk Create Events
Create a batch of events for one or more profiles. | key: bulkCreateEvents
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Events Array | An array of events to create. |
Example Payload for Bulk Create Events⤓
Create Campaign
Creates a campaign given a set of parameters, then returns it. | key: createCampaign
| Input | Notes | Example |
|---|---|---|
| Campaign Configuration | Tracking options, send options, and send strategy. | |
| Campaign Messages | The message(s) to send in the campaign. | |
| Campaign Name | A display name to identify the campaign. | My new campaign |
| Connection | The Klaviyo connection to use. | |
| Excluded Audiences | The IDs of lists or segments to exclude from the campaign. | X7MYfE |
| Included Audiences | The IDs of lists or segments to receive the campaign. | X7MYfE |
Example Payload for Create Campaign⤓
Create Event
Create a new event to track a profiles activity. | key: createEvent
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Event Details | Timestamp, monetary value, currency, and unique ID for the event. | |
| Event Name | The metric name that identifies this event type. | Viewed Product |
| Event Profile | The profile associated with this event. | |
| Event Properties | A JSON object of custom key-value pairs to attach to the event. |
Example Payload for Create Event⤓
Create List
Create a new list. | key: createList
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| List Name | A helpful name to label the list. | Newsletter |
Example Payload for Create List⤓
Create Profile
Create a new profile. | key: createProfile
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Contact Information | Email, phone, and other contact channel details. | |
| Additional Fields | Additional optional fields: includes External ID, Organization, Title, Image, Location, and Properties. |
Example Payload for Create Profile⤓
Create Segment
Create a segment. | key: createSegment
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Is Starred Segment | When true, pins the segment to the top of the segments list in the Klaviyo UI. | false |
| Segment Condition Groups | The condition groups that define the segment. | |
| Segment Name | A display name to identify the segment. | A segment |
Example Payload for Create Segment⤓
Create Template
Create a new custom HTML template. | key: createTemplate
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Editor Type | The editor used to author the template. Currently only CODE is supported. | CODE |
| Template HTML | The HTML markup rendered to recipients. | <html><body><p>Hello, world!</p></body></html> |
| Template Name | A display name to identify the template. | Monthly Newsletter Template |
| Template Text | The plain-text fallback shown when HTML cannot be rendered. | Hello, world! |
Example Payload for Create Template⤓
Delete Campaign
Delete a campaign with the given campaign ID. | key: deleteCampaign
| Input | Notes | Example |
|---|---|---|
| Campaign ID | The unique identifier for the campaign. | 01J2DNH88028WCAA2RK0BYBZVG |
| Connection | The Klaviyo connection to use. |
Example Payload for Delete Campaign⤓
Delete List
Delete a list with the given list ID. | key: deleteList
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| List ID | The unique identifier of the list. | RE83th |
Example Payload for Delete List⤓
Delete Segment
Delete a segment with the given segment ID. | key: deleteSegment
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Segment ID | The unique identifier for the segment. | WwKnkd |
Example Payload for Delete Segment⤓
Delete Template
Delete a template with the given template ID. | key: deleteTemplate
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Template ID | The unique identifier for the template. | 123456 |
Example Payload for Delete Template⤓
Get Account
Retrieve a single account object by its account ID. | key: getAccount
| Input | Notes | Example |
|---|---|---|
| Account ID | The unique identifier for the account. | AbC123 |
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. |
Example Payload for Get Account⤓
Get Campaign
Returns a specific campaign based on a required id. | key: getCampaign
| Input | Notes | Example |
|---|---|---|
| Campaign ID | The unique identifier for the campaign. | 01J2DNH88028WCAA2RK0BYBZVG |
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. |
Example Payload for Get Campaign⤓
Get Event
Get an event with the given event ID. | key: getEvent
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Event ID | The unique identifier for the event. | 5nJKMJuHUQy |
| Event Fields | Event fields to include in the response. | |
| Metric Fields | Metric fields to include in the response. | |
| Profile Fields | Profile fields to include in the response. |
Example Payload for Get Event⤓
Get Image
Get the image with the given image ID. | key: getImage
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. | |
| Image ID | The unique identifier for the image. | 155463624 |
Example Payload for Get Image⤓
Get List
Get a list with the given list ID. | key: getList
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. | |
| List ID | The unique identifier of the list. | RE83th |
Example Payload for Get List⤓
Get Profile
Get the profile with the given profile ID. | key: getProfile
| Input | Notes | Example |
|---|---|---|
| Additional Profile Fields | Request additional fields not included by default in the response. | |
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. | |
| Profile ID | Unique identifier for the profile. | 01J18FVB5H8XR1X9AXEQFVRW7A |
Example Payload for Get Profile⤓
Get Segment
Get a segment with the given segment ID. | key: getSegment
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. | |
| Segment ID | The unique identifier for the segment. | WwKnkd |
Example Payload for Get Segment⤓
Get Template
Get a template with the given template ID. | key: getTemplate
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. | |
| Template ID | The unique identifier for the template. | 123456 |
Example Payload for Get Template⤓
List Accounts
Retrieve the account(s) associated with a given private API key. | key: listAccounts
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. |
Example Payload for List Accounts⤓
List Campaigns
Returns some or all campaigns based on filters. | key: listCampaigns
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. | |
| Filter Campaigns | A Klaviyo JSON:API filter expression to narrow the campaign list. | equals(messages.channel,'sms') |
Example Payload for List Campaigns⤓
List Events
Get all events in an account. | key: listEvents
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Event Fields | Event fields to include in the response. | |
| Metric Fields | Metric fields to include in the response. | |
| Profile Fields | Profile fields to include in the response. |
Example Payload for List Events⤓
List Images
Get all images in an account. | key: listImages
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. |
Example Payload for List Images⤓
List List Profiles
Get all profiles within a list with the given list ID. | key: listListProfiles
| Input | Notes | Example |
|---|---|---|
| Additional Profile Fields | Request additional fields not included by default in the response. | |
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. | |
| List ID | The unique identifier of the list. | RE83th |
Example Payload for List List Profiles⤓
List Lists
Get all lists in an account. | key: listLists
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. |
Example Payload for List Lists⤓
List Profiles
Get all profiles in an account. | key: listProfile
| Input | Notes | Example |
|---|---|---|
| Additional Profile Fields | Request additional fields not included by default in the response. | |
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. |
Example Payload for List Profiles⤓
List Segments
Get all segments in an account. | key: listSegments
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. |
Example Payload for List Segments⤓
List Templates
Get all templates in an account. | key: listTemplates
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Fields | The fields to include in the response. |
Example Payload for List Templates⤓
Raw Request
Send raw HTTP request to Klaviyo. | key: rawRequest
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Data | The HTTP body payload to send to the URL. | {"exampleKey": "Example Data"} |
| Exclude Authorization | Exclude the Authorization header from the request. Turn this on and include the company_id query param when calling public endpoints (/client). | false |
| File Data | File Data to be sent as a multipart form upload. | [{key: "example.txt", value: "My File Contents"}] |
| File Data File Names | File names to apply to the file data inputs. Keys must match the file data keys above. | |
| Form Data | The Form Data to be sent as a multipart form upload. | [{"key": "Example Key", "value": new Buffer("Hello World")}] |
| Header | A list of headers to send with the request. | User-Agent: curl/7.64.1 |
| Max Retry Count | The maximum number of retries to attempt. Specify 0 for no retries. | 0 |
| Method | The HTTP method to use. | |
| Query Parameter | A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2. | |
| Response Type | The type of data you expect in the response. You can request json, text, or binary data. | json |
| Retry On All Errors | If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors. | false |
| Retry Delay (ms) | The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled. | 0 |
| Timeout | The maximum time that a client will await a response to its request | 2000 |
| URL | Input the path only (/api/accounts), The base URL is already included (https://a.klaviyo.com). For example, to connect to https://a.klaviyo.com/api/accounts, only /api/accounts is entered in this field. | /api/accounts |
| Use Exponential Backoff | Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored. | false |
Subscribe Profiles
Subscribe one or more profiles to email marketing, SMS marketing, or both. | key: subscribeProfiles
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Profiles | Array of profiles to subscribe. |
Example Payload for Subscribe Profiles⤓
Unsubscribe Profiles
Unsubscribe one or more profiles to email marketing, SMS marketing, or both. | key: unsubscribeProfiles
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Profiles | Array of profiles to unsubscribe. |
Example Payload for Unsubscribe Profiles⤓
Update Campaign
Update a campaign with the given campaign ID. | key: updateCampaign
| Input | Notes | Example |
|---|---|---|
| Campaign Configuration | Tracking options, send options, and send strategy. | |
| Campaign ID | The unique identifier for the campaign. | 01J2DNH88028WCAA2RK0BYBZVG |
| Campaign Name | A display name to identify the campaign. | My new campaign |
| Connection | The Klaviyo connection to use. | |
| Excluded Audiences | The IDs of lists or segments to exclude from the campaign. | X7MYfE |
| Included Audiences | The IDs of lists or segments to receive the campaign. | X7MYfE |
Example Payload for Update Campaign⤓
Update Image
Update the image with the given image ID. | key: updateImage
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Image Hidden | Controls whether the image is hidden in the image library. | |
| Image ID | The unique identifier for the image. | 155463624 |
| Image Name | A name for the image. Defaults to the filename if not provided. If the name matches an existing image, a suffix will be added. | My Image |
Example Payload for Update Image⤓
Update List
Update the name of a list with the given list ID. | key: updateList
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| List ID | The unique identifier of the list. | RE83th |
| List Name | A helpful name to label the list. | Newsletter |
Example Payload for Update List⤓
Update Profile
Update the profile with the given profile ID. | key: updateProfile
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Contact Information | Email, phone, and other contact channel details. | |
| Additional Fields | Additional optional fields: includes External ID, Organization, Title, Image, Location, and Properties. | |
| Profile ID | Unique identifier for the profile. | 01J18FVB5H8XR1X9AXEQFVRW7A |
Example Payload for Update Profile⤓
Update Segment
Update a segment with the given segment ID. | key: updateSegment
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Is Starred Segment | When true, pins the segment to the top of the segments list in the Klaviyo UI. | |
| Segment Condition Groups | The condition groups that define the segment. | |
| Segment ID | The unique identifier for the segment. | WwKnkd |
| Segment Name | A display name to identify the segment. | A segment |
Example Payload for Update Segment⤓
Update Template
Update a template with the given template ID. | key: updateTemplate
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| Template HTML | The HTML markup rendered to recipients. | <html><body><p>Hello, world!</p></body></html> |
| Template ID | The unique identifier for the template. | 123456 |
| Template Name | A display name to identify the template. | Monthly Newsletter Template |
| Template Text | The plain-text fallback shown when HTML cannot be rendered. | Hello, world! |
Example Payload for Update Template⤓
Upload Image
Import an image from a url or file. | key: uploadImage
| Input | Notes | Example |
|---|---|---|
| Connection | The Klaviyo connection to use. | |
| File Data | The contents to write to a file. Binary data generated from a previous step. | |
| Image Name | A name for the image. Defaults to the filename if not provided. If the name matches an existing image, a suffix will be added. | My Image |
| Image URL | An existing image url to import the image from. Alternatively, you may specify a base-64 encoded data-uri ( | https://example.com/image.jpg |
Example Payload for Upload Image⤓
Changelog
2026-09-28
- Added output schemas to 37 actions for improved field mapping during configuration
- Added inline action calling support to the Get Account, Get Campaign, Get Event, Get Image, Get List, Get Profile, Get Segment, Get Template, and List Accounts actions for improved example output during configuration
- Added opt-in batching to the New and Updated Campaigns and New and Updated Profiles and Lists triggers, dispatching each changed record individually or in configured batches so large backlogs drain in one recurrence; enabling it changes the shape a downstream step receives
- Added an optional Look-back Date input for performing an initial sync of records on the New and Updated Campaigns and New and Updated Profiles and Lists triggers. The initial sync backfills every record modified on or after the specified date, seeding each once; later recurrences are unaffected. Leave it empty to start from the first recurrence with no backfill
- Fixed the New and Updated Campaigns and New and Updated Profiles and Lists triggers reporting no changes on every recurrence, so new and updated records never reached the flow
2026-09-01
Restructured action inputs into structured objects for an improved user experience.
- Updated Create Profile and Update Profile to group their contact-channel and name inputs into Contact Information, and their remaining optional profile details into Profile Details
- Updated Create Campaign and Update Campaign to group their tracking, send, and delivery-strategy inputs into Campaign Configuration
- Updated Create Event to group its optional event metadata and value inputs into Event Details
2026-05-05
Added two new triggers using Klaviyo's server-side filter for efficient change detection:
- New and Updated Profiles and Lists for profiles and lists
- New and Updated Campaigns which requires a Message Channel input
2026-04-30
Updated spectral version
2026-02-26
Added inline data sources for segments, lists, and images to enable dynamic dropdown selection
2025-07-23
Added inline data sources for accounts, campaigns, events, profiles, and templates to enhance data selection capabilities