etechflow / module-next-day-eligibility
Automatically manages a Next Day Eligible attribute on products based on real-time stock and a per-product Drop-Ship override, and restricts configured next-day shipping methods at checkout when any cart item is not eligible.
Package info
github.com/etechflow/module-next-day-eligibility
Type:magento2-module
pkg:composer/etechflow/module-next-day-eligibility
Requires
- php: ~8.1.0||~8.2.0||~8.3.0||~8.4.0
- magento/framework: ^103.0||^104.0
- magento/module-bundle: ^101.0||^102.0
- magento/module-catalog: ^104.0||^105.0
- magento/module-catalog-inventory: ^100.4||^101.0
- magento/module-checkout: ^100.4||^101.0
- magento/module-config: ^101.2||^102.0
- magento/module-configurable-product: ^100.4||^101.0
- magento/module-eav: ^102.1||^103.0
- magento/module-grouped-product: ^100.4||^101.0
- magento/module-quote: ^101.2||^102.0
- magento/module-store: ^101.1||^102.0
Suggests
- etechflow/module-backorder-eta-display: Pair with Backorder ETA Display to show next-day eligibility and backorder ETAs together.
- hyva-themes/magento2-default-theme: Hyvä Theme support is built in — install Hyvä to enable Tailwind-styled templates automatically.
This package is auto-updated.
Last update: 2026-05-20 13:04:43 UTC
README
Comprehensive stock-aware shipping restrictions in one module.
Two independent rules, one admin section, one license:
- Next-day eligibility (auto-managed) — removes configured next-day shipping methods from checkout when any cart item is out of stock or otherwise ineligible. Eligibility is auto-maintained by a stock observer; nothing for the merchant to flip per product.
- Backorder express restriction (opt-in, v1.1.0+) — removes any express methods you list when the cart contains backorder items (out of stock with backorders enabled, or partially short). Useful for merchants who explicitly flag pre-order / made-to-order products and don't want them sold with express delivery.
Both rules raise a single dismissible checkout banner with merchant-customisable wording. Both respect the Drop-Ship Eligible exemption.
Stock-aware. Drop-ship aware. Hyvä compatible. Works with Magento Open Source and Adobe Commerce.
What's new
The version-by-version history lives in CHANGELOG.md. Highlights of the most recent releases:
- v1.4.0 — New per-product
Force Standard Shipping Onlyflag. Tick it on the product edit page (under eTechFlow Shipping) to hard-disable next-day shipping for that product regardless of stock state. For bulky / hazmat / fragile / made-to-order items. Ships with a CLI verification command:bin/magento etechflow:nde:verify --sku=<sku>runs an end-to-end check that the observer + evaluator pipeline is wired correctly. - v1.3.0 — Module status banner at the top of admin config (shows whether the module is actually active), PDP badge visibility toggle, drop-ship grid filter, inline tooltips on every field.
- v1.2.0 — Shipping method fields are now multi-select dropdowns auto-populated from your active shipping methods — merchants no longer need to know technical codes.
- v1.1.0 — Absorbed the deprecated
ETechFlow_BackorderShippingRestrictormodule's features as an opt-in "Backorder Express Restriction" toggle. The bundle is now 2 modules (NDE + BackorderEtaDisplay).
What it solves
Merchants who advertise next-day delivery hit the same problem from two directions:
| Scenario | Without the module | With the module |
|---|---|---|
| Customer picks "Next Day" on an out-of-stock item | Order ships a week late, refund + 1-star review | Next-day automatically hidden at checkout; banner explains why |
| Customer picks "Express" on a pre-order / backorder item | Same problem — supplier ETA is two weeks, customer paid £15 for next-day | Express methods automatically hidden when the toggle is enabled |
| Drop-shipped products with zero local stock | Marked out of stock, no Add to Cart button | Stay eligible — supplier ships direct, backorders auto-enabled |
| Customer asks "where is my order?" | Volume support tickets | Banner sets the expectation at checkout |
Requirements
| Magento | Open Source 2.4.4+ OR Adobe Commerce 2.4.4+ |
| PHP | 8.1, 8.2, 8.3, or 8.4 |
| Compatible themes | Luma (default) + Hyvä |
Installation
Option A — Composer (recommended)
composer require etechflow/module-next-day-eligibility:^1.1 bin/magento module:enable ETechFlow_NextDayEligibility bin/magento setup:upgrade bin/magento setup:di:compile bin/magento cache:flush
Option B — Manual (from zip)
-
Unzip
etechflow-module-next-day-eligibility-1.1.0.zipinto:<magento-root>/app/code/ETechFlow/NextDayEligibility/The directory MUST be named
ETechFlow(capital E, capital T, capital F) — case-sensitive on Linux servers. -
Enable and set up:
bin/magento module:enable ETechFlow_NextDayEligibility bin/magento setup:upgrade bin/magento setup:di:compile bin/magento cache:flush
-
Verify:
bin/magento module:status | grep NextDayEligibility
After install — quick setup
Open the admin and go to Stores → Configuration → eTechFlow → Next Day Eligibility.
Step 1 — License
License → License Key: paste the key from your purchase email and save.
Don't have a key yet? Dev/staging hosts are free. Any URL matching
localhost,*.test,*.local,staging.*,dev.*,*.magento.cloud, ngrok tunnels, or RFC 1918 IPs runs at full features without a key. For non-standard dev domains, set License → Production Environment = No instead.
Step 2 — Enable the module
General Settings → Enable Module = Yes → save.
Step 3 — Pick your next-day shipping methods
General Settings → Next Day Shipping Methods is a multi-select dropdown. The list is auto-populated from your store's currently active shipping methods (the same list shown under Stores → Configuration → Sales → Shipping Methods). Tick the methods you want removed for ineligible carts — typically just your paid next-day or express options. Hold Ctrl/Cmd to select multiple. Save.
⚠️ Important — keep at least one fallback method unticked. Don't tick every option. The intended pattern is to tick only your paid express / next-day methods so a standard or free option always stays available for ineligible carts. If you accidentally select everything, a safety net returns the original rates and logs a warning to
var/log/system.logto prevent a stuck checkout — but that's a guardrail, not a config strategy. Seedocs/USER_GUIDE.md"Configuration trap" for the typical UK setups.
That's the core feature done. Browse to a product detail page — you'll see the green "Next Day Eligible" / grey "Standard Delivery Only" badge under the price.
Step 4 — (optional) Enable Backorder Express Restriction
If you also want to block express shipping on backorder items:
Backorder Express Restriction:
- Set Restrict Express Methods on Backorder = Yes
- Express Methods to Restrict on Backorder — same multi-select pattern as the next-day field above, but stored independently. Tick whichever methods should disappear when a backorder item is in the cart. Can overlap with or differ from your next-day selection.
- Leave Skip Drop-Ship Products = Yes (default) so drop-ship products bypass this rule.
Step 5 — (optional) Customise the checkout banner
Checkout Notice:
- Show Notice at Checkout = Yes (default)
- Notice Style — warning (amber), info (blue), or error (red)
- Notice Title — bold heading, e.g. "Next day delivery unavailable"
- Notice Message — body copy, e.g. "One or more items in your cart is not eligible for next day delivery."
All four fields can be overridden per store view for multi-brand setups.
Step 6 — (optional) Hide or simplify the product-page badge
General Settings → Show Badge on Product Page:
- Both (default) — green "Next Day Eligible" + grey "Standard Delivery Only" badges
- Eligible only — show the green badge, hide the grey one (recommended if you don't want to draw negative attention to ineligible products)
- Never — no PDP badge at all; the shipping restriction at checkout still works
Per-product overrides (v1.4.0+)
Two checkboxes on the product edit page (under the eTechFlow Shipping attribute group) let you override the auto-calculation per product:
| Attribute | What it does | When to use |
|---|---|---|
| Drop-Ship Eligible | Always eligible regardless of local stock — supplier ships direct | Products fulfilled by a same-day-shipping supplier |
| Force Standard Shipping Only (new in v1.4.0) | Always ineligible regardless of stock — only standard shipping shown at checkout | Bulky / hazmat / fragile / made-to-order / promotional items |
Precedence inside the eligibility evaluator:
Force Standard Shipping Only = Yes→ always ineligible (merchant override wins)Drop-Ship Eligible = Yes→ always eligible- Otherwise: stock check (
qty > 0 AND in stock→ eligible)
Both flags work as Magento mass-action targets — see "Tips" below.
Tips for managing the catalogue
Bulk-flag drop-ship products. In Catalog → Products, filter the grid (now filterable by Drop-Ship Eligible — new in v1.3.0), tick the products, and use Actions → Update Attributes → Drop-Ship Eligible = Yes. Magento applies it to every selected product in one click.
Bulk-flag force-standard-only products. Same workflow with the new attribute: filter by Force Standard Shipping Only = No, narrow further (e.g. by category = "Furniture" or by weight), tick all, Actions → Update Attributes → Force Standard Shipping Only = Yes. Useful for one-pass classification of your bulky-item or hazmat catalog.
Bulk imports. If you're using a CSV import or custom script to load thousands of products, set $product->setData('_etechflow_skip_eligibility', true) before each save to bypass the per-product observer. Then batch-evaluate after the import completes via \ETechFlow\NextDayEligibility\Model\EligibilityEvaluator::evaluateById(...). See docs/USER_GUIDE.md "Bulk imports — the escape hatch" for the full pattern.
Module status banner. At the top of the NDE admin config section is a coloured banner showing whether the module is active, idle, or has a licence problem. Read it first if anything seems off — most "I configured it but nothing happens" cases are answered by that banner.
Documentation
| File | Read when |
|---|---|
README.md (this file) |
First — overview + install + quick setup |
docs/USER_GUIDE.md |
Full reference: every admin field, every scenario, troubleshooting, known limitations |
CHANGELOG.md |
What changed in each version |
LICENSE.txt |
Licence terms |
Support
- Email: support@etechflow.com — typically responds within one business day
- Website: https://etechflow.com
License
Proprietary — see LICENSE.txt. Licensed per Magento installation, with unlimited dev/staging environments under the same business entity.
To change your production domain (e.g. site migration), email support@etechflow.com with your old + new domain and order number. New key issued same business day.