Title: EUX Pickup &amp; Delivery
Author: EUX Digital Agency
Published: <strong>16 พฤษภาคม 2026</strong>
Last modified: 26 กรกฎาคม 2026

---

Search plugins

![](https://ps.w.org/eux-pickup-delivery/assets/banner-772x250.jpg?rev=3533584)

![](https://ps.w.org/eux-pickup-delivery/assets/icon-256x256.jpg?rev=3533557)

# EUX Pickup & Delivery

 By [EUX Digital Agency](https://profiles.wordpress.org/euxdigital/)

[Download](https://downloads.wordpress.org/plugin/eux-pickup-delivery.2.0.0.zip)

 * [Details](https://th.wordpress.org/plugins/eux-pickup-delivery/#description)
 * [Reviews](https://th.wordpress.org/plugins/eux-pickup-delivery/#reviews)
 *  [Installation](https://th.wordpress.org/plugins/eux-pickup-delivery/#installation)
 * [Development](https://th.wordpress.org/plugins/eux-pickup-delivery/#developers)

 [Support](https://wordpress.org/support/plugin/eux-pickup-delivery/)

## Description

EUX Pickup & Delivery is a WooCommerce plugin developed by **EUX Digital Agency**
that inserts a dedicated Pickup & Delivery step between the shopping cart and the
checkout. Customers choose how they want to receive their order, pick a date and(
for pickup) a time slot, and then continue through to WooCommerce’s standard checkout
with their choice stored on the order.

The complete source code is available on [GitHub](https://github.com/euxagency/EUX-PAD).

### Key Features

**1. Dedicated Pickup & Delivery Step**
 * Automatically creates a “PAD” page on
activation containing the `[euxpide_pickup_delivery]` shortcode. * Redirects customers
from the cart to the PAD page before they can reach the checkout. * Optional checkout
progress bar: Shopping cart  Pickup & Delivery  Checkout  Order complete. * 5-minute
session expiry on PAD selections so stale choices cannot reach the checkout. * The
Pickup tab, the Delivery tab, or both can be enabled independently — if both are
off, the PAD step is skipped entirely. * When no bookable dates are available, customers
see store contact details (address, phone, email) instead of a dead-end error.

**2. Date and Time Slot Selection**
 * React-powered UI that fetches available dates
and time slots from the server on demand. * Configurable number of days shown in
the date picker (default 15). * Customizable date section headings for pickup and
delivery. * Pickup time slots generated from per-weekday opening hours and a configurable
interval in minutes. * Past pickup slots for the current day are hidden automatically(
WordPress site timezone). * Optional auto-refresh timer (default 5 minutes) prevents
the customer from checking out with slots that are no longer current.

**3. Pickup Settings**
 * Store pickup address, contact phone number, and opening
hours defined row-by-row per weekday (up to one row per day). * Configurable time-
slot interval in minutes. * Independent enable/disable toggle and custom label for
the Pickup tab.

**4. Delivery Settings**
 * Manage allowed delivery suburbs using WooCommerce-style
chips — type a suburb, press Enter or comma to add, × to remove. * Optional free
suburb typing, or a restricted pick list from your allowed suburbs. * Optional restriction
of the delivery form to selected WooCommerce states for your store country. * Toggle
which contact fields appear on the delivery form: first name, last name, company,
and phone (values sync to checkout shipping fields). * Paste-supported input for
bulk adding suburbs from a comma-separated list. * Case-insensitive suburb matching
on the customer’s delivery form. * Independent enable/disable toggle and custom 
label for the Delivery tab. * If no suburbs are configured (and free input is allowed),
any suburb is accepted.

**5. Rules Engine**
 * Create rules that enable or disable dates for pickup and/
or delivery. * Each rule combines multiple conditions with AND logic. * Rules are
evaluated in priority order (lowest `order` wins) — the first matching rule decides
the date. * Conditions: Days of Week, Specific Dates, Delivery/Pickup Method, Suburb,
and (when multi-store is enabled) Store. * Operators supported: _matches any of_,
_equal_, _not equal_, _contains_, _between_, _like_ / _not like_ (depending on condition
type and suburb mode).

**6. Global Appearance & Labels**
 * Customize tab labels (Delivery / Pickup) and
the continue button text. * Upload pickup and delivery icons from the WordPress 
media library. * Full colour customization via a CSS-variable-driven theme — tabs,
day selector, time selector and continue button, including hover and selected states.*
Reset colours to WooCommerce-standard defaults with a single click. * Toggle the
checkout progress bar and the date refresh timer on or off.

**7. Order Integration**
 * Saves pickup/delivery type, date, time slot and (for
delivery) suburb, postcode and special instructions to the order. * Displays the
selected method and time on the order review, admin order screen, thank-you page,
My Account orders list and transactional emails. * Adds _Type_ and _Date_ columns
to the WooCommerce orders admin list for both HPOS and legacy order storage. * Forces
the correct shipping method at checkout based on the customer’s pickup/delivery 
choice. * Shipping costs on the PAD step respect WooCommerce tax display settings(
including or excluding tax to match cart/checkout). * Hides the shipping address
section and shipping totals row automatically when pickup is selected. * Pre-fills
the delivery form from the customer’s My Account shipping address when available.*
Optional “copy shipping to billing” control at checkout for delivery orders. * Editable
from the admin order screen after the order is placed.

### Benefits for Store Owners

 * Capture the customer’s chosen date up front, so fulfilment is scheduled from 
   the moment the order is placed.
 * Restrict delivery to the suburbs and states your drivers actually service.
 * Block specific dates (public holidays, stocktake, owner leave) without editing
   code.
 * Offer click-and-collect without needing a separate pickup plugin.
 * Works with both classic and High-Performance Order Storage.

### Technical Features

 * Built for **WooCommerce 7.0+** with full **High-Performance Order Storage (HPOS)**
   compatibility.
 * Modern React front-end using `@wordpress/element` and `@wordpress/components`,
   bundled with webpack.
 * Admin UI built on native WordPress components.
 * REST API under the `euxpide/v1` namespace (settings and date availability).
 * Admin capability is filterable via `euxpide_admin_capability` (default: `manage_woocommerce`).
 * Rule engine respects the WordPress site timezone.
 * Settings and the auto-generated PAD page are cleanly removed on uninstall.
 * Core scheduling and rule evaluation run entirely inside your WordPress installation.

### External services

This plugin does **not** call EUX Digital Agency servers or include third-party 
analytics.

**Optional: Google Maps (embed)**
 If you paste a **Google Maps** HTML embed into
Pickup Settings (or a multi-store location’s map field), the customer’s **browser**
loads Google’s map resources to display that embed. Google may receive typical web
data (for example IP address, referrer, and interaction with the map) as described
in their policies. This only happens when you choose to add an embed; you can leave
map fields empty.

 * [Google Terms of Service](https://policies.google.com/terms)
 * [Google Privacy Policy](https://policies.google.com/privacy)

**Other map or iframe providers**
 If you embed another provider’s map via HTML 
iframe, the visitor’s browser loads that third party under that provider’s terms—
the plugin only outputs the HTML you save; it does not send your WooCommerce order
data to those services by itself.

## Screenshots

[⌊Customer-facing Delivery selection step⌉⌊Customer-facing Delivery selection step⌉[

Customer-facing Delivery selection step

[⌊Customer-facing Pickup selection step⌉⌊Customer-facing Pickup selection step⌉[

Customer-facing Pickup selection step

[⌊Global settings⌉⌊Global settings⌉[

Global settings

[⌊Delivery settings⌉⌊Delivery settings⌉[

Delivery settings

[⌊Pickup settings⌉⌊Pickup settings⌉[

Pickup settings

[⌊Rules settings⌉⌊Rules settings⌉[

Rules settings

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/` or upload the ZIP via **Plugins
    Add New  Upload Plugin**.
 2. Activate **EUX Pickup & Delivery** through the **Plugins** screen.
 3. Ensure **WooCommerce** is installed and active (7.0 or higher).
 4. Navigate to **Pickup & Delivery  Global Settings** to configure labels, icons and
    colours.
 5. Visit **Pickup & Delivery  Pickup Settings** to set your store address, phone and
    opening hours.
 6. Visit **Pickup & Delivery  Delivery Settings** to add the suburbs you deliver to,
    optionally restrict states, and choose which contact fields appear on the form.
 7. (Optional) Open **Pickup & Delivery  Rules** to block specific dates or weekdays,
    or to apply method-specific scheduling.
 8. Place a test order to confirm the PAD page appears between the cart and the checkout.

## FAQ

### Does this plugin work without WooCommerce?

No. WooCommerce 7.0 or later must be installed and active. If it isn’t, the plugin
will not initialize and an admin notice will appear.

### Where is the Pickup & Delivery page?

On activation the plugin creates a page titled “PAD” containing the `[euxpide_pickup_delivery]`
shortcode. It is tracked via the `euxpide_pad_page_id` option and removed automatically
on uninstall.

### Can I disable pickup or delivery independently?

Yes. Each can be turned off from its own settings page. If you disable both, the
PAD step is skipped entirely and customers go straight from cart to checkout.

### Is the plugin compatible with HPOS (WooCommerce custom order tables)?

Yes. Compatibility with the `custom_order_tables` feature is explicitly declared,
and order list columns are registered for both legacy and HPOS storage.

### Can I restrict delivery to certain suburbs or states?

Yes. Add suburbs as chips under **Delivery Settings**, and optionally turn on state
restriction to limit the form to selected WooCommerce states. When at least one 
suburb is configured in list mode, customers must enter a listed suburb (case-insensitive)
to continue. You can also allow free suburb typing.

### Can I choose which delivery form fields are shown?

Yes. Under **Delivery Settings  Delivery form fields** you can enable or disable
first name, last name, company, and phone. Enabled fields (except company, which
stays optional) are required and are written to the checkout shipping fields.

### How are pickup time slots generated?

From the opening hours you define per weekday and the interval (in minutes) set 
under **Pickup Settings**. For example, Monday 9:00–17:00 with a 60-minute interval
produces slots at 9:00–10:00, 10:00–11:00, and so on. Slots that have already started
today are not offered.

### How does the rules engine work?

A rule has an objective (Enable Day or Disable Day) and one or more conditions that
must all match (AND logic). When multiple rules could affect the same date, the 
one with the lowest `order` value wins. A rule needs at minimum a date-scope condition(
Days of Week or Specific Dates) plus a Method condition.

### Does the plugin send any data to an external service?

The plugin itself does not phone home. Optional map embeds (see **External services**
in this readme) load in the visitor’s browser only if you add them in settings.

### Can I customize the look of the PAD page?

Yes. Tab colours, day and time selector backgrounds and text colours, and continue-
button hover states are all exposed under **Global Settings**. You can also upload
custom icons and change tab labels.

### Why does the customer get redirected back to the PAD page from the checkout?

If the session has expired (older than 5 minutes) or the customer tried to reach
the checkout directly without making a selection, they are sent back to the PAD 
page to choose a method and date.

### What happens when the plugin is uninstalled?

The uninstall script removes the auto-created PAD page and deletes the settings 
options (`euxpide_global_settings`, `euxpide_pickup_settings`, `euxpide_delivery_settings`,`
euxpide_rules`, and `euxpide_pad_page_id`). Order meta saved against existing orders
is preserved.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“EUX Pickup & Delivery” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ EUX Digital Agency ](https://profiles.wordpress.org/euxdigital/)

[Translate “EUX Pickup & Delivery” into your language.](https://translate.wordpress.org/projects/wp-plugins/eux-pickup-delivery)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/eux-pickup-delivery/),
check out the [SVN repository](https://plugins.svn.wordpress.org/eux-pickup-delivery/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/eux-pickup-delivery/)
by [RSS](https://plugins.trac.wordpress.org/log/eux-pickup-delivery/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.0.0

 * New: Configurable delivery form contact fields (first name, last name, company,
   phone) with checkout shipping sync.
 * New: Store contact panel when no pickup or delivery dates are available.
 * New: Hide past pickup time slots for the current day (site timezone).
 * New: Delivery date / pickup date section labels in settings.
 * Improved: Restrict delivery to selected WooCommerce states for your store country.
 * Improved: Optional free suburb input vs allowed-suburb pick list.
 * Improved: Shipping costs on the PAD step follow WooCommerce tax-inclusive / exclusive
   display settings.
 * Improved: Prefill the delivery form from the customer’s My Account shipping address.
 * Improved: On activation, default WooCommerce “ship to” destination to the customer
   shipping address.
 * Improved: Filterable admin capability via `euxpide_admin_capability`.
 * Dev: WordPress Coding Standards / PHPCS cleanup for WordPress.org distribution.

#### 1.0.2

 * Nomenclature change (`euxpide_` prefixes, shortcode, and options aligned with
   the plugin slug).

#### 1.0.1

 * WordPress.org compliance: unique main class name, text domain aligned with plugin
   slug, no trialware rule locks, no raw inline script/style in flagged locations,
   readme external-services documentation for optional map embeds, contributor list.
 * Coding standards, security hardening, and tooling for distribution.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **2.0.0**
 *  Last updated **2 สัปดาห์ ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/eux-pickup-delivery/)
 * Tags
 * [checkout](https://th.wordpress.org/plugins/tags/checkout/)[delivery](https://th.wordpress.org/plugins/tags/delivery/)
   [pickup](https://th.wordpress.org/plugins/tags/pickup/)[scheduling](https://th.wordpress.org/plugins/tags/scheduling/)
   [woocommerce](https://th.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://th.wordpress.org/plugins/eux-pickup-delivery/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/eux-pickup-delivery/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/eux-pickup-delivery/reviews/)

## Contributors

 *   [ EUX Digital Agency ](https://profiles.wordpress.org/euxdigital/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/eux-pickup-delivery/)