Import & export
Overview
Expiration & Best Before Dates for WooCommerce provides two ways to work with expiration dates in bulk: a dedicated CSV export/import tool within the plugin (free), and — with Pro — integration with WooCommerce’s built-in product CSV import/export system.
Plugin CSV export
The plugin includes its own export tool for expiration date data:
- Go to Products → Expirations → Import / Export.
- Click Export.
- A CSV file will download containing all products with expiration dates.
The exported CSV includes:
- Product ID
- SKU
- Product name
- Product type (simple, variation, grouped, or external)
- Expiration date
- Stock status and price (for context)
Use this export to back up your expiration data, share it with your team, or prepare data for re-import.
Download a template
The quickest way to start is the Download template button on the Import / Export page. It produces a CSV pre-filled with every product and its current expiration date, ready for you to edit and re-upload.
How variable products appear
Variable products round-trip through the CSV in two parts:
- Each dated variation is exported as its own row (matched by its variation ID/SKU), carrying that variation’s own expiration date.
- The parent product is exported as a single row only when it has a default (inherited) date set — the date dateless variations fall back to. That parent row carries the default date, not the earliest variation date.
On import, a parent row sets the product’s default date, and variation rows set each variation’s own date — so a file you export re-imports cleanly. If a variable product has no default date and no dated variations, it isn’t included (there’s nothing to round-trip). This mirrors how the Reports table shows one row per product.
Plugin CSV import
To import expiration dates from a CSV file:
- Go to Products → Expirations → Import / Export.
- Drag and drop your CSV file onto the upload area, or click to browse for a file.
- Click Import. Columns are detected automatically — there is no mapping step.
CSV format
Your import CSV needs:
- ID or SKU — Used to match each row to an existing product (ID is checked first, then SKU).
- Expiration date — In
YYYY-MM-DDformat. Leave it blank to clear a product’s date.
Other columns (Name, Type, Stock status, Price) are read-only context and are ignored on import. Rows that can’t be matched to a product are skipped, and you’ll see a summary of results when the import completes.
WooCommerce product CSV integration Pro
Pro adds an Expiration date column to WooCommerce’s own product export and import, so expiry dates travel in the same CSV as your prices, stock and everything else — no separate file to keep in sync.
Exporting with WooCommerce
Go to Products → Export. Expiration date is offered alongside WooCommerce’s own columns under Which columns should be exported?:
- Leave the field on Export all columns (the default) and the expiration date is included.
- Pick specific columns and it’s included only if you pick it too — leave it out and your export won’t have it.
Importing with WooCommerce
Go to Products → Import with a CSV that has an expiration-date column. On WooCommerce’s column-mapping screen, a column headed Expiration date, Expiry date, Best before or Use by is mapped automatically — including the column from an export above, so an export → edit → re-import round trip needs no mapping at all. A column with any other header can be mapped to Expiration date by hand.
Use the YYYY-MM-DD format, as the export does. On import:
- A date sets the product’s expiration date.
- An empty cell clears it.
- An invalid date — a typo, or a date that doesn’t exist such as
2027-02-30— is skipped, and the product keeps the date it already had. - Variable products take dates on their variation rows; a date on the parent row is ignored.
- Batch-tracked products get their dates from their batches, so the cell is skipped for them.
Every date an import changes is recorded in the activity log.
Tips
- Always back up first — Export your current data before running a large import, so you can restore if needed.
- Use YYYY-MM-DD format — This avoids ambiguity between date formats (e.g., is 01/02/2026 January 2nd or February 1st?).
- Check the import summary — After an import, review the results to confirm all products were matched and updated correctly.
- Combine approaches — Use the plugin’s CSV tool for expiration-specific work, and WooCommerce’s CSV for full product catalog management.