Cutover — going live with BetterReviews
Last updated: May 23, 2026
This page uses “cutover” as the noun (matching the URL slug and the in-app audit log). UI labels like Turn on BetterReviews and Confirm — turn it on are rendered verbatim in bold where they refer to specific buttons.
What cutover does
When you install BetterReviews, the app runs in evaluation mode — imports come in, you can try the chat, and you can browse your library, but no review request emails go out and no weekly digest lands in your inbox. That’s deliberate: you should be able to evaluate the tool on your own time without sending a single customer-facing email.
Cutover is the single explicit action that takes you from evaluation mode to live. One click flips two flags atomically:
collection_enabled: false → true— schedules new review request emails based on your/collectsettings.digest_enabled: false → true— opts you in to the weekly summary email.
Both flags flip in the same database transaction. If anything fails (a billing check, a network glitch), neither flips — you don’t get a half- cut-over state where collection is on but the digest is silent.
Before you cut over
The /cutover page is a 4-item checklist. Three items are blocking; one
is optional and lives below the checklist.
-
Disable your old review platform’s collection. If you imported from Okendo / Judge.me / Yotpo / Loox, turn off review-request email sending on the source platform first. Otherwise customers may get duplicate emails. The checklist links to platform-specific instructions based on what we detected in your imported library.
-
Switch remaining product pages to the BetterReviews widget. The checklist’s Open theme editor button drops you into Shopify’s theme editor with the BetterReviews app block pre-selected. Add it wherever your old platform’s block sits, and remove the old block.
-
Turn on BetterReviews. Click the primary CTA, review the cohort preview in the modal (queued count, first send time, daily cap), then click Confirm — turn it on. The page reloads to the success state.
-
(Optional, below the checklist) Connect Slack for weekly digests. This is post-cutover work — connecting Slack later doesn’t affect the cutover itself.
What flips
review_settings.collection_enabled→truereview_settings.digest_enabled→true
A row lands in platform.settings_audit_log with actor
merchant:<store_id>:cutover so the cutover intent is recognizable in
forensics even after subsequent settings changes.
What does NOT flip
- Auto-moderation preset. If you have it set to
manual(the default), it staysmanualafter cutover. To change the preset, visit/collectand use the auto-moderation modal there. - Theme colors, brand voice, customer reply-to email. These are separate settings that cutover doesn’t touch.
- Your imported reviews. Cutover affects future emails and the digest. Imported reviews remain available as before.
require_marketing_consent. New stores default tofalse(transactional treatment — review-request emails go to every customer, not just marketing-opted-in ones; matches Klaviyo / Loox / Okendo industry practice). Cutover doesn’t touch this setting. If your legal team requires the stricterSUBSCRIBED-only rule, flip the Require marketing consent toggle in Collect → Request audience. See Marketing consent for the regulatory rationale.
What happens at flip
- The cohort warmup state initializes (if not already provisioned by an
earlier
/collectenable). New stores start with a daily cap of 50 review-request emails, ramping up automatically over the first 2 weeks. - The
EnableCollectionWorkerOban job enqueues. It paginates your recent Shopify orders and builds the queue of review-request emails based on your trigger event and delay days settings. - The first send lands no earlier than the time shown in the modal’s “First send” line, throttled by your daily cap.
- The next weekly digest will include your store going forward.
Reversing cutover
There’s no “cut back” button by design — cutover is meant to be a
one-way commitment. To pause sending, use Collect → Review collection
to flip collection_enabled off. A confirmation modal shows how many
pending requests will be cancelled; click Disable collection to
confirm. That bulk-cancels every pending review-request email and stops
new ones from scheduling.
The weekly digest can be toggled independently from /collect settings
without going through /cutover again.
Partial cutover
If you previously flipped collection_enabled on via /collect but
never turned on the digest, the /cutover page detects this and shows
an info banner — “Collection is already on. One step left.” Only the
digest flips when you confirm; the cohort already exists from the prior
flip, and we don’t re-paginate Shopify or re-enqueue emails (which would
risk double-sending).
Troubleshooting
- 402 “Your subscription isn’t active” — you can’t cut over with a
cancelled, frozen, or pending subscription. Visit
/billingto reactivate. - 409 “BetterReviews is already live for this store” — both flags are already on. Refresh the page; you should see the success state.
- 422 “Set a reply-to email” — visit your Settings → Support tab in the BetterReviews admin and add a reply-to email before cutting over.
- 422 “We couldn’t read your store timezone” — this is rare; it means Shopify didn’t return a timezone for your shop on connect. Reach out to support@betterreviews.app and we’ll fix it.
FAQ
Does cutover send retroactive emails for old orders?
No. The cohort the EnableCollectionWorker builds respects your
trigger event + delay days + a 90-day recency cap. Orders that
already fulfilled more than ~90 days ago are marked skipped instead
of queued.
Does cutover touch my imported reviews? No. Imports remain exactly as they were. Cutover only changes future behavior.
What if I refresh the page during confirmation? You’re safe. The two-step server confirm uses two distinct routes — the preview-fetch route never writes, and the commit route requires its own POST. Refreshing the page (or double-submitting the form) cannot accidentally trigger a cutover.
Can my team flip cutover without me knowing?
The cutover writes a merchant:<store_id>:cutover audit row. If you
have founder-dashboard access you can see who triggered each cutover
event.