# Create Listings in Bulk

> How your marketplace agent creates many listings at once as a background bulk action, how to follow its progress in the chat, cancel it, and see each row's outcome.

When you ask a marketplace agent to list a batch of products, it creates all the listings in one go as a **bulk action** — a background job you can watch, cancel, and inspect row by row without leaving the chat.

## What a bulk action is

A bulk action is one bulk operation broken into rows, where each row is a single record — for listing creation, one row per listing. Rows run in the background a few at a time, so a batch of a few hundred listings doesn't tie up the agent (or your browser), and one bad row never stops the rest.

Every bulk action keeps a live count of rows done, failed, and skipped, and every row records what it created or why it failed. The same mechanism powers the API, so an integration can launch a bulk create and poll the same progress.

## How the agent uses it

1. Ask the marketplace's agent to list some products (for example, select products on the **Products** page and choose **List/Enable Product(s)** for a marketplace).
2. The agent proposes the listings it will create and asks you to approve the plan.
3. Once approved, it launches one bulk action for the whole batch and the chat pauses while it runs. A progress card appears under the agent's action line showing the batch name, a status badge, a progress bar, and the running counts.
4. When the batch finishes, the agent picks up where it left off: it receives every created listing and every failure, handles the failures it can (for example, adding variants to a listing whose style code was already taken), and then categorizes and fills in the new listings.

The chat shows **Running bulk action** in its status while the batch is in progress. You can keep the chat open or come back later — the agent resumes on its own.

## Follow the progress, or cancel it

On the progress card:

- **View rows** opens every row of the batch with its status. Succeeded rows link to the listing they created; failed rows show the reason. Use the **Show** filter to see just the failed or pending rows.
- **Cancel** stops the batch. Rows that haven't started are skipped; rows already in progress finish, and listings already created are kept. The agent is then told the batch was canceled: it summarizes what did complete and asks you how to proceed instead of carrying on by itself.

Canceling the whole chat also cancels any bulk action it is waiting on.

## What the outcomes mean

| Status | Meaning |
|---|---|
| **In progress** | Rows are still running. |
| **Succeeded** | Every row succeeded. |
| **Partially failed** | The batch finished, but some rows failed. Open the rows to see which and why. |
| **Failed** | Every row failed; nothing was created. |
| **Canceled** | Someone stopped the batch. Rows already finished still count. |

A failed row is never retried on its own — the agent (or you) decides what to do with it, so a batch never silently repeats work.

## Using bulk actions from the API

The bulk create endpoint accepts up to 500 rows, each carrying the same fields as a single listing create, plus an optional `reference` (such as the style code) that is echoed back with that row's result:

```
POST /api/stores/{store}/channels/{channel}/listings/mass_create
{ "rows": [ { "reference": "ABC123", "data": { ...same body as a single listing create... } } ] }
```

It responds immediately with the bulk action. Track it with `GET /api/stores/{store}/mass_actions/{id}`, list its rows and their outcomes with `GET /api/stores/{store}/mass_actions/{id}/rows`, and stop it with `POST /api/stores/{store}/mass_actions/{id}/cancel`. See the API reference for the full request and response shapes.

## Where to go next

- [Create listings from your products](/help/channels-listings/create-listings-from-your-products)
- [Choose the right category](/help/channels-listings/choose-the-right-category)
- [Required fields and listing readiness](/help/channels-listings/required-fields-and-listing-readiness)

