Smart Delivery Estimates

What is Smart Delivery Estimates?

↑ Back to top

Overview

↑ Back to top

Smart Delivery Estimates is a WooCommerce plugin that shows customers an accurate delivery date range based on where they’re shipping to. Instead of one generic estimate for every visitor, the plugin reads your existing WooCommerce shipping zones and shows the delivery window that genuinely applies to each customer’s location โ€” detected automatically via IP, with no postcode typing required.

What It Does

↑ Back to top
  • Detects customer location automatically โ€“ No manual postcode entry needed
  • Matches delivery dates to your shipping zones โ€“ Different zones show different windows
  • Shows estimates everywhere that matter โ€“ Product page, shop, cart, checkout, emails
  • Respects working days and cutoff times โ€“ Skips weekends, supports daily order cutoffs
  • Works with your existing shipping methods โ€“ Flat Rate, Table Rate, USPS, and more

How It Works

When a customer visits your store, the plugin detects their approximate location via IP geolocation and matches it against your configured WooCommerce shipping zones. The correct delivery window appears immediately. If the detected location is wrong, the customer can click Change and enter their own postcode โ€” the estimate updates instantly.

Key Features at a Glance

↑ Back to top
  • Three delivery strategies: Global Rules, Shipping Zone Based, Shipping Zone + Method Based
  • IP auto-detection with manual postcode override
  • Cutoff time and working-day calculation
  • Product and category-level delivery overrides
  • WooCommerce Blocks compatible (cart and checkout)
  • Checkout postcode pre-fill for postcode-dependent shipping methods
  • Order confirmation page and order email support
  • Built-in delivery cache and zone-detection testing tools
  • Daily lookup analytics

Installation

↑ Back to top

Requirements

↑ Back to top
  1. Download the plugin zip file from your WooCommerce account
  2. In WordPress admin, go to Plugins โ†’ Add New โ†’ Upload Plugin
  3. Choose the zip file and click Install Now
  4. Click Activate

Setup and Configuration

↑ Back to top

Step 1: Access Smart Delivery Estimates Settings

↑ Back to top
  1. In the WordPress admin left menu
  2. Find WooCommerce
  3. Click WooCommerce
  4. Click Settings
  5. Click the Smart Delivery Estimates tab
Dashboard โ†’ WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates

Step 2: See the Configuration Tabs

↑ Back to top

You’ll see these tabs at the top:

  1. General โ€“ Delivery strategy, display locations, postcode behavior
  2. Delivery Rules โ€“ Global mode min/max days, cutoff time, working days
  3. Zone Delivery Settings โ€“ Per-zone delivery days (Shipping Zone mode)
  4. Zone + Method Settings โ€“ Per-zone, per-method delivery days
  5. Tools โ€“ Clear cache, test zone detection, auto-detect rates
  6. Analytics โ€“ Daily postcode lookup chart

Step 3: Start with the General Tab

↑ Back to top

Click on the General tab.

You’ll see these options:

A. Delivery Strategy

Radio buttons:
โ—‹ Global Rules (Simple)
โ—‹ Shipping Zone Based
โ—‹ Shipping Zone + Method Based

Pick ONE based on your store type:
- Global Rules: same delivery window for everyone
- Shipping Zone Based: different window per shipping zone
- Shipping Zone + Method Based: different window per zone AND per method

B. Display Locations

Checkboxes:
โ˜ Show on product page
โ˜ Show on shop / archive loop
โ˜ Show on cart
โ˜ Show on checkout
โ˜ Show on order confirmation (thank-you page)
โ˜ Show in order emails

Check the ones where you want estimates to appear

C. When Postcode Is Not Available

Radio buttons:
โ—‹ Hide estimate (ask postcode on product page)
โ—‹ Use "Locations not covered by other zones"
โ—‹ Auto-detect postcode via IP

Recommended: Auto-detect postcode via IP

D. Delivery Text Format

Text field where you control exactly how dates are displayed

Default:
Est. delivery: {start_month_short} {start_day} โ€“ {end_month_short} {end_day}

Available placeholders:
{start_date} {end_date} {start_day} {end_day}
{start_month_short} {end_month_short} {start_month} {end_month}
{start_weekday} {end_weekday}

Step 4: Fill in General Settings

↑ Back to top

Basic Setup (5 minutes):

  1. Choose Your Delivery Strategy
    • Single-region store with one set of delivery days โ†’ Global Rules
    • Ship to multiple countries with different delivery times โ†’ Shipping Zone Based
    • Offer multiple shipping speeds (Standard, Express) per zone โ†’ Shipping Zone + Method Based
  2. Check Display Locations
    • At minimum, check Show on product page
    • Recommended: also check Shop, Cart, Checkout, Order confirmation, and Order emails
  3. Set Postcode Fallback
    • Select Auto-detect postcode via IP
    • This shows the right estimate to first-time visitors automatically
  4. Customize Delivery Text Format (Optional)
    • Leave as default, or edit using the placeholders listed above
  5. Click “Save Changes”
    • Button at bottom of page
    • You’ll see the page reload with your settings saved

