Delayed Image Import

Stop image servers throttling your imports - download them later

Your import should not stall or get your server blocked just because every product has images. Delayed Image Import lets the data finish first, then downloads images politely in the background. Works with Super Speedy Imports and any importer that can write post meta.

Delayed Image Import icon, timer glyph on purple corner-radial gradient

Import Fast Without Getting Blocked

Super Speedy Imports can pull a million products in about 22 minutes – but most image CDNs and supplier servers aren’t built for that kind of traffic. Delayed Image Import defers every image download until after the import finishes, so your import stays fast and your supplier never sees a spike.

Delayed Image Import takes the images out of your import. Instead of downloading every product photo while the import runs, your importer writes the supplier’s image URLs into two post-meta fields and moves straight on to the next row. The import finishes. Afterwards, a background queue works through those URLs at a sensible pace and turns each one into a proper WordPress attachment in your media library.

That is what makes the import fast. On a real catalogue the images are the expensive part, not the data. A product row is a line of text your database swallows in microseconds; each of its photos costs a separate HTTP round trip out to the supplier’s server, and then thumbnail generation for every image size registered on your site. A 50,000-product import means at least 50,000 of those, done one after another, while everything else waits on them. Take them out of the loop and the import goes back to doing what it should be doing – writing rows to the database.

And that is what stops you getting banned. Image hosts and CDNs do not distinguish between a legitimate bulk import and a scraper; they see thousands of requests from one IP address in a few minutes and they rate-limit you, start returning 403s, or block your server outright. Suddenly half your catalogue has no images and your supplier will not talk to you any more. The background queue is deliberately polite instead: it rotates between supplier domains so no single host is ever hit repeatedly, and when a host starts failing it backs off automatically for two minutes, doubling each time up to an hour, rather than hammering it.

It speeds up every importer, not just ours. The whole contract is two post-meta fields, so anything that can write post meta can use it – WP All Import, a WooCommerce CSV import, a custom feed script, whatever you already run. Point your featured-image column at delayed_image_url and your gallery column at delayed_gallery_image_urls, switch off that importer’s own image handling, and it inherits the same deferred downloads, the same politeness and the same background queue. With Super Speedy Imports there is nothing to map at all: deferring switches itself on the moment both plugins are active.

Before the local copy exists, the page uses the supplier’s URL directly. If that source remains reachable and permits hotlinking, shoppers and search engines see the real photograph while the queue works. A supplier outage or hotlink block can affect the image until it has been downloaded locally.

Import first, download later
Image URLs are saved to post meta during the import instead of being fetched inline. The import finishes at full speed; images load in the background afterwards.
No more CDN blocks
A per-domain round-robin scheduler spreads downloads across suppliers instead of hammering one host with thousands of requests at once.
Show the source image while it waits
Until an image has been downloaded, the page uses the supplier URL directly. It remains dependent on that source being reachable and allowing hotlinking.
Download each image once
Before downloading, the plugin checks whether that exact URL is already in your media library and reuses the existing attachment. A hundred products sharing one image produce one file on disk.

How It Works

Import runs at full speed
Your importer writes image URLs to post meta instead of downloading them there and then – the import itself never waits on a supplier’s server.
Images hydrate in the background
A cron tick (on by default) works through the backlog a batch at a time, rotating across supplier domains so no single host gets hit repeatedly.
Popular images jump the queue
Until an image is downloaded it’s hot-linked from the supplier, so visitors see the real thing. Every view of a not-yet-downloaded image is counted, and the queue works most-viewed first – so the images people actually look at get downloaded properly before the long tail.
# Check the current backlog and throughput
wp dii status

# Drain everything now instead of waiting for cron
wp dii load-all

# Watch it work in real time
wp dii status --watch

Invest in Speed

Yearly plans include a year of updates and support and the plugin keeps working afterwards – renew at 30% off. Upgrade to a lifetime plan within 60 days and just pay the difference. Backed by our 60-day money-back guarantee.

1 Site

