Boxed flower arrangements being loaded into the back of a small delivery van on a quiet residential street at dawn

← All posts

Flower Delivery Pricing: How to Charge by Zone

·NuFlorist Team·7 min read·Updated September 15, 2026

A flat delivery fee is the most common pricing decision in floristry and one of the most expensive. It looks fair, it is simple to explain, and it means the customer two streets away subsidises the one forty minutes across town — while the forty-minute run quietly loses you money on every trip.

Zone pricing fixes it. Here is how to build it without annoying the customers you already have.

Work out what a delivery actually costs you

Before setting any price, get a real number. For a given run:

  • Driver time, door to door, including the wait at the door and the return leg. This is the big one and it is usually underestimated by half.
  • Vehicle cost — fuel, insurance, maintenance, amortised over the miles.
  • Failed-delivery risk. Some percentage of deliveries need a second attempt. That percentage is much higher in office districts and gated communities.
  • Packing time and materials for transport-safe arrangements.

Time one week of real deliveries with a stopwatch. Most shops discover their average delivery takes noticeably longer than they assumed, and that the distribution has a long tail — a handful of runs eat an entire afternoon.

That tail is the entire argument for zones.

Draw zones by drive time, not distance

The instinct is to draw concentric circles on a map. Resist it. Five miles across a river with one bridge is not five miles down an arterial road.

Build zones from drive time in your actual traffic, then express them as lists of postcodes so the system can price them automatically. Three or four zones is usually right:

Zone Typical shape What it should cover
Zone 1 0–15 minutes Your immediate neighbourhood. Highest volume, lowest cost per drop.
Zone 2 15–30 minutes The bulk of a typical shop's deliveries.
Zone 3 30–45 minutes Worth doing at the right price. Often needs batching.
Zone 4 45+ minutes By arrangement, minimum order, or not at all.

More than four or five zones and you are building a spreadsheet nobody will maintain. Fewer than three and you are back to flat pricing with extra steps.

Price each zone against the cost you measured

Take your measured cost per drop in each zone and add margin. Two rules keep this sane:

Zone 1 should be cheap enough to feel like a local shop. This is your defensible territory. If a customer four streets away pays the same as one across the county, you are inviting a competitor to undercut you where you are strongest.

The far zone should carry a minimum order value, not just a higher fee. A $15 posy going 45 minutes each way is not rescued by a delivery surcharge — the driver time is the same whether the order is small or large. A minimum order value routes that trip to a size that justifies it.

A three-zone Miami example

Here is a simple way to see zone pricing in practice. Our NuFlorist demonstration store uses three sample delivery zones:

Demo zone Example ZIP codes Sample delivery fee
Miami Central 33130, 33131, 33132 $12
Grove and Gables 33133, 33134, 33146 $15
Miami Beach 33139, 33140, 33141 $18
NuFlorist delivery settings showing Miami Central at $12, Grove and Gables at $15, and Miami Beach at $18
NuFlorist demo settings, captured September 15, 2026. The three Miami zones match the sample fees above. The separate New York row is unrelated demo data, not part of this Miami example.

These are demonstration prices, not recommended prices for your shop. Build your own fees from driver time, vehicle costs, packing, and unsuccessful delivery attempts. A ZIP-code list defines coverage; it does not measure traffic or prove that every address in the zone has the same delivery cost.

To test a configuration like this, add an arrangement to the cart, select United States and Florida, and enter a ZIP code. Choose an available delivery date, delivery time, and location type before calculating the fee. In our test, 33131, 33133, and 33139 returned $12, $15, and $18 respectively.

NuFlorist settings preview of the delivery widget with country, state, ZIP code, and delivery date fields
The built-in settings preview shows the customer fields. Its default unavailable message is illustrative: no address has been checked in this screenshot, and it does not show a calculated delivery price.

Then test an address outside your zones. In our demo, ZIP 32801 returned no shipping rates and a prompt to verify in checkout. A failed estimate alone does not prove that an order will be blocked. Before launch, use test checkout to confirm the final shipping charge and how your store handles an unsupported address. Check pickup separately; it follows a different fulfillment flow.

