Skip to main content

Import and export lifecycle data

You can change lifecycle states, successors, seasons and the never-out-of-stock flag for many products at once with a spreadsheet. The products import reads eight lifecycle columns, and the products export writes the same eight, so you can export, edit and import again. This page lists each column, the rules it follows and the messages you can see.

For the import itself (template, upload, mapping, preview), see Import products from a spreadsheet. Every other product column is in the Importable product columns reference.

Before you begin​

  • To import, you need the Import permission under Products.
  • To change a lifecycle or successor column, you also need the Lifecycle permission under Products. Without it, you can still import a file whose lifecycle cells match what the products already have. See Permission below.
  • To export, you need the Export permission under Products.
  • Seasons must exist first. Add any season codes your file uses under Settings → Products → Product seasons. See Set up seasons and carryover.

Where the columns appear​

WhereWhat you get
Products Template in the import dialogThe Import Here sheet has the eight columns as headers. The Field Guide sheet describes each one under the Lifecycle group.
Export on the products listShow the Lifecycle column in the table before you export. It exports as all eight columns, under the headings in the table below.
Open in Google Sheets on the products listSame as the export, when the Lifecycle column is shown. Pull & review and Pull & apply read the columns back, matching rows by ID.
The AI assistantWhen you ask it to import a products file, it maps all eight columns too.

The import's column mapping matches a file header to its field by either the template header or the export heading. An exported file maps back on its own.

The columns​

A blank cell always means "leave this as it is". It never clears a value.

Template headerExport headingRequired?FormatAccepted valuesNotes
lifecycle_stateLifecycle StateNoTextA state's key or its name from Settings → Products → Product Lifecycle, for example active, phasing_out, discontinued, or Phasing out. Not case-sensitive.Moves the product to this state. The export writes the key.
lifecycle_reasonLifecycle ReasonNoTextA reason's key or name: brand_decision (Brand decision), supplier_discontinued (Supplier discontinued it), seasonal_end (Seasonal end), low_performance (Low performance), replaced (Replaced by a new product), quality_issue (Quality issue), other (Other).Left blank while changing to Phasing out or Discontinued, the reason is recorded as Other, with a warning. The export writes the key.
discontinue_onDiscontinue OnOnly with Phasing outDate: YYYY-MM-DD, MM/DD/YYYY or M/D/YYYYA date after todayThe day a Phasing out product becomes Discontinued. Ignored for other states.
last_order_dateLast Order DateNoDate, as aboveOn or before Discontinue OnThe last day a Phasing out product can be bought without a final-buy warning. Ignored for other states.
successor_skuSuccessor SKUNoTextAn existing SKU, or one created in this same fileThe product that replaces this one. A product can't be its own successor.
successor_pack_factorSuccessor Pack FactorNoNumberGreater than 0How many units of the successor replace one unit of this product. An old 6-pack replaced by a 12-pack is 0.5. Defaults to 1. Ignored without a Successor SKU.
seasonsSeasonsNoSeason codes separated by a pipeCodes that already exist, for example SS26|AW26A value replaces the product's seasons.
noosNever Out Of StockNoYes or NoYes, No, Y, N, 1, 0, true, falseA core item that should always be in stock. A value that differs from the product's current flag pins your choice. A value that matches it changes nothing.

