Accept orders from tables

Restaurants can offer Order from table as a WooCommerce shipping method and collect a table code with the order. Configure a shipping zone that covers the intended customers before enabling the method. Table codes identify a table; they do not authenticate customers or grant access.

  1. Open Settings → POM Tweaks → E-Commerce → Shipping.
  2. Enable Order from table and click Save.
  3. Open WooCommerce → Settings → Shipping → Shipping zones, edit the appropriate zone and add Order from table.
  4. Edit its Title, Tax status and optional fixed Cost. An empty cost means zero; costs must be non-negative. Save the method.
  5. At checkout, choose that method and enter the required Table code.
  6. Inspect the resulting order: the table code appears in its administration details and processing/on-hold order emails, including plain-text emails.

Existing Order from table instances continue to use their saved titles, costs and tax settings. The tweak never creates or enables a zone instance automatically. WooCommerce handles tax calculation, payment validation and order persistence, including HPOS.

Classic checkout

Table orders omit the native billing details and do not need a shipping address. Custom billing fields retain their own requirements. Switching back to ordinary shipping restores normal billing fields. Optional checkout registration is disabled for table orders; a store policy requiring an account still applies.

A checkout URL may supply table_id to prefill the code, for example ?table_id=T12. This only fills the field; it does not choose the shipping method. Existing integrations using the checkout_table_code cookie are also supported. Values are treated as plain text and limited to 100 characters; 0 is a valid code.

If the classic Delivery method selector is enabled, its Order from table choice uses this module's enabled state. Selecting table service restricts rates to table methods; selecting delivery or take away excludes table methods. The table code is stored by this module independently of that selector.

Checkout block

With WooCommerce's conditional additional checkout fields available, Table code appears and becomes required when an Order from table rate is selected. Choosing an ordinary rate hides it. Blocks retain their native contact and address interfaces; the classic billing-field omission does not alter block address forms.

Both checkout interfaces preserve the established checkout_table_code order metadata and the inside value of checkout_delivery_type for integrations. WooCommerce shipping method and instance identities remain unchanged.

Verify and troubleshoot

Try one table order and one ordinary delivery on a staging site. A missing table code must stop the table order, while ordinary delivery must not require it. Verify the expected charge and tax, then inspect the saved code.

If the method is absent, check the matching zone, enabled instance and other rate filters. Prefer free shipping can hide a paid table method when ordinary shipping selection also offers a free rate. When the delivery selector explicitly selects table service, only table rates participate.

Disable Order from table and save to stop offering this method. Existing orders and WooCommerce zone settings remain stored. Re-enable it to make configured instances available again.

Related: Shipping method details and Checkout fields and order confirmations.