Your zones also need a simple maintenance routine. Revisit them when delivery costs change, a road closure changes travel time, or the shop changes its service area. Keep a named person responsible for the ZIP lists and prices.

See the delivery and pickup features for configuration details, or book a NuFlorist walkthrough to review the customer flow and your Shopify plan requirements.

Rush, same-day and timed windows

These are separate charges layered on top of the zone price, because they cost you different things:

  • Same-day breaks your production schedule. It is worth a premium because it displaces planned work, not because it travels further.
  • Timed windows ("before noon", "between 2 and 4") constrain routing, which is what actually costs money. The narrower the window, the higher the surcharge.
  • Sunday and holiday delivery carries a labour premium, and should be priced as one rather than absorbed.

The critical piece is the cutoff, and it must be enforced by the system, not by goodwill. If same-day closes at 1pm, the checkout must stop offering it at 1pm. A customer who buys same-day at 1:15 and does not receive it has been sold something you could not deliver, and no apology recovers that as cheaply as the checkout refusing the sale.

Free delivery, used deliberately

Free delivery is a marketing instrument, not a pricing policy. Used with a threshold it works well:

  • Free over a certain order value within Zone 1 only. Cheap for you, powerful locally, and it raises average order value.
  • Free delivery on subscriptions or repeat accounts, where the lifetime value justifies it.

What does not work is blanket free delivery everywhere. The cost does not disappear; it moves into your stem prices, which makes your arrangements look expensive next to a competitor who charges delivery honestly.

Show the price before checkout

Unexpected delivery cost is one of the most-cited reasons shoppers abandon carts, according to the Baymard Institute's cart-abandonment research, and the mechanism is specific: it is not that the fee is high, it is that it appears late. A customer who has chosen an arrangement, written a card message and entered an address does not want a surprise at the final step.

Put a postcode checker on the product page. Let people see their zone price and whether same-day is still open before they invest effort. You will lose a few sales you were never going to keep, and you will convert more of the ones you were.

Wire it up so it prices itself

None of this survives being run by hand. A member of staff looking up a postcode on a laminated card will get it wrong on the busy days, which are exactly the days it matters.

What you want is: customer enters the delivery postcode, the system resolves the zone, applies the zone rate plus any rush surcharge, and enforces the cutoff — the same way whether the order comes through the website, over the phone, or at the counter.

That last clause matters. If your website prices by zone but your counter charges a flat fee out of habit, you have two prices for the same service, and the first customer to notice will tell you about it.

NuFlorist supports delivery zones configured with U.S. ZIP codes or Canadian postal codes and zone-based rates. See the delivery feature details for supported settings and Shopify plan requirements. Test both the cart estimate and the final checkout rate on your own store. Address-verification behavior depends on configuration; do not assume that an unavailable estimate prevents checkout. Shopify POS has a separate staff workflow that should be tested with the same delivery examples before the shop relies on it.

Migrating from flat to zone pricing

Changing delivery prices on an existing customer base needs a light touch:

  1. Model it first. Run your last three months of orders through the proposed zones. You are looking for how many existing customers pay more, and by how much.
  2. Set Zone 1 at or below your old flat rate. Most of your regulars live there. If your most loyal customers see a price cut, the change reads as fair rather than extractive.
  3. Announce it once, plainly, framed as what it is: local deliveries cost less, long ones cost more.
  4. Honour standing arrangements for account customers through their current cycle.

Done in that order, the change is usually met with indifference, which is the best possible outcome for a pricing change.

The measurement that tells you it worked

Track margin per delivery by zone, monthly. Not revenue — margin.

If Zone 3 is still negative after the change, the price is too low or the minimum order value is too low. If Zone 1 volume is growing, the local pricing is doing its job.

Most shops that do this discover their delivery operation was roughly break-even overall, hiding a profitable core and a genuinely loss-making fringe. Seeing those separately is the point.

  • delivery
  • pricing