Add delivery and pickup time slots to WooCommerce checkout: a plugin you can build today
· 5 min read
A WooCommerce store that offers delivery or local pickup has two jobs at checkout: take the order and agree on a time. If you are handling the time agreement through order notes, you are doing it twice. The customer writes a preference. You confirm by email or phone. Someone misses a message and the order ends up at the wrong time, or a customer books a slot that does not exist.
The standard fix is a dedicated plugin like Orderable, which handles slot management with capacity limits, blocked dates, and delivery zone rules. That is the right tool for a complex operation. For a store with fixed opening hours and a small number of slots per day, a custom build does the same core job: a date picker and time slot dropdown at checkout, stored on the order, visible to staff and customers.
What one build gives you
- Date and time slot selection at WooCommerce checkout, required before the order can be placed
- Admin settings for available days of the week, configurable slot labels, and how many days ahead customers can book
- The selected date and slot stored as order meta and displayed in the admin order view and confirmation email
- Blocking unavailable days and out-of-window dates in the checkout date picker
What it does not do
- Slot capacity limits that prevent customers from choosing a slot already at its maximum number of orders
- Different time slot schedules for delivery versus local pickup shipping methods
- Holiday or blackout date management beyond the configurable booking window
- Changing or cancelling a booked time slot after the order has been placed
Orderable does these. This covers the part most sites use.
The prompt
Loads into the composer so you can edit it first. Nothing is built, and nothing is charged, until you send it.
Build a WordPress plugin for WooCommerce that adds delivery and pickup time slot selection to the checkout. Add a settings page under WooCommerce > Delivery Slots with three fields: a checkbox list of available days of the week (Monday through Sunday, all checked by default), a textarea for time slot labels entered one per line with four default slots covering a working day (9:00 - 11:00, 11:00 - 13:00, 13:00 - 15:00, 15:00 - 17:00), and a number input for how many days ahead customers can book (default 7). Add two required fields to the WooCommerce checkout form, positioned after the order notes field: a date picker that disables days of the week not checked in settings and blocks dates outside the booking window, and a dropdown of the configured time slot labels. Validate that both fields are completed before the order can be submitted. Save the selected date and time slot as order meta. Display the selected date and slot on the WooCommerce order confirmation page, in the customer order confirmation email, and in the WooCommerce admin order edit screen under a Delivery or Pickup heading.
Why order notes do not work for scheduling
Order notes are a free-text field. They accept anything, confirm nothing, and send no alert when a customer writes something the store cannot accommodate. A customer who picks Saturday at 9am on a store that closes Saturday at noon will not know that until someone calls them. A customer who forgets to write anything at all places an order with no time information attached.
The downstream problem is operational. Staff have to check every order for a time preference, chase the ones that have none, and maintain a schedule that lives somewhere outside WooCommerce. Confirmed or not, the order count in the admin looks the same. A proper slot field makes the chosen time part of the order record from the moment of purchase.
What the plugin delivers
A Steem build for this job adds a date picker and time slot dropdown to the WooCommerce checkout form, positioned after the order notes field. Both fields are required before the order can be placed.
How to install and use it
Paste the prompt below into Steem and download the generated zip. Install it under Plugins > Add New > Upload Plugin. Go to WooCommerce > Delivery Slots and configure your available days, slot labels, and booking window. The defaults are all seven days, four slots covering a standard working day, and a seven-day booking window.
Open your checkout and confirm that the date picker and slot dropdown appear after the order notes field. Place a test order and check that the selected date and slot appear on the confirmation page, in the email, and in the WooCommerce admin order view for that order.
When a managed plugin makes more sense
If you need to block slots that have reached a maximum number of orders, this build does not do that. It records the customer's choice but does not track how many orders already carry each slot. A store selling a fixed number of spots per slot needs capacity logic: Orderable and similar plugins handle this.
If your delivery and pickup windows are different, for instance longer delivery slots on weekdays and shorter pickup windows at weekends, you need slot sets tied to the shipping method. That is a different build from the one described here. For a store that offers the same slots regardless of how the customer is collecting, this custom plugin covers the job.
Questions
- Does this work for stores with both delivery and local pickup?
- The same date picker and slot dropdown appear for all orders regardless of shipping method. If you need different slot schedules for delivery and pickup separately, that requires a second build that ties slot sets to shipping methods.
- Will customers see if a slot is fully booked?
- No. The plugin does not track how many orders have been placed for each slot, so all slots remain available regardless of demand. If you need capacity limits, a managed plugin like Orderable is the right tool.
- Where does the selected slot appear after the order is placed?
- On the order confirmation page, in the customer confirmation email, and in the WooCommerce admin order edit screen under a Delivery or Pickup heading.
- Can I add or change time slots after the plugin is installed?
- Yes. Edit the slot list in WooCommerce > Delivery Slots at any time. The change applies to new orders immediately; existing orders keep the slot that was chosen at checkout.
The prompt
Loads into the composer so you can edit it first. Nothing is built, and nothing is charged, until you send it.
Build a WordPress plugin for WooCommerce that adds delivery and pickup time slot selection to the checkout. Add a settings page under WooCommerce > Delivery Slots with three fields: a checkbox list of available days of the week (Monday through Sunday, all checked by default), a textarea for time slot labels entered one per line with four default slots covering a working day (9:00 - 11:00, 11:00 - 13:00, 13:00 - 15:00, 15:00 - 17:00), and a number input for how many days ahead customers can book (default 7). Add two required fields to the WooCommerce checkout form, positioned after the order notes field: a date picker that disables days of the week not checked in settings and blocks dates outside the booking window, and a dropdown of the configured time slot labels. Validate that both fields are completed before the order can be submitted. Save the selected date and time slot as order meta. Display the selected date and slot on the WooCommerce order confirmation page, in the customer order confirmation email, and in the WooCommerce admin order edit screen under a Delivery or Pickup heading.
Steem