the counter, or delivery to an address, while the ASAP option lets them ask for the earliest time you can serve instead of picking a slot. Both appear in the same box on your checkout page.
Restaurants lose time when the order does not say how or when it should be served. Setting these two options up once means every ticket that reaches your kitchen carries the mode (dine-in, pickup, delivery), the table and party size for seated guests, and either a booked time or ASAP.

Requirements #
- WooCommerce active, with your food products published.
- WP Cafe Pro active and licensed. Dine-in and ASAP are pro features.
- The Pickup, Delivery, and Dine-in modules enabled in WP Cafe.
- Opening hours set for pickup and delivery, because the time slots customers see come from that schedule.
| Prerequisite: If a module is switched off in WP Cafe > Modules, none of its settings apply and its option never shows at checkout. Turn the module on first, then open its settings screen. |
Step 1: Turn on the order types you offer #
Go to WP Cafe > Modules > Food Ordering and enable the modules you actually run. Turn off any you do not offer. A cafe with no drivers should keep Delivery off so it never appears at checkout.

Scroll down the same list and switch on Dine-in to add the third order mode.

Step 2: Set up pickup #
Go to WP Cafe > Food Ordering > Pickup and decide which fields the customer fills in.
- Turn on Show Date in checkout page so customers pick the day they will collect the order.
- Turn on Show Time in checkout page so they pick a time slot.
- Set a Minimum Preparation Time that matches your kitchen, and a minimum order amount if you use one.

Enable at least one of the two fields. Pickup counts as available only when the date field, the time field, or both are shown. With both off, pickup never appears as an option at checkout.
Step 3: Set up delivery #
Go to WP Cafe > Food Ordering > Delivery and turn on Show Date in checkout page, Show Time in checkout page, or both. The same rule applies, at least one must be on for delivery to appear. Delivery keeps its own preparation time and minimum order amount, so you can hold delivery to a higher minimum than pickup.
Step 4: Set up dine-in #
Go to WP Cafe > Food Ordering > Dine In. Three switches control how dine-in behaves.

| Setting | What it does |
| Allow customer-facing dine-in checkout | Shows the Dine-in option to customers. Turn it off if only your staff should create dine-in orders from the admin side. |
| Show table picker on checkout | Shows the table selection UI. When off, a plain Table # text box is rendered instead, which helps if your branch has no seat plan yet. |
| Require a table on submission | Blocks a dine-in order that carries no table reference. Keep it on for table service, off for counter-collect setups. |
A dine-in order collects two extra values, Table # and Party size. Party size stays optional. The table is required only when you turn on Require a table on submission.
Step 5: Check the selector on your checkout page #
Add an item to the cart and open the checkout. You see a row of radio buttons, Delivery, Pickup, and Dine in, followed by the fields for whichever one is selected. Selecting Dine in swaps the date and time fields for Table # and Party size.
| Note: The selector appears only when two or more order types are available. If you offer pickup alone, no radio buttons show and every order is a pickup order. The first available option is preselected in this order: Pickup, then Delivery, then Dine-in. |
Step 6: Add the ASAP option #
ASAP adds an As soon as possible entry at the top of the time dropdown. Customers pick it instead of a clock time, and the order records ASAP as the requested time.
- Go to WP Cafe > Food Ordering > Pickup and turn on Show ASAP in Time dropdown.
- Open the Delivery screen and turn on the matching switch if you want ASAP for delivery too.
- Click Save Changes.

The two switches work independently, so you can offer ASAP pickup and keep delivery on booked slots. ASAP lives inside the time dropdown, so Show Time in checkout page has to be on for that order type. With the time field hidden, the option has nowhere to appear.

Step 7: Match preparation time to your kitchen #
Preparation time decides how soon ASAP really is. WP Cafe takes the current time, adds the preparation time, and rounds up to your next slot. That slot is the earliest a customer can select, and it is what ASAP resolves to.
- Global value: set per order type on the Pickup and Delivery screens.
- Per product value: set on the product itself. When the cart holds several items, the longest preparation time wins.
A slow-roast item with a 45 minute preparation time pushes the whole cart to the next slot that fits it, so set these values from your real cook times.
Where order type and timing show up in your admin #
Go to WooCommerce > Orders. The Order Type column shows Pickup, Delivery, or Dine In. Pickup and delivery orders also show the requested date and time, or ASAP. Dine-in orders show the table and party size.

