Reference
Klaviyo
Set up Klaviyo OAuth for email marketing, SMS, and customer data
Overview
Section titled “Overview”Connect your users to Klaviyo for email marketing, SMS, and customer data.
| Property | Value |
|---|---|
| Provider ID | klaviyo |
| Category | Marketing |
| PKCE | Required (S256) |
| Token refresh | Automatic |
| Redirect URI | Shown in Developer Portal |
Step 1: Create a Klaviyo OAuth App
Section titled “Step 1: Create a Klaviyo OAuth App”Go to Klaviyo Manage Apps
Sign in to Klaviyo as an owner, admin, or manager and open Settings > Manage Apps.
Create an app
Click Create App and enter the app name.
Configure the redirect URL
Add the Alter callback URL (from the Developer Portal) to the app’s redirect URL allowlist.
Set scopes
Set the app’s scopes as a space-separated list. The scopes requested at authorization time must be part of the app’s configured scope set — scopes not configured on the app are ignored.
Get credentials
Copy the Client ID and Client Secret.
Step 2: Add to Alter Vault
Section titled “Step 2: Add to Alter Vault”Open the Developer Portal
Go to portal.alterauth.com and navigate to the application.
Add Klaviyo provider
Go to OAuth Providers > Add Provider > Klaviyo.
Enter credentials
- Client ID: Paste your Klaviyo Client ID
- Client Secret: Paste your Klaviyo Client Secret
Select scopes
Choose the scopes the application needs. accounts:read is required and selected by default.
Save
Click Save. The provider is now active.
Available Scopes
Section titled “Available Scopes”accounts:read is required and selected by default.
| Scope | Description |
|---|---|
accounts:read | Read account information such as the account ID and name |
campaigns:read | Read campaigns and campaign performance data |
campaigns:write | Create and update campaigns |
catalogs:read | Read catalog items, categories, and variants |
catalogs:write | Create and update catalog items, categories, and variants |
conversations:read | Read conversations |
conversations:write | Create and update conversations |
coupons:read | Read coupons |
coupons:write | Create and update coupons |
coupon-codes:read | Read coupon codes |
coupon-codes:write | Create and update coupon codes |
data-privacy:read | Read data privacy requests |
data-privacy:write | Create data privacy deletion requests |
events:read | Read events and event metrics |
events:write | Create events |
flows:read | Read flows and flow performance data |
flows:write | Create and update flows |
forms:read | Read forms and form performance data |
images:read | Read images |
images:write | Upload and update images |
lists:read | Read lists and list memberships |
lists:write | Create and update lists and list memberships |
metrics:read | Read metrics and metric aggregates |
metrics:write | Create and update metrics |
profiles:read | Read profiles, profile properties, and consent status |
profiles:write | Create and update profiles and suppress or subscribe profiles |
push-tokens:read | Read push tokens |
push-tokens:write | Create and update push tokens |
reviews:read | Read product reviews |
segments:read | Read segments and segment memberships |
segments:write | Create and update segments |
subscriptions:read | Read subscription status |
subscriptions:write | Subscribe and unsubscribe profiles |
tags:read | Read tags and tag groups |
tags:write | Create and update tags and tag groups |
templates:read | Read email templates |
tracking-settings:read | Read tracking settings |
tracking-settings:write | Update tracking settings |
web-feeds:read | Read web feeds |
webhooks:read | Read webhook subscriptions |
webhooks:write | Create and update webhook subscriptions |
- Klaviyo requires PKCE (S256) for all OAuth clients, including confidential ones. Alter Vault handles PKCE automatically.
- Tokens grant access to the Klaviyo account, not an individual user. Only owner, admin, and manager roles can authorize apps.
- Access tokens expire after 1 hour. The refresh token persists until the app is uninstalled, revoked, or unused for 90 days.
- Request the least permissive scope set — Klaviyo rejects Marketplace listings that request more permissions than necessary.
- See the Klaviyo OAuth documentation for more details.
Policy-cataloged operations
Section titled “Policy-cataloged operations”Alter policy rules can target these attested operations and families for operation-level and parameter-aware controls.
| Operation ID | Families | Method | Provider path |
|---|---|---|---|
assign_template_to_campaign_message | send | POST | /api/campaign-message-assign-template |
cancel_campaign_send | delete, send | PATCH | /api/campaign-send-jobs/{id} |
create_campaign | send | POST | /api/campaigns |
create_campaign_clone | send | POST | /api/campaign-clone |
send_campaign | send | POST | /api/campaign-send-jobs |
update_campaign | send | PATCH | /api/campaigns/{id} |
update_campaign_message | send | PATCH | /api/campaign-messages/{id} |
update_image_for_campaign_message | send | PATCH | /api/campaign-messages/{id}/relationships/image |
bulk_create_coupon_codes | payment | POST | /api/coupon-code-bulk-create-jobs |
create_coupon | payment | POST | /api/coupons |
create_coupon_code | payment | POST | /api/coupon-codes |
delete_coupon | delete, payment | DELETE | /api/coupons/{id} |
delete_coupon_code | delete, payment | DELETE | /api/coupon-codes/{id} |
update_coupon | payment | PATCH | /api/coupons/{id} |
update_coupon_code | payment | PATCH | /api/coupon-codes/{id} |
delete_campaign | delete | DELETE | /api/campaigns/{id} |
delete_catalog_category | delete | DELETE | /api/catalog-categories/{id} |
delete_catalog_item | delete | DELETE | /api/catalog-items/{id} |
delete_catalog_variant | delete | DELETE | /api/catalog-variants/{id} |
delete_custom_metric | delete | DELETE | /api/custom-metrics/{id} |
delete_data_source | delete | DELETE | /api/data-sources/{id} |
delete_flow | delete | DELETE | /api/flows/{id} |
delete_flow_action | delete | DELETE | /api/flow-actions/{id} |
delete_form | delete | DELETE | /api/forms/{id} |
delete_list | delete | DELETE | /api/lists/{id} |
create_client_push_token | admin, write | POST | /client/push-tokens |
create_push_token | admin, write | POST | /api/push-tokens |
create_tag_group | admin, write | POST | /api/tag-groups |
create_webhook | admin, write | POST | /api/webhooks |
update_tag_group | admin, write | PATCH | /api/tag-groups/{id} |
add_profiles_to_list | write | POST | /api/lists/{id}/relationships/profiles |
bulk_create_catalog_categories | write | POST | /api/catalog-category-bulk-create-jobs |
bulk_create_catalog_items | write | POST | /api/catalog-item-bulk-create-jobs |
bulk_create_catalog_variants | write | POST | /api/catalog-variant-bulk-create-jobs |
bulk_create_client_events | write | POST | /client/event-bulk-create |
bulk_create_data_source_records | write | POST | /api/data-source-record-bulk-create-jobs |
bulk_create_events | write | POST | /api/event-bulk-create-jobs |
update_profile | write | PATCH | /api/profiles/{id} |
get_action_for_flow_message | read | GET | /api/flow-messages/{id}/flow-action |
get_action_id_for_flow_message | read | GET | /api/flow-messages/{id}/relationships/flow-action |
get_bulk_create_catalog_items_job | read | GET | /api/catalog-item-bulk-create-jobs/{job_id} |
get_bulk_create_categories_job | read | GET | /api/catalog-category-bulk-create-jobs/{job_id} |
get_bulk_create_coupon_codes_job | read | GET | /api/coupon-code-bulk-create-jobs/{job_id} |
get_bulk_create_variants_job | read | GET | /api/catalog-variant-bulk-create-jobs/{job_id} |