Description
Beziworld – Dropshipping XML imports products from your suppliers and keeps prices, stock and descriptions in sync. It reads XML and CSV feeds of any size, shows a live preview of the product while you map the fields, and runs the imports in the background in short, resumable batches.
A wizard with a live preview
- Source: an address (http or https, with optional user name and password or custom headers such as API keys) or an uploaded file. GZIP and ZIP archives are unpacked automatically.
- Structure: the plugin reads the feed, shows its element tree with counts and sample values and suggests the element that holds one product.
- Mapping: write expressions that combine feed fields with text, for example
{brand} {name}or{attrs/a[@name=EAN]}. Click a feed field in the preview panel to insert it. “Suggest mapping” fills the usual fields for you. - The preview shows the mapped product, the price after every price rule, the filter decision and what an import would change in the store product already matched to the record, field by field.
Everything a supplier feed needs
- Name, descriptions (HTML is sanitised), SKU, EAN/GTIN, regular and sale price, stock quantity and status, backorders, weight and dimensions, shipping class, tax status and class, featured flag, menu order, purchase note.
- Categories with automatic tree creation (“Electronics > Phones”), a category map (feed value to store category, loaded from the feed with one click) or one category for all products. The separator between categories is optional, so names containing commas stay whole.
- Tags, global and local attributes, and all attributes from repeated elements such as
<param name="Color">Red</param>in one step. - Images: the main image and the gallery. Every image is downloaded once: the source address is remembered, so a picture shared by many products or imported again is reused instead of duplicated.
- Custom fields (meta) from any feed value.
- Modifiers in expressions: number parsing for any format (“1 299,99 zł”), upper and lower case, strip tags, replace, truncate, default values, value maps ({availability|map:yes=instock;*=outofstock}) and more.
Variable products
- Records grouped by a parent field, even when they are spread over the whole file.
- Variations nested inside the product element; variation values override the product values.
- Single variations can be imported as simple products. Prices, stock, SKU, EAN, weight and image are set per variation.
Prices and filters
- Price rules in order: markup in percent or as an amount, margin on the selling price, currency rate, price tiers, minimum price and rounding to endings such as ,99. Each rule can apply only when a condition is met.
- Filters: skip records without a key, name, price, stock or images, a price range, and any number of conditions (equals, contains, greater than, between, one of and more) on feed fields or final product values.
Safe synchronisation
- Match products by SKU, EAN, name or a feed key. Feed keys are scoped to the feed, so two suppliers never overwrite each other.
- Choose which fields existing products receive, for example only prices and stock. Unchanged products are not saved at all.
- Products that disappear from the feed can be set out of stock, set to zero stock, moved to drafts, made private or moved to the trash, and are restored when they come back. A safety threshold skips this step when a feed suddenly shrinks, for example after a broken download.
- Dry run: process the whole feed without changing anything and get a report of what would be created, updated (old and new value of every field), skipped or hidden.
Background imports that do not stall
- Imports run through Action Scheduler (part of WooCommerce) in short time-limited slices. Each slice saves its position, so imports never hit PHP or proxy time limits and continue after an interruption.
- The feed is downloaded once per run and streamed record by record, so memory use stays flat for feeds of any size.
- A lock prevents two imports of the same feed from running at once; different feeds can run in parallel.
- A watchdog resumes imports that stopped responding.
- Schedules per feed: every few minutes or hours, daily or on chosen days at a time, or a cron expression.
- With the run screen open, the browser speeds the import up by asking for the next slice right away.
History, logs and diagnostics
- Every run keeps a log of what happened to each record, with the changed fields. Filter, search and download it as CSV.
- E-mail reports after failed runs or after every run.
- Diagnostics of the server and the background queue, and a feed check that counts records without a key, name, price or image and finds duplicated keys before you import.
Security
- Feed and image addresses on private, loopback, link-local and reserved networks are blocked (protection against server-side request forgery), with a filter for intranet feeds.
- XML documents with DTDs or entities are refused (XXE and entity expansion), network access of the XML parser is disabled.
- Downloaded and uploaded feeds are stored in a private folder with a random name and deny rules.
- Feed passwords and headers are stored encrypted. Exported configurations never contain them.
- All screens and REST routes require the manage_woocommerce capability.
For developers and add-ons
Every part can be extended: feed formats and transports (for example JSON, FTP, a wholesaler API), mapping fields, price modifiers, condition operators, admin tabs, settings sections and wizard steps are registries filled through filters. There are actions before and after a run and before and after a product is saved, and filters for every record and every mapped value. All admin views and e-mails are templates a theme can override. See docs/developers.md in the plugin folder.
WP-CLI: wp bwdx list, wp bwdx run <feed> [--dry-run] [--background], wp bwdx preview <feed> --index=<n>, wp bwdx status <run>, wp bwdx cancel <run>, wp bwdx resume <run>, wp bwdx diagnose <feed>, wp bwdx export <feed>, wp bwdx import <file>.
Documentation and support: https://beziworld.eu/projekty/dropshipping-xml
External services
The plugin downloads the feed files and product images from the addresses you configure, using the WordPress HTTP API. Those requests are sent to your suppliers’ servers and reveal the address of your server to them; they are made only when a feed is analysed, previewed or imported. No data is sent to the plugin author or any other service.
Screenshots








Installation
- Install and activate WooCommerce.
- Upload the plugin folder to /wp-content/plugins/ or install it from the Plugins screen, then activate it.
- Go to Products > Dropshipping XML and click “Add feed”.
- Enter the feed address, read the feed, check the suggested product element, map the fields and save.
- Start a dry run, check the report, then run the import or set a schedule.
FAQ
-
Which feed formats are supported?
-
XML (including feeds with namespaces such as Google Merchant) and CSV or TSV with any separator, in UTF-8, UTF-16, Windows-1250, ISO-8859-2 and other single-byte encodings. Files can be packed as GZIP or ZIP. Other formats can be added by an add-on.
-
How large can a feed be?
-
Feeds are streamed, so the size is limited only by the setting “Maximum feed size” (512 MB by default) and the disk space. Memory use does not grow with the file size.
-
Do I need a long PHP time limit or a cron job?
-
No. Imports run in slices of about 20 seconds through Action Scheduler. On sites with little traffic, a system cron job calling wp-cron.php keeps schedules punctual, or run imports with WP-CLI.
-
Will the same image be downloaded many times?
-
No. Each image is downloaded once and reused by every product and every later import that uses the same address.
-
Can I test the import before it changes my store?
-
Yes. The dry run processes the whole feed and lists every product that would be created, updated (with old and new values), skipped or hidden, without changing anything.
-
What happens to products that the supplier removes?
-
You choose: nothing, out of stock, zero stock, draft, private or trash. Only products imported by that feed are affected, and a product that comes back is restored. A safety threshold protects your catalogue when a feed suddenly shrinks.
-
Can two feeds update the same product?
-
When products are matched by SKU or EAN, the last import wins. When products are matched by a feed key, every feed manages only its own products.
-
Is the plugin compatible with HPOS?
-
Yes. It works with products only and declares compatibility with High-Performance Order Storage and the cart and checkout blocks.
-
Can I change the screens or the e-mails?
-
Yes. Copy a file from the templates folder of the plugin to yourtheme/beziworld-dropshipping-xml-for-woocommerce/ and edit the copy.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Beziworld – Dropshipping XML for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Beziworld – Dropshipping XML for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- First release.
