⭐ WooCommerce Plugin v1.5.0

Super Delivery & Pickup

The complete solution for managing delivery zones, pickup locations, time slot scheduling, tips, holidays, and capacity limits for your WooCommerce store.

Powerful Features

Everything you need to manage restaurant delivery & pickup orders

🚗

Dual Zone Methods

Choose between Zip/Postal Code zones or Distance Radius zones with Google Maps. One global setting for all zones.

📍

Google Maps

Address autocomplete, real-time distance calculations, and automatic checkout field filling.

🏪

Pickup Locations

Multiple pickup locations with GPS coordinates. Shows distance to nearest location.

🕐

Separate Time Slots

Configure different time slots for Delivery and Pickup independently, per day of the week.

💵

Delivery Fees

Set delivery fees per zone. Fees are automatically added to the order total at checkout.

💰

Flexible Discounts

Separate discount percentages for delivery and pickup. Exclude specific product categories.

🎄

Holiday / Closed Dates

Mark specific dates (Christmas, vacations) as closed. Customers see "Holiday" in the date picker.

📊

Slot Capacity Limits

Set a maximum number of orders per time slot. Full slots are automatically disabled at checkout.

❤️

Customer Tips

Preset tip buttons (percentage or fixed) with custom amount option. Tips appear in order totals and receipts.

🛍️

Shop Page Popup

Optional popup asking customers to choose Delivery or Pickup before browsing products.

🖨️

Printer Compatible

Works with Star Cloud Printer and receipt printers. Order details appear automatically on receipts.

🌍

Translation Ready

All strings are translatable. Works with Loco Translate, WPML, and Polylang. French included.

1. Installation

Get started in minutes

📦 WordPress Upload

  • 1

    Download the super-delivery-pickup.zip file

  • 2

    In WordPress admin, go to Plugins → Add New → Upload Plugin

  • 3

    Choose the ZIP file and click Install Now

  • 4

    Click Activate Plugin

📁 FTP Upload

  • 1

    Extract the ZIP file on your computer

  • 2

    Upload the super-delivery-pickup folder to /wp-content/plugins/

  • 3

    Go to Plugins → Installed Plugins

  • 4

    Find the plugin and click Activate

After activation, a new menu item "Super Delivery & Pickup" appears in the WordPress sidebar with a car icon 🚗. This is your settings hub.

2. General Settings

Navigate to Super Delivery & Pickup → General tab

⚙️ Core Settings

The first settings you should configure

Enable Delivery / Enable Pickup

Check these boxes to activate each option on the checkout page. You can enable one or both. If both are disabled, the plugin does nothing.

Enable Auto-Fill Address

When checked, selecting a delivery zone in Zip Code mode automatically fills the customer's postcode and city fields. This prevents customers from entering an address outside the zone they selected.

Enable Shop Page Popup

Shows a popup on the shop page asking customers to choose "Delivery" or "Pickup" before they start browsing. Their selection is pre-filled on the checkout page. See the Shop Popup section for details.

Days to Show

How many upcoming days appear in the date dropdown at checkout. Default: 7. If you set it to 14, customers can book up to 2 weeks ahead.

Delivery Lead Time / Pickup Lead Time (Minutes)

Minimum advance notice required. For example, if set to 60, a customer ordering at 11:00 AM won't see time slots before 12:00 PM. Each type has its own lead time.

Example: Delivery Lead Time = 45 Customer orders at 14:00 → earliest available slot starts after 14:45

Delivery Discount (%) / Pickup Discount (%)

Automatic discount applied to orders. Set to 0 for no discount. For example, enter 10 to give 10% off on all pickup orders.

Exclude Categories from Discount

Select product categories that should NOT receive the discount. Hold CTRL (or Command on Mac) to select multiple. Common use: exclude "Drinks" or "Extras" from the discount.

📮 Delivery Zone Mode

Choose how customers select their delivery location

Option A: Zip/Postal Code Based

Customers select a zone from a dropdown. You define each zone by listing zip codes. No API key required. Best for: fixed delivery areas with clear postal code boundaries.

Option B: Distance Radius Based

Customers enter their address with Google autocomplete. The system calculates the distance from your store and checks if they're within a delivery zone. Best for: radius-based delivery (e.g., "within 5 km of our store").

Distance mode requires a Google Maps API key with Places API, Maps JavaScript API, and Geocoding API enabled. See the Google Maps section.

Google Maps API Key

Only visible when Distance mode is selected. Paste your Google API key here.

Distance Unit

Choose Kilometers (km) or Miles for distance calculations.

3. Delivery Zones

Navigate to Super Delivery & Pickup → Delivery Zones tab

🚚 Creating a Delivery Zone

Click "Add New Zone" to create a zone

