SMS & Platform
0/12 steps complete
Prerequisites
Before migrating, document everything in Postscript: active flows (welcome, abandoned cart, winback, post-purchase), active campaigns, keywords, subscriber segments, and compliance settings. Screenshot or export each flow's structure and messaging. This becomes your rebuild checklist.
Pro Tip: Export your Postscript analytics for the last 90 days so you have baseline metrics to compare against after migration.
In Postscript, go to Subscribers → Export. Include all fields: phone number, opt-in date, opt-in source, subscription status, and any custom properties. Download as CSV. You need the opt-in date and source for TCPA compliance — never import subscribers without this data. Also export (or filter into a second file) everyone who has **unsubscribed** from SMS in Postscript — you will import those separately so Klaviyo has an explicit opted-out state.
Split your Postscript data into at least two workflows: (1) **SMS subscribed** — map to Klaviyo's expected format: Phone Number (E.164 with country code, e.g. +1XXXXXXXXXX), SMS Consent **true**, SMS Consent Timestamp (ISO 8601), and opt-in method. (2) **SMS unsubscribed** — same phone formatting; set SMS Consent **false** and use the opt-out timestamp where you have it. Remove invalid numbers only (bad formatting, landlines if you exclude them) — do **not** drop opted-out numbers; omitting them risks treating them as net-new later. Klaviyo requires explicit consent proof for anyone you will message.
Pro Tip: If any phone numbers are missing country codes, use a formula or script to prepend +1 for US numbers. Importing without proper E.164 format will cause silent failures.
In Klaviyo, create a new list called 'SMS Subscribers - Migrated from Postscript'. This keeps migrated contacts separate from native Klaviyo SMS signups for attribution clarity. Also recreate any key segments you had in Postscript (e.g., VIP SMS, engaged last 30 days).
Go to Klaviyo → Lists & Segments → your migration list → Manage List → Import. Upload the **subscribed** CSV, map all fields, and confirm the import reflects **SMS consent granted** with the correct timestamps and opt-in method. Klaviyo will validate phone numbers during import. Review the error report for any rejected numbers.
Import your **unsubscribed** Postscript export so Klaviyo stores an explicit **no consent** / unsubscribed state for SMS marketing on those profiles — not just “missing from the list.” Use list import or profile import with SMS Consent set to **false**, and map an opt-out timestamp when you have it. This prevents those numbers from being treated as eligible if a later sync or signup path creates or updates the profile without history. If Klaviyo offers bulk SMS unsubscribe or suppression tools for a CSV of phones, you can use that instead, as long as the outcome is the same: SMS marketing is not allowed for those profiles.
Pro Tip: Keep a copy of the unsubscribed file with dates; if compliance is ever questioned, you can show when the opt-out was recorded in the source system.
In Klaviyo, open **Integrations → Shopify** (your connected store) and review integration settings related to **SMS** and **marketing consent** / profile sync. When Shopify and Klaviyo **two-way** sync subscription fields, checkout or customer-account preferences in Shopify can **override** SMS consent you just set from Postscript — e.g. a checked marketing box can flip a profile to subscribed, or conflicting logic can fight your migrated data. Disable or narrow **two-way** SMS consent syncing if your Klaviyo version exposes that option, or adjust which direction Shopify is allowed to update SMS subscription state, so Klaviyo remains authoritative for SMS until you deliberately align Shopify checkout collection with your Klaviyo segments. Exact toggle names change; match what you see in Klaviyo’s current Shopify integration docs.
Pro Tip: Screenshot the previous settings before you change them so you can restore or refine sync once checkout, customer accounts, and Klaviyo are intentionally aligned.
Using your Postscript documentation from Step 1, recreate each flow in Klaviyo's flow builder. Start with the highest-impact flows: Welcome SMS, Abandoned Cart SMS, Post-Purchase SMS. Use Klaviyo's SMS-specific features like smart sending and quiet hours. Set all flows to draft initially.
Pro Tip: Klaviyo's abandoned cart SMS has a built-in 'Added to Cart' trigger that's more reliable than Postscript's webhook approach. Take advantage of native Shopify event triggers rather than trying to replicate Postscript's exact logic.
In Klaviyo → Settings → SMS, configure your quiet hours (typically 9am–9pm in the recipient's timezone), double opt-in preferences, and auto-reply keywords (STOP, HELP, etc.). Verify your toll-free number or short code is registered and approved in Klaviyo.
Before activating Klaviyo SMS flows, turn off all active flows and scheduled campaigns in Postscript. This prevents duplicate messages. Do NOT uninstall the Postscript app yet — keep it installed but dormant for 30 days in case you need to reference historical data.
Set each rebuilt flow to live one at a time, starting with the welcome series. Send yourself a test for each flow. Verify message content, link tracking, and quiet hours. Monitor the first 24 hours closely for delivery rates and opt-out spikes.
After 30 days of running Klaviyo SMS exclusively, compare key metrics against your Postscript baselines (delivery rate, click rate, revenue per message, opt-out rate). If metrics are stable, uninstall the Postscript Shopify app and cancel your Postscript subscription. Archive your Postscript export files.
Want us to handle this for you?
Our team implements these playbooks daily across hundreds of brands.
Book Implementation Call →