Skip to main content

Changelog

Follow new updates and improvements to Carrott.

June 2026 Changelog

We’ve shipped a set of updates focused on mobile scanning, campaign workflows, points rewards, wallet reliability, and admin visibility.

Mobile Scanner

The mobile Scanner app is now the recommended way for staff to scan and update customer cards.

  • Added clearer download prompts in the dashboard.

  • Added direct links for the App Store and Google Play.

  • Added a temporary web scanner fallback while teams move over to the mobile app.

  • Improved scanner auth recovery so staff can get back into the app more reliably.

Download links:

Campaigns

Campaigns are now available for running time-limited promotions on card templates.

  • Create scheduled campaigns with start and end times.

  • Add wallet banner content and display-field overrides.

  • Send launch messages and reminders.

  • Enable scanner redemption for campaign rewards.

  • View active, scheduled, and archived campaigns from the Campaigns area.

Points Cards

Points rewards are more flexible.

  • Reward tiers now have stable IDs, so rewards can be edited without losing their identity.

  • Unlock amount and redemption cost can be different.

  • Multiple rewards can share the same unlock threshold.

  • The points reward editor is easier to scan and edit.

Example: a customer can unlock a reward at 100 points, but redeem it for 50 points.

Wallet Pass Reliability

Wallet updates are safer and more predictable.

  • Re-publishing a card now uses a “latest publish wins” rollout, reducing duplicate pass updates and push notifications.

  • Wallet display fields are cleaned up more reliably before passes are generated.

  • Business logo cropping now respects the original logo shape instead of forcing a square crop.

  • App update prompts are more reliable after dashboard deployments.

Customer Imports

Stamp-card imports now validate imported stamp counts against the card’s maximum stamp target.

If an imported row has more stamps than the card allows, that row fails validation instead of creating incorrect customer progress.

Public API

Public API and points/admin tooling received several fixes.

  • Expired-card transaction handling is more reliable.

  • Bulk points adjustments can now target cards by card number.

  • Template and points reward data is more consistent for integrations.

Small Fixes

  • Better handling for stale app bundles after deployments.

  • More reliable join-template lookup for malformed URLs.

  • Several campaign form, preview, reminder, and scanner redemption polish fixes.

April 30th Release

✨ New

Embed your join form anywhere — drop a snippet on your website and let customers sign up without leaving your page. Theme-aware, auto-resizing, and hands paid signups off to a secure Stripe checkout. Find it under "Embed on your site" on any card template.

Resume a cancelled subscription — a new one-click "Resume subscription" button on your billing page if you're still inside the paid period.

🐛 Fixes

  • Cancelled subscriptions no longer show a future "Next billing" date.

  • More reliable wallet pass generation on the public join form (smarter retries on cold-starts).

🔌 Public API — now out of beta

Our public API is generally available and has been rebuilt from the ground up to follow industry-standard conventions. Contact support to request access.

⚡ Performance

Login and dashboard pages are snappier — we trimmed 6–16ms off every authenticated request.

Heads up: all users will be signed out once as part of this rollout. Just log back in.

April 2026 Changelog

🌟 Membership Cards (Beta)

We've launched a brand-new card type alongside Stamp and Points cards: Membership Cards. This is a major addition that lets businesses run paid or invite-only loyalty programs with recurring billing. Ask support to enable this for your account!

What you can do now:

  • Build tiered memberships with the new card builder — define benefits, pricing, and access modes

  • Charge subscriptions through Stripe Connect (monthly or yearly), with promo codes supported at checkout

  • Run invite-only programs — customers join in an "awaiting approval" state, and admins can approve or deny from the dashboard

  • Free, paid, and mixed tiers all supported in the same card

  • Customers manage their own billing via a tappable "Manage Billing" link directly on their wallet pass, opening Stripe's Customer Portal where they can switch tiers, change billing intervals, or cancel

  • Active members can re-download their wallet pass at any time without re-paying

For staff:

  • New scanner experience for memberships — benefits are the primary action, with swipe-to-confirm to prevent accidental taps, plus a subscription details accordion

  • Auto-logged visits when a membership card is scanned — no manual logging required

New "Subscriptions" admin page with full subscriber list, filtering, and a detail drawer that reads live data from Stripe (billing info, activity timeline, "Manage in Stripe" shortcut)


🎯 New: Visit-Based Earning on Points Cards

Points cards now support earning per visit, not just per spend. Useful for "10 points per visit" style programs. Includes:

  • Swipe-to-confirm flow on the scanner for visit earns

  • Optional transaction amount input when scanner settings require it

  • Daily limits enforcement


🔍 Customer Insights

The customer list and customer drawer have been redesigned with new at-a-glance metrics:

  • Balance, visits, and lifetime value (LTV) now surfaced directly in the customer list

  • Activity timeline in the customer drawer showing recent events

  • New dashboard filter for slicing customer insights by template

  • More accurate "Last Visit" — admin actions and membership lifecycle events no longer count as visits

🛡️ Anti-Abuse: Cloudflare Turnstile on Join Forms

Join pages are now protected from bot signups via Cloudflare Turnstile. The widget only appears when interaction is actually required, keeping the form clean for real customers. Form submissions are guarded against double-clicks and stale tokens.


🎨 Join Page Polish

  • Redesigned Open Graph (social share) image with a refreshed look when join links are shared on social media


🌐 Custom Domain Support: joinpass.co

Join links now use the joinpass.co short-domain for a cleaner, more shareable customer experience. Standardized across Stripe checkout return URLs, short-link resolver, and dashboard "copy link" UI.


🏗️ Card Builder Improvements

  • Duplicate any membership tier with a single click in the builder

  • Earning rules now scoped to applicable card types (no more confusing irrelevant options)

  • Stripe pricing health checks — the builder now flags out-of-sync prices and offers a resync action for paid memberships, with a clearer "Verifying…" state that no longer gets stuck

  • Red tab indicator when membership tier/pricing has validation errors

  • Hardened pricing input normalization


💳 Stripe / Billing

  • Stripe Connect now works on platform-direct subaccounts (previously only available via agencies)

  • "Manage Billing in Stripe" button now appears for platform-direct subaccounts

  • Mobile billing portal navigation fixed — opens correctly on phones now

  • Wallet pass billing link — customers can tap a link on their pass to manage their subscription

  • Stripe Customer Portal configured for tier switching and billing interval changes


🔐 Auth Improvements

  • Password reset failures now surface clearly to the user instead of failing silently

  • Auth emails (verification, reset) are scheduled reliably


Earlier updates