Calculator editor
Merchant detail → App → Features → Calculator cog → Calculator settings (merchant). The editor opens ready to edit. Header Back to Merchant returns to the merchant page. Save turns green when there are unsaved changes.
Cards on the page: Preview, Editor, Advanced.
Toolbar
- Save — publishes merchant calculator settings to the open bucket (grey until something changes, green when dirty). The page opens on the merchant’s live App environment (or sandbox write env) so preview matches shoppers. Advanced → Bucket is a one-visit override, not a leftover session from another merchant.
- Cancel — appears when dirty; discards unsaved edits and reloads from the API.
- Restore Defaults — clears merchant overrides for the current lender and mode back to lender defaults. Click Save to publish.
Save
This toolbar is Save, not Save settings. Click it when the button is green.
- Builder status Saving… (unicode ellipsis). Distinct from Ecommerce / Pay Monthly / FOS ASCII Saving....
- Success status is Saved (runtime env p). with
p,s, ortfor the open bucket. The button greys again. - Failure status is the API
message, or Failed to save calculator settings. (toolbar wrapper fallback Save failed). The button stays green so you can retry. - Invalid Advanced JSON does not start the write: Invalid calculator JSON: plus the parse reason. Empty object check: Calculator JSON must be an object.
Live vs Test
Shoppers load overridesByFeatureMode from the App environment bucket
(usually Production). If calculator overrides exist only on Test, live
ignores them. A warning banner appears when Test and Production differ:
live shoppers see the App environment, Preview and Save use this
bucket, not the live snippet. Unpublished Test slices note Live
shoppers only load the App environment bucket. Apply Test calculator
overrides to Production copies just those calc slices and leaves
ecommerce-modal overrides and Features config alone.
Use Sandbox preview to try calc changes without switching App → Environment to T.
Lender (L) and Merchant (M)
- L = matches the current lender default. Lender deploys update L rows automatically.
- M = this merchant has overridden that default. Lender deploys do not change M rows until you edit, Restore Defaults / Sync to lender, or Save after clearing overrides.
If you change a toggle then change it back so it matches the lender again, the row shows L even if a redundant patch is still in memory until Save.
Embed price
On the Price input field tile, set the merchant default price (always editable; merchant fallback). Tick Use dynamic price when available on page to prefer a detected page price in production. If none is found, the calculator uses this default, then the lender default.
Settings are saved per lender. Switch lender in the builder to configure each embed calculator separately. Popup mode always uses the price next to the trigger that opened it — this block is Embed only.
Written to
financeFeaturesVisibility.calculator.embedded.priceSource[lender]
as mode plus defaultPrice via the merchant API.
See also Calculator preview layout bands and deposit dropdown rules.
Preview
The Preview card is a live calculator at a chosen merchant-column width. Readouts: Merchant column and Finance feature. Slider chrome: Preview merchant column width and Column width ranges. The width notice can read Maximum width The end of the standard range. Compact Comfortable / Tight bands are documented on Merchant Page Editing.
Hint: Hover over feature elements to reveal their editor ID. Click feature element to jump to edit mode.
Editor
Lender and Mode (Embed / Popup) pick which builder you are editing. Empty lender option: Select lender…. Empty builder panel: Select a preview lender to edit calculator overrides. Preview placeholder: Select a lender above to preview the calculator. If the logic module has no toggle rows: No feature toggles and No toggles in logic module for this mode (preview only). Missing builder script: Load lender-marketing-builder.js (FinmatchAdminFeatureBuilder missing). Load failure: Calculator builder failed. Preview load-failure placeholder: Calculator preview failed to load. Check the browser console and Builder environment. Embed price lives on the Price input field tile (Embed price). Popup mode always uses the price next to the trigger.
Advanced
- Bucket — Hint: Bucket to load and save here (runtime config, lender defaults, and preview). Settings open on the live App environment (or sandbox write env) so preview matches shoppers. A leftover Test/Staging session bucket is no longer restored. Does not change App → Environment. Embed snippets are on the merchant Features → Calculator tile.
- Lender deployed defaults — current lender-file defaults for this mode.
- Current calculator config — runtime JSON for this visit. Idle pre: Loading….
- Popup per-page allow-list — Home / Collection / Product / Cart rows with Enabled, Lenders, and Lender types (Personal / Business). Hint: Lenders = who can appear. Types = personal/business filter. If both are set, only lenders that match the type(s) remain (intersection). Types set here survive Features matrix lender toggles. Embed lenders stay on Features → Calculator.
- Advanced calculator JSON editor — Edit the full financeFeaturesVisibility.calculator object. Save will validate JSON first. Apply JSON To Form applies the parsed object. Idle status: Advanced edits only — popup per-page paths, instant checkout, and other keys not in the builder. After an edit: JSON edited. Click "Apply JSON To Form" to update quick fields. After apply: JSON applied (including dynamic popup per page). Click Save to publish. For popup per-page paths, instant checkout, and other keys not in the builder.