New tools across 13 categories: - Email/Newsletter: beehiiv, klaviyo, postmark, brevo, activecampaign - Data Enrichment: clearbit, apollo - CRO/Testing: hotjar, optimizely - Analytics: plausible - Scheduling: calendly, savvycal - Forms: typeform - Messaging: intercom - Social: buffer - Video: wistia - Payments: paddle - Affiliate: partnerstack - Reviews: trustpilot, g2 - Push: onesignal - Webinar: demio, livestorm Each tool includes a zero-dependency CLI and integration guide. Registry and CLI README updated with all new entries. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
228 lines
4.8 KiB
Markdown
228 lines
4.8 KiB
Markdown
# Klaviyo
|
|
|
|
E-commerce email and SMS marketing platform with profiles, flows, campaigns, segments, and event tracking.
|
|
|
|
## Capabilities
|
|
|
|
| Integration | Available | Notes |
|
|
|-------------|-----------|-------|
|
|
| API | ✓ | REST API with JSON:API spec, revision-versioned |
|
|
| MCP | - | Not available |
|
|
| CLI | ✓ | [klaviyo.js](../clis/klaviyo.js) |
|
|
| SDK | ✓ | Python, Node.js, Ruby, PHP, Java, C# |
|
|
|
|
## Authentication
|
|
|
|
- **Type**: Private API Key
|
|
- **Header**: `Authorization: Klaviyo-API-Key {private_api_key}`
|
|
- **Revision Header**: `revision: 2024-10-15` (required on all requests)
|
|
- **Get key**: Account Settings > API Keys at https://www.klaviyo.com/settings/account/api-keys
|
|
- **Note**: Private keys are prefixed with `pk_`; public keys (6-char site ID) are for client-side only
|
|
|
|
## Common Agent Operations
|
|
|
|
### List profiles
|
|
|
|
```bash
|
|
GET https://a.klaviyo.com/api/profiles/?page[size]=20
|
|
|
|
# Filter by email
|
|
GET https://a.klaviyo.com/api/profiles/?filter=equals(email,"user@example.com")
|
|
```
|
|
|
|
### Create profile
|
|
|
|
```bash
|
|
POST https://a.klaviyo.com/api/profiles/
|
|
|
|
{
|
|
"data": {
|
|
"type": "profile",
|
|
"attributes": {
|
|
"email": "user@example.com",
|
|
"first_name": "Jane",
|
|
"last_name": "Doe",
|
|
"phone_number": "+15551234567"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Update profile
|
|
|
|
```bash
|
|
PATCH https://a.klaviyo.com/api/profiles/{profileId}/
|
|
|
|
{
|
|
"data": {
|
|
"type": "profile",
|
|
"id": "{profileId}",
|
|
"attributes": {
|
|
"first_name": "Updated Name"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### List all lists
|
|
|
|
```bash
|
|
GET https://a.klaviyo.com/api/lists/
|
|
```
|
|
|
|
### Create list
|
|
|
|
```bash
|
|
POST https://a.klaviyo.com/api/lists/
|
|
|
|
{
|
|
"data": {
|
|
"type": "list",
|
|
"attributes": {
|
|
"name": "Newsletter Subscribers"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Add profiles to list
|
|
|
|
```bash
|
|
POST https://a.klaviyo.com/api/lists/{listId}/relationships/profiles/
|
|
|
|
{
|
|
"data": [
|
|
{ "type": "profile", "id": "{profileId1}" },
|
|
{ "type": "profile", "id": "{profileId2}" }
|
|
]
|
|
}
|
|
```
|
|
|
|
### Track event
|
|
|
|
```bash
|
|
POST https://a.klaviyo.com/api/events/
|
|
|
|
{
|
|
"data": {
|
|
"type": "event",
|
|
"attributes": {
|
|
"metric": {
|
|
"data": {
|
|
"type": "metric",
|
|
"attributes": { "name": "Placed Order" }
|
|
}
|
|
},
|
|
"profile": {
|
|
"data": {
|
|
"type": "profile",
|
|
"attributes": { "email": "user@example.com" }
|
|
}
|
|
},
|
|
"properties": {
|
|
"value": 99.99,
|
|
"items": ["Product A"]
|
|
},
|
|
"time": "2025-01-15T10:00:00Z"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### List campaigns
|
|
|
|
```bash
|
|
GET https://a.klaviyo.com/api/campaigns/?filter=equals(messages.channel,"email")
|
|
```
|
|
|
|
### List flows
|
|
|
|
```bash
|
|
GET https://a.klaviyo.com/api/flows/
|
|
```
|
|
|
|
### Update flow status
|
|
|
|
```bash
|
|
PATCH https://a.klaviyo.com/api/flows/{flowId}/
|
|
|
|
{
|
|
"data": {
|
|
"type": "flow",
|
|
"id": "{flowId}",
|
|
"attributes": {
|
|
"status": "live"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### List metrics
|
|
|
|
```bash
|
|
GET https://a.klaviyo.com/api/metrics/
|
|
```
|
|
|
|
### List segments
|
|
|
|
```bash
|
|
GET https://a.klaviyo.com/api/segments/
|
|
```
|
|
|
|
## API Pattern
|
|
|
|
Klaviyo uses the JSON:API specification. All request/response bodies use `{ "data": { "type": "...", "attributes": {...} } }` format. Relationships are managed via `/relationships/` sub-endpoints. The `revision` header is required on every request and determines API behavior version.
|
|
|
|
## Key Metrics
|
|
|
|
### Profile Fields
|
|
- `email` - Email address
|
|
- `phone_number` - Phone for SMS
|
|
- `first_name`, `last_name` - Name fields
|
|
- `properties` - Custom properties object
|
|
- `subscriptions` - Email/SMS subscription status
|
|
|
|
### Event Fields
|
|
- `metric` - The metric/event name
|
|
- `properties` - Custom event properties
|
|
- `time` - Event timestamp
|
|
- `value` - Monetary value (for revenue tracking)
|
|
|
|
### Campaign/Flow Metrics
|
|
- `send_count` - Number of sends
|
|
- `open_rate` - Open percentage
|
|
- `click_rate` - Click percentage
|
|
- `revenue` - Attributed revenue
|
|
|
|
## Parameters
|
|
|
|
### Common Query Parameters
|
|
- `page[size]` - Results per page (default 20, max 100)
|
|
- `page[cursor]` - Cursor for pagination
|
|
- `filter` - Filter expressions (e.g., `equals(email,"user@example.com")`)
|
|
- `sort` - Sort field (prefix `-` for descending)
|
|
- `include` - Include related resources
|
|
- `fields[resource]` - Sparse fieldsets
|
|
|
|
## When to Use
|
|
|
|
- E-commerce email/SMS marketing automation
|
|
- Syncing customer profiles from external systems
|
|
- Tracking purchase events and customer behavior
|
|
- Managing email flows and drip campaigns
|
|
- Segmenting audiences for targeted campaigns
|
|
- Reporting on campaign and flow performance
|
|
|
|
## Rate Limits
|
|
|
|
- Steady-state: 75 requests/second for most endpoints
|
|
- Burst: up to 700 requests in 1 minute
|
|
- Rate limit headers: `RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset`
|
|
- Lower limits on some write endpoints (profiles, events)
|
|
|
|
## Relevant Skills
|
|
|
|
- email-sequence
|
|
- ecommerce-email
|
|
- lifecycle-marketing
|
|
- customer-segmentation
|