- Single order screen: the same details sit under the billing address, with the branch the order belongs to and, for staff-created dine-in orders, who created it.
- Thank you page and order emails: the customer sees their order type, timing, and location.
- Kitchen receipts: the order type is available as a block in your receipt layout, so a ticket can print DINE IN and the table number at the top.
Dine-in also works without the customer-facing option. Staff and manager roles can create and edit dine-in orders from the admin side, so waiters take the order on a tablet while Allow customer-facing dine-in checkout stays off.
What can hide an order type #
| Situation | What happens and where to change it |
| A guest scanned a table QR code | Pickup and Delivery are hidden for that visitor, so a seated guest sees only Dine-in. Turn on Show Pickup and Delivery to QR customers in QR Code settings if your codes are also printed on leaflets. |
| The cart holds a table reservation | Order type and timing controls are hidden, because the guest arrives at the booked time. This is automatic. |
| A branch overrides online ordering | The branch settings replace the global pickup and delivery switches. Edit the branch in Locations. |
| The cart total is below your minimum | Checkout blocks the order and shows the minimum amount. Adjust the minimum order amount globally or per branch. |
| Orders are paused for the branch | The paused order type disappears from checkout and the mini cart until you resume. See Pause Orders. |
Frequently Asked Questions (FAQ) #
| Q1: Why do the order type radio buttons not appear on my checkout? Only one order type is available, and the selector needs two or more. Check that each order type you offer has its module on, and that pickup and delivery each show at least one of the date or time fields. A branch that overrides online ordering can also cut the list down to one. |
| Q2: Why is Dine-in missing at checkout? Check three things in order. The Dine-in module is on in WP Cafe Modules, Allow customer-facing dine-in checkout is on in the Dine In settings, and orders are not paused for that branch. A cart that holds a reservation also hides the order type controls. |
| Q3: Why is Pickup or Delivery missing at checkout? Both Show Date and Show Time are off for that order type, so it does not count as available. Turn at least one on. If your site runs several branches, open the branch and check whether it overrides online ordering with its own pickup and delivery switches. |
| Q4: Why does the As soon as possible option not show? Either the ASAP switch is off for that order type, the time field is hidden at checkout, or the selected date has no slots left. Slots run out late in the day, on holidays, and on closed days, and ASAP is offered only while the day still has one free. |
| Q5: Does ASAP skip my preparation time? No. ASAP resolves to the first slot you can realistically serve, which is the current time plus the preparation time, rounded up to your next slot. It never pushes an order ahead of your kitchen capacity, and it never lands on a day other than the one selected. |
| Q6: A customer says the time they picked is no longer available. Why? Slots are checked again when the order is submitted. If preparation time moved the earliest slot past their choice while they filled in the form, they are asked to pick a later time. Shorten the preparation time, or widen your slot interval, if this happens often. |
| Q7: A dine-in order arrived without a table number. How do I prevent that? Turn on Require a table on submission in the Dine In settings. The order then cannot be placed without a table reference. Party size stays optional either way, so guests are never blocked by a field they do not know how to answer. |
| Q8: Can I run dine-in without showing it to customers? Yes. Turn off Allow customer-facing dine-in checkout. The Dine-in radio disappears from both the classic and block checkouts, while your staff and manager roles keep creating dine-in orders from the admin side with the table and party size fields. |
| Q9: Do these settings work with the block based WooCommerce checkout? Yes. The order type selector, the dine-in table and party size fields, and the ASAP entry all work on the classic shortcode checkout and the block checkout. Pickup and delivery slots come from the same schedule in both, so customers see the same times. |
Conclusion #
With the WP Cafe order type selector and the ASAP option set up, every order tells your kitchen how it is served and when it is due, whether the guest is seated at a table, collecting at the counter, or waiting at home. Open your checkout, place one test order in each mode, and check how it reads in WooCommerce > Orders.