Quick answer
A Shopify Function can run without throwing an obvious error and still not produce the checkout result you expected. Check the API version, target, output schema, activation, discount node, combination rules, and deprecated fields before assuming the logic is correct.
Symptom
A discount/shipping/cart validation Function appears deployed. Logs may look clean. The message may appear at checkout. But the actual discount, validation, or delivery change does not apply.
Most likely causes
- Wrong API version or deprecated schema. Shopify removed deprecated fields like `discountApplicationStrategy` from older Function results.
- Wrong Function target. Product/order/shipping discount APIs have been moving into the unified Discount Function API.
- Function not activated correctly. The app extension can exist without the discount node or rule being configured correctly.
- Combination/stacking rules block the effect. Other discounts can prevent expected behavior.
- Output targets are wrong. The Function runs, but targets no eligible cart lines or delivery options.
Quick checks
- Confirm the Function API/version and target.
- Confirm the discount/app rule exists and is active in the store.
- Check whether the cart actually meets the Function’s conditions.
- Log/debug the input and output in a development store.
- Test with a single eligible item before testing complex carts.
- Check discount combination rules.
Theme, app, or code checks
- Review Shopify’s latest Discount Function API instead of relying on old Product/Order/Shipping Discount examples.
- Check release notes for removed/deprecated fields.
- If the checkout message appears but no discount applies, inspect output operations and delivery targets.
- If it works in dev but not live, verify plan, app installation, function ID, and active discount setup.
When to stop guessing
Stop guessing when the function executes but outputs an empty/no-op result. At that point, inspect input/output and API version details, not just business logic.
Prevention checklist
- Pin and review API versions during development.
- Keep a simple test cart fixture.
- Document which discount node activates which Function.
- Test stacking/combination behavior separately from eligibility logic.
- Read release notes before upgrading Function APIs.

