Documentation
Everything you need to set up, customize, and troubleshoot the Delivery Estimated & Countdown widget on your Shopify store.
Installation #
Install Delivery Estimated & Countdown directly from the Shopify App Store:
- Open your store's app listing on the Shopify App Store
- Click Add app → Install app
- Approve the read-only permissions:
read_products,read_shipping - You'll land on the in-app Dashboard
Permissions explained: The app reads product data only to show inventory in the widget (when configured). It reads shipping zones to estimate transit times. It never writes to your store, never reads customer data, and never accesses orders.
First-time setup #
The app works out of the box with sensible defaults, but takes 2 minutes to tune:
- Go to Settings in the in-app sidebar
- Under Order Processing, set your cutoff time (e.g. 14:00 — orders before this ship same-day)
- Set your processing days (business days to pack an order — typically 1)
- Pick your working days (M–F by default)
- Pick a widget style from the picker on the right
- Click Save Changes
Now add the widget to your storefront — see Placement guide.
Enable / disable #
At the top of the Settings page is a master switch labeled Widget Enabled on Storefront. Flip it off and the widget disappears from every page — product, cart, theme editor preview — instantly.
Tip: Use this for short-term outages (warehouse closures, system migrations) without removing the widget block from your theme. Re-enabling restores the previous behavior.
Order processing #
Order processing tells the app when an order can ship. Three settings combine here:
| Setting | What it means | Example |
|---|---|---|
processingDays | Business days between order placed and order shipped | 1 |
cutoffTime | Time of day after which orders ship next business day | 14:00 |
workingDays | Which days of the week your warehouse operates | Mon–Fri |
Cutoff time & timezone #
The cutoff is interpreted in your shop's timezone (configured in Shopify Admin → Settings → General). The app syncs this automatically every time you load the Settings page.
Example: cutoff 14:00 with shop timezone Asia/Kolkata means orders placed before 2 PM IST ship the same day. A buyer in New York at 8 AM EST sees the same countdown as a buyer in Sydney at midnight — both are counting down to your 2 PM IST.
Why merchant-timezone: Ship dates are tied to the warehouse, not the buyer. Anchoring everything to your timezone keeps the "ships today" promise unambiguous regardless of where the buyer is.
Working days #
Click the day pills (M T W Th F Sa S) in Settings to toggle which days you process orders. Non-working days are skipped automatically when calculating delivery dates.
If you ship Tuesday–Saturday but rest Sunday and Monday, click those two off. Ship-date math will skip them.
Widget display #
Three independent toggles control where the widget appears:
- Product pages — show on product detail pages
- Cart — show on the cart page or cart drawer
- Countdown — show the live cutoff timer (Pro plan)
Product targeting #
By default the widget shows on all products. To restrict it to specific products:
- In Settings, scroll to Product Selection
- Switch from All products to Specific products
- Use the picker to add the products that should display the widget
Useful for: pre-orders, made-to-order items, or products where delivery times genuinely differ from your default.
Widget styles #
16 styles ship in two tiers. Switch between them instantly — your colors, copy, and language are preserved.
Basic (free plan)
| Style | Best for |
|---|---|
minimal | Clean, low-distraction product pages |
badge | Pill-shaped accent — fits next to "In Stock" labels |
card | Elevated card with accent bar — classic and credible |
banner | Full-width tinted banner |
floating | Tooltip-style with arrow |
inline | Side-by-side icon and stacked text |
compact | Tiny footprint — fits anywhere |
elegant | Refined with a separator line |
Animated (Pro plan)
| Style | Animation |
|---|---|
pulse | Soft icon pulse + live ribbon + flip countdown |
slidein | Truck driving across a road background |
glow | Breathing border glow + text shadow pulse |
flip3d | 3D card flip entrance + parallax floating |
gradient | Animated mesh + floating particles |
typewriter | Vintage paper with stamp animation |
neon | Glowing borders + sweep + pulsing dot |
glass | Frosted glass + animated color blobs |
Date formats #
Pick the format that fits your locale and brand. Set in Settings → Date Format:
| Format ID | Output | Best for |
|---|---|---|
MMM D | Apr 29, 2026 | US English |
MMMM D | April 29, 2026 | US, formal copy |
D MMM | 29 Apr 2026 | UK, India, EU |
D MMMM | 29 April 2026 | UK, India, formal |
DD/MM | 29/04/2026 | Most of Europe, India |
MM/DD | 04/29/2026 | US |
YYYY-MM-DD | 2026-04-29 | ISO / technical |
Toggle Include year off to drop the year (useful for short-window dates).
Text templates #
The widget's main copy is fully editable. The default content template is:
Order today within {counter}, you'll receive your package between {delivery_from} to {delivery_to}
A second template controls the countdown footer line:
Order within {counter} to get it by {delivery_to}
Edit both in Settings → Content & Date. Variables are substituted at render time.
Template variables #
Drop any of these tokens into your templates:
| Variable | Value | Highlighted by default |
|---|---|---|
{counter} | Live countdown to cutoff (e.g. 2h 19m 37s) | Yes |
{delivery_from} | Earliest delivery date | Yes |
{delivery_to} | Latest delivery date | Yes |
{ordered_date} | Today (in shop timezone) | No |
{processing_from} | Date the order will start processing (ship date) | No |
{processing_to} | Date processing finishes | No |
{stock_left} | Live inventory total for the product | No |
{product_name} | Title of the current product | No |
Highlighted variables render in your accent color (default rose). Non-highlighted ones use the body text color.
Heads up: {stock_left} only works when Shopify's "Track quantity" is enabled for the product variant. Off-product pages and untracked products show —.
Colors & icons #
Settings → Widget Styling exposes:
- Text color — main copy color
- Background color — widget container fill (use
transparentfor none) - Icon color — also used as accent for animated styles
- Highlight color — used for date and counter values
- Highlight background — optional pill background behind highlighted values
- Font size & Font weight — body text sizing
10 icons available: truck (default), package, clock, calendar, shield, rocket, star, mappin, check, gift.
Shipping zones #
The app pulls your shipping zones directly from Shopify on every Settings page load. For each zone you set min and max transit days — the buyer's country is matched to a zone, and the delivery window uses those numbers.
One zone is marked default (used when no specific match is found, e.g. for a country not assigned anywhere).
Editing transit days
- Settings → Shipping Zones table
- Click any zone row to open the transit-time editor
- Set min / max days, mark as default if needed, save
Free plan: up to 3 zones. Pro and Premium: unlimited.
Blackout dates #
Days the warehouse doesn't process orders — holidays, vacation, planned closures. Delivery math automatically skips them.
Adding a blackout
- Settings → Blackout Dates
- Pick a date
- Optional: add a reason (for your own records — never shown to buyers)
- Toggle Recurring to repeat every year on the same month-day (e.g. New Year's, Christmas)
Free plan: up to 5 blackouts. Pro and Premium: unlimited.
Country detection #
The widget detects the buyer's country in this order:
- Shopify Markets / session — synchronous, no external call, most accurate
- IP geolocation — three providers in fallback chain (
ipinfo.io,ipapi.co,api.country.is) - Default — if all detection fails, falls back to
US
Whichever country wins is matched to a shipping zone and the corresponding transit-day range is used.
App embed vs app block #
Shopify gives apps two ways to inject content into your theme:
| App Embed | App Block | |
|---|---|---|
| Where it lives | Global, attached to <body> | Inside a section you choose |
| Toggle in | Theme editor → App embeds | Theme editor → section → "Add block" |
| Used for | Loading scripts, cart-page injection | The actual visible widget on product pages |
You need both for the widget to show on product pages: the embed loads CSS/JS, the block places the widget container.
Placement guide #
Step 1 — Enable the app embed
- Open your theme editor (Online Store → Themes → Customize)
- Click the App embeds icon in the left sidebar (puzzle piece)
- Toggle Estimated Delivery on
- Click Save
Step 2 — Add the app block to a product page
- In the theme editor, navigate to a product page
- In the left sidebar, find your product info section (usually called Product information)
- Click Add block → under "Apps", pick Estimated Delivery
- Drag it where you want it (we recommend right above or below "Add to cart")
- Save
Tip: Theme support varies. If you don't see "Apps" under "Add block", your theme isn't Online Store 2.0 — most paid themes from 2021+ are. Dawn, Horizon, Sense, Refresh all work out of the box.
Cart auto-inject #
If you want the widget on the /cart page but haven't placed a cart-specific block, the app auto-injects one — provided the Show on cart toggle in Settings is on. The injection point is whichever of these elements appears first in the DOM:
button[name='checkout']
[data-checkout-button]
.cart__ctas
.cart__checkout-wrapper
.cart__footer
#main-cart-footer
.cart-footer
.cart__summary
.totals
form[action*='/cart'] [type='submit']
For cart drawers (which vary wildly between themes), add the Estimated Delivery (Cart) block manually to your cart drawer template instead — auto-injection isn't reliable enough there.
Plan comparison #
| Feature | Free | Pro $2.99/mo | Premium $5.99/mo |
|---|---|---|---|
| Product page widget | ✓ | ✓ | ✓ |
| Shipping zones | 3 | Unlimited | Unlimited |
| Blackout dates | 5 | Unlimited | Unlimited |
| Date format options | Basic | All | All |
| Countdown timer | — | ✓ | ✓ |
| Animated styles | — | ✓ | ✓ |
| Full color customization | — | ✓ | ✓ |
| Analytics dashboard | — | — | ✓ |
| Priority support | — | — | ✓ |
Billing & cancellation #
All paid plans bill via Shopify's standard app subscription flow — same place you manage your other Shopify apps.
- Charges appear on your monthly Shopify bill, not as a separate invoice
- Trial: Pro plan includes a 7-day free trial (configurable by Shopify)
- Cancel anytime — go to in-app Plan page → Cancel. Effective immediately, no proration
- Downgrade — you keep paid features until the end of the current billing period
Troubleshooting #
Widget isn't showing on the product page
- Check the master Widget Enabled toggle in Settings (top of the page) is on
- Open the theme editor and confirm Estimated Delivery is enabled under App embeds
- In the theme editor, confirm the Estimated Delivery app block has been added to your product section
- Hard-refresh the storefront (Cmd/Ctrl+Shift+R) — Shopify CDN caches assets
- Check the browser console for errors (look for messages prefixed with
[ShipDate])
Wrong delivery date shown
- Confirm your shop timezone is correct: Shopify Admin → Settings → General
- Confirm the cutoff time is what you intend
- Open Settings — the live preview reflects the same calculation as the storefront
- If you're past the cutoff, dates shift to the next business day — this is correct behavior
Countdown shows "0h 0m 0s"
This means the server-side countdown calculation failed. Check that your Cutoff Time is set in 24-hour format (e.g. 14:00, not 2:00 PM) and that your shop timezone is recognized.
Stock count shows "—"
The product variant doesn't have Track quantity enabled in Shopify Admin, or the buyer is on a non-product page. This is expected.
Widget loads but with the wrong style
You may be seeing a cached asset. Hard-refresh and wait ~60 seconds for Shopify CDN to update. If it persists, save your settings again to bump the cache.
FAQ #
Does the widget slow my product page?
No. The bundle is < 15KB gzipped, loads asynchronously, and delivery dates are fetched in parallel. Lighthouse impact is zero.
Will it work with my theme?
Any Online Store 2.0 theme — Dawn, Horizon, Sense, Refresh, and most paid themes from 2021+. Older themes that don't support app blocks won't work; consider upgrading.
Can I show different copy per country?
Not yet, but it's on the roadmap. For now, the same template renders for all buyers; only the dates and country-specific transit days differ.
What happens to my data if I uninstall?
Settings, zones, and blackouts are deleted within 30 days. Impression counts are aggregated and anonymized. See the Privacy Policy for details.
Can I A/B test different styles?
Premium plan only. The analytics dashboard tracks impressions and clicks per style switch.
Changelog #
- Master kill switch added — disables widget everywhere instantly
- Country detection: Shopify Markets signal first, IP fallback second
- Cutoff label below countdown ("Cutoff 2 PM EST")
- Sticky live preview in Settings — independent scroll
- 3 new animated styles: Typewriter, Neon, Glass
- Inventory display via
{stock_left}template variable - Cart-specific delivery blocks
- 5 new animated styles: Pulse, Slide-In, Glow, Flip3D, Gradient
- Live preview component in Settings
- Cart-page auto-inject
- Blackout dates with recurring support
- Working days configuration
- Product-specific targeting
- Initial release: 8 widget styles, basic delivery date estimation, IP-based country detection
Still stuck?
If the docs don't cover what you're looking for, reach out through the support channel on the Shopify App Store listing — we usually respond within 24 hours.