Shopify Free Shipping by Country: The Free No-Code Method

Offer free shipping to select countries only, without a paid app or manual discount codes. Here's the native limitation and the free fix.
Search the Shopify community forum for "free shipping by country" and you'll find the same frustrated post over and over: a merchant wants US customers to get free shipping automatically, everyone else pays standard rates, and Shopify's native tools make that harder than it should be. One representative thread has merchants and Shopify support staff both proposing different workarounds, a sign the "obvious" answer isn't actually obvious.
The confusion is real and it's not the merchant's fault. Shopify actually has two different ways to restrict shipping by country, and they solve different problems. Here's both, plus why most merchants end up needing a third option to get true automatic, no-code targeting.
Can Shopify restrict free shipping to specific countries automatically?
Yes, but only through shipping profiles and zones, not through Shopify's native free-shipping discount, which historically required a discount code rather than applying automatically. This is the part that trips people up. Shopify's Discounts page lets you build a "Free shipping" discount type and restrict it to selected countries, but the Method section forces a choice between a discount code (customer types it in) or an automatic discount, and country-only automatic free shipping through that specific discount flow has been a recurring gap merchants report on Shopify's own community boards.
The workaround most guides point to is shipping profiles instead: Settings → Shipping and delivery → create a shipping zone containing only the countries you want, then add a $0 flat rate to that zone. Customers outside the zone see standard rates. Customers inside it see free shipping automatically, no code, no discount object involved at all.
Why do shipping profiles feel more complicated than they should?
Shipping profiles solve the free-shipping-by-country problem structurally, but they don't stack cleanly with other conditions, like a minimum order value that should also apply, without duplicating zones and rates for every combination. Want free shipping for Canada, but only on orders over $75? You're now managing conditional pricing inside the shipping zone itself, weight tiers, price tiers, and the zone's country list, all in one interface that wasn't built for combining several rules at once.
It works. It's just brittle. Add a second condition, a third country group, or a promotional window, and shipping profiles turn into a maintenance project instead of a five-minute setup. Dedicated shipping-rule apps exist specifically to manage this complexity, letting merchants combine cart total, weight, quantity, and destination in one rule instead of duplicating zones, but that's a paid layer on top of a problem the Functions framework can now solve for free.
Is there a free way to combine free shipping with other conditions?
Yes, a Shopify Functions-based discount app can apply free shipping automatically by country while also checking cart subtotal, product tags, or customer segment in the same rule, something neither the native discount flow nor shipping profiles handle cleanly on their own. This is a genuinely newer capability. Shopify's discount function framework, the same infrastructure that replaced the deprecated Shopify Scripts, treats shipping as one of three discount classes alongside product and order discounts, meaning a shipping rule can reference the same condition types available anywhere else in the system.
Flowly: Discount Functions is a free app built on that framework. Shipping is one of its three discount classes, targeting delivery options by country, cart size, or shipping method, and it combines with any of Flowly's 12 condition types.
How to build a country-restricted free shipping rule in Flowly
Flowly builds a shipping discount the same way it builds a product or order discount, a Start node, one or more Condition nodes, and an Apply Discount node targeting the Shipping class. For a straightforward "free shipping to the US and Canada only, on orders over $75" rule:
Add a Start node.
Add a Condition node set to Delivery Country, selecting the countries you want to include.
Add a second Condition node set to Cart Subtotal, with your minimum threshold, and chain it to the first with AND.
Add an Apply Discount node, action set to Free Shipping, target set to the Shipping class.
Save. Flowly syncs the rule onto the live Shopify discount and applies it in real time as soon as a qualifying cart matches, no manual code entry, no discount object with a code field sitting unused.
Multi-country targeting works the same way. A Delivery Country condition can hold a full list, so "free shipping to the UK, Ireland, and Germany" is one condition, not three separate rules the way native shipping profiles would require if the thresholds differed by country. Full details on how the Shipping discount class interacts with the other 11 condition types are in Flowly's docs.
Shipping profiles vs. native free-shipping discount vs. Flowly
Shipping profile ($0 rate) | Native free-shipping discount | Flowly | |
Applies automatically, no code | Yes | Only via automatic discount setup | Yes |
Restrict by country | Yes | Yes | Yes |
Combine with minimum order value | Manual, per zone | Yes, built into the discount | Yes, via Condition node |
Combine with customer tag/segment | No | No | Yes |
Combine with product/collection targeting | No | No | Yes |
Setup time for a multi-condition rule | Grows with each condition | Limited to what the discount type supports | Same regardless of condition count |
FAQ
Does Shopify support free shipping for one country and paid shipping for another automatically?
Yes, through shipping zones. Create a zone containing only the country you want free shipping in, add a $0 rate to that zone, and leave your default zone's paid rates untouched, per Shopify's own free shipping discount documentation. Independent walkthroughs of the same process confirm the zone-based method as the standard fix, though they flag it as manual rather than promotional.
Can I offer free shipping by country and also require a minimum order value?
Yes, both through a shipping profile's conditional pricing settings and through a Flowly rule combining a Delivery Country condition with a Cart Subtotal condition. The app route scales better once you need more than one or two country-threshold combinations.
Why does my free shipping discount code not apply automatically?
Because discount codes by design require manual entry at checkout. If the goal is automatic application with no customer action, the setup needs to use an automatic discount type or a shipping profile rate instead of a code-based discount, a distinction Shopify's checkout blocks documentation lays out for custom shipping discount configuration.
Does a shipping discount count against the same 25-discount-function limit as product discounts?
Yes. All discount functions, product, order, and shipping, share the same store-wide cap of 25 active functions, so it's worth consolidating overlapping shipping rules into a single rule with multiple conditions rather than stacking separate ones per country.
International shipping rules are one of the more common reasons merchants end up duct-taping together shipping profiles and discount codes that don't quite talk to each other. Download Flowly directly from the Shopify App Store to see the shipping class in action, or book a call with Subscribfy's team before your next international promotion if your rules span more than a couple of countries.

Book a meeting with our sales team now!
Create predictable revenue from the customers you already have.