Klaviyo Hardening Guide
E-commerce marketing security for API keys, profile protection, and export controls
Overview
Klaviyo is an e-commerce marketing platform managing customer data, email/SMS campaigns, and behavioral analytics. REST API with private/public API keys, webhooks, and e-commerce platform integrations access customer PII and purchase history. Compromised access enables customer database exfiltration or phishing through trusted sender domains.
Intended Audience
- Security engineers managing marketing platforms
- Klaviyo administrators
- GRC professionals assessing e-commerce marketing compliance
- Third-party risk managers evaluating marketing integrations
Table of Contents
1. Authentication & Access Controls
1.1 Enforce SSO with MFA
Profile Level: L1 (Baseline) NIST 800-53: IA-2(1)
ClickOps Implementation
Step 1: Configure SAML SSO (Enterprise)
- Navigate to: Settings → Security → SSO
- Configure SAML IdP
- Enable SSO enforcement
Step 2: Enable 2FA
- Navigate to: Settings → Security
- Enable: Require 2FA for all users
- Configure backup methods
1.2 Role-Based Access
Profile Level: L1 (Baseline) NIST 800-53: AC-3, AC-6
ClickOps Implementation
Step 1: Define User Roles
| Role | Permissions |
|---|---|
| Owner | Full access (1 user) |
| Admin | Manage account settings |
| Manager | Create campaigns |
| Analyst | View-only |
| Support | Limited customer access |
Step 2: Configure Role Permissions
- Navigate to: Settings → Users
- Assign appropriate roles
- Review access quarterly
2. API Security
2.1 Secure API Keys
Profile Level: L1 (Baseline) NIST 800-53: IA-5
Description
Manage Klaviyo API keys securely.
Rationale
Attack Scenario: Private API key exposure enables full profile database export; customer PII and purchase history exfiltrated for fraud or targeted phishing.
Implementation
API Key Types:
| Key Type | Access Level | Exposure Risk |
|---|---|---|
| Private API Key | Full read/write | High (never expose) |
| Public API Key | Limited (client events) | Low |
Step 1: Rotate Private Keys
- Navigate to: Settings → API Keys
- Generate new private key
- Update integrations
- Revoke old key
Step 2: API Key Best Practices
- Never expose private keys in client code
- Use environment variables
- Limit access to production keys
- Audit key usage
2.2 Webhook Security
Profile Level: L1 (Baseline) NIST 800-53: SC-8
Implementation
Step 1: Secure Webhook Endpoints
- Use HTTPS only
- Validate webhook signatures
- Implement IP allowlisting
3. Data Security
3.1 Profile Data Protection
Profile Level: L1 (Baseline) NIST 800-53: SC-28
ClickOps Implementation
Step 1: Configure Data Handling
- Limit profile data collection
- Configure consent tracking
- Enable suppression list management
Step 2: Export Controls
- Restrict export permissions
- Audit bulk exports
- Configure data retention
3.2 Email Authentication
Profile Level: L1 (Baseline) NIST 800-53: SI-3
ClickOps Implementation
Step 1: Configure Domain Authentication
- Navigate to: Settings → Domains
- Configure dedicated sending domain
- Set up DKIM/SPF records
Step 2: Enable DMARC
- Configure DMARC policy
- Monitor authentication reports
- Move toward enforcement
4. Monitoring & Detection
4.1 Activity Monitoring
Profile Level: L1 (Baseline) NIST 800-53: AU-2, AU-3
ClickOps Implementation
Step 1: Review Account Activity
- Navigate to: Settings → Activity log
- Monitor user logins
- Track configuration changes
Detection Focus
-- Detect bulk profile exports
SELECT user_email, export_type, profile_count
FROM klaviyo_activity
WHERE action = 'export'
AND profile_count > 10000
AND timestamp > NOW() - INTERVAL '24 hours';
-- Detect API abuse
SELECT api_key_prefix, endpoint, COUNT(*) as calls
FROM api_log
WHERE timestamp > NOW() - INTERVAL '1 hour'
GROUP BY api_key_prefix, endpoint
HAVING COUNT(*) > 5000;
Appendix A: Edition Compatibility
| Control | Growth | Enterprise |
|---|---|---|
| SAML SSO | ❌ | ✅ |
| SCIM | ❌ | ✅ |
| Audit Logs | Limited | ✅ |
| Custom Roles | ❌ | ✅ |
Changelog
| Date | Version | Maturity | Changes | Author |
|---|---|---|---|---|
| 2025-12-14 | 0.1.0 | draft | Initial Klaviyo hardening guide | Claude Code (Opus 4.5) |