Skip to content

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.

The State Restrictions app listing on the Shopify App Store

Works on every Shopify plan

The app has three parts, and only one of them needs Shopify Plus:

FeaturePlans
Checkout blocking — stops restricted orders from completingAll plans
Checkout banner — a friendlier red banner with a one-click "Remove restricted items" buttonShopify 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.

If your store is on Shopify Plus, also add the friendlier banner:

  1. Go to Settings → Checkout and click Customize on your published checkout profile.
  2. In the editor's Apps panel (the puzzle icon), add checkout-growing-restrictions.
  3. Select the block and enable "Allow app to block checkout".
  4. Click Save.

Settings → Checkout with the Edit button on the active checkout

Adding the checkout-growing-restrictions extension with "Allow this app to block checkout" turned On

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:

The checkout banner listing restricted items with a Remove restricted items button (Shopify Plus)

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-zone gets its text set to the zone: Your zone: <strong data-lgl-growing-zone></strong>
  • <html> gets a class like lgl-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

  1. Pick a product that has an rs_XX restriction tag (or temporarily tag a test product with rs_CA).
  2. Add it to cart and start checkout.
  3. Enter any California shipping address → checkout is blocked with the restriction message (on Plus you also see the red banner with the remove button).
  4. Change to a non-restricted state → checkout proceeds normally.
  5. 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_XX tags 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.

LGL Order and Inventory Sync is provided by Live Good Logistics for authorized retail partners.