> For the complete documentation index, see [llms.txt](https://help.dollarlabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.dollarlabs.io/dollarlabs-b2b-custom-pricing/price-list/jobs-and-history.md).

# Jobs & history

Imports, exports and pricing pushes run in the background. This is where you see what happened, and what to do when a job fails or half-lands.

Every bulk operation — a CSV import, a catalog export, a pricing push from the API — runs as a background job. The grid shows you the intended state; **job history shows you what actually happened**.

Open it from the link on the price list card, or from the badge that appears there when a recent job did not go cleanly.

## What a job records

* **Status** — queued, running, completed, partial or failed
* **Progress step** — which stage it reached
* **Row count** — how many rows it processed
* **Error summary** — why rows failed, when they did

## Statuses

<table><thead><tr><th width="170">Status</th><th>What it means</th></tr></thead><tbody><tr><td><strong>Completed</strong></td><td>Every row applied.</td></tr><tr><td><strong>Partial</strong></td><td>Some rows applied, some did not. <strong>Your pricing is now half-updated</strong> — this is the one to act on.</td></tr><tr><td><strong>Failed</strong></td><td>The job did not complete. Usually a malformed file or a Shopify API problem.</td></tr><tr><td><strong>Running</strong> / <strong>Queued</strong></td><td>In progress, or waiting behind another job. Jobs process in order.</td></tr></tbody></table>

The price list card surfaces a warning badge for the most recent **partial** or **failed** job, so you are not expected to check history after every import.

## When a job is partial

A partial job means some rows applied and others were rejected — a mix of good and bad data in one file.

1. Open the job.
2. Download the **error CSV**. It contains the rows that failed and why.
3. Fix those rows. In practice it is almost always [number formatting](/dollarlabs-b2b-custom-pricing/price-list/csv-import-and-export.md#number-formatting) — a currency symbol, a comma decimal, a thousands separator.
4. Re-import **just the corrected rows**.

{% hint style="warning" %}
Re-import only the failed rows, not the whole file. The successful rows already applied, and re-importing everything means a second full pass for no benefit — and any blank tag column in the file will erase pricing on rows that were fine.
{% endhint %}

## When a job fails

A failed job usually means the file itself could not be read: wrong headers, corrupt encoding, or an export from a different store.

Re-export a fresh file and edit that. Hand-built CSVs are the most common cause.

If a job fails with no obvious cause, or repeatedly, contact support with the job and your store URL rather than retrying.

## Other job controls

* **Retry** — re-runs a job that failed. Useful for transient Shopify API errors, pointless for a malformed file.
* **Kill** — stops a running job. Use it when you have realised a large import was wrong. Rows already processed stay processed, so check the grid afterwards and expect a partial state.

## Long-running work

* **Catalog exports** on large stores are emailed when ready rather than downloaded directly.
* **Large imports** take a while, and the grid can briefly lag behind a completed job.
* **Queued jobs run in order.** Firing several large imports back to back makes the last one slow. Import in batches and let each finish.

## Setup jobs

The very first job on a new install is the catalog bootstrap that builds your price list. If it fails, the home page offers **Retry setup**.

If retrying does not clear it, contact support rather than retrying repeatedly — a failing bootstrap usually means a permissions or catalog-scale issue that needs looking at.