Step 5: Configure the Delivery Strategy You Chose

↑ Back to top

Now click the tab matching the strategy you selected in Step 4:

If you chose Global Rules:

  1. Click Delivery Rules tab
  2. Enter Min Days and Max Days (e.g. 3 and 5)
  3. Optionally set a Cutoff Time (e.g. 3:00 PM)
  4. Select Working Days (Monโ€“Fri is default)
  5. Click Save Changes

If you chose Shipping Zone Based:

  1. Click Zone Delivery Settings tab
  2. Your WooCommerce shipping zones are listed automatically
  3. Enter Min/Max days and a Unit (days, hours, or minutes) for each zone
  4. Click Save Changes

If you chose Shipping Zone + Method Based:

  1. Click Zone + Method Settings tab
  2. Each zone expands to show its shipping methods
  3. Click Auto-detect rates to automatically pull in your configured methods
  4. Enter Min/Max days per method
  5. Click Save Changes

That’s it! Estimates are now live on your store.

Advanced Configuration

↑ Back to top

Feature #1: Global Rules (Simple) Mode

↑ Back to top

A single set of delivery days applied to every product, for every customer, regardless of location.

Location: WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ Delivery Rules tab

Settings You’ll See:

Min Days: [3]
Max Days: [5]
Cutoff Time: [15:00]
Working Days: โ˜‘ Mon โ˜‘ Tue โ˜‘ Wed โ˜‘ Thu โ˜‘ Fri โ˜ Sat โ˜ Sun
Product/Category Override Behavior: [Ignore / Replace / Add]

