Klaviyo Automation via Rube MCP
Automate Klaviyo email and SMS marketing operations through Composio's Klaviyo toolkit via Rube MCP.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Klaviyo connection via
RUBE_MANAGE_CONNECTIONS with toolkit klaviyo
- Always call
RUBE_SEARCH_TOOLS first to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLS responds
- Call
RUBE_MANAGE_CONNECTIONS with toolkit klaviyo
- If connection is not ACTIVE, follow the returned auth link to complete Klaviyo authentication
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. List and Filter Campaigns
When to use: User wants to browse, search, or filter marketing campaigns
Tool sequence:
KLAVIYO_GET_CAMPAIGNS - List campaigns with channel and status filters [Required]
Key parameters:
channel: Campaign channel - 'email' or 'sms' (required by Klaviyo API)
filter: Additional filter string (e.g., equals(status,"draft"))
sort: Sort field with optional - prefix for descending (e.g., '-created_at', 'name')
page_cursor: Pagination cursor for next page
include_archived: Include archived campaigns (default: false)
Pitfalls:
channel is required; omitting it can produce incomplete or unexpected results
- Pagination is mandatory for full coverage; a single call returns only one page (default ~10)
- Follow
page_cursor until exhausted to get all campaigns
- Status filtering via
filter (e.g., equals(status,"draft")) can return mixed statuses; always validate data[].attributes.status client-side
- Status strings are case-sensitive and can be compound (e.g., 'Cancelled: No Recipients')
- Response shape is nested:
response.data.data with status at data[].attributes.status
2. Get Campaign Details
When to use: User wants detailed information about a specific campaign
Tool sequence:
KLAVIYO_GET_CAMPAIGNS - Find campaign to get its ID [Prerequisite]
KLAVIYO_GET_CAMPAIGN - Retrieve full campaign details [Required]
Key parameters:
campaign_id: Campaign ID string (e.g., '01GDDKASAP8TKDDA2GRZDSVP4H')
include_messages: Include campaign messages in response
include_tags: Include tags in response
Pitfalls:
- Campaign IDs are alphanumeric strings, not numeric
include_messages and include_tags add related data to the response via Klaviyo's include mechanism
- Campaign details include audiences, send strategy, tracking options, and scheduling info
3. Inspect Campaign Messages
When to use: User wants to view the email/SMS content of a campaign
Tool sequence:
KLAVIYO_GET_CAMPAIGN - Find campaign and its message IDs [Prerequisite]
KLAVIYO_GET_CAMPAIGN_MESSAGE - Get message content details [Required]
Key parameters:
id: Message ID string
fields__campaign__message: Sparse fieldset for message attributes (e.g., 'content.subject', 'content.from_email', 'content.body')
fields__campaign: Sparse fieldset for campaign attributes
fields__template: Sparse fieldset for template attributes
include: Related resources to include ('campaign', 'template')
Pitfalls:
- Message IDs are separate from campaign IDs; extract from campaign response
- Sparse fieldset syntax uses dot notation for nested fields: 'content.subject', 'content.from_email'
- Email messages have content fields: subject, preview_text, from_email, from_label, reply_to_email
- SMS messages have content fields: body
- Including 'template' provides the HTML/text content of the email
4. Manage Campaign Tags
When to use: User wants to view tags associated with campaigns for organization
Tool sequence:
KLAVIYO_GET_CAMPAIGN_RELATIONSHIPS_TAGS - Get tag IDs for a campaign [Required]
Key parameters:
Pitfalls:
- Returns only tag IDs, not tag names/details
- Tag IDs can be used with Klaviyo's tag endpoints for full details
- Rate limit: 3/s burst, 60/m steady (stricter than other endpoints)
5. Monitor Campaign Send Jobs
When to use: User wants to check the status of a campaign send operation
Tool sequence:
KLAVIYO_GET_CAMPAIGN_SEND_JOB - Check send job status [Required]
Key parameters:
Pitfalls:
- Send job IDs are returned when a campaign send is initiated
- Job statuses indicate whether the send is queued, in progress, complete, or failed
- Rate limit: 10/s burst, 150/m steady
Common Patterns
Campaign Discovery Pattern
1. Call KLAVIYO_GET_CAMPAIGNS with channel='email'
2. Paginate through all results via page_cursor
3. Filter by status client-side for accuracy
4. Extract campaign IDs for detailed inspection
Sparse Fieldset Pattern
Klaviyo supports sparse fieldsets to reduce response size:
fields__campaign__message=['content.subject', 'content.from_email', 'send_times']
fields__campaign=['name', 'status', 'send_time']
fields__template=['name', 'html', 'text']
Pagination
- Klaviyo uses cursor-based pagination
- Check response for
page_cursor in the pagination metadata
- Pass cursor as
page_cursor in next request
- Default page size is ~10 campaigns
- Continue until no more cursor is returned
Filter Syntax
- equals(status,"draft") - Campaigns in draft status
- equals(name,"Newsletter") - Campaign named "Newsletter"
- greater-than(created_at,"2024-01-01T00:00:00Z") - Created after date
Known Pitfalls
API Version:
- Klaviyo API uses versioned endpoints (e.g., v2024-07-15)
- Response schemas may change between API versions
- Tool responses follow the version configured in the Composio integration
Response Nesting:
- Data is nested:
response.data.data[].attributes
- Campaign status at
data[].attributes.status
- Mis-parsing the nesting yields empty or incorrect results
- Always navigate through the full path defensively
Rate Limits:
- Burst: 10/s (3/s for tag endpoints)
- Steady: 150/m (60/m for tag endpoints)
- Required scope: campaigns:read
- Implement backoff on 429 responses
Status Values:
- Status strings are case-sensitive
- Compound statuses exist (e.g., 'Cancelled: No Recipients')
- Server-side filtering may return mixed statuses; always validate client-side
Quick Reference
| Task |
Tool Slug |
Key Params |
| List campaigns |
KLAVIYO_GET_CAMPAIGNS |
channel, filter, sort, page_cursor |
| Get campaign details |
KLAVIYO_GET_CAMPAIGN |
campaign_id, include_messages, include_tags |
| Get campaign message |
KLAVIYO_GET_CAMPAIGN_MESSAGE |
id, fields__campaign__message |
| Get campaign tags |
KLAVIYO_GET_CAMPAIGN_RELATIONSHIPS_TAGS |
id |
| Get send job status |
KLAVIYO_GET_CAMPAIGN_SEND_JOB |
id |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Source: sickn33/agentic-awesome-skills → skills/klaviyo-automation/SKILL.md
Also appears in: sickn33/agentic-awesome-skills/plugins/agentic-awesome-skills/skills/klaviyo-automation/SKILL.md, sickn33/agentic-awesome-skills/plugins/agentic-awesome-skills-claude/skills/klaviyo-automation/SKILL.md
1---2name: klaviyo-automation3description: Automate Klaviyo tasks via Rube MCP (Composio): manage email/SMS campaigns, inspect campaign messages, track tags, and monitor send jobs. Always search tools first for current schemas.4---567# Klaviyo Automation via Rube MCP89Automate Klaviyo email and SMS marketing operations through Composio's Klaviyo toolkit via Rube MCP.1011## Prerequisites1213- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)14- Active Klaviyo connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `klaviyo`15- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas1617## Setup1819**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.2021221. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds232. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `klaviyo`243. If connection is not ACTIVE, follow the returned auth link to complete Klaviyo authentication254. Confirm connection status shows ACTIVE before running any workflows2627## Core Workflows2829### 1. List and Filter Campaigns3031**When to use**: User wants to browse, search, or filter marketing campaigns3233**Tool sequence**:341. `KLAVIYO_GET_CAMPAIGNS` - List campaigns with channel and status filters [Required]3536**Key parameters**:37- `channel`: Campaign channel - 'email' or 'sms' (required by Klaviyo API)38- `filter`: Additional filter string (e.g., `equals(status,"draft")`)39- `sort`: Sort field with optional `-` prefix for descending (e.g., '-created_at', 'name')40- `page_cursor`: Pagination cursor for next page41- `include_archived`: Include archived campaigns (default: false)4243**Pitfalls**:44- `channel` is required; omitting it can produce incomplete or unexpected results45- Pagination is mandatory for full coverage; a single call returns only one page (default ~10)46- Follow `page_cursor` until exhausted to get all campaigns47- Status filtering via `filter` (e.g., `equals(status,"draft")`) can return mixed statuses; always validate `data[].attributes.status` client-side48- Status strings are case-sensitive and can be compound (e.g., 'Cancelled: No Recipients')49- Response shape is nested: `response.data.data` with status at `data[].attributes.status`5051### 2. Get Campaign Details5253**When to use**: User wants detailed information about a specific campaign5455**Tool sequence**:561. `KLAVIYO_GET_CAMPAIGNS` - Find campaign to get its ID [Prerequisite]572. `KLAVIYO_GET_CAMPAIGN` - Retrieve full campaign details [Required]5859**Key parameters**:60- `campaign_id`: Campaign ID string (e.g., '01GDDKASAP8TKDDA2GRZDSVP4H')61- `include_messages`: Include campaign messages in response62- `include_tags`: Include tags in response6364**Pitfalls**:65- Campaign IDs are alphanumeric strings, not numeric66- `include_messages` and `include_tags` add related data to the response via Klaviyo's include mechanism67- Campaign details include audiences, send strategy, tracking options, and scheduling info6869### 3. Inspect Campaign Messages7071**When to use**: User wants to view the email/SMS content of a campaign7273**Tool sequence**:741. `KLAVIYO_GET_CAMPAIGN` - Find campaign and its message IDs [Prerequisite]752. `KLAVIYO_GET_CAMPAIGN_MESSAGE` - Get message content details [Required]7677**Key parameters**:78- `id`: Message ID string79- `fields__campaign__message`: Sparse fieldset for message attributes (e.g., 'content.subject', 'content.from_email', 'content.body')80- `fields__campaign`: Sparse fieldset for campaign attributes81- `fields__template`: Sparse fieldset for template attributes82- `include`: Related resources to include ('campaign', 'template')8384**Pitfalls**:85- Message IDs are separate from campaign IDs; extract from campaign response86- Sparse fieldset syntax uses dot notation for nested fields: 'content.subject', 'content.from_email'87- Email messages have content fields: subject, preview_text, from_email, from_label, reply_to_email88- SMS messages have content fields: body89- Including 'template' provides the HTML/text content of the email9091### 4. Manage Campaign Tags9293**When to use**: User wants to view tags associated with campaigns for organization9495**Tool sequence**:961. `KLAVIYO_GET_CAMPAIGN_RELATIONSHIPS_TAGS` - Get tag IDs for a campaign [Required]9798**Key parameters**:99- `id`: Campaign ID string100101**Pitfalls**:102- Returns only tag IDs, not tag names/details103- Tag IDs can be used with Klaviyo's tag endpoints for full details104- Rate limit: 3/s burst, 60/m steady (stricter than other endpoints)105106### 5. Monitor Campaign Send Jobs107108**When to use**: User wants to check the status of a campaign send operation109110**Tool sequence**:1111. `KLAVIYO_GET_CAMPAIGN_SEND_JOB` - Check send job status [Required]112113**Key parameters**:114- `id`: Send job ID115116**Pitfalls**:117- Send job IDs are returned when a campaign send is initiated118- Job statuses indicate whether the send is queued, in progress, complete, or failed119- Rate limit: 10/s burst, 150/m steady120121## Common Patterns122123### Campaign Discovery Pattern124125```1261. Call KLAVIYO_GET_CAMPAIGNS with channel='email'1272. Paginate through all results via page_cursor1283. Filter by status client-side for accuracy1294. Extract campaign IDs for detailed inspection130```131132### Sparse Fieldset Pattern133134Klaviyo supports sparse fieldsets to reduce response size:135```136fields__campaign__message=['content.subject', 'content.from_email', 'send_times']137fields__campaign=['name', 'status', 'send_time']138fields__template=['name', 'html', 'text']139```140141### Pagination142143- Klaviyo uses cursor-based pagination144- Check response for `page_cursor` in the pagination metadata145- Pass cursor as `page_cursor` in next request146- Default page size is ~10 campaigns147- Continue until no more cursor is returned148149### Filter Syntax150151```152- equals(status,"draft") - Campaigns in draft status153- equals(name,"Newsletter") - Campaign named "Newsletter"154- greater-than(created_at,"2024-01-01T00:00:00Z") - Created after date155```156157## Known Pitfalls158159**API Version**:160- Klaviyo API uses versioned endpoints (e.g., v2024-07-15)161- Response schemas may change between API versions162- Tool responses follow the version configured in the Composio integration163164**Response Nesting**:165- Data is nested: `response.data.data[].attributes`166- Campaign status at `data[].attributes.status`167- Mis-parsing the nesting yields empty or incorrect results168- Always navigate through the full path defensively169170**Rate Limits**:171- Burst: 10/s (3/s for tag endpoints)172- Steady: 150/m (60/m for tag endpoints)173- Required scope: campaigns:read174- Implement backoff on 429 responses175176**Status Values**:177- Status strings are case-sensitive178- Compound statuses exist (e.g., 'Cancelled: No Recipients')179- Server-side filtering may return mixed statuses; always validate client-side180181## Quick Reference182183| Task | Tool Slug | Key Params |184|------|-----------|------------|185| List campaigns | KLAVIYO_GET_CAMPAIGNS | channel, filter, sort, page_cursor |186| Get campaign details | KLAVIYO_GET_CAMPAIGN | campaign_id, include_messages, include_tags |187| Get campaign message | KLAVIYO_GET_CAMPAIGN_MESSAGE | id, fields__campaign__message |188| Get campaign tags | KLAVIYO_GET_CAMPAIGN_RELATIONSHIPS_TAGS | id |189| Get send job status | KLAVIYO_GET_CAMPAIGN_SEND_JOB | id |190191## When to Use192This skill is applicable to execute the workflow or actions described in the overview.193194## Limitations195- Use this skill only when the task clearly matches the scope described above.196- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.197- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.198199---200201**Source:** [`sickn33/agentic-awesome-skills`](https://github.com/sickn33/agentic-awesome-skills) → `skills/klaviyo-automation/SKILL.md`202203**Also appears in:** `sickn33/agentic-awesome-skills/plugins/agentic-awesome-skills/skills/klaviyo-automation/SKILL.md`, `sickn33/agentic-awesome-skills/plugins/agentic-awesome-skills-claude/skills/klaviyo-automation/SKILL.md`