# Checkpost > Checkpost is a Shopify app that adds checkout validation rules: it blocks checkout (with a custom message) when a cart breaks the merchant's shipping, quantity, order value, customer, fraud or data-quality rules. It runs as a Rust Shopify Function on Shopify's Cart and Checkout Validation API, so rules apply in the cart, at checkout and to express checkouts (Shop Pay, Apple Pay, Google Pay), with no theme code. Install: https://apps.shopify.com/checkpost ## Docs - [How it works](https://checkpost.seedwren.com/docs/how-it-works/): architecture, when rules run, performance, fail-open behaviour, data handling - [Conditions reference](https://checkpost.seedwren.com/docs/conditions/): every condition and operator a rule can use ## Use cases ### Address & shipping - [How to block PO Box addresses at Shopify checkout](https://checkpost.seedwren.com/use-cases/block-po-box-addresses/): Stop checkout when the shipping address contains a PO Box, so carriers that cannot deliver to PO Boxes never receive the order. - [How to block checkout for specific countries on Shopify](https://checkpost.seedwren.com/use-cases/block-shipping-to-countries/): Prevent orders from being placed with a shipping address in countries you cannot or do not want to serve. - [How to block specific ZIP or postal codes at Shopify checkout](https://checkpost.seedwren.com/use-cases/block-zip-codes/): Block checkout for postal codes you can't deliver to, using exact codes or prefixes (for example remote islands or rural areas). - [How to limit Shopify orders to a list of delivery postal codes](https://checkpost.seedwren.com/use-cases/only-ship-to-zip-codes/): Allow checkout only when the shipping postal code is inside your delivery area — ideal for local bakeries, florists and grocery delivery. - [How to stop specific Shopify products shipping to certain states](https://checkpost.seedwren.com/use-cases/restrict-products-by-state/): Block checkout when a restricted product (for example knives, vapes, supplements or CBD) is shipped to a state or province where it can't be sold. - [How to block hazmat products shipping to Alaska, Hawaii and Puerto Rico on Shopify](https://checkpost.seedwren.com/use-cases/hazmat-ground-only-regions/): Stop orders containing hazardous-materials products (aerosols, batteries, flammables) from shipping to regions that require air freight. - [How to make products pickup-only on Shopify](https://checkpost.seedwren.com/use-cases/pickup-only-products/): Block shipping for products that must be collected in store (large, fragile or perishable items) while still allowing local pickup. ### Quantity limits - [How to limit how many of a product a customer can buy on Shopify](https://checkpost.seedwren.com/use-cases/limit-quantity-per-product/): Cap the quantity of a product per order — perfect for limited drops, launches and high-demand items that resellers target. - [How to set a minimum order quantity for products on Shopify](https://checkpost.seedwren.com/use-cases/minimum-quantity-per-product/): Require a minimum quantity for selected products, so low-margin or bulk items can't be ordered in single units. - [How to require quantities in multiples (case packs) on Shopify](https://checkpost.seedwren.com/use-cases/sell-in-packs-multiples/): Only allow quantities in multiples of a pack size — e.g. 6, 12 or 24 — for case-packed goods like wine, beverages or wholesale stock. - [How to limit the total number of items in a Shopify order](https://checkpost.seedwren.com/use-cases/limit-total-cart-quantity/): Cap the total number of units per order — useful when packaging, couriers or inventory can't handle oversized orders. - [How to limit gift card purchases on Shopify](https://checkpost.seedwren.com/use-cases/limit-gift-card-quantity/): Cap how many gift cards can be bought in one order — gift cards are a common target for fraudsters using stolen cards. - [How to require a minimum quantity across mixed Shopify products and variants](https://checkpost.seedwren.com/use-cases/mix-and-match-minimum-quantity/): Require at least 5 units across all products tagged moq-5, allowing shoppers to mix products and variants in one qualifying order. - [How to sell mixed cases of 6 across Shopify products and variants](https://checkpost.seedwren.com/use-cases/mix-and-match-case-packs/): Require the combined quantity of products tagged case-6 to be a multiple of 6, so customers can build a mixed case without buying 6 of each flavour. - [How to limit each Shopify variant across split cart lines](https://checkpost.seedwren.com/use-cases/limit-quantity-per-variant/): Cap each limited-tagged variant at 2 units per order, adding together duplicate lines with different customisations instead of capping the whole product. ### Order value - [How to set a minimum order amount on Shopify](https://checkpost.seedwren.com/use-cases/minimum-order-value/): Block checkout until the cart subtotal reaches your minimum, protecting margins on shipping and handling. - [How to set a maximum order value on Shopify](https://checkpost.seedwren.com/use-cases/maximum-order-value/): Stop unusually large orders from completing automatically — a simple guard against fraud and stock-outs. - [How to set a minimum order for local delivery on Shopify](https://checkpost.seedwren.com/use-cases/local-delivery-minimum/): Require a higher order value only when the customer chooses local delivery, while keeping pickup and shipping unrestricted. - [How to require a minimum spend on a Shopify collection](https://checkpost.seedwren.com/use-cases/minimum-value-for-collection/): Require a minimum subtotal for items from a specific collection or tag — e.g. frozen goods that need insulated packaging. ### Customer access - [How to require customers to log in before checkout on Shopify](https://checkpost.seedwren.com/use-cases/require-login-to-checkout/): Only allow signed-in customers to complete checkout — common for members-only stores and private sales. - [How to restrict Shopify products to specific customer tags](https://checkpost.seedwren.com/use-cases/tagged-customers-only-products/): Allow certain products to be purchased only by customers with a tag such as "vip", "member" or "approved". - [How to limit order value for first-time customers on Shopify](https://checkpost.seedwren.com/use-cases/first-order-limit/): Cap the order value of brand-new customers (zero previous orders) to reduce chargeback risk while still welcoming new buyers. - [How to stop products being sold in specific Shopify Markets](https://checkpost.seedwren.com/use-cases/restrict-products-by-market/): Block checkout when the buyer's market country is one where certain products can't be sold due to regulation or licensing. ### Fraud & abuse - [How to block disposable or specific email domains at Shopify checkout](https://checkpost.seedwren.com/use-cases/block-email-domains/): Stop checkouts that use throwaway email domains often linked to fraud, coupon abuse and reseller bots. - [How to block specific customers from ordering on Shopify](https://checkpost.seedwren.com/use-cases/block-specific-customers/): Prevent known fraudsters or serial returners from checking out by email, or by tagging their customer accounts. - [How to stop card-testing attacks on Shopify checkout](https://checkpost.seedwren.com/use-cases/stop-card-testing/): Block tiny guest orders — the classic pattern bots use to test stolen card numbers — while logged-in customers shop normally. - [How to limit free samples to 3 per Shopify order at checkout](https://checkpost.seedwren.com/use-cases/limit-free-samples-per-order/): Cap the combined quantity of sample-tagged products at 3 per order, checking inside checkout even when a shopper skips the cart page. ### B2B & wholesale - [How to restrict wholesale products to wholesale customers on Shopify](https://checkpost.seedwren.com/use-cases/wholesale-only-products/): Prevent retail customers from buying wholesale SKUs by requiring a wholesale customer tag or a B2B company account. - [How to set a minimum order value for B2B buyers on Shopify](https://checkpost.seedwren.com/use-cases/b2b-minimum-order/): Apply a minimum order amount only to B2B company buyers (or wholesale-tagged customers), leaving retail checkout untouched. - [How to require 20 units then increments of 10 per Shopify variant](https://checkpost.seedwren.com/use-cases/variant-minimum-and-increments/): For bulk-tagged products, require each variant to total at least 20 units and a multiple of 10, even when the same variant appears on separate cart lines. - [How to exclude retail products from a Shopify wholesale minimum order](https://checkpost.seedwren.com/use-cases/wholesale-qualifying-products-minimum/): For customers tagged wholesale, require at least 100 in products tagged bulk; unrelated retail items do not count toward the wholesale minimum. ### Cart combinations - [How to prevent mixing pre-order and in-stock items in a Shopify cart](https://checkpost.seedwren.com/use-cases/separate-preorders/): Require pre-order items to be checked out separately so in-stock items aren't held back waiting for pre-order stock. - [How to require a main product before an add-on can be purchased on Shopify](https://checkpost.seedwren.com/use-cases/require-product-with-addon/): Block checkout when an add-on (warranty, installation, engraving) is in the cart without the product it belongs to. - [How to prevent sample-only orders on Shopify](https://checkpost.seedwren.com/use-cases/samples-require-qualifying-product/): Block checkout when sample-tagged products are present without a product tagged sample-qualifier, so samples accompany a qualifying full-size purchase. ### Pickup & delivery apps - [How to make sure the Zapiet pickup location matches the checkout address on Shopify](https://checkpost.seedwren.com/use-cases/pickup-location-matches-address/): When a shopper chooses store pickup in the cart, block checkout if the address entered at checkout is not the chosen pickup location. - [How to require a delivery date before Shopify checkout](https://checkpost.seedwren.com/use-cases/require-delivery-date/): Block checkout when the shopper chose local delivery or pickup but didn't pick a date in the cart, so every order arrives with a slot. - [How to stop shoppers who picked store pickup from choosing shipping at checkout](https://checkpost.seedwren.com/use-cases/pickup-only-at-pickup-checkout/): If the shopper chose pickup in the cart, block checkout when they then select a shipping rate instead of pickup. ### Data quality - [How to limit address field length at Shopify checkout for carrier labels](https://checkpost.seedwren.com/use-cases/limit-address-length/): Stop addresses that are too long for your carrier's label format (often 35 characters) before they cause failed shipments. - [How to require Latin characters in Shopify shipping addresses](https://checkpost.seedwren.com/use-cases/latin-characters-only/): Block non-Latin scripts in address fields when your carrier or warehouse system can only print Latin characters. - [How to make the company field required for wholesale customers on Shopify](https://checkpost.seedwren.com/use-cases/require-company-for-b2b/): Require a company name in the shipping address when a wholesale customer checks out, keeping invoices and deliveries accurate. ### Payment methods - [How to hide Cash on Delivery for large orders on Shopify](https://checkpost.seedwren.com/use-cases/hide-cash-on-delivery-over-amount/): Hide the Cash on Delivery payment method when the cart subtotal is over 500, so big orders are paid upfront. - [How to hide Cash on Delivery for new customers on Shopify](https://checkpost.seedwren.com/use-cases/hide-cash-on-delivery-first-order/): Only returning customers can pay cash on delivery: hide it for guests and customers without a previous order. - [How to hide Klarna, Afterpay and COD for pre-orders on Shopify](https://checkpost.seedwren.com/use-cases/hide-pay-later-for-preorders/): Hide buy-now-pay-later and cash on delivery when the cart contains pre-order products. - [How to show bank transfer first for wholesale customers on Shopify](https://checkpost.seedwren.com/use-cases/bank-transfer-first-for-wholesale/): Move the bank transfer payment method to the top of the list for customers tagged wholesale. - [How to hide Cash on Delivery for international Shopify orders](https://checkpost.seedwren.com/use-cases/cash-on-delivery-domestic-only/): Hide Cash on Delivery when the shipping country is outside India, while leaving prepaid methods available. Replace IN with your supported country. - [How to disable Cash on Delivery for tagged Shopify customers](https://checkpost.seedwren.com/use-cases/cash-on-delivery-blocked-customers/): Hide Cash on Delivery for signed-in customers tagged cod-blocked, leaving prepaid methods available after a refused or unpaid delivery. - [How to charge a cash on delivery fee on Shopify](https://checkpost.seedwren.com/use-cases/cod-fee-show-cod-with-fee-rate/): Add a shipping rate that includes your COD fee (for example "Standard (COD)"), then show Cash on Delivery only when the shopper picks that rate. - [How to stop prepaid orders paying the COD shipping fee on Shopify](https://checkpost.seedwren.com/use-cases/cod-fee-prepaid-hidden-with-fee-rate/): When the shopper picks the shipping rate that includes your COD fee, hide every payment method except Cash on Delivery so prepaid orders never pay the fee. ### Delivery methods - [How to hide express shipping for PO Box addresses on Shopify](https://checkpost.seedwren.com/use-cases/hide-express-shipping-po-boxes/): Couriers can't deliver express to a PO Box: hide express and overnight rates when the address is one. - [How to limit Shopify local delivery to specific ZIP codes](https://checkpost.seedwren.com/use-cases/hide-local-delivery-outside-zips/): Hide the local delivery option unless the shipping ZIP / postal code is in your delivery area. - [How to hide express shipping for bulky products on Shopify](https://checkpost.seedwren.com/use-cases/hide-express-for-oversized/): Hide express and overnight shipping when the cart contains products tagged oversized. - [How to hide air shipping rates for hazmat products on Shopify](https://checkpost.seedwren.com/use-cases/hide-air-shipping-for-hazmat/): Hide rates named Air, Express or Overnight when the cart contains hazmat-tagged products, while retaining your configured ground rates. - [How to hide free shipping for Alaska and Hawaii on Shopify](https://checkpost.seedwren.com/use-cases/hide-free-shipping-excluded-states/): Hide rates named Free shipping for US addresses in Alaska or Hawaii, keeping paid rates available instead of blocking the order. ### Shipping discounts - [How to offer free standard shipping over an amount on Shopify (and keep express paid)](https://checkpost.seedwren.com/use-cases/free-shipping-over-amount/): Make the Standard rate free when the cart subtotal reaches 75, while Express and other rates keep their price. - [How to give free shipping to VIP or wholesale customers on Shopify](https://checkpost.seedwren.com/use-cases/free-shipping-for-tagged-customers/): Make every shipping rate free for logged-in customers with a VIP tag, without a discount code. - [How to discount express shipping for larger orders on Shopify](https://checkpost.seedwren.com/use-cases/half-price-express-over-amount/): Take 50% off rates named Express when the cart subtotal is 150 or more. ### Date & time - [How to only accept Shopify orders during business hours](https://checkpost.seedwren.com/use-cases/block-orders-outside-business-hours/): Block checkout outside your opening hours (before 9:00, from 17:00 and at weekends, in your store's timezone), for shops that prepare or deliver orders the same day. - [How to stop local delivery and pickup orders on public holidays in Shopify](https://checkpost.seedwren.com/use-cases/pause-local-delivery-on-holidays/): Block local delivery and store pickup orders on the days you're closed, such as Christmas and New Year's Day, every year. - [How to hide local delivery on Sundays in Shopify](https://checkpost.seedwren.com/use-cases/no-local-delivery-on-sundays/): Hide the local delivery option on the days your drivers don't work. - [How to hide same-day delivery after a cutoff time on Shopify](https://checkpost.seedwren.com/use-cases/same-day-delivery-cutoff/): Hide same-day and express options after your daily cutoff (14:00 in your store's timezone) so shoppers only see rates you can still meet. - [How to hide standard shipping before Christmas on Shopify](https://checkpost.seedwren.com/use-cases/holiday-shipping-cutoff/): From 18 to 24 December every year, hide standard shipping that won't arrive in time, so holiday shoppers pick express. ## Optional - [Full text of all pages](https://checkpost.seedwren.com/llms-full.txt)