Zone Name

A descriptive name shown to customers. This appears in the checkout dropdown.

Examples: "Paris Centre", "Zone 1 - Nearby", "Downtown"

Zip Codes (Zip Code mode only)

Enter the zip/postal codes that belong to this zone, separated by commas. The zone name and zip codes are shown together in the checkout dropdown as: "Paris (75001, 75002, 75003)".

75001, 75002, 75003, 75004

Distance Radius (Distance mode only)

The maximum delivery distance from the linked pickup location in km or miles. Customers within this radius can order delivery.

Minimum Order

Minimum cart total required for this zone. If the customer's cart is below this amount, a message is shown at checkout. Set to 0 for no minimum.

Example: Minimum Order = 25 Customer with a €18 cart sees: "Minimum order: €25.00"

Delivery Fee

Flat delivery fee charged for orders in this zone. This fee is added as a line item in the order total. Set to 0 for free delivery.

You can create multiple zones with different fees: "Nearby" = €2, "Further" = €5, "Far" = €8.

📮 Zip Code Mode — What Customers See

  • A dropdown listing all zones with zip codes: "Paris (75019, 75020)"
  • Selecting a zone auto-fills city and postcode in checkout
  • Minimum order and delivery fee are checked automatically
  • Address fields are locked after zone selection

📍 Distance Mode — What Customers See

  • A Google autocomplete address input field
  • Typing an address shows suggestions from Google
  • After selection, distance is calculated instantly
  • Green message "✓ Delivery available!" or red message if outside range
  • All address fields are auto-filled from Google

4. Pickup Locations

Navigate to Super Delivery & Pickup → Pickup Locations tab

🏪 Adding a Pickup Location

Click "Add New Location" to create a location

Location Name

The name shown to customers in the checkout dropdown.

Examples: "Main Store - Rue de Rivoli", "Kitchen Lab - Belleville"

Address, City, Postcode

The full address of the pickup location. In Distance mode, this address is used to calculate delivery distances.

Latitude / Longitude

GPS coordinates for distance calculations. In Distance mode, these are filled automatically when you enter an address using Google autocomplete. In Zip Code mode, you can leave them empty.

How Customers Choose a Location

Zip Code mode: A simple dropdown with all locations listed by name.

Distance mode: Customers enter their address, and the plugin shows all locations sorted by distance. Each location shows how far it is from the customer.

If you have only one pickup location, it is automatically selected for the customer — no dropdown shown.

5. Time Slots

Navigate to Super Delivery & Pickup → Time Slots tab

🕐 Separate Delivery & Pickup Slots

Configure different schedules for each order type

The Time Slots tab has two sub-tabs: 🚚 Delivery and 🏪 Pickup. Click on each to configure independently. This lets you have different hours for delivery and pickup.

Example: Delivery = 11:00-14:00 and 18:00-22:00 Pickup = 10:00-22:00 (all day, customers come when they want)

Enabling / Disabling Days

Each day of the week has a checkbox. Uncheck to disable that day entirely. Disabled days appear in the checkout dropdown as grayed out with "— Closed".

What customers see: ✓ Monday, 3 February (Today) ✓ Tuesday, 4 February ✗ Wednesday, 5 February — Closed ← grayed out, cannot select ✓ Thursday, 6 February

Method 1: Manual Entry

Type time slots directly in the textarea, one per line. Use the format HH:MM - HH:MM.

11:00 - 11:15 11:15 - 11:30 11:30 - 11:45 11:45 - 12:00 12:00 - 12:15

Method 2: Auto Generate

Click "Auto Generate" to switch to the generator. Configure:

  1. Time Periods — Set opening and closing times. You can add multiple periods for breaks (e.g., 11:00-14:00 lunch + 18:00-22:00 dinner).
  2. Interval — Duration of each slot in minutes (e.g., 15 for 15-minute slots).
  3. Click Generate Slots — the slots are created and filled into the textarea automatically.
After generating, you can switch to Manual Entry to edit individual slots — add, remove, or rearrange as needed.

Adding Multiple Time Periods (Breaks)

Click the "+ Add Time Period" button to add another opening/closing pair. This is useful for restaurants with lunch and dinner service:

Period 1: Opening 11:30 → Closing 14:30 (lunch) Period 2: Opening 18:30 → Closing 22:30 (dinner) Interval: 15 minutes → Generates: 11:30-11:45, 11:45-12:00, ..., 14:15-14:30, 18:30-18:45, ..., 22:15-22:30

6. Holiday / Closed Dates

Navigate to Super Delivery & Pickup → General tab → bottom of page

🎄 Managing Closed Dates

Block specific dates for holidays, vacations, or special closures

