Storefront popup widget
Renders inside the merchant's theme via a Shopify Theme App Extension. Vanilla JavaScript, no dependencies, loads after page render.
The full feature surface — grouped by where they show up in your day-to-day.
Renders inside the merchant's theme via a Shopify Theme App Extension. Vanilla JavaScript, no dependencies, loads after page render.
Detects add-to-cart across four channels (fetch, XHR, form submit, button click) and only renders after the cart actually grows.
Shows on /cart with a configurable delay for visitors who navigate to checkout directly.
On desktop, fires when the cursor leaves the viewport — opt-in per shop.
Single-field form, prefilled with the logged-in customer's email when available, validated client- and server-side.
Up to three branded emails over 24 hours, configurable delays, send-time risk re-check, exponential-backoff retries.
Optionally include a Shopify-generated discount code in recovery emails; per-cart code with expiry and usage cap.
Resend (default) and Postmark are both supported; switch with one environment variable.
Twelve signals: disposable domains, bot UAs, IP velocity, repeat submissions, email entropy, country lists, and your blocklist.
SAFE / MEDIUM / HIGH / BLOCKED — each with explicit behavior for recovery emails and CRM sync.
Toggles for disposable-email auto-block, bot-UA auto-block, IP-abuse auto-block, and minimum cart value.
Search by email, filter by risk and recovery status, drill into individual signals and the email timeline.
Live counts for Scheduled, Sent, Failed, Cancelled — plus per-cart history.
Email, domain, IP, country, keyword, user-agent — manage from the embedded admin.
Enable from the theme editor's App Embeds section. No theme code, no merge conflicts on updates.