Why isn’t my shipping rule working?
If a Shopify shipping rule is not working, check the ShipWith rule in the order below. After each change, select Save, wait for Shopify sync to show Synced, and test checkout again.
ShipWith changes delivery options that Shopify already supplies. It does not create shipping rates, change their prices, or make an unavailable method appear.
1. Confirm that the rule is active and saved
Open the rule and check Status. It must be Live to run at checkout.
If you changed the status, conditions, actions, targets, priority, or any other setting, select Save. Unsaved changes do not affect checkout.
For more about rule status, see Activate, pause, or delete a shipping rule.
2. Wait for Shopify sync
Find Shopify sync on the rule page. Do not test until Status is Synced.
- If the status is Pending, wait and check again.
- If the status is Failed or Not synced, select Retry sync and wait for Synced. For help with the error, see Fix a rule that failed to sync with Shopify.
Synced means Shopify has the latest saved configuration. It does not mean that the checkout data, conditions, or delivery methods match the rule.
3. Reproduce the checkout data that the conditions expect
Compare the test checkout with every condition in the rule. Check the exact products, quantities, cart value, discounts, customer account or tags, B2B company, attributes, and destination details that the rule uses.
Use the same units and values that checkout provides. Sign in as the intended customer when the rule depends on customer or B2B data. Enter the complete delivery address before judging an address-based result.
For a Shipping method condition, continue far enough for Shopify to provide delivery methods. This condition checks each available method's current title and limits which methods the actions can change.
4. Read condition groups as AND within a group, OR between groups
Every condition in one group must match. The conditions in a group use AND.
When the rule has several groups, one complete group must match. The groups use OR. An empty or incomplete group does not match.
For example, (Canadian destination AND cart subtotal of at least 100) OR (customer tag is VIP) runs when either complete group matches. It does not combine one matching condition from each group.
See Choose when a shipping rule applies: conditions and groups for more examples.
5. Confirm that the Function input provides the required conditions
The selected Function input controls which checkout data the rule can read. The condition picker is the current source of truth: if the condition you need is not available for that input, that input cannot evaluate it.
For example, an available Shipping method title condition requires Shipping input. Detailed destination conditions use Address input, while attributes and some detailed product checks use Attribute input. Other inputs have different sets of customer, product, discount, cart, and address fields.
The Function input is locked after the rule is first saved. If the saved rule uses the wrong input, create a rule with an input that offers every required condition. See Choose the right Function input type for your rule. If the condition is not available, see Why is a condition unavailable for my rule?.
6. Check the action's delivery method target
Shopify must supply the delivery method before ShipWith can change it. Then the method must be eligible under the rule's conditions and match the action's target.
Fields such as Delivery method titles and Delivery method name or handle match against both the method title and handle. Matching is case-insensitive and can match any part of either value. Use a narrow target so that it does not match a different method by accident.
A Shipping method condition is different: it checks the method title only, not its handle. A targeted action runs only when the method passes that condition and also matches the action target.
See Match shipping methods by name or handle for matching examples.
7. Inspect every delivery group
Shopify can split one checkout into several delivery groups. Each group has its own destination and available delivery methods, and ShipWith evaluates each group independently.
A rule can match one group and not another. Check every group for:
- The address used by that group.
- The methods Shopify supplied to that group.
- The method titles or handles targeted by the action.
- The final result after all applicable actions.
A result in one delivery group does not prove that the other groups matched.
8. Check priority and action conflicts
Within one Function input, rules with lower Priority numbers run first. If priorities are equal, the rule created earlier runs first. Within a rule, actions run from top to bottom.
Review all active rules using the same Function input, not only the rule that appears wrong. Earlier actions can affect later actions:
- A hidden method cannot be renamed, moved, or included in a later cost action.
- The first successful rename for a method wins.
- The first move, reorder, or cost-sort action that affects a method locks its position.
- Ignore previous rules restores that delivery group's original methods, titles, and order before later actions continue.
See Understand rule priority and action order when several rules or actions affect the same method.
9. Do not depend on order across different Function inputs
Each Function input uses a separate Shopify Delivery Customization Function. Shopify does not guarantee the order in which different Function inputs run.
A lower priority number on a Standard input rule does not guarantee that it runs before an Address input rule. If two rules must run in a specific sequence, put them on the same Function input and confirm that input provides every condition they need.
10. Retest one matching and one nonmatching checkout
After correcting the rule:
- Select Save and wait for Shopify sync to show Synced.
- Build a checkout that matches one complete condition group.
- Confirm the expected action in every delivery group.
- Change one relevant detail so that every condition group fails.
- Confirm the rule no longer changes the delivery methods in any group.
Changing one detail at a time makes the failed condition easier to identify. If the matching test still fails, start again at step 1 and record the methods Shopify originally supplies before any ShipWith changes. For a full test sequence, see Test your shipping rules at checkout.
