Switchboard DocsPolaris-native Shopify Functions

Use cases

Organized by the problem the merchant is trying to solve, not by Switchboard feature. Each entry links to the feature that handles it.

If you're trying to figure out whether Switchboard fits your problem, start here. If you already know which feature you need, jump straight to its deep-dive in the docs index.


Pickup & fulfillment routing

"I have stores in 4 provinces and want to auto-pin the closest one for each customer."

Switchboard does it: When a customer is logged in and has a saved default address, Switchboard reads the province from that address and pins your pickup location whose own address matches. Zero configuration — it reads each location's address from your Shopify settings.

Pickup Reorder — Auto-match mode

"I want my flagship store at the top of the pickup list. Always. For everyone."

Switchboard does it: Create a Fixed-order rule, put your flagship at slot 1, save. Done. Optionally add the other locations in the order you want them shown after it.

Pickup Reorder — Fixed-order mode

"I'd like to pin the pickup location the customer used last time they ordered."

Switchboard does it: Drop a Liquid snippet into theme.liquid that reads customer.last_order.line_items[].fulfillment.location.name and writes it to a cart attribute. Switchboard reads that attribute at checkout and pins the matching location.

Liquid cookbook — Last-order pickup

"B2B customers should see different pickup priorities than retail."

Switchboard does it: Liquid snippet reads customer.tags, writes a custom array to the cart attribute (e.g. wholesale customers get warehouses in order, retail gets retail-front locations).

Liquid cookbook — Tier routing


Order quality / blocking bad carts

"We only ship to Canada. I keep getting US orders I have to refund."

Switchboard does it: A validation rule with country is not equals CA blocks checkout at the cart, with a custom message ("Sorry, we only ship to Canada — please contact us for special shipping arrangements"). Country comes from a Liquid snippet writing customer.default_address.country_code to a cart attribute.

Validation — Country gating

"Wholesale customers must have a $500 minimum order."

Switchboard does it: Validation rule: (loyalty_tier equals wholesale) AND (cart_value_cents less_than 50000) → block checkout. Cart value is written by a Liquid snippet on every cart change.

Validation — Tiered minimums

"We sell knives — we need to age-gate before checkout."

Switchboard does it: Add a checkbox to the cart page ("I am 18+ and accept the terms") bound declaratively to a cart attribute with data-switchboard-attr="age_confirmed". Validation rule age_confirmed is not equals true blocks checkout. No JS needed for the input — the SDK auto-syncs the checkbox.

Validation — Age gating

"Customers shouldn't be able to mix subscription + one-time of the same product."

Switchboard does it: Storefront JS detects the conflict on add-to-cart and sets subscription_conflict to true. Validation rule blocks. The customer sees the explanation you wrote in the rule.

Validation — Conflict blocking

"High-value orders (>$5K) need manual review."

Switchboard does it: Validation rule blocks at checkout_completion block type so the customer can build their cart and review pricing, but can't actually submit payment. The block message tells them how to proceed (email, call, etc.).

Validation — Manual review hold


Dynamic pricing & upsells

"I want shipping protection as a $2.99 upsell on the cart page — like Route, but mine."

Switchboard does it: Cart Transform mints a signed token for $2.99 when the customer toggles the protection checkbox. The signed token gets attached to a "Shipping Protection" product's line item. At checkout the function verifies + reprices to $2.99. Customer can't tamper the price client-side; the cryptographic signature prevents that.

Cart Transform — Shipping protection pattern

"VIP customers should automatically get 15% off everything."

Switchboard does it: Liquid snippet checks customer.tags contains 'vip' and calls the SDK to sign + apply a discounted price to every line item. Safety rails (minPercentOfVariant: 0.7) cap how deep the discount can go.

Cart Transform — VIP discount

"Volume discount — buy 10+ of the same item, $X each instead of $Y."

Switchboard does it: Storefront JS watches the cart, when quantity hits a tier, mints a new signed token at the tier price and applies it to that line. Safety rails prevent prices below your floor.

Cart Transform — Volume tiers

"I sell custom engraving for $10 extra per engraved item."

Switchboard does it: A "personalized" hidden line item is added when the customer types into the engraving field. Cart Transform signs its price at $10. Multiple engravings = multiple signed line items at $10 each, all with cryptographic guarantees.

Cart Transform — Custom upcharge

"Promotional pricing for the first 100 customers in a launch — without burning a discount code."

Switchboard does it: Your backend counts orders and decides whether to issue a signed-price token. If you say yes, the SDK applies the discounted price; if you say no, the token isn't minted and the customer pays full price. Discount codes never enter the picture.

Cart Transform — Promotional pricing


Who Switchboard is for

Primary fit: dev shops, agencies, and technical merchants who want Shopify Functions but don't want to maintain:

  • A function build pipeline
  • A WASM upload flow
  • A separate backend for signed-price token minting
  • A theme app extension just to expose helpers on window

Switchboard ships all of that as a public app. Configure rules in the admin, integrate from your theme when you're ready. The functions degrade to "do nothing" when the storefront hasn't been wired up — so installing today doesn't break anything tomorrow.

Secondary fit: owner-operators who want any of the above use cases out-of-the-box without writing code. Pickup Reorder's Auto-match mode and Fixed-order mode work zero-config. Cart Validation can be entirely admin-driven if the rule is on a Shopify-native cart attribute. Cart Transform requires storefront integration (it's the most powerful and the most code-heavy).

Not a fit (today):

  • Storefronts that need custom checkout UI changes — Switchboard operates at the function layer, not the checkout-extension layer.
  • Merchants who want loyalty-points-style discount logic with stacking, expiry, etc. — use a dedicated loyalty app.
  • Replacement for actual customer accounts / B2B — Switchboard reads what Shopify exposes; it doesn't manage account state.

What this is NOT

  • Not a discount-code generator. Cart Transform applies arbitrary prices; that's strictly more powerful than codes but also more dangerous if you wire it wrong. Read the safety rails before deploying.
  • Not a fraud-prevention system. Cart Validation can BLOCK based on a fraud score — but Switchboard doesn't compute the score. You'd populate the cart attribute from your CRM, IP-checker, or fraud-detection tool.
  • Not a CRM. All customer data Switchboard reads comes from Shopify's existing customer Liquid object. If you want richer segmentation, push the attributes from your CRM into the cart attribute via your storefront JS.

Pricing positioning

(Reference — confirm with the merchant before quoting.)

The app uses Shopify Billing with four tiers: Free, Starter ($10/mo), Growth ($25/mo), Unlimited ($50/mo). Limits are per active function across all three categories. The Free tier is enough for a small shop running one or two rules; the Unlimited tier is targeted at agencies running Switchboard across many client stores.

See app/lib/pricing.ts in the repo for the canonical plan definitions.