€19.00
  • Yearly licence – 1 year of updates and support, keeps working afterwards
  • 1 Site License
  • Imports finish without waiting on images
  • No more CDN throttling or blocks
  • 1 support seat – chat live with our engineers on Discord
BUY YEARLY

25 Sites

€59.00
  • Yearly licence – 1 year of updates and support, keeps working afterwards
  • 25 Site Licenses
  • Imports finish without waiting on images
  • No more CDN throttling or blocks
  • 1 support seat – chat live with our engineers on Discord
  • Priority support
BUY YEARLY

25 Sites

Original price was: €199.00.Current price is: €139.00.
  • Lifetime licence – updates and support for life
  • 25 Site Licenses
  • Imports finish without waiting on images
  • No more CDN throttling or blocks
  • 1 support seat – chat live with our engineers on Discord
  • Priority support
Buy Lifetime

250 Sites

Original price was: €399.00.Current price is: €279.00.
  • Lifetime licence – updates and support for life
  • 250 Site Licenses
  • Imports finish without waiting on images
  • No more CDN throttling or blocks
  • 2 support seats – chat live with our engineers on Discord
  • Priority support
Buy Lifetime

Start with the plan you need today.

If you need more sites later, move up without buying the plugin twice.

60 days

to try it properly

Ask for a full refund within 60 days of purchase, for any reason.

Upgrade and pay the difference

Within 60 days, your original payment counts in full towards a larger plan, including lifetime.

1 site yearly €795 sites lifetime €279= €200 more

Example based on our €79 yearly and €279 lifetime plans.

Upgrading later? You still get credit after 60 days, though the credit reduces over time on yearly plans.

How do yearly renewals work?

A yearly licence includes one year of updates and support. The plugin keeps working after that. Renewal for further updates and support is optional. Renew before or within one month after expiry for 30% off, within six months for 20% off, or later for 10% off. Full terms

Agency or hosting company? Get in touch for custom pricing

Why image downloads become the bottleneck

Slow importers never exposed this problem, because they trickled image requests out over hours by accident. Super Speedy Imports is built to import or update a million products in about 22 minutes, and at that speed the images stop being a cost and start being a firehose: tens of thousands of requests aimed at one supplier’s server inside a few minutes, from a single IP address. That is the point at which the import is no longer the bottleneck – the supplier is – and the point at which a CDN decides you are scraping it.

So the faster your importer gets, the more you need this. The import itself gets faster again, because it stops downloading images at all. And the image requests get slower and politer, which is the half nobody expects: small batches, rotated across supplier domains, backing off automatically from any host that starts failing.

There is one more piece of ordering that matters on a live shop. Every time a not-yet-downloaded image is rendered, that post’s view counter ticks up, and the queue drains most-viewed first. The products your customers are actually browsing get their local copies tonight; the long tail nobody has opened can take until the morning without costing you anything.

6,000/hr
posts’ worth of images hydrated per hour on the default settings
One at a time
per supplier host, so no server ever sees a burst from you
No placeholders
real supplier images render from the very first page view
One attachment
shared image URLs are matched and reused, never re-downloaded

Features

Cron-based background hydration
On by default. Works through the backlog automatically so images load in steadily, even on a site with no visitor traffic.
Hot-linking with popularity ordering
An image that has not downloaded yet is served straight from the supplier’s URL, so nothing looks broken. Views are counted per post and the queue drains most-viewed first, so your busiest products get real local images soonest.
Per-domain round-robin and backoff
Downloads rotate across supplier hosts instead of draining one at a time, and a host that starts failing gets an escalating cool-off (2 minutes doubling up to 1 hour) instead of being retried forever.
An escalating-timeout retry ladder
Every image starts on a short 3-second timeout that doubles on each failure – 3, 6, 12, 24 – up to a 30-second ceiling. Dead URLs fail fast and cheaply, genuinely slow suppliers succeed on the patient rungs, and one hanging host cannot consume the whole batch.
A Status tab that answers did it work
Image-level counts, a progress bar, downloads per hour with an ETA, a cron heartbeat that goes red with advice when WP-Cron has stalled, and per-supplier stats. It refreshes while images are pending, so you can watch the backlog drain.
Failed images you can actually diagnose
Each failed row shows a live preview of the remote URL. A thumbnail that renders next to a server-side failure means the supplier blocks servers but not browsers – the whole diagnosis at a glance – plus the reason, attempt count, and one-click retry or dismiss.
Deduplication by URL
An image URL already in your media library is matched and reused rather than downloaded again, so re-running an import does not create duplicate attachments. Matching is on the exact URL.
WooCommerce galleries, properly
Featured images and full product galleries both defer and hydrate, not just the single thumbnail. The pre-download gallery gets its thumbnail strip, hover magnifier and PhotoSwipe lightbox, and a partially-downloaded gallery renders complete with local images first.
Works with any importer
Built-in, zero-config integration with Super Speedy Imports. Any other importer or custom code can defer images too, by writing the URL to a documented post meta field.

