=== Chwazi - Delivery & Pickup Scheduling for WooCommerce ===
Contributors: uriahs-victor
Tags: woocommerce, woocommerce delivery date, woocommerce pickup date, timepicker, datepicker
Requires at least: 5.7
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.5.2
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Empower customers to select their preferred delivery or pickup time using a convenient datetime picker integrated into the WooCommerce checkout page.

== Description ==

[Chwazi](https://chwazidatetime.com) (pronounced Shway-zee) is a Delivery & Pickup Scheduling Date Time Picker Plugin for WooCommerce that allows store owners to add date and time fields (date calendar and timepicker) to the checkout page so customers can choose their desired date and time for receiving an order. It's a full-featured order scheduling plugin for WooCommerce which allows you to fine-tune the customer's checkout process.

Customers can choose between creating a Delivery order where you deliver to them, or a Pickup order where they pickup. The plugin allows for powerful scheduling features that lets you set what days and times you offer delivery/pickup services.

--> [Checkout the Demo](https://plugin-demos.instawp.xyz/dps/shop/) <--

## NOTE

The plugin does not currently support the WooCommerce Blocks checkout. To use this plugin you need to have a normal checkout page that has the `[woocommerce_checkout]` shortcode. If you're setting up a brand new website with a fresh version of WooCommerce installed on it, then by default, WooCommerce will create your checkout page as a Blocks checkout page. 

For this plugin to work, you need to **delete all contents of that blocks page** and add the shortcode: `[woocommerce_checkout]` inside it. Please read [this doc to learn more](https://chwazidatetime.com/docs/switching-to-classic-checkout/).

Once thats done you'll have the normal WooCommerce checkout page and the plugin options will show. Still need help? Submit a support request [here](https://chwazidatetime.com/contact).

## How Can Chwazi - Delivery & Pickup Scheduling for WooCommerce Help Me?

This plugin is great for stores that need to know what date and/or time is best to deliver customer orders since customers have the ability to set the date and/or time that is best for them.

The plugin can work for stores that just accept customer pickups, or stores that only do delivery, or stores that do both!

The plugin is not limited to stores that sell food or physical items. It can also be used on service websites such as Taxi websites, or Service Provider websites-- so that customers can choose a date and time they'd like to be picked up (in the case of a taxi website) or the date and time the plumber should come (in the case of a service provider website)

> Works Great with Kikote!
>
> The plugin works great with [Kikote - Location Picker at Checkout for WooCommerce](https://wordpress.org/plugins/map-location-picker-at-checkout-for-woocommerce/). Feel free to try them both out!


## 🌟 WooCommerce Checkout Calendar Plugin

Chwazi - Delivery & Pickup Scheduling plugin adds a full checkout calendar to your WooCommerce store. With this calendar customers can choose their desired dates for delivery or pickup of orders. The days of the week available to customers are based on what you set in the plugin's settings.

## 🌟 WooCommerce DateTime Picker Plugin

It's also possible to allow customers to select the time they'd like the order to be received or picked up. Store owners can create different time slots for various days of the week that customers can select, or they can leave a day without time slots so customers can choose any time they wish.

## 🌟 WooCommerce Schedule Orders in Google Calendar Plugin

Seamlessly integrate with Google Calendar to eliminate manual entry and streamlining order management. The [Google Calendar Add-On](https://chwazidatetime.com/google-calendar-add-on/) allows you to Schedule WooCommerce orders inside Google Calendar. With the Custom Event Builder feature, you can tailor events with dynamic order details using intuitive Magic Tags. Stay organized by tracking deliveries, pickups, and order specifics in one centralized hub (Google Calendar). Elevate your workflow efficiency and minimize errors with Chwazi's Google Calendar for WooCommerce.

## 🌟 WooCommerce Order Reminder Plugin

With the Reminders feature, you can automatically notify customers about their upcoming delivery/pickup orders. This adds an extra bit of professionalism to your WooCommerce store; always keeping customers up to date on their order.

## 🌟 WooCommerce Conditional Products Plugin

Conditional Products lets you create rules that control when specific products can be purchased from your store. This is perfect for stores that sell items that are only available on certain days, at certain times, or only for a specific fulfillment type.

With the Conditional Products feature, you can automatically show or hide products depending on the rules that you set.

**Examples of how you can use it:**

**Weekend-only menu items**: Only show certain products on Saturdays and Sundays.

**Cutoff times**: Hide same-day items after a certain time (for example, “Lunch Specials” disappear after 11:00am).

**Delivery-only or pickup-only items**: Make certain products available only when the customer selects Delivery, or only when they select Pickup.

**Limited-time offerings**: Show seasonal or promotional items only during specific date ranges or specific days of the week.

**Operational constraints**: Hide products when you know you cannot fulfill them (for example, products that require special staff or equipment that is only available on certain days).

[Learn more](https://chwazidatetime.com/features/conditional-products/).


## Chwazi - Delivery & Pickup Scheduling Features

✅ **Display Options** - Select where on the checkout page you'd like the date and time picker to show.

✅ **Locale Settings** - Set your timezone, preferred date and time format as well as which day the week starts on. It's also possible to change different text shown by the plugin on the front end of the website.

✅ **Email Display Settings** - Set in which emails the order fulfillment date and time selected by the customer appears as well as the position in the email.

✅ **Default order type** - Set the default order type offered by your store, whether Delivery or Pickup.

✅ **Order type offered by store** - The plugin is a full-featured delivery plugin for WooCommerce, you can choose to only offer delivery on your store or allow pickups as well. These terms are subjective since some websites can consider a "pickup" as a "delivery"!

✅ **Operating Days** - Set the days when you offer delivery or pickup on your WooCommerce store. It's also possible to set the number of days in advance a customer can place a delivery/pickup order to give you maximum flexibility.

✅ **Operating Times** - Set the times for individual days that you plan to offer delivery/pickup services. They can work independently!

✅ **Timeslot Fees** - Want to charge extra if a customer places a late order? Set custom fees for your created timeslots quick and easily.

✅ **Reminders** - Automatically send emails to customers notifying and reminding them about their upcoming order.

✅ **Customer Note** - Show a message to the customer below the date and time picker fields. This can be used to show your store address in the case of pickup orders.

✅ **Localization Settings** - You have the ability to change different text shown on the frontend of the website. Don't want to use the word "Delivery"? No problem, change it to "We Deliver" if you like! It's also possible to change the calendar language and use your own native text for days and months.

✅ **Locations** - Create delivery or pickup locations that customers can select to receive their orders. You can also set which locations are available on various days of the week and timeslots.

✅ **Conditional Products** - Control when certain products show on your shop catalog based on rules you set such as day of the week, time of the day, product category, product tag and product name.

These are just a few scheduling features for WooCommerce that are possible with our Chwazi - Delivery & Pickup Scheduling plugin. Download and give it a shot and let us know if there's any features you'd like to see by posting it on the [support forum](https://wordpress.org/support/plugin/delivery-and-pickup-scheduling-for-woocommerce/)

### Below are a few types of stores that would benefit tremendously from this plugin:

- Online Food Delivery websites
- Online Supermarkets
- Online Furniture websites
- Restaurants offering delivery via their website
- Hardware Rental & Delivery websites
- Car Rental websites
- Pickup service websites
- Taxi and pickup scheduling websites
- And more

### How it works

Once enabled from the General settings, the plugin works by adding a Switcher on the checkout page that lets customers switch between "Delivery" and "Pickup"

It also adds a datepicker and a timepicker field. The customer selects their desired date from the calendar that shows when the date picker field is clicked and can also select their desired time from the time picker field.

Its possible to make both of these fields required as well disabling either one of them.

When a customer switches an order to "Delivery", all "local pickup" shipping methods are removed. When they select "Pickup" ONLY "local pickup" shipping methods are returned.

> Works Great with Printus!
>
> The plugin works great with [Printus - Cloud Printing Plugin for WooCommerce](https://wordpress.org/plugins/printus-cloud-printing-for-woocommerce/). Feel free to try them both out!

### Free Features 🛰️
- Ability to see fulfillment days and times right from the WooCommerce orders view page.
- Ability to change various text shown by the plugin on the frontend of the website.
- Hides shipping methods based on the order type selected.
- Show fulfillment date/time inside the customer or admin emails.
- Delivery/Pickup Date scheduling features.
- Delivery/Pickup Time scheduling features.
- Order reminders, let customers know about their upcoming order.
- Time slot fees.
- And more.

### Premium Features 🚀

- Fulfillment Type Selection Modal. (Let site visitors to choose their desired fulfillment type seconds after landing on your store).
- Conditional Products. [Learn more](https://chwazidatetime.com/features/conditional-products/).
- Delivery Capacity restrictions (restrict number of orders by date or time).
- Off Days (Set the days you will not be available).
- Hide Delivery/Pickup options based on User Role.
- Additional time slot fee types.
- Locations feature (let customers select their pickup or delivery location).

--> [Try out the PRO Demo](https://app.instawp.io/launch?t=dps) <--

Have a feature in mind? Feel free to submit it on the support forum.


### Configuring Plugin:

- The plugin settings are located in **WordPress Admin Dashboard->SoaringLeads->Delivery & Pickup Scheduling** tab.

### Plugin Documentation

- You can find the plugin documentation [here >>>](https://chwazidatetime.com/docs/)

### Feature Requests

- Please post them [here >>>](https://plugins.soaringleads.com/)

### Add-Ons

- [Google Calendar Add-On](https://chwazidatetime.com/google-calendar-add-on/?utm_source=wporg&utm_medium=plugin-description&utm_campaign=addon-upsell) - Schedule WooCommerce orders in Google Calendar.

### Misc

- Learn more about the plugin or Purchase the PRO version [Here >>>](https://chwazidatetime.com)
- Checkout our other plugin Kikote - Location Picker at Checkout - WooCommerce Checkout Map - Google Address AutoFill Plugin [Here >>>](https://lpacwp.com)
- Learn how to improve your WooCommerce shipping strategy with these tips [Here >>>](https://lpacwp.com/blog/improving-woocommerce-shipping-strategy/?utm_source=wporg&utm_medium=plugin-description&utm_campaign=blog-promo)

This plugin is free software, and the most important features have been kept free and open to use so that all can benefit. If you like the plugin and believe that it's helped grow your business, then please consider [leaving a review](https://wordpress.org/support/plugin/delivery-and-pickup-scheduling-for-woocommerce/reviews/#new-post).


== Installation ==

1. Extract the downloaded zip file and upload the `delivery-and-pickup-scheduling-for-woocommerce` folder to the `/wp-content/plugins/` directory
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Configure the plugin in SoaringLeads->Delivery & Pickup Scheduling

Alternatively, install this plugin by searching for it from the plugins area of your WordPress website.

== Frequently Asked Questions ==

= Fields date and time do not show on checkout page =

Make sure that the plugin has been enabled in SoaringLeads->Delivery & Pickup Scheduling->General Settings.

== Screenshots ==

1. Example on checkout page.
2. Choosing Manual time for a day.
3. Choosing pre-made time slots.
4. General Settings (Plugin needs to be enabled to show on checkout page).
5. Order Type (Choose the types of orders you accept).
6. Delivery Date (Independent of Pickup settings).
7. Pickup Date (Independent of Delivery settings).
8. Delivery Capacity by Day (PRO).
9. Delivery Capacity by Time slot (PRO).
10. Off Days (PRO).
11. Order edit screen metabox showing delivery/pickup details with countdown.
12. Delivery & Pickup Scheduling and Location Picker at Checkout active at the same time.
13. Fulfillment information shown in order email (with customer location on a map at the bottom using Kikote Plugin).
14. Reminders feature - Setup for Delivery orders (separate settings for pickup orders).
15. Reminders feature - Example email received by customer.
16. Time Slot Fees  - Set custom fees for delivery/pickup time slot.
17. Google Calendar Add-On - Delivery order.
18. Google Calendar Add-On - Pickup order.
19. Google Calendar Add-On - Event Builder for creating description of events.

== Upgrade Notice ==

== Changelog ==
If you like Chwazi, please take a moment to [give a 5-star rating](https://wordpress.org/plugins/delivery-and-pickup-scheduling-for-woocommerce/reviews/?rate=5#new-post). It helps to keep development and support going strong. Thank you!

= 1.5.2 (2026-04-23) =
* [Fix PRO] Bug where shop page would crash if no conditional product rules are setup.
* [Change] Move `Please wait` localization text input from fulfillment modal section to checkout section.
* [Dev] Updated Freemius SDK.
* [Info] Tested on WC 10.7.

= 1.5.1 (2026-03-20) =
* [Improvement] Show conditional products notice.

= 1.5.0 (2026-03-20) =
* [New PRO] Conditional Products feature! Create rules that determine which days and times certain products on your store are displayed or hidden. [Learn more](https://chwazidatetime.com/features/conditional-products/).
* [Dev] Updated Freemius SDK.
* [Info] Tested on WP 6.9
* [Info] Tested on WC 10.6.

= 1.4.9 (2026-01-06) =
* [Change] Added `pending` status to the list of order statuses that will not trigger reminder emails.
* [Improvement] Minor improvements to the plugin settings page.
* [Info] Tested on WP 6.9.
* [Info] Tested on WC 10.4.

= 1.4.8 (2025-10-21) =
* [New] Option in Display Settings to adjust fulfillment details alignment in emails.
* [Change] Replaced some icons and rearranged some settings.
* [Improvement] Add gifs of PRO features in their respective tab to demo what the feature looks like in the PRO version.
* [Improvement] Other text and code improvements.

= 1.4.7 (2025-10-19) =
* [New PRO] Fulfillment Type Selection Modal! Let customers choose their desired fulfillment type seconds after landing on your store. [Learn more >>>](https://chwazidatetime.com/docs/fulfillment-type/#show-a-fulfillment-type-selection-modal-pro)
* [Info] Tested on WC 10.3.

= 1.4.6 (2025-09-29) =
* [Fix] Issue where fulfillment column on orders screen would always show order type as Pickup for orders performed while Chwazi wasn't active.
* [Dev] Updated Freemius SDK.
* [Info] Addressed WP Plugins Team concerns.

= 1.4.5 (2025-07-17) =
* [Fix] Current date was showing in order emails when date field was disabled for checkout.
* [Change] The capability required for viewing the Chwazi submenu options has changed from `manage_options` to `manage_woocommerce`.
* [Change] Reminder emails will no longer be sent for orders with the status "refunded", "failed", "draft".
* [Improvement] Firing of action responsible for sending reminder emails.
* [Improvement] If both the date and time are disabled on the checkout, the orders page will now show the localized order type selected instead of a blank field.
* [Dev] Updated Freemius SDK.
* [Info] Tested on WC 10.

= 1.4.4 (2025-02-06) =
* [Fix] Order Type buttons were not working on checkout page.

= 1.4.3 (2025-02-03) =
* [New] Added some more strings that can be manually translated from the Localization settings of Chwazi (Checkout Page).
* [Fix] Don't send reminder emails to customers if their order has been completed or cancelled.
* [Fix] Selecting "Pickup" order type on checkout will now "ship to different address" and shipping fields when making use of order type buttons.
* [Change] Move location of `chwazi_times_for_day_after` filter to make it more flexible.
* [Dev] Updated Freemius SDK.
* [Info] Tested on WC 9.6.0.

= 1.4.2 (2025-01-07) =
* [New PRO] Added Timeslot specific locations feature. This feature lets you select which locations are available for specific timeslots on a given day of the week. [Learn more >>>](https://chwazidatetime.com/docs/delivery-pickup-scheduling/#locations-pro-feature)
* [Fix] Issue where Timeslot fees would not be applied to checkout fees.
* [Fix] The height of the Chwazi input fields on the checkout form.
* [Dev] Updated Freemius SDK.
* [Info] Tested on WC 9.5.

= 1.4.1 (2024-10-31) =
* [Fix] Issue where order placement buffer feature was removing some timeslots when using 12hr time format.
* [Fix] Some older sites with older WooCommerce installations would get a class not found error due to not having HPOS support files present in Woocommerce.
* [Dev] Added `chwazi_times_for_day_before` and `chwazi_times_for_day_after` filters for controlling the timeslots sent back to the checkout page before/after Chwazi has performed some of it's logic on them.
* [Dev] Updated Freemius SDK.
* [Info] Tested on WP 6.7-rc2.
* [Info] Tested on WC 9.4-rc2.

= 1.4.0 (2024-08-14) =
* [Change] NOTE: The operation of "Maximum days in future" feature has been changed. Setting this option to 0 will no longer set an unlimited days in the future. It will instead set the max order date to "today". If you previously had this option set to 0 for unlimited, then you should now set an actual number value for the amount of days in the future that you'd like orders to be limited to.
* [Info] Tested on WC 9.2-rc1.
* [Info] Tested on WP 6.6.
* [Dev] Updated Freemius SDK.

= 1.3.0 (2024-06-23) =
* [New] Added feature to make timeslot fees taxable.
* [Improvement] Order placement buffer time will now work for times in the future past the current date.
* [Fix] Issue with 12hr time sometimes hanging checkout due to incorrect normalizing of time.
* [Fix] Checkout would be prevented if only Pickup scheduling was enabled in Chwazi but customer tried to use a normal flat rate delivery method.
* [Change] Allow saving of order type to order meta even when no date and time fields are present on checkout.
* [Change] Do not save location meta data if location feature not being used.
* [Info] Update pot language file.
* [Info] Tested on WC 9.
* [Info] Update Google Calendar Add-on when updating to this version of Chwazi.

= 1.2.7 (2024-03-17) =
* [New] Option to include current day in when calculating minimum and maximum days in future.
* [Info] Add notice for sites using WooCommerce Blocks Checkout.
* [Info] Tested on WP 6.5-RC2.
* [Info] Tested on WC 8.7-RC1.


= 1.2.6 (2024-02-19) =
* [Info] Version bump

= 1.2.5 (2024-02-19) =
* [New] Google Calendar Add-On. Sync your store orders to your Google Calendar. [Learn more](https://chwazidatetime.com/google-calendar-add-on/)
* [Improvement PRO] Use standard method for getting maxed dates everywhere the option is needed.
* [Fix] False positive when logging the outcome of retrieving timeslot fees.
* [Info] Tested on WC 8.6.

= 1.2.4 (2024-02-01) =
* [Fix] Console error when countdown timer element not present on page.
* [Change] Added official plugin name "Chwazi". Meaning "To choose"/"Choice" in Saint Lucian Creole.
* [Change] Update site links to new https://chwazidatetime.com domain.

= 1.2.3 (2024-01-17) =
* [Fix] Fulfillment details were not being added to Invoice emails.
* [Info] Tested on WC 8.5.
* [Dev] Updated Freemius SDK.

= 1.2.2 (2023-12-20) =
* [New] Set dynamic checkout fees based on time slots. [Learn more](https://chwazidatetime.com/docs/delivery-pickup-scheduling/#enable-time-slot-fees)
* [New] Added a new "Buttons" option for order type selection on checkout page.
* [Fix] Reminder emails were not being sent out.
* [Improvement PRO] Cancelled orders will now decrease the number of pending orders for that date when using the Order Capacity feature; allowing customers to select newly freed up dates/time slots.
* [Dev] Allow filtering of available timezones shown in plugin settings.
* [Info] Tested on WP 6.4.
* [Info] Tested on WC 8.4.

= 1.2.1 (2023-10-22) =
* [Dev] Update stable tag.

= 1.2.0 (2023-10-22) =
* [New] Order Placement Buffer feature. Allows store owners to set a safe amount of time for preparing customer orders. 
* [New] Add option to control filtering of shipping methods by the plugin. This was always enabled before, it can now be turned off or on.
* [Dev] Allow filtering of plugin's order data before saving using `dps_order_data` filter.
* [Dev] Began moving to Carbon PHP library for working with dates and times.
* [Dev] Update Freemius SDK.
* [Info] Compatibility with WC HPOS.
* [Info] Tested on WC 8.2.

= 1.1.2 =
* [Fix] Console error when replacing time field on sites using only Pickup features of the plugin.
* [Change] Roleback current time feature. Time shown was not respecting site timezone.
* [Dev] Updated Freemius SDK.

= 1.1.1 =
* [Dev] Version bump.

= 1.1.0 =
* [New] Reminders feature. Send customers email reminders before their delivery/pickup order.
* [New] Option to remove passed time slots from dropdown.
* [New] Option to show current time on checkout page.
* [Fix] Validation was being ran on Time and Date field even when features were turned off.
* [Fix] Duplicate time field on mobile.
* [Improvement] Automatically hide shipping fields when customer switches to "Pickup" order type.
* [Improvement] Don't show order details countdown timer when no time was selected for order.
* [Improvement] Block time selection field while Ajax is running.
* [Improvement] Added localization fields for "Order type", "Order date" and "Order time" text that show in emails.

= 1.0.14 =
* [Fix PRO] Customer note would not show unless locations feature was turned on.
* [Fix PRO] Store location text would show on Thank You page when feature was not turned on.
* [Fix] Shipping methods were not always updating based on order type.
* [Info] Tested on WC 8.0.
* [Info] Tested on WP 6.3.

= 1.0.13 =
* [Fix] Error checking out when no email options are selected in plugin settings.
* [Info] Tested on WP 6.3.

= 1.0.12 =
* [Improvement] Remove Kikote plugin related JS logic since Kikote Visibility Rules can take care of it.
* [Dev] Updated Freemius SDK.

= 1.0.11 =
* [Fix] Call to undefined method.
* [Fix] Console error when hiding non-existent Kikote saved addresses field.

= 1.0.10 =
* [Dev] Version bump.

= 1.0.9 =
* [Compatibility] Always show Kikote's store selector dropdown when order type is Pickup and option to hide the store selector is set to false.
* [Info] Tested on WC 7.9.
* [Dev] Updated Freemius SDK.

= 1.0.8 =
* [New PRO] Locations feature to create different delivery and pickup locations that customers can select from.
* [New] Option to hide [Kikote](https://wordpress.org/plugins/map-location-picker-at-checkout-for-woocommerce) map and store selector when switching order type to "pickup".
* [Dev] Updated Freemius SDK.
* [Info] Tested on WC 7.7.
* [Info] Tested on WC 7.8.0-rc2.

= 1.0.7 =
* [Fix] Wrong text for the option that controls which emails to include the date and time fields inside.

= 1.0.6 =
* [New] Added Orders "Fulfillment" column to show order date and time.
* [New] Added Localization fields so store owners can change the "Order Type", "Delivery", "Pickup", "Change order to" texts on the checkout page as well as text on order details page.
* [New] Hide delivery and pickup methods based on the order type.
* [New] General Settings option to add selected order type, order date & time fields to the order emails.
* [New PRO] Hide shipping or delivery option based on User Role.
* [Info] Tested on WP 6.2.
* [Info] Tested on WC 7.5.

= 1.0.5 =
* [Fix] Review notice was not stopping when dismissed.
* [Improvement] Add a copy of POT file for self translations. You're encouraged to however submit translations [here](https://translate.wordpress.org/projects/wp-plugins/delivery-and-pickup-scheduling-for-woocommerce/)
* [Improvement] Update plugin assets.
* [Info] Tested on WP 6.2-beta5.
* [Info] Tested on WC 7.4.

= 1.0.4 =
* [Improvement] Add some content to SoaringLeads menu item.

= 1.0.3 =
* [Fix] Wrong request key when grabbing time slots for a particular day.
* [Improvement] Made plugin's menu structure and logic better.
* [Improvement] Add wp.org plugin assets.
* [Info] Tested on WC 7.3.

= 1.0.2 =
* [Info] Version Bump.

= 1.0.1 =
* [Info] Version Bump.

= 1.0.0 =
* [Info] Initial release.