Wine retail hosting where the destination decides the sale.
Selling alcohol online is not a catalogue problem. Whether you may complete an order depends on where the customer is, and getting that wrong is a licence issue.
Some orders you must refuse.
An ordinary store optimises for completing every order. This one has to reliably stop some of them.
Shipping rules enforced before payment
Restrictions vary by country, state and sometimes by product category. That check belongs at the point of address entry, not in a fulfilment email the next morning.
Age verification that a cache cannot skip
A gate baked into a cached page is either shown to everybody forever or to nobody. Verification state is resolved per visitor on top of a shared cached page.
Availability that reflects the destination
A product that cannot ship to a customer's region should not appear purchasable to them. Catalogue visibility is keyed by destination rather than uniform.
Allocation releases sell out in minutes
A limited release brings a concentrated rush on one product. That is inventory contention on a single row, not general traffic.
A record of what you refused
Demonstrating that restricted orders were declined matters as much as the ones you took. Those decisions are recorded and retained.
The catalogue is not the same for everyone.
Ordinary ecommerce tuning assumes one catalogue and one set of rules. Here both change with the delivery address, and caching has to respect that.
- Destination restrictions applied before payment
- Age verification resolved per visitor
- Catalogue visibility keyed by destination
- Declined orders recorded
Fast, and allowed to sell.
The expensive failure here is not a slow page. It is an order accepted for a destination you are not licensed to ship to.
What we change for alcohol retail
Every row exists because the correct response depends on the delivery address, which is the assumption caching would rather not make.
| Setting | What we do | Why |
|---|---|---|
| Restriction checks | Applied at address entry, before payment is taken | Discovering at fulfilment that an order cannot legally ship means refunding a completed sale and explaining why, rather than declining it cleanly. |
| Age verification state | Resolved per visitor above a shared cached page | A gate baked into the cached response is fixed as either passed or unpassed for everyone, so one of those groups gets the wrong behaviour. |
| Catalogue visibility | Keyed by destination rather than served uniformly | Showing a product as purchasable to somebody you cannot ship it to generates an order you have to reverse and a customer you have annoyed. |
| Limited release handling | Inventory contention managed on the individual product | An allocation drop concentrates hundreds of buyers on one stock row within minutes, which is a locking problem rather than a traffic one. |
| Declined order records | Retained alongside completed ones | Showing that restricted orders were refused is part of demonstrating compliance, and it only exists if the refusals were written down. |
Simple, transparent pricing.
Every plan includes free migration, daily backups, SSL and 24/7 support.
- 1 WordPress site
- 10 GB NVMe disk
- Free SSL
- Daily backups
- One-click deployment
- Support tickets
- 5 WordPress sites
- 50 GB NVMe disk
- Free SSL
- Daily backups
- One-click deployment
- Priority support tickets
- 20 WordPress sites
- 200 GB NVMe disk
- Free SSL
- Daily backups
- One-click deployment
- Dedicated support
Questions, answered.
Can I restrict which regions I ship alcohol to?
Does an age gate break page caching?
Should customers see products they cannot buy?
How do I handle a limited allocation release?
Sell only what you may.
Move the store across. Migration is free, shipping rules reviewed.