How Order Delivery calculates delivery and pickup dates

How Order Delivery works out the earliest shipping, delivery and pickup dates.

Beka Rice Avatar

Written by

Last updated


Order Delivery works out the earliest date a customer can choose in two steps: first the day the order can ship (or be ready for pickup), then the first delivery or pickup day after that. Knowing the order of those steps explains almost every "why is my first date Thursday?" question.

When you’d use this

  • The first date at checkout is later (or earlier) than you expect.
  • You want to offer same-day or next-day delivery, or same-day pickup.
  • You’re deciding between a lead time and a delivery range for the same result.

How it works

Every setting named below is defined on Order Delivery settings.

Step 1: the shipping date

Order Delivery starts at the moment the customer is at checkout and steps forward one day at a time. A day counts toward the Lead time in days only if all of these are true:

  1. It’s one of your Order picking days.
  2. It isn’t blocked in the Disable picking dates calendar.
  3. If it’s today, the time is before that day’s cut-off (the day’s own Cut-off time:, or else the Order picking cut-off time). With no cut-off set, today counts whatever the time.

Once the lead time is used up, the next day that counts is the shipping date. With a lead time of 0, the first day that counts is the shipping date, so an order placed on a picking day before the cut-off ships the same day.

Cut-offs use your WordPress timezone under Settings » General. Choose a city rather than a UTC offset, so cut-offs follow daylight saving time.

Step 2: the earliest delivery or pickup date

Order Delivery finds the range that matches the customer’s shipping method in Advanced delivery ranges (or Advanced pickup ranges for pickup), adds its From (days) to the shipping date in calendar days, and takes the first day from there that:

  • is turned on in Delivery days (or Pickup days),
  • isn’t blocked in the Disable delivery/pickup dates calendar for the customer’s country and state,
  • allows the customer’s shipping method, and
  • has room left: the day’s order limit isn’t reached, or, if the day has time frames, at least one time frame for that shipping method isn’t full.

That day is the first date in the calendar. Later dates go through the same checks, so a full or blocked day is grayed out.

Step 3: the last date

The calendar ends at today plus Show dates for the next. The range’s To (days) doesn’t shorten it. With a calendar, if no date in that window passes the checks in step 2, the Delivery details section doesn’t appear at checkout at all.

Estimates instead of a calendar

When Customers should is See an estimated date, the same calculation runs, and customers see text instead of a calendar:

  • Delivery: "We estimate that your order will be shipped on [shipping date]." followed by "The delivery will take approximately [From – To] working days from the shipping date."
  • Pickup: "Your order will be ready to pick up on [date]."

The range’s From (days) and To (days) fill in the delivery estimate.

Which range applies

Ranges are matched by shipping method, top to bottom. The first range whose shipping methods include the customer’s method is used, and the Default range covers every method no other range lists. Out of the box the Default range is 1 to 10 days for both delivery and pickup, which means the earliest date is the day after the shipping date. To offer delivery or pickup on the shipping date itself, give the matching range a From (days) of 0.

Example: lead time 1 with a 14:00 cut-off

Picking Monday to Friday, Order picking cut-off time 14:00, Lead time in days 1, every day a delivery day, and the Default range of 1 to 10 days:

Order placedShipping dateEarliest delivery
Monday 10:00TuesdayWednesday
Monday 15:00WednesdayThursday
Friday 15:00TuesdayWednesday

At 10:00 on Monday, Monday counts and uses up the lead day, so Tuesday is the shipping date. At 15:00 Monday is past the cut-off, so Tuesday uses up the lead day and Wednesday is the shipping date. On Friday at 15:00, Friday is past the cut-off and the weekend isn’t a picking day, so Monday uses up the lead day and Tuesday is the shipping date.

Example: same-day delivery

  1. Set Lead time in days to 0.
  2. Set an Order picking cut-off time, such as 12:00, so late orders move to the next day.
  3. Give the range for your same-day shipping method a From (days) of 0. Edit the Default range, or add a range limited to that method so other methods keep their own timing.
  4. Make sure the delivery days you need are on.

An order on Monday at 10:00 can be delivered on Monday. At 13:00, Monday is past the cut-off, so the earliest delivery is Tuesday. An order on Saturday ships on Monday, the next picking day, and can be delivered that day.

Example: next-day delivery

Two setups give a customer next-day delivery. Both start from a picking cut-off, such as 14:00.

  • You prepare and deliver yourself: set Lead time in days to 1 and the range’s From (days) to 0. An order on Monday at 10:00 ships on Tuesday and can be delivered on Tuesday.
  • A carrier takes a day: set Lead time in days to 0 and leave From (days) at 1, as in the Default range. An order on Monday at 10:00 ships on Monday and can be delivered on Tuesday.

The customer sees the same date either way; the difference is the Shipping date on the order. After the cut-off, both setups move the earliest delivery to Wednesday.

Example: same-day pickup

  1. Set Show dates/estimates for to Pickup only or Both delivery & pickup.
  2. Set Lead time in days to 0 and an Order picking cut-off time, such as 15:00.
  3. In Pickup scheduling, edit the Default pickup range (or add one for your Local pickup method) and set From (days) to 0.
  4. Turn on the Pickup days you’re open.

An order on Monday at 11:00 can be picked up on Monday. After 15:00, the shipping date moves to the next picking day, and the earliest pickup is the first pickup day on or after it.

Common issues

The first date is a day later than expected

The Default range starts at 1 day, so the earliest date is the day after the shipping date. Set From (days) to 0 on the range for that shipping method.

The first date is several days out

Check, in order: the lead time (only picking days count), whether the order came in after the cut-off, the From (days) of the range that matches the customer’s method, disabled picking and delivery dates, and whether earlier days are full or exclude that shipping method.

Cut-offs happen at the wrong time

Order Delivery uses your WordPress timezone. The notice at the top of the Settings section shows the time it’s using; if it’s wrong, set your timezone to a city under Settings » General.

For more symptoms, see Troubleshoot Order Delivery.

Keep learning