Everything the background queue handles for you

  • Alt text, titles, captions and descriptions defer too, and are applied to each attachment as it downloads, so a deferred import produces exactly what an inline one would have.
  • Full-size originals with every registered thumbnail size, generated at download time. Nothing is left half-imported.
  • A hot-link blocklist for suppliers that refuse browser requests but allow server-side downloads, so those products show a neutral placeholder instead of a doomed request on every page view.
  • Image dimensions published up front, read from the supplier URL where it encodes them, so WooCommerce’s lightbox and hover magnifier work before anything has been downloaded.
  • Verified on twelve themes, including Twenty Twenty-Five, Storefront, Astra, OceanWP, Kadence, Blocksy, GeneratePress, Neve and Hello Elementor.
  • Extensionless and CDN-transform URLs hydrate, with the file type read from the content rather than guessed from the path.
  • Ambient progress everywhere – a dashboard widget, an admin-bar count while a backlog exists, and two Site Health checks.
  • WP-CLI for the whole job, including a dry run that shows the image count per supplier host before you commit.
  • Pause and resume at any time, without anything breaking. Visitors keep seeing supplier images while hydration is stopped.
  • No custom database tables. Once the backlog has drained, every post is an ordinary WordPress post with ordinary attachments and no dependency on this plugin.

Documentation and development

What's new in Delayed Image Import?

View full changelog →
2.34.2 (14th October 2026)
  • Fixed the PHP notice "Translation loading for the delayed-image-import domain was triggered too early" in debug.log on WooCommerce stores.
2.34.1 (14th October 2026)
  • Maintenance release: the plugin package build now checks for the bundled MCP Adapter files the shared settings module loads, with no change to how the plugin works.
2.34.0 (1st October 2026)
  • Checking whether an image is already in the Media Library is now a single indexed lookup, using a new dii_source_urls table built from existing images in the background after the update.
  • New "Find duplicate downloads" button on the Loaded Images tab, listing source URLs stored on more than one attachment, most copies first.
  • New wp dii index-sources command to build the index immediately (--rebuild to re-derive it), and wp dii duplicates to list duplicates from the command line.
2.33.0 (30th September 2026)
  • Faster image downloads on large stores: checking whether an image is already in the Media Library no longer reads the whole post meta table.

Frequently asked questions