Below the General settings form, you'll find the "Closed / Holiday Dates" section. This is separate from the weekly day-off schedule (which is in Time Slots). Use this for specific calendar dates.

Adding a Closed Date

  1. Click the date picker field and select a future date
  2. Click "Add Closed Date"
  3. The date appears in the table below with the day name
Your closed dates table: ┌─────────────────────┬───────────┬─────────┐ │ Date │ Day │ Actions │ ├─────────────────────┼───────────┼─────────┤ │ 25 December 2025 │ Thursday │ ✕ │ │ 1 January 2026 │ Thursday │ ✕ │ │ 10-17 February 2026 │ (week) │ ✕ │ └─────────────────────┴───────────┴─────────┘

Removing a Closed Date

Click the red button next to the date. A confirmation dialog appears before deletion.

What Customers See

Holiday dates appear in the checkout date dropdown as grayed out with "— Holiday", distinct from regular weekly closed days that show "— Closed".

Checkout date dropdown: ✓ Tuesday, 23 December ✓ Wednesday, 24 December ✗ Thursday, 25 December — Holiday ← grayed, holiday ✗ Friday, 26 December — Holiday ← grayed, holiday ✗ Sunday, 28 December — Closed ← grayed, weekly day off

Automatic Cleanup

Past dates are automatically removed when the settings page loads. You don't need to clean up old holidays manually.

For vacation weeks, add each date individually. For example, for a week off from Feb 10-16, add all 7 dates.
Holiday dates apply to both Delivery and Pickup. There is no way to close only delivery on a holiday while keeping pickup open.

7. Max Orders per Slot

Navigate to Super Delivery & Pickup → General tab → Capacity section

📊 Slot Capacity Limits

Prevent overbooking by limiting orders per time slot

Setting the Limit

Enter a number in the "Max Orders per Time Slot" field.

  • 0 = Unlimited (no capacity check) — this is the default
  • 5 = Maximum 5 orders per slot
  • 1 = Only 1 order per slot (exclusive time booking)

How It Works

When a customer selects a date on checkout, the plugin checks how many existing orders (processing, on-hold, completed, or pending) are already booked for each time slot on that date. Full slots appear grayed out with "— Full".

Checkout time slot dropdown (with max 5 orders): ✓ 11:30 - 11:45 ✓ 11:45 - 12:00 ✗ 12:00 - 12:15 — Full ← 5 orders already, grayed out ✓ 12:15 - 12:30 ✗ 12:30 - 12:45 — Full ← grayed out ✓ 12:45 - 13:00

Important Details

  • Delivery and Pickup orders are counted separately. A slot can be full for delivery but still available for pickup.
  • Only orders with status processing, on-hold, completed, or pending are counted. Cancelled and refunded orders don't count.
  • The capacity is global — it applies to all slots equally. You cannot set different limits for different time slots.
Start with a generous limit (e.g., 10) and reduce it if you find yourself overwhelmed during peak hours. Check your order history to see typical volumes per slot.

8. Customer Tips

Navigate to Super Delivery & Pickup → General tab → Tips section

❤️ Setting Up Tips

Let customers show appreciation with optional tips

Enable Tips

Check this box to display the tip section on the checkout page, right above the payment button.

Tip Type

  • Percentage (%) — Preset buttons show percentages of the cart subtotal. Example: 5%, 10%, 15%. A €50 order with 10% tip = €5 tip.
  • Fixed Amount — Preset buttons show fixed amounts. Example: €1, €2, €5. The tip is always that exact amount regardless of cart total.

Preset Values

Enter comma-separated numbers. These become the quick-select buttons on checkout.

For percentage: 5,10,15,20 Shows buttons: [No Tip] [5%] [10%] [15%] [20%] For fixed: 1,2,5,10 Shows buttons: [No Tip] [€1.00] [€2.00] [€5.00] [€10.00]

Allow Custom Amount

When checked, a text field appears below the preset buttons where customers can type any amount they want.

What Customers See

A warm-styled section with the title "❤️ Add a Tip" and the message "Show your appreciation! Tips go directly to our team." Buttons are rounded pills. "No Tip" is selected by default.

Where Tips Appear

  • Order total — as a fee line: "Tip ❤️ — €5.00"
  • Order confirmation email — in the order totals
  • Admin order page — visible in order details
  • Receipt / printer — included in the fee lines
  • Order meta — stored as _sdp_tip_amount for reporting
The tip updates the order total live — customers see the total change instantly when they click a tip button, without page reload.

9. Discounts

Navigate to Super Delivery & Pickup → General tab

💰 Setting Up Discounts

Offer separate discounts for delivery and pickup orders

How Discounts Work