How the columns behave​

  • Match key. Rows are matched to products by SKU, not case-sensitive. If you map an ID column, it matches by ID instead.
  • Update or create. A row whose SKU matches a product updates it. A row with a new SKU creates a product, which starts in Active and then takes the lifecycle in its row.
  • Lifecycle is applied last. The lifecycle and successor columns are applied after every row is saved. That's why a successor created further down the same file still resolves.
  • A row that changes nothing writes nothing. If a row restates the product's current state, dates and reason, no history row is added. An export you import again unchanged leaves no trace.
  • Restating a state keeps its dates. A row with the product's current state and a blank date keeps the date it already has. Dates that were valid when they were set aren't checked against today again.
  • Changes are recorded as CSV import. Each change shows CSV import in the Source column of the product's lifecycle history.
  • Matrix products don't pass changes down. A state on a matrix product's row changes only that row's product. List each variant on its own row to change the variants.
  • Successor settings keep their values. Importing a successor sets only the successor and its pack factor. For a new link, the other settings start at their defaults: all of the sales history carries over until 12 months after the discontinue date (or after today when there's none), the old stock is used up first and nothing is substituted automatically. For an existing link, they're kept. Change them on the product. See Link a successor product.
  • You can't remove a successor by import. A blank Successor SKU cell leaves the link alone. Remove it on the product.
  • Never Out Of Stock pins only on a change. SKU.io sets the flag automatically each night from stock history. A file value that differs from the current flag pins your choice, so the nightly update leaves it alone. Exporting and importing again keeps automatic products automatic.

Permission​

Changing a lifecycle or successor column needs the Lifecycle permission. Without it:

  • A row whose lifecycle cells match the product's current values is accepted and changes nothing. The Lifecycle column of an export says active on most rows, so an unedited export imports cleanly.
  • A row that changes any of those cells is an error. It starts "You need the Manage lifecycle permission", names the columns you changed, such as Lifecycle State and Discontinue On, and asks you to put back the exported values, clear those cells or ask an admin for the permission.

The Seasons and Never Out Of Stock columns don't need the Lifecycle permission.

Errors and warnings in the preview​

The preview step checks every row before anything is saved. A row with an error isn't imported. A warning doesn't stop the row.

MessageTypeFix
"Unknown lifecycle state 'value'. Valid states: …"ErrorUse one of the states listed in the message, by key or name.
"Unknown lifecycle reason 'value'. Valid reasons: …"ErrorUse one of the reasons listed, by key or name.
"Discontinue On 'value' is not a valid date (use YYYY-MM-DD)."ErrorWrite the date as YYYY-MM-DD. The same message names Last Order Date when that cell is wrong.
"Discontinue On is required when Lifecycle State is Phasing out."ErrorAdd a discontinue date.
"Discontinue On must be after today for Phasing out."ErrorUse a future date. To end it today, use Discontinued.
"Last Order Date must be on or before Discontinue On."ErrorMove the last order date earlier.
"A product cannot be its own successor."ErrorUse another SKU.
"Successor SKU 'value' was not found."ErrorUse an existing SKU, or add the successor as a row in the same file.
"Successor Pack Factor must be a number greater than zero."ErrorUse a positive number.
"Unknown season code: … Add it under Settings → Products → Product seasons first." (or "Unknown season codes: … Add them …" when there are several)ErrorAdd the seasons first, or fix the codes.
"Never Out Of Stock must be Yes or No, not 'value'."ErrorUse Yes or No.
"You need the Manage lifecycle permission …"ErrorSee Permission.
“No lifecycle reason given; recorded as "Other".”WarningAdd a reason if you want a specific one.
"Successor Pack Factor is ignored without a Successor SKU."WarningAdd the successor, or clear the pack factor.

Problems after the rows are saved​

A few lifecycle changes can only be refused when they're applied, after the rows are saved. Examples are a successor that would loop back on itself, or a discontinue date that passed between the preview and the import. The row itself is still saved and counted as imported, but its lifecycle isn't changed.

The import result then says, for example, "2 rows were saved, but part of them was not applied:", and lists each row with a message that starts "Lifecycle not changed:". Up to 50 rows are listed. Fix those products by hand or in a new file.

Exports with lifecycle data​

The products export​

Show the Lifecycle column on the products list, then click Export. The file gets all eight columns:

  • Lifecycle State and Lifecycle Reason hold keys, such as discontinued and supplier_discontinued.
  • Discontinue On and Last Order Date are written as YYYY-MM-DD.
  • Seasons lists season codes separated by a pipe.
  • Never Out Of Stock says Yes or No.

See Export products.

The Sell-through export​

On the Sell-through tab of PIM → Lifecycle, click Export. With rows checked, the button reads Export N selected and exports only those rows. Otherwise it exports every row that matches your filters. Either way it includes only the columns shown in the table.

The full file has these columns: ID, SKU, Product, Variant, State, Since, Reason, Units at discontinue, Units sold since, Units received since, Sell-through %, On hand, FBA units, Value at cost, 30-day velocity, Weeks of cover, Projected sell-out, Target date, Status, Clearance plan, Markdown step, Successor, FBA clock and Removal order by. ID is always included.

Up to 1,000 rows download straight away. Above that, the export runs in the background and the download appears in the job tray. You need the Export permission under Products. See Work the Lifecycle workspace.

The Inventory Valuation report​

On the Inventory Valuation report, add Lifecycle under Group By to see a subtotal per state. Its export then has a Lifecycle column. You can also use the report's Lifecycle filter to value only products in some states, such as the Discontinued stock you're selling through.

Closeout files​

The closeout CSV and PDF linesheet are covered in Sell off closeout stock.

Purchase order imports​

A purchase order import follows the Adding to purchase orders row of the policy matrix. A product whose state blocks purchase orders is an error on that line. A product whose state warns is imported, and the final-buy warning is listed with the results. Lines already on an existing purchase order aren't checked again. See the Lifecycle policy matrix reference.

What you can't import or export​

These lifecycle settings live only in the app. Change them on screen.

DataWhere to change it
Scheduled lifecycle changesThe Scheduled tab of PIM → Lifecycle, or Change lifecycle with a date. See Schedule lifecycle changes.
Successor settings other than the SKU and pack factorThe product's lifecycle panel, or the Successors tab of PIM → Lifecycle.
Clearance plans and their stepsPIM → Clearance Plans.
The list of seasonsSettings → Products → Product seasons.
Lifecycle historyThe product's lifecycle history.
The FBA checklistThe FBA checklist tab of PIM → Lifecycle.
States and their policiesSettings → Products → Product Lifecycle.

Next steps​

Last verified: