An open library of custom blocks for subscription customer portals
All blocks
No. 05RetentionLive demo

Boomerang Save

A second save for subscribers who cancel after an offer.

Casey Chartier-VignapianoLinkedIn
Live: the real codeRunning in a sandbox, right here
Customer portal · Boomerang Save

What it does

Catches subscribers who cancel right after taking a save offer, with a win-back that fits their reason.

Why it exists

For any merchant whose saved subscribers still churn soon after. The message matches the reason they gave the first time, and one tap reactivates the subscription with the offer applied.

The code

Paste it as-is, or download boomerang-save.html

How to install

  1. Copy the code above, or download the .html file.
Your portal
  1. Go to Storefront → Customer Portal → Branding → Layout and click Add custom extension.
  2. Pick HTML with embedded CSS and JavaScript and paste the whole file into the code editor.
  3. Swap anything the file asks you to, like [BRAND], product names or Quick Action IDs. The AI prompt below can walk you through it.
  4. Save, click + to add it to the layout, then Publish. Check it on a test subscription’s magic link with ?forcePreview=true, since some scripts don’t run in Preview.
Before you paste

Fill the six data-* attributes with the subscriber's subscription ID, cancel date and last cancel-flow session, plus a Quick Action token. Turn on DEBUG_MODE to check the design before you wire in real data.

Customize it with AI

Paste this prompt into Claude Code or Codex. It asks for the code and your brand and product details, then writes a version for your store.

Blocks are shared as-is by the people who built them. Read the code before you add it to your portal, and test it with a test subscriber first.

Built a custom extension your subscribers love?

Share it with us, we'll review it, we'll get it live, then we'll add it to the site so anyone can copy + customize.

your-block.html
<!-- your-block.html -->
<div class="my-block">
  <p class="my-block__title">Your next order ships Friday</p>
  <button class="my-block__cta">Add a bonus item</button>
</div>

<style>
  .my-block { padding: 20px; border-radius: 16px; }
  .my-block__cta { background: var(--brand); }
</style>

<script>
  // read the subscription, then do the useful thing
  const sub = window.__subscription;
</script>