HomeGuides › Heimish business web

Heimish business web

Delivery zones, minimums and cutoffs for a kosher grocery

Flat-rate delivery quietly loses money. How to draw zones by zip, set minimums and fees per zone, run cutoffs and windows, and survive the erev Yom Tov rush.

By BH Web Solutions · Updated 2026-07-29

Delivery is the part of a grocery website that quietly decides whether the whole thing makes money. The store can look beautiful and the checkout can be smooth, and you still lose a few dollars on every order because the delivery rules were set by guesswork. Here is how to set zones, minimums and cutoffs on purpose, with a worked three-zone example at the end.

Why one flat delivery fee stops working

A delivery does not cost you miles. It costs you driver minutes. Most of the rest follows from that.

Say a driver plus van costs around $30 an hour all in — wages, payroll taxes, gas, insurance, wear. In your own neighborhood a driver does six or seven stops an hour because the houses are three blocks apart: roughly $5 a delivery. Send the same driver twenty-five minutes each way to a town where you have one customer and that is nearly an hour of van time for one stop, costing you more than ten local deliveries.

At a $7 flat fee you make money on the first and lose money on the second. Worse, a flat fee attracts exactly the orders that hurt — someone far away with a $45 basket sees $7 delivery and thinks it is a bargain, because it is. Your close-by weekly customers are paying for it. Grocery gross margins are thin, generally in the twenty-to-thirty percent range depending on the mix and lower on staples, so a $45 order carries maybe $11 of margin. It does not take much driving to eat all of it.

The three ways to define a zone

1. A list of zip codes

You type out the zips you deliver to and group them: 11219 and 11204 are Zone 1, 11230 and 11210 are Zone 2. This is what most heimish groceries actually want, and it is the default unless there is a specific reason otherwise. It is predictable — you can read the rules off a sheet of paper, and so can your driver. Adding a neighborhood is one line in a settings box. And it is built into the standard platforms at no extra cost: WooCommerce, for instance, accepts a pasted list of zips, ranges, or wildcards like 112*.

The honest downside is bluntness. A suburban zip can cover several square miles, so "10952" is not one delivery cost but a range of them, and zips ignore town lines. A zip is also not really a shape on a map — USPS zips are collections of mail routes and addresses, and the polygons you see on maps are approximations published separately by the Census Bureau. In dense Brooklyn that hardly matters. In spread-out areas it does.

2. A radius from the store

"We deliver within four miles." Easy to explain, easy to set up, looks fair. In practice a radius cuts streets in half — one side of an avenue is in, the other is out, and nobody can say why. It measures straight-line distance, so a customer separated from you by a highway, a park or a bridge looks close on the circle and is twenty minutes away in the van. It also needs every address converted to map coordinates before the rule can run, which means a paid service behind your checkout. Use a radius to sketch your first draft, not as the live rule.

3. A hand-drawn map polygon

You trace the exact border of your delivery area following real streets. This is the most accurate of the three, and large operations use it because at scale the precision pays. For a single store it is usually more trouble than it is worth. Somebody has to maintain those shapes: add a run to a new development and someone must reopen the map tool and redraw, and if that person leaves the shapes are frozen. Checking an address against a polygon at checkout also takes custom development — real money to build and to keep working.

MethodSetup effortAccuracyEasy to change?Best for
Zip code listLowGood in dense areas, rough in spread-out onesYes — edit a listAlmost every neighborhood grocery, butcher or bakery
RadiusLowPoor at the edgesYes — change a numberSketching a first draft
Map polygonHighHighestOnly by whoever has the map toolMulti-van operations; splitting one very large zip

Why zips fit these communities especially well

Heimish neighborhoods are unusually clustered. Boro Park, Williamsburg, Flatbush, Monsey, Lakewood, Kiryas Joel — in each case a high share of your customers sit inside a handful of zips, and customers within one zip genuinely behave alike: similar baskets, a few blocks apart, servable on one loop. That is the condition under which a blunt tool becomes an accurate one. For a general-market store whose customers are scattered across a county, a zip tells you almost nothing. Here it tells you nearly everything you need for pricing.

When a zip really is too big — one end fifteen minutes from the other — the fix is not to abandon zips. Split that zip by street range, or serve the far end on a fixed day only, and leave the rest alone.

Minimums and fees do different jobs

  • The minimum decides whether the trip is worth taking. It protects you from a $25 order forty minutes away.
  • The fee covers the marginal cost of that stop and nudges people toward bigger, less frequent orders.
  • The free-delivery threshold is a marketing lever. Set it above your average order — if the typical basket is $95, free over $125 gives people a reason to add two items. Set it below and you are giving away a fee you were already collecting.

Show the fee early, not at the last step. Unexpected costs appearing at the end of checkout are among the most common reasons a full cart is abandoned. A line on the cart page reading "Delivery to 11230: $12 — free over $200" costs nothing and removes the surprise.

