What is Attentive text to buy?
Attentive text to buy is a reply-to-purchase feature: a subscriber gets a text, replies with a keyword such as “BUY” or a product name, and Attentive completes the order against a card already on file. There’s no tap-through to a cart, no checkout page, no email confirmation to open first. The transaction is the reply.
That’s the entire pitch, and it’s also the entire risk. Every step a normal checkout would catch, a wrong size, an expired card, a shopper who didn’t mean to buy yet, has been removed. For a $3M–$30M Shopify Plus brand running SMS through Attentive and email through Klaviyo, that trade only pays off if the setup accounts for the steps a link-based flow used to do for you.
What do you need before you turn it on?
Four things have to exist before you touch the keyword settings, and skipping any one of them is why most first attempts get pulled within a week.
A transactional SMS consent record, separate from marketing SMS. Attentive treats the two as different opt-in types. A subscriber who agreed to promotional texts has not agreed to a text that completes a charge on their card. Check your opt-in flow captures transactional consent explicitly. Most brands that built their SMS list before adding text to buy have to re-permission it.
One default variant per product you’re enabling. Text to buy has no size or colour picker. If a product has more than one variant and none is clearly dominant, either pick a sensible default and say so in the trigger copy, or leave that product out of the programme.
A card on file with a card vault provider Attentive supports, and a fallback path for when that card is declined, which is the step most teams skip.
A test phone number that is not your own personal number. You’ll run a real order through it before launch, and you don’t want your own address and card in the test data.
How do you set up the reply keyword and product mapping?
In Attentive’s keyword settings, each reply keyword maps to exactly one product ID and one default variant, scoped to the campaign or flow it’s attached to. Set this up per send, not once globally: a keyword like “BUY” reused across three different campaigns without three separate mappings will fulfil the wrong product for at least some of your replies.
Name the keyword something the subscriber would actually type back without thinking. “BUY” works. A six-character SKU code doesn’t: subscribers mistype or abandon it, and Attentive’s fallback for an unrecognised reply is a generic “sorry, we didn’t catch that” text that doesn’t recover the sale.
Set the trigger message to state the product, the price, and the exact reply word in the first line, not buried after three lines of brand copy. A subscriber who has to scroll a text to find the instruction has already moved on.
How do you configure quiet hours and the frequency cap?
Attentive enforces a default quiet-hours window at the account level, but that default governs when a message is sent, not when a queued flow fires. If a text-to-buy trigger sits inside a browse-abandonment or cart flow with a delay step, a message queued at 11 p.m. can land the moment the quiet-hours window lifts, which for most US time zone settings is early morning. That reads as a targeted pre-dawn sales text even though no one scheduled it that way.
Set the delay step in the flow itself to check against your quiet-hours window, not just rely on Attentive’s global enforcement catching it downstream. And set a frequency cap specific to text-to-buy sends, separate from your general promotional cap. A subscriber who gets a transactional purchase prompt three times in a week will read it as pressure, not convenience, and the opt-out rate on that segment climbs faster than it does on a normal promotional list.
How do you handle cart and payment fallback?
Cart and payment fallback is the step most teams get wrong, and it’s the one that generates a compliance complaint or a chargeback dispute weeks after launch, not on day one.
When a card on file is declined, Attentive’s default behaviour is to send a fallback message with a hosted checkout link. Two things go wrong if you leave that fallback on its default settings. First, the default copy reads as a system error (“we couldn’t process your order”) rather than a next step, and a meaningful share of subscribers never tap the link, so you’ve generated demand and then dropped it. Second, if the fallback link routes to a generic cart page rather than the exact product and variant the subscriber replied to buy, they land on your homepage or collection page and have to find the item again, which is where most of the fallback traffic quietly disappears.
Write your own fallback copy: name the product, restate the price, and make the link land directly on that product’s page with the variant pre-selected where your theme supports it. Test this specific path, a declined card, not just a successful one, before launch, because it’s the path nobody checks in a rushed rollout.
A second fallback gets missed just as often: what happens when the reply keyword fails to match, because of a typo or a subscriber replying with something close but not exact. Set an unmatched-reply message that repeats the exact keyword rather than a blanket apology, so a subscriber who wrote “buy” in lowercase or added a space gets a second, clearer chance rather than a dead end.
How do you verify it’s actually working?
Don’t check Attentive’s dashboard for a “message delivered” status and call the setup verified. A delivered message and a completed order are two different confirmations, and the gap between them is exactly where a bad variant mapping or an unvalidated address hides.
Run a full order through your test phone number: opt in through the actual flow (not a manually added test contact), receive the trigger message, reply with the keyword, and then check three things in Shopify directly: the order exists, it has the correct variant and price, and the shipping address matches what’s on file rather than a stale or default address left over from a previous test order. Repeat the test with a card that will decline, and confirm the fallback message lands with the correct product link, not a generic one.
Do this before every meaningful change to the flow, not just at initial launch. A product swap, a price change, or a new variant added to a mapped product can silently break the keyword mapping without throwing any error in Attentive’s interface.
Where this fits in the wider lifecycle programme
Text to buy is a single trigger inside a much larger set of lifecycle flows: welcome, browse abandonment, cart recovery, post-purchase, win-back. Klaviyo’s own benchmark across more than 183,000 brands puts 41% of total email revenue through automated flows, not one-off campaigns (Klaviyo, vendor-reported). SMS flows sit in the same category: the revenue comes from the flow being correctly triggered and correctly mapped, not from the channel itself. A text-to-buy flow with a broken variant default or a fallback link that dead-ends will underperform a plain link-based SMS flow, despite looking more advanced on paper.
If you’re weighing whether a text-to-buy build is worth the engineering time against your other flow gaps, welcome series, abandonment, win-back, run the numbers through our flow revenue calculator before committing a sprint to it.
Getting a reply-to-buy flow right is a lifecycle flows problem before it’s an SMS problem: the keyword mapping, quiet-hours logic and fallback path all have to be built and tested the same way you’d build any other trigger-based flow, not bolted on as a one-off campaign. That’s the work our lifecycle flows service does for Shopify Plus and subscription brands running Klaviyo and Attentive side by side.
Sources
- Klaviyo, 183,000+ brands: 41% of email revenue from automated flows, cited as the reference benchmark for flow-driven revenue share (vendor-reported).