| name | klaviyo-performance-tuning |
| description | Optimize Klaviyo API performance with caching, batching, and pagination tuning.
Use when experiencing slow API responses, implementing caching strategies,
or optimizing request throughput for Klaviyo integrations.
Trigger with phrases like "klaviyo performance", "optimize klaviyo",
"klaviyo latency", "klaviyo caching", "klaviyo slow", "klaviyo batch".
|
| allowed-tools | Read, Write, Edit |
| version | 1.7.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","klaviyo","email-marketing","cdp"] |
| compatibility | Designed for Claude Code |
Klaviyo Performance Tuning
Overview
Optimize Klaviyo API performance with response caching, request batching, cursor-based pagination, sparse fieldsets, and connection pooling. This skill diagnoses where an integration is slow, then applies the right technique — payload reduction, memory caching, bounded pagination, request coalescing, or rate-limit-aware concurrency.
Read this file for the workflow and the decision guide. Full, copy-pasteable code for every step lives in references/implementation.md; combined real-world scenarios live in references/examples.md.
Prerequisites
klaviyo-api SDK installed
- Understanding of Klaviyo's rate limits (75 req/s burst, 700 req/min)
- Redis or in-memory cache (optional)
- For batching/concurrency helpers:
dataloader, p-queue, lru-cache
Klaviyo API Performance Characteristics
| Operation | Typical Latency | Max Page Size |
|---|
| Get Profile by ID | 50-150ms | N/A |
| Get Profiles (list) | 100-300ms | 20 (default), 100 (some endpoints) |
| Create Profile | 100-200ms | N/A |
| Create Event | 50-100ms | N/A |
| Get Segment Profiles | 200-500ms | 20 |
| Campaign Operations | 200-500ms | 20 |
Instructions
Apply the techniques in order — each is independent, so start with the one that matches your bottleneck. Every step below has a full implementation in references/implementation.md.
Step 1: Sparse Fieldsets (Reduce Payload Size)
Klaviyo supports JSON:API sparse fieldsets — request only the fields you need instead of the 20+ default attributes. This is the cheapest win and applies to every read.
const profiles = await profilesApi.getProfiles({
fieldsProfile: ['email', 'first_name', ],
});