Cutoffs and windows are not the same thing

A cutoff is the deadline for placing the order. A window is when the food arrives. Every window has a cutoff attached, and the customer needs to see both: "Order by Tuesday 10:00 PM for delivery Wednesday between 2:00 and 6:00 PM." Not "we deliver Wednesdays," which tells nobody whether they still have time.

  • Run the clock on store time, not the customer's device. This is the most common bug in home-built cutoff logic. Servers often run on universal time, and a cutoff that is right in July drifts by an hour when daylight saving ends.
  • Never show a slot you cannot serve. When a cutoff passes, that slot should gray out on its own and the next one should be selected automatically.
  • Cap each window. A window holds however many stops your drivers can do. Give it a slot count and let it show as full. "Wednesday 2–6 PM — fully booked" is far better than a delivery that lands Thursday night.
  • Show a countdown. "Order within 3 hours 12 minutes for tomorrow's delivery" moves more orders than any banner you can write.
  • Erev Shabbos moves. A Friday cutoff that works in June is far too late in December. Tie it to candle lighting or set it manually each week — see the guide on online orders around Shabbos and Yom Tov.

When the customer is outside every zone

Most store software, faced with an address matching no zone, throws an error at checkout: "no shipping methods are available." The customer already picked their food and typed their address, and the site tells them to go away. Handle it deliberately instead.

  1. Check the zone before the cart. A small zip box in the header — "Enter your zip to see delivery days" — costs ten seconds up front and saves ten wasted minutes at the end.
  2. Always offer pickup. Plenty of people outside your radius work or daven near the store.
  3. Offer a "request delivery" form. Capture name, address, email. Sometimes you say yes for a $300 order. Even when you say no, twenty requests from one town is your next route, chosen on evidence instead of a hunch.
  4. Consider a community drop point. For an out-of-area cluster, one delivery to a designated house or shul that several families collect from turns an unprofitable route into a profitable single stop.
  5. Say what you actually do. "We don't deliver to 11235 yet, but we ship frozen orders over $150 by carrier, and pickup is always available" keeps the sale alive.

Validate the zone before payment, never after

Checkout should run in this order: address, zone lookup, minimum check, window selection, payment. Payment last, always. A customer who enters a card and then learns you do not deliver there will not come back, and you may have to reverse a charge.

Address autocomplete — where you type and the real address appears in a dropdown — is worth adding. It kills typos, gives your driver an address they can follow, and gives you a zip you can trust rather than one typed from memory. Two cautions. It generally does not capture apartment numbers, so keep a separate, visible Apt / Unit / Floor field; a missing apartment number is the top cause of a driver standing in a lobby making phone calls. And these services charge per lookup — most have a free monthly allowance, but terms change, so check current pricing rather than assuming, and restrict the service to your own region to cut cost and noise.

Finally, decide the zone on your server, not only in the browser. A customer can pick an in-zone address from the dropdown and then edit the zip field afterward.

Perishables: why a butcher is not a bookstore

A seforim store can leave a package on a porch for six hours and nothing bad happens. A butcher cannot. USDA guidance is that perishable food should not sit between 40°F and 140°F for more than two hours — one hour above 90°F — and beyond that should be discarded. A four-hour window plus an unattended porch in August is outside that guideline before you count the time in the van.

  • Narrower windows for perishable carts. If the order has meat, dairy or frozen, offer two-hour windows even though it means fewer slots.
  • Attended delivery by default for frozen. Make "leave at the door" an explicit opt-in with a clear note about responsibility. Shelf-stable goods can be left without fuss.
  • Let the cart drive the rules. Paper goods and cereal can take any slot. Add one package of chicken and the available slots should narrow automatically.
  • Pack frozen separately in insulated bags with gel packs, and say so on the site.
  • Plan for items sold by weight. A brisket priced per pound cannot be charged exactly at checkout. Authorize the card for an estimate with a buffer of roughly fifteen to twenty percent, then capture the actual amount once it is cut and weighed. Capturing less than authorized is always allowed; capturing more can be declined — so build the buffer in and tell the customer the final charge reflects actual weight.
  • Decide the substitution policy before you need it. Give each order a choice: substitute freely, call me first, or refund the item. Written down once, it ends a whole category of phone calls.

Combining orders and repeat customers

The same family orders Monday night and remembers the milk Tuesday morning. If your system treats that as two orders, you pay for two stops and they pay two fees. Build an add to my existing order path that stays open until that delivery's cutoff.

Reorder from history is the highest-value feature on a grocery site and the least glamorous. Heimish grocery baskets are remarkably stable week to week, and a "reorder last week's list" button plus saved shopping lists turns a twenty-minute chore into two minutes. A customer who can reorder in two minutes does not shop elsewhere.

The biggest profit lever, though, is route density — stops per hour. The cleanest way to raise it is to attach days to zones. If you only go to the far zone on Wednesdays, everyone there orders for Wednesday, and one van does eight stops on one loop instead of one stop three times a week. A day restriction is often a better tool than a high fee, and customers accept it easily once it is stated clearly.