What Each Setting Does:

  • Min Days / Max Days: The delivery window shown to every customer
  • Cutoff Time: Orders placed after this time count from the next working day
  • Working Days: Days that count toward the delivery window โ€” weekends are skipped by default
  • Override Behavior: How a product or category-level override interacts with this global setting
    • Ignore: Overrides are not used; global rule always applies
    • Replace: A product/category override completely replaces the global value
    • Add: A product/category override is added on top of the global value (units are automatically converted if they differ โ€” see Feature #5)

When to Use: Best for single-region stores or stores with one shipping speed.

To Configure:

  1. Click Delivery Rules tab
  2. Enter Min Days and Max Days
  3. Optionally set a Cutoff Time and Working Days
  4. Click “Save Changes”

Feature #2: Shipping Zone Based Mode

↑ Back to top

Shows a different delivery window for each WooCommerce shipping zone you’ve configured.

Location: WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ Zone Delivery Settings tab

Settings You’ll See:

Zone: United States (US)
  Min: [3]  Max: [5]  Unit: [Days โ–พ]

Zone: India (IN)
  Min: [10]  Max: [14]  Unit: [Days โ–พ]

Zone: Locations not covered by other zones
  Min: [7]  Max: [10]  Unit: [Days โ–พ]

What Each Setting Does:

  • Zone: Pulled automatically from WooCommerce โ†’ Settings โ†’ Shipping โ†’ Zones
  • Min / Max: The delivery window for that specific zone
  • Unit: Days, hours, or minutes โ€” useful for same-day or next-day delivery zones

Important: Do not configure a WooCommerce shipping zone that matches “all countries” or “Rest of the World” alongside specific country zones. A catch-all zone can intercept postcode detection and prevent specific zones (e.g. USA) from being matched correctly. Use “Locations not covered by other zones” only as a genuine fallback, not as a primary zone.

To Configure:

  1. Click Zone Delivery Settings tab
  2. Enter Min/Max days and select a Unit for each zone
  3. Click “Save Changes”

Feature #3: Shipping Zone + Method Based Mode

↑ Back to top

The most granular option โ€” shows different delivery windows for each shipping method within each zone (e.g. Standard vs Express).

Location: WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ Zone + Method Settings tab

Settings You’ll See:

Zone: United States (US)
  [Auto-detect rates]

  Method: Flat Rate
    Min: [5]  Max: [7]  Unit: [Days โ–พ]

  Method: Express Shipping
    Min: [1]  Max: [2]  Unit: [Days โ–พ]

  Default (no method selected yet):
    Min: [5]  Max: [7]  Unit: [Days โ–พ]

What Each Setting Does:

  • Auto-detect rates: Scans the zone’s configured shipping methods and adds them to the table automatically โ€” saves you from typing method names manually
  • Method rows: One row per shipping method in that zone; the estimate shown depends on which method the customer selects at checkout
  • Default row: Used on the product page and shop loop, before the customer has chosen a shipping method

Important: The same catch-all zone warning from Feature #2 applies here too.

To Configure:

  1. Click Zone + Method Settings tab
  2. Click “Auto-detect rates” for each zone
  3. Enter Min/Max days for each method that appears
  4. Click “Save Changes”

Feature #4: Cutoff Time and Working Days

↑ Back to top

Adds realistic order-processing logic to any delivery strategy.

Location: WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ Delivery Rules tab (Global mode) โ€” working day logic also applies in Zone and Zone + Method modes

What This Does:

  • Cutoff Time: An order placed after this time is treated as if it were placed the next working day
  • Working Days: Calendar days that count toward delivery โ€” weekends are excluded by default

Example:

Cutoff Time: 3:00 PM
Today: Thursday, 2:00 PM โ†’ counts as "ordered today"
Today: Thursday, 4:00 PM โ†’ counts as "ordered Friday"
Delivery window: 5โ€“7 working days โ†’ skips Saturday and Sunday automatically

Displayed to Customer:

"Order before 3:00 PM on working days (Monโ€“Fri) for delivery May 25 โ€“ May 27"

Feature #5: Product and Category Overrides

↑ Back to top

Lets a specific product or category show a different delivery time than its zone or global default โ€” useful for pre-order items, made-to-order goods, or anything with non-standard shipping.

Location: Product edit page โ†’ Shipping tab (for products) / Products โ†’ Categories โ†’ Edit Category (for categories)

Settings You’ll See:

โ˜ Override delivery estimate
Min: [10]  Max: [14]  Unit: [Days โ–พ]

What Each Override Mode Does (set in General/Delivery Rules tab):

  • Ignore: The override field is saved but never used
  • Replace: The override completely replaces the zone/global value, including its unit
  • Add: The override is added on top of the zone/global value If the override and the zone use the same unit, they’re added directly (e.g. zone 5 days + override 2 days = 7 days). If the units differ, the override is automatically converted into the zone’s unit before adding: Zone: 5 days + Override: 2 hours โ†’ 6 days (rounded up) Zone: 5 hours + Override: 1 day โ†’ 29 hours Zone: 5 hours + Override: 30 minutes โ†’ 6 hours (rounded up)

To Configure:

  1. Open the product (or category) for editing
  2. Find the delivery override fields
  3. Check “Override delivery estimate”
  4. Enter Min/Max and select a Unit
  5. Update/Save the product or category

Feature #6: Postcode Fallback Behavior

↑ Back to top

Controls what customers see before their location is known.

Location: WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ General tab

Settings You’ll See:

โ—‹ Hide estimate (ask postcode on product page)
โ—‹ Use "Locations not covered by other zones"
โ—‹ Auto-detect postcode via IP

What Each Option Does:

  • Hide estimate: Shows a postcode entry field instead of dates until the customer enters one
  • Use “Locations not covered”: Falls back to your default zone’s delivery window
  • Auto-detect via IP (recommended): Geolocates the visitor’s IP and shows the matching zone’s estimate immediately, with a “Change” link if the customer wants to correct it

If Nominatim (the geocoding service) is unreachable: the plugin automatically falls back to postcode format detection (e.g. recognizing a 5-digit US ZIP code) before falling back further to IP geolocation โ€” no manual action needed.


Monitoring and Management

↑ Back to top

Using the Tools Panel

↑ Back to top

Location: WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ Tools tab

What You’ll See:

[Clear Delivery Cache]
  Clears all cached postcode-to-zone lookups.
  Use this after changing your shipping zones.

[Test Zone Detection]
  Enter a postcode to see which zone it resolves to.

[Auto-detect Rates]
  Scans a zone's shipping methods automatically
  (also available directly inside Zone + Method Settings)

When to Use Clear Delivery Cache:

  • After adding or editing a WooCommerce shipping zone
  • After switching delivery strategy modes
  • If a postcode is showing the wrong zone after a recent settings change

Viewing Analytics

↑ Back to top

Location: WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ Analytics tab

What You’ll See:

Daily Lookups
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
A bar chart showing:
  Lookups โ€” successful postcode-to-zone matches per day
  Unavailable โ€” lookups that could not resolve a zone

What It Shows: A quick way to see how often the plugin is being used and whether postcode resolution is failing more than expected on a given day.


Troubleshooting

↑ Back to top

Issue #1: “The Estimate Shows the Wrong Zone”

↑ Back to top

Problem: A customer’s postcode is matching the wrong shipping zone, or zone 0 (“Locations not covered”).

Solution:

  1. Go to WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ Tools
  2. Click “Clear Delivery Cache”
  3. Ask the customer to refresh the page and re-enter their postcode

To Prevent:

  • Make sure you don’t have a catch-all “Rest of the World” zone configured alongside specific country zones (see Feature #2)
  • Clear the delivery cache every time you edit a WooCommerce shipping zone

Why It Happened:

  • A previous lookup for that postcode was cached before your zones were fully configured
  • A catch-all zone is intercepting the match before the specific zone is checked

Issue #2: “Estimate Not Showing on Product Page”

↑ Back to top

Problem: No delivery estimate appears under Add to Cart.

Solution:

  1. Go to WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ General tab
  2. Confirm “Show on product page” is checked under Display Locations
  3. Check that the product is not Virtual or Downloadable โ€” these are automatically skipped since they don’t need shipping
  4. Click “Save Changes”

To Prevent: Always confirm your Display Locations checkboxes after first installing the plugin.


Issue #3: “Zone Settings Aren’t Saving”

↑ Back to top

Problem: You enter Min/Max values in Zone Delivery Settings or Zone + Method Settings, click Save Changes, but the values revert.

Solution:

  1. Make sure you’re clicking “Save Changes” at the bottom of the WooCommerce settings page (not just navigating away)
  2. Try a hard refresh (Ctrl+Shift+R / Cmd+Shift+R) to clear any cached page state
  3. If using a caching plugin (WP Rocket, LiteSpeed, etc.), purge the cache for the settings page

Why It Happened: Browser or page caching can occasionally serve a stale version of the settings form.


Issue #4: “Checkout Postcode Field Is Empty”

↑ Back to top

Problem: A customer enters their postcode via the product page widget, but the checkout postcode field is blank when they get there.

Solution:

  1. Confirm the customer didn’t already have a saved address (the plugin never overrides an existing saved postcode)
  2. Go to WooCommerce โ†’ Settings โ†’ Smart Delivery Estimates โ†’ Tools and click “Clear Delivery Cache”
  3. Ask the customer to re-enter their postcode via the “Change” link and proceed to checkout again

Why It Happened: The detected/entered postcode is stored in the WooCommerce customer session and pre-fills both classic and Blocks-based checkout automatically. If a returning customer already has a saved billing/shipping address, that address takes priority by design.


Issue #5: “Cart Shows the Same Dates for Every Shipping Method”

↑ Back to top

Problem: Selecting a different shipping method at checkout (e.g. switching from Standard to Express) doesn’t update the displayed delivery dates.

Solution:

  1. Confirm you’re using Shipping Zone + Method Based mode (Global Rules and Shipping Zone Based modes intentionally show one estimate regardless of method)
  2. Go to Zone + Method Settings and confirm each method has its own Min/Max values entered
  3. If using WooCommerce Blocks, confirm “Cart REST API (Blocks)” is enabled in the General tab

Why It Happened: Per-method estimates only apply in Shipping Zone + Method Based mode โ€” the other two modes are designed to show a single estimate per zone or store-wide.


Issue #6: “Estimate Says X Days But the Dates Look Like More”

↑ Back to top

Problem: The tooltip says “5โ€“7 days” but the displayed date range looks closer to 9โ€“11 calendar days.

Solution: This is expected behavior, not a bug. Delivery windows are calculated in working days by default, skipping weekends. “5โ€“7 working days” from a Thursday will land roughly 7โ€“9 calendar days later once two weekends are skipped.

To Prevent Confusion: The tooltip explicitly says “working days” (e.g. “delivery 5โ€“7 working days”) so customers understand weekends aren’t counted.


FAQs

↑ Back to top

Help customers by answering commonly asked questions.

Do I need to reconfigure my existing WooCommerce shipping zones?

  • No. Smart Delivery Estimates reads your existing shipping zone setup directly โ€” there’s nothing to duplicate or re-enter. Just choose a delivery strategy and add min/max delivery days to the zones you’ve already configured.

Does it work with WooCommerce Blocks (the new cart and checkout)?

  • Yes. Both the classic shortcode-based cart/checkout and the Blocks-based cart/checkout are fully supported, including detected postcodes pre-filling the checkout form in either version.

What happens if a customer's location can't be detected?

  • You control this in the General settings tab. You can auto-detect via IP (recommended), fall back to a default “Locations not covered” zone, or simply hide the estimate and ask the customer for their postcode instead.

Can I show a different delivery time for a specific product, like a pre-order or made-to-order item?

  • Yes. Each product (and category) has an override field where you can set its own min/max delivery days, either replacing the zone’s default entirely or adding extra time on top of it.

Related Products

Offer add-ons like gift wrapping, special messages or other special options for your products.

Let customers subscribe to your products or services and pay on a weekly, monthly or annual basis.

Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.