# BrandBees Delivery Scheduling for WooCommerce

[![License: GPL v2 or later](https://img.shields.io/badge/License-GPL%20v2%20or%20later-blue.svg)](https://www.gnu.org/licenses/gpl-2.0.html)
[![WordPress](https://img.shields.io/badge/WordPress-6.0%2B-blue.svg)](https://wordpress.org/)
[![WooCommerce](https://img.shields.io/badge/WooCommerce-8.0%2B-purple.svg)](https://woocommerce.com/)
[![PHP](https://img.shields.io/badge/PHP-8.0%2B-blue.svg)](https://www.php.net/)

> Manage delivery slots and schedules for WooCommerce orders with advanced booking, capacity management, and flexible time windows.

BrandBees Delivery Scheduling for WooCommerce is a powerful WordPress plugin that allows you to create and manage delivery time slots for your WooCommerce store. Perfect for restaurants, grocery stores, florists, and any business that needs to schedule deliveries or pickups.

## Table of Contents

- [Features](#-features)
- [Requirements](#-requirements)
- [Installation](#-installation)
- [Configuration](#-configuration)
- [Usage](#-usage)
- [Screenshots](#-screenshots)
- [FAQ](#-frequently-asked-questions)
- [Developer Documentation](#-developer-documentation)
- [Contributing](#-contributing)
- [Changelog](#-changelog)
- [Support](#-support)
- [License](#-license)

## Features

### Core Features

- **Flexible Delivery Schedules** - Create custom delivery time slots for different days of the week
- **Capacity Management** - Set maximum orders per time slot to prevent overbooking
- **Cutoff Times** - Define cutoff times to prevent same-day orders after certain hours
- **Pickup & Delivery Support** - Support both delivery and pickup fulfillment methods
- **Holiday Management** - Block specific dates when you're closed
- **Preparation Time** - Set global or per-product preparation times
- **Estimated Delivery Display** - Show customers when their order will arrive
- **WooCommerce Blocks Compatible** - Works with both classic and block-based checkout
- **Email Integration** - Delivery information included in order emails
- **Admin Order Display** - View delivery details in WooCommerce admin
- **Custom Labels** - Customize all customer-facing text
- **Developer Friendly** - Extensive hooks and filters for customization

### Perfect For

- Restaurants and food delivery services
- Grocery stores and meal kit services
- Florists and gift shops
- Furniture and appliance retailers
- Bakeries and catering services
- Any business requiring scheduled deliveries

## Requirements

### Minimum Requirements

- **WordPress:** 6.0 or greater
- **WooCommerce:** 8.0 or greater
- **PHP:** 8.0 or greater
- **MySQL:** 5.7 or greater

## Installation

### Automatic Installation

1. Log in to your WordPress dashboard
2. Navigate to **Plugins > Add New**
3. Search for "BrandBees Delivery Scheduling"
4. Click **"Install Now"** and then **"Activate"**

### Manual Installation

1. Upload the plugin folder to `/wp-content/plugins/`
2. Activate the plugin through the **'Plugins'** menu in WordPress
3. Go to **WooCommerce > Delivery Slots** to configure

## Configuration

After activation, navigate to **WooCommerce > Delivery Slots** in your WordPress admin panel to configure:

1. **Delivery Settings** - Set up your delivery schedules and time slots
2. **Pickup Settings** - Configure pickup time slots (if applicable)
3. **Cutoff Time** - Define daily cutoff times for same-day orders
4. **Preparation Time** - Set global or per-product preparation times
5. **Holiday Manager** - Add holidays and closure dates
6. **Custom Labels** - Customize all customer-facing text
7. **Estimated Delivery** - Configure estimated delivery display settings

## Usage

### Setting Up Delivery Schedules

1. Go to **WooCommerce > Delivery Slots > Delivery**
2. Create time slots for each day of the week
3. Set capacity limits for each slot (optional)
4. Configure cutoff times if needed

### Managing Holidays

1. Navigate to **WooCommerce > Delivery Slots > Holiday Manager**
2. Add dates when you're closed
3. These dates will be automatically blocked from selection

### Customizing Labels

1. Go to **WooCommerce > Delivery Slots > Custom Labels**
2. Customize all customer-facing text to match your brand

## Screenshots

1. Delivery schedule configuration
2. Time slot settings with capacity
3. Checkout delivery date picker
4. Checkout time slot selection
5. Order confirmation with delivery details
6. Admin order view with delivery info
7. Settings panel overview
8. Holiday management

> **Note:** Screenshots coming soon. Check the [documentation](https://brandbees.com/docs/) for visual guides.

## Frequently Asked Questions

### Does this work with WooCommerce Blocks checkout?

**Yes!** The plugin fully supports both classic checkout and the new block-based checkout.

### Can I set different time slots for different days?

**Yes**, you can create completely custom schedules with different time slots for each day of the week.

### Can I limit how many orders per time slot?

**Yes**, you can set a maximum capacity for each time slot to prevent overbooking.

### Does this work with local pickup?

**Yes**, the plugin supports both delivery and pickup fulfillment methods.

### Can I block certain dates?

**Yes**, you can add holidays and special closure dates in the Holiday Management section.

### Is there a way to prevent same-day orders?

**Yes**, use the Cutoff Time feature to set a daily cutoff time. Orders placed after this time will only show dates starting from the next day.

### Can I customize the text customers see?

**Yes**, all customer-facing labels and messages can be customized in the Custom Labels settings.

## Developer Documentation

### Hooks & Filters

The plugin provides numerous hooks for customization:

#### Actions

- `brandbees_before_delivery_fields` - Before delivery fields output
- `brandbees_after_delivery_fields` - After delivery fields output
- `brandbees_delivery_slot_booked` - When a slot is booked
- `brandbees_delivery_slot_released` - When a slot booking is released

#### Filters

- `brandbees_available_dates` - Modify available delivery dates
- `brandbees_available_slots` - Modify available time slots
- `brandbees_delivery_date_format` - Change date format
- `brandbees_time_slot_format` - Change time slot format
- `brandbees_preparation_time` - Modify preparation time calculation
- `brandbees_cutoff_time` - Modify cutoff time logic

### Example Usage

```php
// Modify available delivery dates
add_filter( 'brandbees_available_dates', function( $dates ) {
    // Your custom logic here
    return $dates;
});

// Hook into slot booking
add_action( 'brandbees_delivery_slot_booked', function( $order_id, $slot_data ) {
    // Your custom logic here
}, 10, 2 );
```

For more information, visit our [developer documentation](https://brandbees.com/docs/).

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

Please make sure to follow the [WordPress Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/).

## Changelog

### 1.0.0 - 2026-01-28

**Initial Release**

- Flexible delivery schedule creation
- Capacity management per time slot
- Cutoff time configuration
- Holiday management
- Pickup and delivery support
- WooCommerce Blocks compatibility
- Email integration
- Custom label support
- Preparation time calculator
- Estimated delivery display

## Support

- **Documentation:** [View Docs](https://brandbees.com/docs/)
- **Email:** support@brandbees.com

## Privacy Policy

BrandBees Delivery Scheduling for WooCommerce does not:
- Collect any user data
- Use cookies
- Connect to external services
- Track users

All data is stored locally in your WordPress database.

## License

This plugin is licensed under the [GPL v2 or later](https://www.gnu.org/licenses/gpl-2.0.html).

```
Copyright (C) 2026 Hassan Ejaz

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
```

## Author

**Hassan Ejaz**

- Website: [brandbees.net](https://brandbees.net/)
- Plugin URI: [brandbees.com/plugins/brandbees-delivery-scheduling](https://brandbees.com/plugins/brandbees-delivery-scheduling)
