State Restrictions App
For plant retailers.
Some plants can't legally ship to certain states. Rather than make you keep track of all that, we built our own free app — LGL Shipping Validation — that quietly blocks checkout when a customer tries to ship a restricted plant somewhere it can't go. It saves you from compliance headaches and surprise returns.
This is an LGL app — we build it, we run it, and we keep it current. The list of which plants are restricted in which states lives entirely on our side. We sync the restriction data to your products automatically and update it as regulations change, so you never have to manage any of it. You just install it once.
Install it
👉 Get the State Restrictions app on the Shopify App Store — it's free.

Works on every Shopify plan
The app has three parts, and only one of them needs Shopify Plus:
| Feature | Plans |
|---|---|
| Checkout blocking — stops restricted orders from completing | All plans |
| Checkout banner — a friendlier red banner with a one-click "Remove restricted items" button | Shopify Plus only |
| Growing Zone widget — shows customers their USDA growing zone (optional) | All plans |
The blocking itself is a server-side validation, so it works on every Shopify plan and in express checkouts too — Shop Pay, PayPal, Google Pay, and Apple Pay. Shopify only allows checkout-step UI extensions on Plus stores, which is why the enhanced banner is Plus-only. Non-Plus stores still get full blocking — the customer just sees Shopify's standard error styling instead of our banner.
Turning it on
1. Install the app
Install the app from the Shopify App Store. When you first open it (or after an update adds permissions), Shopify may ask you to approve permissions — accept to complete setup.
2. Restrictions sync automatically — nothing to manage
Restrictions are driven by product tags in the format rs_XX, where XX is the two-letter state code (for example, rs_CA means the product can't ship to California; tags apply to all variants of the product). We sync these tags to your products for you and keep them current as state regulations change — you never have to add, edit, or track them yourself.
If you spot rs_XX tags (or the older sr_XX format) on your products, that's the app at work — just leave them in place.
3. Checkout blocking activates automatically
The first time you open the app after installing (and approving permissions), it automatically activates the checkout validation rule on your store — nothing to configure. You can see or manage it under Settings → Checkout → Checkout rules, where it appears as state-restrictions-validation. If you ever need to add it manually, that's the same place.
4. On Shopify Plus? Add the checkout banner (recommended)
If your store is on Shopify Plus, also add the friendlier banner:
- Go to Settings → Checkout and click Customize on your published checkout profile.
- In the editor's Apps panel (the puzzle icon), add checkout-growing-restrictions.
- Select the block and enable "Allow app to block checkout".
- Click Save.


The block pins itself below the delivery address section. The app's home page also has an Open checkout editor button that takes you straight there.
What your customer sees
We kept this gentle so it never kills a sale. If someone tries to ship a restricted plant to a state it can't go, they get a clear message with two easy choices — ship somewhere else, or drop just that item and check out with everything else.
On all plans, checkout is blocked with a message like:
Due to agricultural restrictions in South Carolina, Meyer Lemon can't be shipped to your address. Please remove it or ship to a different state.
On Shopify Plus, customers also see our red banner listing the restricted items, with a one-click Remove restricted items button:

Either way they keep moving — the rest of their cart isn't held up, and they're never stuck.
Growing Zone widget (optional)
The app can also show customers their USDA growing zone based on zip code. Two ways to use it:
Visible widget — in the theme editor (Online Store → Customize → Apps), add the Growing Zone block to any section, typically product pages. The customer enters their zip once; the widget remembers it and shows their zone. Colors and label are configurable in the block settings, and the widget's styles are fully self-contained so they won't affect your theme's CSS.
Site-wide zone variable (for developers/designers) — enable the Growing Zone Provider app embed (Online Store → Customize → App embeds). It adds no UI, but makes the customer's zone available anywhere in your theme:
- Any element with
data-lgl-growing-zonegets its text set to the zone:Your zone: <strong data-lgl-growing-zone></strong> <html>gets a class likelgl-gz-7a, giving you pure-CSS hooks:.lgl-gz-7a .my-badge { display: block; }- JavaScript:
window.LGLGrowingZone→{ zip: "10001", zone: "7b" } - Event:
document.addEventListener("lgl:growing-zone", (e) => { /* e.detail */ })
Testing your setup
- Pick a product that has an
rs_XXrestriction tag (or temporarily tag a test product withrs_CA). - Add it to cart and start checkout.
- Enter any California shipping address → checkout is blocked with the restriction message (on Plus you also see the red banner with the remove button).
- Change to a non-restricted state → checkout proceeds normally.
- Always test in a fresh incognito window — Shopify caches checkout sessions.
Troubleshooting
- Banner doesn't appear at checkout (Plus stores) — check that the block is added in the checkout editor, "Allow app to block checkout" is on, and the profile is saved/published. Retest in incognito.
- Nothing blocks on a non-Plus store — confirm the validation rule exists and is enabled under Settings → Checkout → Checkout rules; opening the app's home page once will (re)activate it automatically.
- Product blocks in the wrong state / doesn't block — restrictions come from the
rs_XXtags we sync to your products, so reach out to us and we'll sort it out. (If a tag was hand-edited, check the spelling:rs_plus the two-letter code exactly, e.g.rs_NY. Case doesn't matter.) - Growing zone shows "?" — the customer's zip wasn't recognized; only 5-digit US zips are supported.
FAQ
Which Shopify plans are supported? All plans get full checkout blocking. The enhanced banner UI requires Shopify Plus.
Does it work with Shop Pay / Apple Pay / Google Pay / PayPal? Yes — the server-side validation covers express checkouts.
Does it block by billing or shipping address? Shipping (delivery) address.
Who decides which products are restricted where? Restrictions follow state agricultural regulations. We manage the restriction data and sync it to your products automatically — you don't have to maintain anything.
Can I temporarily disable blocking? Settings → Checkout → Checkout rules → turn off state-restrictions-validation. Keep in mind that shipping restricted plants into restricted states violates agricultural regulations — disable only if you know what you're doing.
