S Built for Shopify Install in minutes · No templates · Free tier

Recover carts.
In your own voice.

The engine that writes like you.

Cart recovery that doesn't sound like an apology.

Woven Reach reads your storefront — colors, copy, catalog, the way you actually sound — and sends abandoned-cart emails that are unmistakably yours. No templates. No campaign builder. No drag-and-drop.

Free up to 50 recoveries / month. Pay only on revenue you make back.
Live · sent 0:34s ago → henrik@…

Your Stormframe is still here

The Crag Bib 3L is running low in your size.

You left the Stormframe Mid and the Crag Bib 3L in your cart. Both are built for actual storms — and both are running low in your sizes. If they're still on your list, this is a good moment.

Stormframe Mid · M / Slate SF-MID-040 · in stock · 4 left
Return to cart

— The Glacier Goods team

Brand voice: measured, technical Subject ≤ 50 chars workflow.step 2 / 4
Trusted by Shopify merchants in outdoor, food, craft, and home goods
Glacier Goods Forge & Spool Wildbrook Northseed Hollow Hill

Features

Everything other recovery tools
are missing.

Generic timer apps blast templated guilt-trips. Enterprise platforms demand a copywriter on call. Woven Reach is what fits in the middle — simple to install, actually smart about how it recovers carts.

Reads your store, once.

The brand-extraction agent crawls your storefront and samples your typography, colors, voice, logo, and catalog into a single profile every email uses forever.

brand.extract · 30–90s

Writes in your voice.

A senior brand-copywriter agent generates each email from your profile and the cart contents. Measured for outdoor gear, warm for bakeries, technical for tools.

voice.generate · per-cart

Workflow you can see.

A four-touch sequence at 30 min, 4 hr, 24 hr, and 72 hr — visible as a flowchart from day one. Every step is a typed contract, durable across deploys.

workflow.run · React Flow

Protects sender reputation.

Suppression lists, bounce handling, and quiet-hours are first-class. Verified sender domain through Resend — no DNS surgery, no SMTP keys.

sender · resend + DKIM

Observable everything.

Every send, suppression, click, and conversion is recorded against the workflow step that produced it. The graph you watch is the graph that runs.

audit · per-step trace

Durable across deploys.

workflow.sleep(72h) survives every release, every restart, every Friday afternoon. Your three-day touchpoint will fire.

runtime · Mastra

Under the hood

The product is the
orchestration engine.

A graph-based workflow runs your recovery — each step a typed Zod contract, each edge an observable transition. The graph below is real. It's the same one executing in production right now.

4
Touchpoints in V1
72h
Durable sleep across deploys
0
Templates to configure
Workflow live · default-abandoned-cart workflow.run #4128 React Flow · readonly
Cart abandoned
cart.created
✉️
"Forgot something?"
t + 30min
Wait 4 hours
sleep(4h)
Converted?
if checkout
✉️
"Still interested?"
t + 24h
Trigger Action Wait Check End
// app/contracts/campaign.ts
export const CampaignNode = z.object({
  id:       z.string(),
  position: z.object({ x: z.number(), y: z.number() }),
  data: z.object({
    label: z.string(),
    type:  z.enum(["trigger", "wait", "check", "action", "end"]),
    waitDuration: z.number().optional(),
    templateKey:  z.string().optional(),
  }),
});

// Every step is a typed contract. Drift is impossible.
const step: WorkflowStep<CampaignNode> = ...
  • 01 Typed end to end. Every workflow boundary uses a shared Zod schema. Producers and consumers import the same contract — data can't drift between steps.
  • 02 Durable by default. workflow.sleep(72h) survives deploys, restarts, and Friday afternoons. Your three-day touchpoint will fire.
  • 03 Agent-native. Brand analysis, voice extraction, and copy generation aren't bolt-ons — they're workflow steps. Same observability, same retries, same audit trail.
  • 04 Observable. Every send, suppression, and conversion is recorded. The graph you watch is the graph that runs.

Voice gallery

One product. Three shops.
Three distinct emails.

Same trigger — a forgotten cart, 4 hours in. Three real merchant brand profiles. Three emails no template engine would have produced. That's the difference between "AI email" and the email that sounds like you.

Glacier Goods
Outdoor / technical apparel
Measured Technical No exclamations
Forge & Spool
Handmade kitchen knives
Quietly proud Craft-first First-person
Wildbrook Bakery
Sourdough & pastries
Warm Conversational A little funny

"It's the first recovery tool that didn't make our brand sound like an apology. The emails read like our team actually wrote them — because in every way that matters, they did."

Henrik Vance
Founder, Glacier Goods · Shopify Plus

Pilot results · 12 weeks · n = 23 shops

2.8×
Click-through vs the previous default template
14%
Median recovery rate across pilot
48s
Median time from install to first send
0
Templates the merchant had to configure

How it works

Three minutes, three moves.
Then it just runs.

01

Install on Shopify

One click from the Shopify App Store. We install inside your Admin — no DNS, no SMTP keys. Sender domain verified automatically through Resend.

Under 60 seconds
02

We read your store

The brand-extraction agent crawls your storefront, samples typography, colors, voice, logo, and catalog into a single profile your emails will use forever. You watch it happen, stage by stage.

30–90 seconds
03

Recovery starts running

Four-touch sequence at 30 min, 4 hr, 24 hr, and 72 hr — visible as a flowchart from day one. Every step is durable. Your three-day touchpoint will fire whether we ship a release or not.

Then automatic, forever

Usage-based pricing

Free up to 50 recoveries / month. Beyond that, $0.30 per recovered cart — billed on revenue you actually make back. No seat fees, no platform tax.

See full pricing

Docs & API

Architecture, contracts, webhook spec, and a guide to building custom workflow steps. Fully versioned. Built for teams who want to extend.

Read the docs

Install

Carts forget. Stores shouldn't.

Three clicks from the Shopify App Store to a live recovery campaign in your brand voice. Free up to 50 recoveries / month — pay only on revenue you make back.