case study

Designing a Two-Way
SMS System

Director of Ecommerce & Digital Product - Case Study

01 / 09

framing

Five steps. One walkthrough.

  1. DefineScope, who, why now, success metric
  2. RouteCustomer journey & three touchpoints
  3. ArchitectSystem design, MVP gate, risks
  4. Fail-testRisks & open questions
  5. TimelineMVP, live window, go/no-go, full build
02 / 09

Goal / North Star

Week-one habit activation

North Star

Build a real product habit in week one, using two-way SMS to confirm delivery, prompt first use, and catch friction before it causes silent churn.

Why Now

Timing & urgency

Assumed
  • Current SMS is one-directional
  • First-week scope signals a known drop-off before habit forms
  • Live finding: current opt-in/signup flow has friction

Who

Audience

New customers

New customers, first 7 days from delivery (not purchase).

Success

Feature + business metrics

Measurable
  • Feature: % confirming first use within ~48hrs, % with confirmed use in week one
  • Business: habit lift → retention lift → $ incremental revenue
03 / 09
Touch 1

Order shipped

Trigger Shopify fulfillment / shipping event

Purpose Low-stakes warm-up - no action required

Replies: link click · ETA lookup · off-script → Gorgias

Touch 2

Delivery + habit

Trigger Delivery event + ~24hr offset

Purpose Confirm receipt + plant habit prompt

YES / NO / off-script - two signals in one reply

Touch 3

Habit nudge

Trigger Later in week one, after YES-family

Purpose Confirm regular use - or why not

YES · not yet · goal Q · off-script → Gorgias

Personalization

Goal is a defined field that must flow from signup/quiz into the customer profile and be available at send-time for Touch 3 - synced to Klaviyo as a profile property.

If goal has been captured: send personalized message (goal-specific benefit copy)

If goal has not been captured: send generic message (no goal reference, same structure/tone)

04 / 09
Customer lands on site
Engagement with email & SMS capture
Yes
Engaged with pop-up
= SMS intent captured
Order placed
No
Did not engage with pop-up
= SMS intent open
SMS intent = aim to capture at checkout
Number captured?
Yes ↓ to Klaviyo
No
Out of the flow
Klaviyo SMS intent and order capture flow through here - source of truth for the journey
Touch 1 = shipped
Touch 2 = Initiate everyday habit
Touch 3 = Habit builder
Customer responds
Classification & routing AI layer via Claude API
Clear suggested prompt / structured YES “YES” · “Yes, sure” · “Yeah”
Confusing or unclear phrasing needs clarification / handoff
Clear & in-scope Claude responds with guided responses (not canned)
Unclear “I’m not sure what you’re asking → sending you to support”
Clear & out of scope Example - “This gave me a headache, is that normal?” - clear, but adverse-event-adjacent. A human needs to answer.
HELP At any point - if the customer doesn’t trust or want the AI and says so explicitly - short-circuits here
Unstructured / need more help Routes to Gorgias - human available on Phone · Email · Chat
Claude flagged for human Understood, but needs a person → auto-opens Gorgias ticket + SMS with support hours / phone
Snowflake Warehouse Every touch, reply, and routing decision is written as an event - order shipped, delivered, customer replied, Claude classified X, routed to Y. Full audit trail + raw data for the success metric.
05 / 09

Whether to build the fuller system upfront depends on whether Ultra already has data validating demand/behavior change from 2-way messaging:

If yes

Existing A/B data or clear qualitative signal → proceed closer to the full system (personalization, goal-based branching, AI classification)

If no

Ship a thin MVP first - YES/NO capture on delivery + habit status only = treated as an experiment, not a launch

Go / no-go bar: define a concrete engagement threshold (e.g., X% reply rate to the habit check-in) that justifies investing in the fuller build.

06 / 09

Compliance

  • STOP / opt-out short-circuits everything - carrier/Klaviyo level, before AI
  • Quiet hours apply to trigger timing (typically 8am–9pm local)

Consent

  • Consent isn’t binary - partial states need a reconciliation point before Touch 1
  • Checkout copy is marketing-scoped; habit messaging may need separated language

Escalation

  • After-hours: honest holding message with support hours - no urgent tier
  • Health-adjacent questions get a stricter human-review gate

Data coverage

  • Existing opt-in / discount flow friction - live UX finding
  • Goal-data coverage unknown - personalization may stay deferred
07 / 09
Weeks 1–3 Build MVP

MVP stand-up 2–3 weeks · 1 engineer · mostly Klaviyo config + landing page for fallback / HELP.

Weeks 4–7 MVP live

Live window Four weekly cohorts - not a single week - to avoid a false read from one bad shipping week.

Week 8 Decide
Weeks 9–16 Full build if greenlit

Full build Rough placeholder: 6–8 weeks for classification + Claude. Validate with eng before committing a date.

08 / 09

Open to questions.

09 / 09