Enter a percentage in Delivery Discount (%) or Pickup Discount (%). The discount is applied as a negative fee line in the cart — customers see it as a line item.

Pickup Discount = 10% Customer cart subtotal: €40.00 Order total shows: Subtotal: €40.00 Pickup Discount: -€4.00 Total: €36.00

Excluding Categories

Select categories in the "Exclude Categories from Discount" field. Products in these categories won't count toward the discount calculation. Hold CTRL/CMD to select multiple.

Excluded category: "Drinks" Cart: Pizza €15 + Coca-Cola €3 = €18 subtotal Pickup Discount 10% applied on €15 only (drinks excluded) = -€1.50
Common use: exclude low-margin items like drinks, sauces, or extras from the discount while still discounting main dishes.

10. Shop Page Popup

Navigate to Super Delivery & Pickup → General tab

🛍️ Order Type Popup

Ask customers to choose before they start shopping

Enable Shop Page Popup

Check "Enable Shop Page Popup" in General Settings. When enabled, a popup appears on the WooCommerce shop page asking customers to choose Delivery or Pickup. Their selection is saved in the session and pre-selected on the checkout page.

Shortcode

You can also trigger the popup on any page using the shortcode:

[sdp_order_type_popup]

Place this shortcode on your homepage, landing page, or any custom page to show the Delivery/Pickup chooser.

The popup only shows once per session. If the customer has already chosen, it won't appear again until they close the browser.

11. 🗺️ Google Maps Setup

Required only for Distance Radius mode

✓ Places API ✓ Maps JavaScript API ✓ Geocoding API

🗺️ Getting a Google Maps API Key

Step-by-step guide

  1. Go to console.cloud.google.com
  2. Create a new project (or select an existing one)
  3. Go to APIs & Services → Library
  4. Search for and enable these 3 APIs:
    • Places API — for address autocomplete
    • Maps JavaScript API — for map display
    • Geocoding API — for address-to-coordinates conversion
  5. Go to APIs & Services → Credentials
  6. Click Create Credentials → API Key
  7. Copy the API key and paste it in General Settings → Google Maps API Key
Restrict your API key to your domain in Google Cloud Console to prevent unauthorized usage. Go to Credentials → click your key → Application restrictions → HTTP referrers → add your website URL.
Google offers $200/month free credit for Maps APIs, which covers approximately 28,000 autocomplete requests. This is more than enough for most small businesses.

12. Printer Compatibility

Works with receipt printers out of the box

🖨️ Receipt Printer Integration

Star Cloud Printer and similar thermal printers

The plugin automatically makes order details visible to receipt printers through multiple methods:

Order Notes

Every order gets an automatic note with all SDP details formatted for printing:

*** DELIVERY *** Date: 2026-02-03 Time Slot: 12:00 - 12:15 Zone: Paris (75019)

Order Item Totals

SDP details are added to the WooCommerce order totals section, which most printer plugins read automatically.

Order Meta

All details are stored as order meta with the _sdp_ prefix. Printer plugins that display custom meta will show these automatically. Internal IDs (_sdp_delivery_zone_id, _sdp_pickup_location_id, _sdp_tip_amount) are excluded from display to keep receipts clean.

If you use the Super Smart Print Order plugin by Nasir.fr, the integration is seamless — all SDP fields appear automatically in the correct format on receipts.

13. Translation / Localization

Make the plugin speak your language

🌍 Translating the Plugin

Compatible with Loco Translate, WPML, Polylang

Using Loco Translate (Recommended)

  1. Install and activate the Loco Translate plugin
  2. Go to Loco Translate → Plugins → Super Delivery & Pickup
  3. Click New language and select your language
  4. Translate each string and click Save

French Translation Included

A French translation file (.po/.mo) is included in the languages/ folder. You can customize it via Loco Translate.

What Gets Translated

All customer-facing strings are translatable: date labels (Today, Tomorrow), "Select a date", "Select a time", "Closed", "Holiday", "Full", "No Tip", "Add a Tip", error messages, email content, and more. Admin settings labels are also translatable.

French apostrophe fix: If you translate to French and the Time Slots tabs stop working, make sure you're using the latest plugin version (v1.5.0+). Older versions had a bug where French apostrophes (like d'ouverture) broke the JavaScript.

14. Requirements

What you need to get started

📦

WordPress

5.0+
🛒

WooCommerce

6.0+
🐘

PHP

7.4+
🗄️

MySQL

5.6+
🗺️

Google Maps

Optional*

* Google Maps API required only for Distance Radius mode

Ready to Get Started?

Download the plugin and set up your delivery & pickup system today!

🌐 Visit Nasir.fr

Made with ❤️ by Nasir.fr | Super Delivery & Pickup v1.5.0

Super-Delivery-&-Pickup-