Do I need this if I already own Super Speedy Imports?
If you have an active Super Speedy Imports licence, you get 50% off Delayed Image Import. Log in, add Delayed Image Import to your cart, and the discount is applied automatically at checkout. You only need to pay the standard price if you want it without an active SSI licence, for use with another importer.
Does it work with WP All Import or other importers?
Yes, for any importer or custom code that can write to a post meta field. Save the featured image URL to delayed_image_url and gallery URLs (pipe-separated) to delayed_gallery_image_urls, and Delayed Image Import handles the rest. Super Speedy Imports has this wired in automatically; other importers need that meta mapping set up.
What do visitors see before an image has downloaded?
The page uses the supplier URL directly. If that source remains reachable and allows hotlinking, visitors and search engines see the real image while it waits. A supplier outage or hotlink block can affect it until the local attachment has been created. Each view is counted and the queue prioritises the most-viewed backlog.
Will my images ever actually download, or do they stay hot-linked forever?
They download. A background cron is on by default and works through the backlog continuously, prioritising the most-viewed products. On the default settings that is roughly 6,000 posts’ worth of images an hour, so a 50,000-product catalogue drains overnight. WP-CLI commands are also available for forcing a full drain on demand.
What happens if a supplier’s server is down or blocks a request?
Failed downloads climb a retry ladder rather than being abandoned: the timeout starts at 3 seconds and doubles on each failure up to a 30-second ceiling. A host that keeps failing gets an automatic, escalating cool-off so it stops being hammered, and that clears the moment a download from it succeeds again. Anything that exhausts the ladder lands in the Failed Images tab with its reason and a one-click retry.
Do I still get proper thumbnails and srcset?
Yes. When an image is downloaded it becomes an ordinary WordPress attachment with every registered thumbnail size generated there and then, identical to what an inline import would have produced.
Does it need WooCommerce?
No. Featured images work on any post type through the standard WordPress thumbnail filter. The gallery handling is WooCommerce-specific, so a WooCommerce store gets the most from it.
Is it safe to deactivate once my images have downloaded?
Yes. A hydrated post is a normal WordPress post with normal attachments and no dependency on this plugin. Deactivating while images are still queued means those posts show no image until you reactivate, so drain the backlog first if you plan to remove it.
How is this different from External Images?
Where the images end up. Delayed Image Import is a transition: every image eventually lands in your media library, and the supplier’s URL is just a temporary bridge. External Images is a destination – the images stay where they already live and are served from there permanently. Choose this one when you want to own the files and simply do not want the import to wait for them.
Is there a money-back guarantee?
Yes. Every plugin comes with a 60-day money-back guarantee. See the refund policy.
Better together

Works well with

Some combinations get a bigger discount than others. Add this set to your basket to see its price.

Reviews

There are no reviews yet.

Be the first to review “Delayed Image Import”

Invest in Speed

Yearly plans include a year of updates and support and the plugin keeps working afterwards – renew at 30% off. Upgrade to a lifetime plan within 60 days and just pay the difference. Backed by our 60-day money-back guarantee.

1 Site

€19.00
  • Yearly licence – 1 year of updates and support, keeps working afterwards
  • 1 Site License
  • Imports finish without waiting on images
  • No more CDN throttling or blocks
  • 1 support seat – chat live with our engineers on Discord
BUY YEARLY

25 Sites

€59.00
  • Yearly licence – 1 year of updates and support, keeps working afterwards
  • 25 Site Licenses
  • Imports finish without waiting on images
  • No more CDN throttling or blocks
  • 1 support seat – chat live with our engineers on Discord
  • Priority support
BUY YEARLY

25 Sites

Original price was: €199.00.Current price is: €139.00.
  • Lifetime licence – updates and support for life
  • 25 Site Licenses
  • Imports finish without waiting on images
  • No more CDN throttling or blocks
  • 1 support seat – chat live with our engineers on Discord
  • Priority support
Buy Lifetime

250 Sites

Original price was: €399.00.Current price is: €279.00.
  • Lifetime licence – updates and support for life
  • 250 Site Licenses
  • Imports finish without waiting on images
  • No more CDN throttling or blocks
  • 2 support seats – chat live with our engineers on Discord
  • Priority support
Buy Lifetime

Start with the plan you need today.

If you need more sites later, move up without buying the plugin twice.

60 days

to try it properly

Ask for a full refund within 60 days of purchase, for any reason.

Upgrade and pay the difference

Within 60 days, your original payment counts in full towards a larger plan, including lifetime.

1 site yearly €795 sites lifetime €279= €200 more

Example based on our €79 yearly and €279 lifetime plans.

Upgrading later? You still get credit after 60 days, though the credit reduces over time on yearly plans.

How do yearly renewals work?

A yearly licence includes one year of updates and support. The plugin keeps working after that. Renewal for further updates and support is optional. Renew before or within one month after expiry for 30% off, within six months for 20% off, or later for 10% off. Full terms

Agency or hosting company? Get in touch for custom pricing

▲
▼
1/1