Magento for food and grocery stores: delivery slots, weighed items and best-before dates
I build Magento for food and grocery stores, and the hard part is what happens after the customer clicks buy. Cheese sold by the kilo is weighed at picking, so the real price is only known then. A chilled order can only go to postcodes you reach in time, in a slot the customer chose. When something is out of stock, she wants to have said up front whether a substitute is fine. Almost none of that is in a default install, so below I explain what I add and why.
- Delivery zones by postcode and bookable time slots, checked before checkout
- Items sold by weight: authorized on the estimate, charged at the picked weight
- Allergens and nutrition stored as product attributes, usable as catalog filters
Four things that make a food shop harder than a normal store
A shop selling phone cases never weighs an order or checks a best-before date. A grocery store does both every day, so I plan for these before the catalog is built.
-
Postcodes Not every address can be reached
A chilled grocery order has to arrive within hours, so you only deliver where your vans or courier can get there in time. The customer needs to know that before she fills a basket, not at the last step of checkout. Magento’s table rates can price shipping by postcode, but delivery slots with a limit per slot need an extension.
-
Per kg The price changes after picking
Meat, cheese, fruit and veg sold by weight rarely match the ordered amount exactly. Magento can sell decimal quantities, but it charges what was in the cart. To charge the real weight, the payment is authorized first and the final amount is captured once the order is picked, which needs a payment provider and a module that support it.
-
Best before Stock has a date on it
The oldest stock should go out first, short-dated items may need a markdown, and in a recall you must find every order that got a given lot. Magento counts stock per product and per source, but it has no lot or expiry field. Those dates usually live in your warehouse system, and Magento only needs a copy of them.
-
Allergens Food information before the sale
In the EU, Regulation 1169/2011 requires the mandatory food information, allergens included, to be available before an online purchase is made. In the US the FDA sets the labeling rules, and sesame became the ninth major allergen in 2023. For the store, that means allergen and nutrition data kept as proper attributes, not pasted into a description.
How I set up Magento for a food and grocery store
The six areas I spend most time on in a food shop. Delivery and weighed items come first, because they touch the payment flow.
-
Delivery zones and time slots
I keep the delivery area as a list of postcodes and check it early, on the home page or at the first add to cart, so people outside the area find out before they shop. Prices per zone can come from Magento’s built-in table rates or a small custom carrier. For slots, I use a delivery date extension with a cap per slot and a cut-off time for same-day and next-day orders. The chosen slot is saved on the order and printed on the picking list.
-
Weighed items and the final price
Products sold by weight get Qty Uses Decimals turned on, so a customer can order 0.5 kg, or they are sold per piece with an estimated weight and price. At checkout the payment is authorized for a little more than the estimate. When the picker weighs the item, a small module updates the order line, and the invoice captures the real amount. Capturing less than you authorized works with most payment providers, but I check yours supports partial capture before we build it.
-
Substitutions and repeat orders
Each cart line gets a simple choice: substitute or not. The picker sees it on the picking list, and if a substitute goes out, the order is adjusted and the customer gets an email saying what changed. For repeat shopping, Magento already has a Reorder button in the customer account, which covers a lot of weekly shops. True subscriptions with skip and pause are not part of Magento Open Source, so those need an extension.
-
Lots, best-before dates and recalls
Magento does not track lots or expiry dates, and I would rather not build a warehouse system inside it. Your WMS or ERP usually holds that data already, so I sync the lot number back onto each shipped order item. A recall then becomes a search: which orders got this lot, and who do we email. For short-dated stock, a best-before attribute plus a catalog price rule handles the markdown.
-
Chilled and frozen shipping
Perishable products get a flag that changes how the cart ships. Only your own vans or a chilled courier are offered, and parcels are not sent out on a day when they would sit in a depot over the weekend. Magento cannot hide shipping methods per product on its own, so this is a small module or a shipping rules extension. The packing slip tells the warehouse which items need ice packs or an insulated box.
-
Allergens, stores and alcohol
Allergens and nutrition values go in as product attributes, so they show in a fixed table on the product page and work as layered navigation filters such as “gluten free”. With several shops or dark stores, MSI keeps a stock level per source, but stock shown to shoppers is per website, so stock per store takes a website per area or some custom work. Alcohol needs an age check, which Magento does not have: an extension at checkout, plus an ID check at the door where your licence requires it.
Magento isn’t the right answer for every food brand, here’s the honest cut
I do not push Magento on every food brand. Below: when Magento clearly wins, when Shopify is enough, and the rare hybrid case. Skim, find the one that fits, and skip the deep dive if you already know your answer.
-
Often enough for smaller shops
Pick Magento for food/grocery if
Pick Magento if…
- Catalog above 500 SKUs (or trending there)
- Cold-chain shipping is mandatory on ≥25% of orders
- Subscription model is core (meal kit / coffee / wine)
- Multi-region compliance (FDA + FSSAI + EU + FSANZ)
- B2B restaurant / cafe supply >20% of revenue
- Same-day delivery zones with slot booking required
- Recall workflow + batch tracking is a regulatory must
-
Stick with Shopify if
Stick with Shopify if…
- Catalog under 200 SKUs and stable
- Ambient-shipped only (no cold-chain complexity)
- No subscription model (or simple one-tier subs)
- Single-region selling (one country, one label format)
- Pure D2C: no restaurant / cafe wholesale supply
- Ops team is 1-2 people, app-stack acceptable
- No batch / expiry tracking regulatory pressure
-
Hybrid (rare)
Magento + meal-kit specialist platform
- Some meal kits run a niche specialist platform…
- …(Just-Eat / Crisp / Choco) for ops
- Magento for marketing site + content + lead gen only
- Shared product feed via PIM (Akeneo / Pimcore)
- Hybrid pattern, real overhead: two systems to keep in sync
- Justified only if specialist platform owns kitchen ops
- Single-platform usually wins below $25M GMV
Five steps from cold-chain audit to optimised food store
Audit → plan → build → deploy → stabilise. Tuned for food’s operational risk: every release is a tested cold-chain go-live with a recall-drill playbook. Optional ongoing retainer through the next four quarters.
-
01
Audit
Cold-chain network audit (current carriers, temp-failure rate, claims data), subscription state (active subs, churn cohort, skip-rate), delivery-zone serviceability map (where you ship same-day vs next-day vs nationwide), compliance gaps (which labels are missing or wrong per region). 1 week, written report.
Baseline + gaps -
02
Plan
Fulfillment routing matrix (which SKUs go to which carrier under which conditions), subscription product matrix (cadence × flavor × delivery slot), slot calendar (capacity per zone per slot), label templates (FDA / FSSAI / EU / FSANZ render per store view). Written spec + Gantt + responsibility map.
Locked scope -
03
Build
Cold-chain attribute + carrier routing logic + temp-incident webhook listener + subscription UI (skip / swap / pause / edit-slot) + slot-booking + Onfleet/Bringg dispatch + per-region label templates + B2B trade-pricing visibility. Test fixtures for the recall workflow. UAT with ops on a staging clone for 1 week.
Build + UAT -
04
Deploy
Pilot with 1-2 zones (one urban, one suburban) on the live store for 7 days. Monitor cold-chain incident rate, slot fill-rate, subscription billing failures. Scale to all zones gradually: typically week 2 doubles coverage, week 4 nationwide. Fallback plan if cold-chain failures spike (auto-revert to legacy carrier, alert ops).
Live + verified -
05
Stabilise
Optimise subscription churn (skip-rate vs cancel-rate by cadence), tune slot capacity by zone (busy slots get more drivers, quiet slots get capped), reduce expiry-driven write-offs (tighter FEFO discipline + better forecast). Quarterly review of cold-chain incident data and recall-workflow drills. Optional retainer ($1.5k to $5k/mo).
Optimised + iterating
Free extensions that fit a food and grocery store
Open source under MIT. Hyvä and Luma, Magento 2.4.4 to 2.4.9.
-
Checks the postcode at checkout before you promise delivery.ZIP/PIN Code Validation at Checkout for Magento 2
Free -
Adds a fee or surcharge at checkout, for example for cold packing or handling.Extra Fee & Surcharge for Magento 2 Checkout
Free -
Badges such as New, Sale or Low stock on product cards.Smart Product Badges & Labels for Magento 2
Free -
Low stock warnings and back in stock emails.Low Stock & Back-in-Stock Alerts for Magento 2
Free
What clients say about working with me
Public reviews on Upwork. Same person, same rate card, same playbook for every brand.
Magento work and feedback View Upwork profile
-
Sports footwear and hockey shop, Netherlands -
Photo printing supplies wholesaler, Netherlands -
Educational toys and books shop
-
Kishan has done an excellent job in a timely manner. He is very knowledgeable, has a very positive attitude, easy to communicate.
Z. K.Magento 2 client -
He is technically strong, approaches problems thoughtfully, and focuses on stable, long-term solutions.
E. H.Magento 2 client -
Kishan was a pleasure to work with! He is highly skilled, professional, and delivered outstanding results on time.
M.Magento 2 client
- Working with food and grocery stores in
- United States
- United Kingdom
- Canada
- Australia
- Germany
- France
- Netherlands
- India
Twelve questions food + grocery ecom leaders actually ask
Book a free 30-min food/grocery-Magento consultation
Tell me your category (meal kit / coffee / specialty grocery / restaurant supply), cold-chain share, and subscription state. I’ll send a written platform-fit recommendation within 24 hours and include a 30-min calendar link if a call would help. No upsell.
Message me on WhatsApp
No form to fill. Send me a quick message. I reply during 10 AM to 7 PM IST, Monday to Saturday.
Helpful to mention
- Current platform
- Store URL
- Annual GMV (USD)
- Food / grocery category
- Cold-chain share of orders
- Subscription model
These are already in the message for you. Just add your answers.
Message me on WhatsAppOr save my number: +91 84012 70422