Klaviyo SMS delivers 98% open rates for Shopify stores. This guide covers setup, automation, and best practices for text message marketing.
Klaviyo: Email Marketing & SMS
Why SMS Marketing?
SMS outperforms other channels:
| Metric | SMS | |
|---|---|---|
| Open rate | 98% | 20% |
| Response time | 90 seconds | 90 minutes |
| Click rate | 19% | 2.5% |
| Conversion rate | 29% | 4% |
Best use cases:
- Time-sensitive offers
- Cart abandonment recovery
- Order/shipping updates
- Flash sales
- VIP announcements
Klaviyo SMS Pricing
| Volume | Cost per SMS (US) |
|---|---|
| 0-50K | $0.015 |
| 50K-100K | $0.0125 |
| 100K+ | $0.01 |
Additional costs:
- MMS: $0.03/message
- International: $0.03-0.10
- Carrier fees: Included
Getting Started
Step 1: Enable SMS in Klaviyo
- Go to Settings > SMS
- Click Get Started with SMS
- Choose sending number type:
- Toll-free (recommended)
- Short code (high volume)
- 10DLC (local numbers)
Step 2: Set Up Sending Number
Toll-free setup:
- Apply for toll-free number
- Complete verification (1-2 days)
- Number ready to use
Step 3: Create SMS Signup
Add SMS collection:
- Create popup with SMS checkbox
- Add to checkout flow
- Create dedicated SMS landing page
Consent requirements:
- Clear opt-in language
- Terms and conditions link
- Easy opt-out instructions
Step 4: Configure Compliance
Compliance settings:
├── Quiet hours (9pm-9am)
├── Frequency caps
├── Auto opt-out keywords (STOP)
├── Required disclosures
└── Consent tracking
SMS Automations
Abandoned Cart SMS
Flow structure:
├── Wait 1 hour after abandon
├── Send SMS: "Still thinking about [Product]?"
├── Include link to cart
├── Wait 24 hours
├── Send final reminder (if no purchase)
└── Exit on purchase
Best practices:
- Personalize with product name
- Keep under 160 characters
- Include direct cart link
- Create urgency
Welcome Series
| Message | Timing | Content |
|---|---|---|
| 1 | Immediately | Welcome + discount code |
| 2 | Day 3 | Best seller recommendations |
| 3 | Day 7 | Social proof/reviews |
Order Updates
Transactional SMS:
- Order confirmation
- Shipping notification
- Delivery update
- Review request
Note: Transactional SMS doesn’t require marketing consent.
Back in Stock
Trigger: Product back in stock
→ Filter: Signed up for notification
→ Send SMS: "[Product] is back!"
→ Include direct link
→ Create scarcity: "Limited quantity"
Campaign Strategy
Flash Sales
Best for SMS:
- Limited time (2-4 hours)
- Exclusive to SMS subscribers
- Clear deadline
- Single CTA
Example: “⚡ 2-HOUR FLASH SALE ⚡ 40% off sitewide. Ends at 2PM. Shop now: [link] Reply STOP to opt out”
VIP Announcements
SMS-first reveals:
- New product launches
- Early access sales
- Limited editions
- Restocks
Segmentation
Target by:
- Purchase history
- Browse behavior
- SMS engagement
- Customer lifetime value
SMS Best Practices
Message Length
| Type | Limit | Notes |
|---|---|---|
| SMS | 160 chars | Single segment |
| Long SMS | 320 chars | 2 segments (2x cost) |
| MMS | 1600 chars | Includes image |
Tips:
- Keep under 160 characters
- Use link shorteners
- Remove unnecessary words
- One clear CTA
Timing
| Day | Best Time |
|---|---|
| Tuesday | 10am-12pm |
| Wednesday | 2pm-4pm |
| Thursday | 10am-12pm |
| Friday | 12pm-2pm |
Avoid:
- Before 9am
- After 9pm
- Sundays
- Holidays (unless relevant)
Frequency
| Segment | Max Frequency |
|---|---|
| All subscribers | 4-6/month |
| Engaged | 8-10/month |
| VIP | 10-12/month |
Measuring Success
Key Metrics
| Metric | Benchmark |
|---|---|
| Click rate | 15-25% |
| Conversion rate | 10-15% |
| Revenue per recipient | $0.50-2.00 |
| Unsubscribe rate | <2% per campaign |
Attribution
Klaviyo tracks:
- SMS-attributed revenue
- Click-to-purchase time
- Cross-channel attribution
- A/B test results
Growing SMS List
Collection Points
| Method | Conversion Rate |
|---|---|
| Popup with incentive | 5-10% |
| Checkout opt-in | 3-5% |
| Email to SMS | 2-4% |
| Social ads | 1-3% |
Incentives
What works:
- Exclusive discount (10-15%)
- Early access to sales
- VIP status
- Free shipping
Compliance
TCPA Requirements
Must include:
- Business name
- Opt-out instructions
- Message frequency disclosure
- Terms and conditions
Quiet Hours
Default: 9pm-9am recipient’s timezone
Configure by:
- Setting in Klaviyo
- Automatic timezone detection
- Queue messages for morning
Troubleshooting
Low Click Rates
Causes:
- Message too long
- Unclear CTA
- Wrong timing
- Poor segmentation
Solutions:
- Shorten messages
- Single clear CTA
- Test send times
- Segment by engagement
High Unsubscribes
Causes:
- Too frequent
- Not relevant
- No value provided
- Wrong audience
Solutions:
- Reduce frequency
- Better segmentation
- Exclusive SMS offers
- Survey unsubscribers
SMS vs Email
| Use SMS For | Use Email For |
|---|---|
| Time-sensitive | Detailed content |
| High urgency | Newsletters |
| Quick actions | Visual products |
| Reminders | Educational content |
Best strategy: Use both channels together.
Next Steps
After setup:
- Build list - Add SMS signup forms
- Set up flows - Cart abandonment first
- Launch campaign - Start with engaged segment
- Analyze results - Optimize based on data
- Scale up - Expand to more automations
Shopify + Klaviyo implementation checklist (2025)
This section adds practical “make it stable” steps you can use after you install the app/connector. It’s intentionally lightweight: the goal is fewer sync surprises, cleaner reporting, and easier troubleshooting.
1) Quick setup checklist
- Permissions first: grant only the scopes you need (orders/customers/products as required) and document who owns the admin credentials.
- Data mapping: confirm how email, phone, currency, and SKU are mapped between Shopify and Klaviyo.
- Historical import: decide how far back to import orders/customers (avoid importing years of data if you don’t need it).
- Deduplication rules: pick one unique identifier per object (usually email for customers, order ID for orders) to prevent doubles.
- Alerts: set a lightweight alert path (email/Slack) for failed syncs, auth expiry, and API rate limits.
2) Data you should verify after connecting
Most integration issues show up in the first hour if you test the right things. Use the table below as a QA checklist (create a test order if needed).
| Data object | What to check | Why it matters |
|---|---|---|
| Customers | Email/phone format, marketing consent fields, duplicates | Prevents double messaging and broken segmentation |
| Orders | Order total, tax, discount, shipping, currency | Keeps revenue reporting and automation triggers accurate |
| Line items | SKU, variant ID, quantity, refunds/returns behavior | Avoids inventory and attribution mismatches |
| Fulfillment | Status changes + timestamps, tracking numbers, carrier fields | Drives customer notifications and post-purchase flows |
| Catalog | Product titles, handles, images, collections/tags | Ensures personalization and reporting match your storefront |
3) Automation ideas for Marketing
- Welcome series: new subscriber → educational sequence + first-purchase offer in Klaviyo.
- Abandoned cart: cart started but not purchased → reminder email/SMS from Klaviyo (timing based on your AOV).
- Post-purchase: order created → delivery/usage tips + cross-sell for complementary products in Klaviyo.
- Win-back: no purchase in 60–90 days → reactivation campaign using Klaviyo segments.
- VIP: customer hits LTV threshold → move into VIP tier and trigger perks via Klaviyo.
API sanity check (Shopify Admin API)
If your integration UI says “connected” but data isn’t flowing, a quick API call helps confirm whether the store is accessible and returning the objects you expect.
# List the 5 most recent orders (GraphQL)
curl -X POST "https://your-store.myshopify.com/admin/api/2025-01/graphql.json" \
-H "X-Shopify-Access-Token: $SHOPIFY_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"query\":\"{ orders(first: 5, sortKey: CREATED_AT, reverse: true) { edges { node { id name createdAt totalPriceSet { shopMoney { amount currencyCode } } customer { email } } } } }\"}"Tip: keep tokens/keys in environment variables, and test in a staging store/site before rolling changes to production.
4) KPIs to monitor (so you catch problems early)
- Sync freshness: how long it takes for a new order/customer event to appear in Klaviyo.
- Error rate: failed syncs per day (and which object types fail most).
- Duplicates: number of merged/duplicate contacts or orders created by mapping mistakes.
- Revenue parity: weekly spot-check that Shopify totals match downstream reporting (especially after refunds).
- Attribution sanity: confirm that key events (purchase, refund, subscription) are tracked consistently.
5) A simple 30-day optimization plan
- Week 1: connect + map fields, then validate with 5–10 real orders/customers.
- Week 2: enable 1–2 automations and measure baseline KPIs (conversion, AOV, repeat rate).
- Week 3: tighten segmentation/rules (exclude recent buyers, add VIP thresholds, handle edge cases).
- Week 4: document the setup, create an “owner” checklist, and set a recurring monthly audit.
Common issues (and fast fixes)
Even “simple” integrations fail in predictable ways. Use this as a quick troubleshooting playbook for Shopify + Klaviyo.
- Duplicate customers/orders: usually caused by running two connectors at once. Pick one source of truth and dedupe by email (customers) and order ID (orders).
- Currency/timezone drift: confirm store timezone and reporting currency match what Klaviyo expects, especially if you sell internationally.
- Missing permissions: if data is partially syncing, re-check API scopes (orders vs customers vs products) and re-authorize the app.
- Webhooks not firing: look for blocked callbacks, disabled webhooks, or a stale token. If possible, test with a fresh order and watch for events.
- Rate limits & delays: large imports or high order volume can queue syncs. Stagger imports, reduce lookback windows, and monitor retry queues.
- Refund/return mismatch: clarify whether refunds create separate objects or adjust the original order record (finance teams should agree on the model).
Privacy & compliance notes (2025)
Integrations often touch personal data (email, phone, address). Keep this lightweight checklist in mind:
- Least privilege: only grant the data scopes you actively use; remove unused apps quarterly.
- Consent fields: treat marketing consent separately from transactional messaging (especially for SMS).
- Data retention: define how long you keep customer event data, and who can export it.
- Access review: restrict admin accounts and rotate keys/tokens if staff changes.
Suggested rollout plan
- Connect in staging (if possible): validate mapping on a small dataset.
- Import a short history window: start with 30–90 days unless you have a clear reason to import more.
- Run side-by-side QA: compare a handful of orders across systems (totals, taxes, shipping, refunds).
- Go live gradually: enable 1–2 automations first, then expand once you trust the data.
Change control (keep it maintainable)
- One owner: assign a single owner for the integration (who approves mapping and workflow changes).
- Log changes: track what you changed (fields, filters, timing) and why, so you can roll back quickly.
- Monthly audit: re-check scopes, API tokens, and error logs—especially after major store/theme/app changes.
For email marketing, see Klaviyo Shopify integration. For multi-channel, check Omnisend integration.