2026-04-14
Why we built Reprice Order Price Editor
Two everyday Shopify problems—raising a line price and fixing a billing address—kept turning into workarounds. We built a workflow around preview, then commit.
Merchants told us the same story: the order almost right, finance asking for a clean paper trail, and Admin flows that were not designed around post‑purchase upward repricing or billing address corrections as first-class tasks.
Reprice Order Price Editor exists to keep teams inside a single embedded flow: find the order, edit lines and addresses, read a diff, acknowledge risk when the path requires void-and-recreate or similar, then commit. The goal is not “more buttons”—it is fewer manual rebuilds and less surprise at sync time.
We are conservative in how we describe Shopify itself: your platform is still Shopify; we are an app that completes specific jobs merchants still have after checkout.
2026-04-15
What happened on our April 2026 engineering milestone
A large batch of internal contracts moved to stable—orders list, preview, commits, runs history, onboarding, settings, billing, and compliance hooks.
On 2026-04-07, we aligned dozens of module contracts in docs/MODULE-CONTRACTS.md to the code that was already shipping: for example CTR-web-api-orders-list, preview and line-item routes, commit envelopes, async task polling, reprice run history and detail, onboarding readiness, structured shopRepriceSettings v2, Shopify billing catalog v1, and GDPR-related flows (CTR-compliance-gdpr-redaction, retention).
That date is not “marketing fluff”—it is when we stopped treating those surfaces as moving targets and started treating them as API contracts between UI, routes, and models. For merchants, the practical outcome is fewer ambiguous states in Activity and clearer behavior when settings change how commits work.
2026-04-16
Preview-first is not a feature—it is the product
Every commit path is designed around showing the delta before Shopify sees the final intent.
Order corrections are high-stakes. A wrong total can cascade to refunds, tax filings, and CX tickets. That is why the hero flow is literally Edit → Preview → Commit: operators should see line, total, and address deltas in one place before anything irreversible happens.
When soft risks apply—such as void-and-recreate or billing-address-driven paths—the UI is supposed to slow you down on purpose. We would rather lose a second of velocity than lose an hour undoing a silent mistake.
2026-04-17
Activity, runs, and trace IDs: ops without the guessing game
The Activity surface ties commits to trace IDs, outcomes, and errors so support and finance can answer “what happened to order #…?”
orderRepriceRun records (exposed in-app under Activity) carry identifiers and status that mirror what the backend already logged. When something fails in the wild, the fastest path is: copy the trace ID, open a support thread, and attach redacted screenshots.
We built this because “it failed” is not actionable—correlation is.
2026-04-18
Quick setup is not boilerplate—it changes how commits behave
Void naming, upward price methods, and readiness checks exist so the same button does not mean different things in different stores.
Onboarding in Reprice Order Price Editor checks naming configuration, upward repricing strategy, and whether you have a safe sample order to learn on. Settings persist per shop in structured configuration—not just “whatever was in localStorage last Tuesday.”
That distinction matters: merchant policy is the source of truth; the browser holds preferences (like column widths) that must not pretend to be policy.
2026-04-19
Why we split the marketing site from the Gadget app
Shopify Partner wants stable HTTPS URLs for privacy and documentation. Our embedded app is not the same surface as a public marketing domain.
The embedded admin experience is authenticated and session-bound. Public pages—privacy, FAQ, changelog, tutorial—need to load for anyone without a shop login. Hosting those on a dedicated Vercel site keeps Partner requirements (Privacy policy URL, Developer website, FAQ, etc.) from fighting Gadget dev sync and build roots.
If you are a merchant reading this: nothing changes inside Admin; you just get clearer links when you look us up from the App Store.
2026-04-20
Cloud gate: why we invest in evidence before we call something “ready”
Internal cloud-test runs and checklists exist so “works on my laptop” is not the bar for production narrative.
This repository includes automation and playbooks around cloud test flows and release discipline (cloud-gate, PRE-LAUNCH-CHECKLIST, internal cloudTestRun model). We mention this because merchants rarely see it—but it shapes how often we break you.
When we say a path is stable in MODULE-CONTRACTS.md, we mean it has been treated as a contract, not a vibe. That is part of the same philosophy as preview-before-commit: evidence over optimism.
2026-04-21
Totals that finance actually cares about: shipping fee and order-level discount
We surfaced shipping and cart-level discount next to line edits so operators stop bouncing between our flow and scattered Admin screens.
Line items get the spotlight in repricing stories, but many tickets still end with “fix the shipping” or “the order-level discount is wrong.” Those fields live in the totals band for a reason: they change the number the customer and finance see.
The embedded editor now treats them as first-class inputs where Shopify allows in-place work—fixed shop money or percent of the current line-item subtotal—while staying honest about paths that require void and a replacement order. Preview is where we slow you down on purpose: if lowering discount or certain code combinations cannot be expressed as a quick edit, the diff tells you before commit.
Activity already records enough context for support to correlate a run; extending that story to shipping and discount outcomes keeps ops and finance on the same evidence trail.
Read documentation
Install on Shopify Configure NEXT_PUBLIC_APP_STORE_URL to enable this link.