Rulify Shipping & delivery logic, global
Shipping that charges what your policy actually says.
- Problem
- Shopify's built-in rates are flat tables. The real policy (free over a threshold, surcharge for heavy carts, no express to remote postcodes) lives in someone's head, and the store loses margin every time it is applied wrong.
- Approach
- Conditions compose into scenarios, evaluated in priority order the moment Shopify asks for rates. Delivery options are hidden, renamed and reordered by a Shopify Function running inside checkout. No theme edits, no code.
- Outcome
- The rate a buyer sees is the rate you meant to charge, and you can see which scenario produced it. Rules are edited in the admin and take effect on the next rate request.
The case that comes up most is two rules at once: free shipping over a threshold, plus a surcharge for a handful of remote provinces. Those are two scenarios rather than one. Base scenarios run first in priority order and the first match wins; surcharges then run as a second pass over whatever base rate matched, and the sum is clamped at zero, so a free rate plus a remote fee comes out as the fee and never as a negative number.
That second pass is also where most support tickets start. A merchant writes one scenario expecting it to override another, and gets the two added together instead. The debug log names the scenario behind every rate that went back to checkout, which is usually how they find out the rule they wrote is not the rule they meant.
- Cart value
- Weight
- Destination zones
- Product & customer tags
- Tiered rates
- Surcharges