The Yom Tov surge, when normal assumptions break

Erev Pesach, erev Rosh Hashana and erev Sukkos are not busy weeks. They are a different business. Volume is a multiple of normal, baskets are larger, and everything with slack in it runs out. Four things break, in this order: delivery capacity, stock, the website under load, and then your phone, because whatever the site fails to answer becomes a call at the busiest hour of your year. Speed work belongs in Elul, not Nissan — see site speed for online stores.

  • Open Yom Tov slots early and cap them hard. Two to three weeks out, publish the calendar with a fixed number of slots per window and let the slot be the scarce thing people compete for. That manages demand better than any message you could write.
  • Set a separate, earlier cutoff for those weeks and put it everywhere: banner, cart, checkout, confirmation email, front door.
  • Raise the minimum or suspend the far zone for that week only. This is legitimate and customers understand it.
  • Turn off same-day delivery, and move the big items — whole briskets, matzah, large roasts — to pre-order with named pickup times, out of the delivery queue entirely.
  • Freeze the site. No redesign, no checkout change, no plugin swap in the four weeks before Pesach.
  • Keep a manual fallback. If the slot system fails you need a printed route sheet and a phone list, not a debugging session.

A worked three-zone setup

A concrete example for a Brooklyn grocery. The numbers are illustrative; the structure is what to copy.

Zone 1 — LocalZone 2 — Wider BrooklynZone 3 — Out of borough
Zips11219, 11204, 1121811230, 11210, 11223, 11211, 1120610952, 10977, 10950
Minimum$40$75$200
Fee$6$12$35
Free over$125$225Not offered
DaysMonday–ThursdayTuesday, ThursdayWednesday only
Cutoff11 AM same day, else 9 PM for next day9 PM the night beforeMonday 6 PM
Windows2–5 PM, 5–8 PM1–5 PM, 5–9 PM3–8 PM

Anything outside these three zones sees pickup and a short "request delivery to my area" form, not an error.

How to set your own numbers

  1. Work out your loaded cost per driver hour — wages, payroll taxes, fuel, insurance, vehicle. Not just the hourly wage.
  2. Count real stops per hour in each area. Time a week of actual deliveries, including the drive back. The real figure is usually worse than the guess.
  3. Divide. Cost per hour ÷ stops per hour = your true cost per stop in that zone.
  4. Set the minimum so gross margin on a minimum-size order comfortably clears that cost. If margin is roughly a quarter and a Zone 3 stop truly costs $12, a $200 minimum leaves about $50 against that $12 — worth the trip. A $60 minimum is not.
  5. Set the fee to cover most of the stop cost close in and all of it further out. In Zone 1 it is partly a convenience charge; in Zone 3 it is cost recovery.
  6. Revisit every six months. Fuel and wages move, and so does where your customers live.

Two questions owners always ask

Is the delivery fee taxable?

In New York a delivery charge generally follows the taxability of what is delivered. Most unprepared grocery food sold for home consumption is exempt from New York sales tax, so delivery on an all-grocery order is generally exempt too. But candy, soft drinks and prepared foods are taxable, and on a mixed order the delivery charge normally has to be allocated between the taxable and exempt portions. Check that your software is actually doing that, rather than applying flat tax to every fee.

What does this cost to build?

Zone-by-zip pricing with per-zone minimums and fees is built into the standard store platforms and costs nothing beyond setup time. Delivery date and time-slot booking with capacity caps is where the money goes — usually an off-the-shelf plugin, commonly somewhere in the range of $50 to $150 a year, or custom work if your rules are unusual. Address autocomplete adds a small per-lookup cost. There is rough guidance on full builds in what a website should cost, and if you want the rules mapped for your own store you can start a project here.


The short version

  • Delivery costs driver minutes, not miles. One flat fee across a wide area means your close customers subsidize your far ones.
  • Use a zip code list. Simple, predictable, free, easy to change, and it matches how heimish neighborhoods are laid out. Radius rules cut streets in half; polygons are precise but nobody maintains them.
  • Minimums and fees do different jobs. The minimum decides whether the trip is worth taking; the fee covers the stop. Put the free-delivery threshold above your average order, never below.
  • State the cutoff and the window separately, run the clock on store time, cap each window, and never show a slot you cannot serve.
  • Check the zone before payment, and give out-of-zone customers pickup or a request form instead of an error.
  • Perishables need narrow windows and attended delivery. A four-hour window that is fine for seforim is not fine for chicken.
  • Attach days to zones, and plan the Yom Tov surge in advance — capped slots, an earlier cutoff, and no site changes in Nissan.

Want this handled properly?

We build websites and online stores for businesses that need them to actually work — in English and Yiddish. Tell us what you're trying to do and we'll tell you straight what it takes.