# How to Bulk Create & Revise Amazon Listings in Google Sheets (https://sellersheetai.com/zh/guides/bulk-create-revise-amazon-listings-in-google-sheets)

> Create, update and delete Amazon listings in bulk from Google Sheets — Seller Central's template columns, with Amazon's check before anything goes live.



















<Callout title="TL;DR">
  * The **Publish Queue** tab is Seller Central's category template inside Google Sheets: same columns, one row per SKU.
  * **Get Template** builds the columns for a product type. You fill the rows — or fetch them from a live listing — and choose each row's **Operation Type**: `UPDATE`, `PARTIAL_UPDATE`, `PATCH-DELETE` or `DELETE`.
  * **Validate (Preview)** has Amazon check the rows before anything goes live. **Create/Replace/Del.** publishes up to 20 rows at once; **Submit Feed** sends up to 25,000. Results land in the **Submission Log** tab.
</Callout>

<Callout title="Series: manage Amazon listings in Google Sheets">
  [Overview](/guides/manage-amazon-listings-in-google-sheets) · 1 [All your SKUs](/guides/see-all-amazon-skus-in-google-sheets) · 2 [Live listings](/guides/fetch-live-listings-in-google-sheets) · 3 [Competitor research](/guides/research-amazon-competitors-in-google-sheets) · 4 [Selling eligibility](/guides/check-asin-selling-eligibility-in-google-sheets) · 5 [Write listings with AI](/guides/write-amazon-listings-with-ai-in-google-sheets) · **6 Bulk create & revise**
</Callout>

This guide follows one example from start to finish. The store is **myStore-US** and the brand is **myBrand**. You create two new listings for earbuds, change a price, take a SKU out of its variation family and delete an old SKU, all from one sheet.

## If you know Seller Central's template, you know this sheet [#if-you-know-seller-centrals-template-you-know-this-sheet]

Each step of the flat-file workflow has a counterpart on the Publish Queue tab:

<img alt="Two lanes. On the left, the Seller Central flat-file steps: download the category template, look up definitions and valid values, fill one row per SKU, upload, read the processing report. On the right, the Publish Queue step for each: Get Template, the row-4 guide and dropdowns, Fetch by SKU or by ASIN, Validate (Preview), then Create/Replace/Del. or Submit Feed" src="__img0" />

| In Seller Central's template            | On the Publish Queue tab                                                                                                                    |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Download the template for a category    | **Get Template** builds the columns for the product types in column D                                                                       |
| Required columns                        | Gold names on row 6                                                                                                                         |
| Definitions and valid values            | The row-4 guide above each column; a dropdown where the values are fixed                                                                    |
| The update / delete column              | **Operation Type**, column C: Update → `UPDATE`, PartialUpdate → `PARTIAL_UPDATE`, Delete → `DELETE`. `PATCH-DELETE` has no flat-file twin. |
| Export your listings, edit, re-upload   | **Fetch by SKU** fills a row from your live listing                                                                                         |
| Upload, then read the processing report | **Validate (Preview)**, then **Create/Replace/Del.** or **Submit Feed**; read the result in **Submission Log**                              |

## Why switch [#why-switch]

* **Validate instead of upload, wait, download.** In Seller Central you find out which attributes a new product type requires by uploading the flat file, waiting, and downloading the processing report — then doing it again. **Validate (Preview)** gives the same answer in the Submission Log within moments, row by row, and publishes nothing. For a new listing, fill what you know and validate: Amazon's list of missing attributes tells you what is left.
* **Three flat-file accidents are blocked before anything is sent:** a blank operation (never treated as a full update), a partial update without the ASIN (which can create a new listing), and one SKU on two rows. See [If a row is blocked](#if-a-row-is-blocked).
* **Your live listing, fetched into the row.** No export and re-import: **Fetch by SKU** fills a row with what is on Amazon now.

## Before you start [#before-you-start]

* Connect your Amazon store at [sellersheetai.com](https://sellersheetai.com/home) under **Settings → Stores & Marketplaces**.
* Install the SellerSheet sidebar. See [Install & first sync](/help/sheets/install).
* Open the **SellerSheet Catalog** spreadsheet from the sidebar's **Catalogs** panel (under **Resources**) or from your SellerSheet folder in Drive. Go to the **Publish Queue** tab and expand the **Publish Queue** group in the sidebar. Its buttons work only while that tab is open.

## The tab, row by row [#the-tab-row-by-row]

<img alt="The Publish Queue tab with callouts: rows 2–3 hold the store and locale, row 4 the guide of each column, row 5 is hidden and holds Amazon's key, row 6 the column names in gold or white, and from row 7 one listing per row. Columns A–E are the control columns; attributes start at column F" src="__img1" />

* **A3 Store** and **B3 Listing Locale** apply to every row. **C3 Template Locale** sets the language of the guides; leave it blank to use B3.
* **D3 Last Result** shows a summary of the last Validate or publish, such as `✓ Validate OK · 2 rows`.
* **Row 6 names:** gold = required, white = optional, slate = filled for you.
* **Columns A–E** are the same on every template: Image (filled for you), **SKU**, **Operation Type**, **Product Type** and Attributes JSON.

## Lesson 1 — Create new listings (UPDATE) [#lesson-1--create-new-listings-update]

You will list two new SKUs, **EB-PRO-BLK** and **EB-PRO-WHT**, under product type **HEADPHONES**.

<Steps>
  <Step>
    ### Set the store and locale [#set-the-store-and-locale]

    Type `myStore-US` in **A3** and pick **en_US** in **B3**.
  </Step>

  <Step>
    ### Get the template [#get-the-template]

    Type the SKUs in **B7:B8**, `UPDATE` in **C7:C8** and `HEADPHONES` in **D7:D8**. Then click **Publish Queue › Get Template**.

        <img alt="The Publish Queue tab with HEADPHONES in D7 and D8 outlined, and the sidebar's Publish Queue group open with Get Template highlighted under step 1, Template" src="__img2" />

    The HEADPHONES columns now start at column F, with a guide on row 4 and their names on row 6. Required names are gold.

    * **Get the template first, then fill.** A re-run keeps each row's SKU, Operation Type and Product Type (columns B–D) but clears every other cell of the rows below.
    * **Several product types?** Put a different one on each row. Get Template merges their columns into one sheet.
    * **Not sure of the product type?** Let Amazon fill it in. See [the trick](#let-amazon-fill-in-the-product-type).
  </Step>

  <Step>
    ### Fill the rows [#fill-the-rows]

    Fill every gold column. On HEADPHONES these are Brand Name, Item Name, Item Highlight, Bullet Point, Product Description and Generic Keyword. Scroll right for Item Condition, Fulfillment Channel Code, Country of Origin and Dangerous Goods Regulations. Then add **one** product ID.

        <img alt="Columns K to N of the Publish Queue: L7 and M7 hold the product ID type upc and the barcode, outlined. The guide of L4 is shown on the right: what the column means, an example, and the options ean, gtin, upc and asin. A note says to fill a product ID or the GTIN exemption, never both" src="__img3" />

    * **Row 4 is the manual.** Click a row-4 cell to read what the column means, its format, its limits and its valid values. Each guide title ends with Amazon's attribute key, so when Amazon names a key in an error, Ctrl+F (⌘+F on a Mac) finds the column.
    * **Dropdowns** hold Amazon's valid values. Pick one rather than typing your own word.
    * **Several values in one cell** (bullet points, for example): put each on its own line with Alt+Enter (⌥+Enter on a Mac).
    * **Product ID:** fill **External Product ID Type** and **External Product ID**, or set **Has GTIN exemption?** to Yes for a product without a barcode. Not both.
    * **A barcode that starts with 0 keeps it.** Get Template formats the product ID and Merchant Suggested ASIN columns as plain text. On a sheet set up earlier, a typed `012345678905` can still turn into the number 12345678905: select the column, choose **Format › Number › Plain text** and type it again.

    <Callout title="Shortcut: start from a listing that already exists">
      Type your new SKU in column B and a similar product's ASIN in **Merchant Suggested ASIN**, then click **Fetch by ASIN**. The row fills with the attributes Amazon shows for that ASIN. Then clear Merchant Suggested ASIN (left in place, it attaches your SKU to that ASIN) and put in your own product ID and copy. Fetch by ASIN rewrites every row that has an ASIN there and an empty Item Name, so keep other rows off the tab while you use it.
    </Callout>
  </Step>

  <Step>
    ### Validate [#validate]

    Click **Validate (Preview)**. Amazon checks up to 20 rows, and nothing is published. **D3** gives the summary, for example `⚠ 1 error — see Submission Log`. The **Submission Log** tab lists each problem on its own line:

    > Row 7 · EB-PRO-BLK · 'Country of Origin' is required but missing.

    Fix the cell it names and validate again until **D3** reads `✓ Validate OK`.
  </Step>

  <Step>
    ### Publish [#publish]

    Click **Create/Replace/Del.** Amazon accepts the rows, and the Submission Log shows a result for each SKU, such as `✓ 2 of 2 accepted`. For more than 20 rows, use **Submit Feed** instead (see [Bulk](#bulk-more-than-20-rows)).
  </Step>
</Steps>

<Callout title="Clear finished rows">
  **Validate**, **Create/Replace/Del.** and **Submit Feed** run every row that has a SKU. Delete a finished lesson's rows before you start the next one, or they are sent again.
</Callout>

## Lesson 2 — Change a price, title or images (PARTIAL_UPDATE) [#lesson-2--change-a-price-title-or-images-partial_update]

`PARTIAL_UPDATE` sends only the cells you fill. Everything else on the listing stays as it is. With `UPDATE`, a blank cell would be removed from the listing.

Here you change the price of **EB-LITE-BLU** to 29.99:

1. On a row, fill **SKU** = EB-LITE-BLU, **Operation Type** = `PARTIAL_UPDATE`, **Product Type** = HEADPHONES.
2. Fill the listing's ASIN in **Merchant Suggested ASIN**. A `PARTIAL_UPDATE` row without the ASIN (or the External Product ID) is blocked, because Amazon sometimes creates a new listing from a partial update. Don't know the ASIN? Click **Fetch by SKU**: the row fills from your live listing, with its ASIN or its barcode. The other cells then hold your live values, so sending them again changes nothing.
3. Fill only the cell to change: **Your Price (Sell on Amazon)** = 29.99.
4. **Validate (Preview)**, then **Create/Replace/Del.**

These are the columns sellers change most often:

| To change                  | Column                                                   |
| -------------------------- | -------------------------------------------------------- |
| Title                      | Item Name                                                |
| Bullets                    | Bullet Point (one per line)                              |
| Description                | Product Description                                      |
| Search terms               | Generic Keyword                                          |
| Price                      | Your Price (Sell on Amazon), Sale Price (Sell on Amazon) |
| Stock (merchant-fulfilled) | Quantity                                                 |
| Images                     | Main Image URL, Other Image URL                          |

## Lesson 3 — Take a SKU out of its variation family (PATCH-DELETE) [#lesson-3--take-a-sku-out-of-its-variation-family-patch-delete]

`PATCH-DELETE` deletes only the attributes you list. Here **EB-LITE-RED** leaves the **EB-LITE-PARENT** family, and the parent and the other colours stay as they are:

1. Type the SKU in column B and click **Fetch by SKU**. The row fills with its real values.
2. Set **Operation Type** to `PATCH-DELETE`.
3. Clear every attribute cell **except** Child Relationship Type, Parent SKU, Parentage Level, Variation Theme Name and the theme's own attribute (here **Color** = Red).
4. **Validate (Preview)**, then **Create/Replace/Del.**

<Callout type="warn" title="Keep the real values">
  Amazon deletes the value that matches. Fetch first and leave the fetched values exactly as they are. Don't retype them.
</Callout>

## Lesson 4 — Delete a SKU (DELETE) [#lesson-4--delete-a-sku-delete]

1. Type **EB-OLD-GRY** in column B and click **Fetch by SKU**. The row now holds the whole listing.
2. Click **Backup**. It saves a copy of the tab in your Drive and records its link on the **Listing Log** tab of this spreadsheet.
3. Set **Operation Type** to `DELETE`. The other cells can stay — a `DELETE` row sends only the SKU.
4. Click **Create/Replace/Del.**

A `DELETE` row needs only **SKU** and **Operation Type**: no product type and no template. To delete many SKUs, paste them into column B, click **Fetch by SKU** and **Backup**, fill `DELETE` down column C, then click **Create/Replace/Del.** (up to 20 rows) or **Submit Feed** (more).

<Callout type="warn" title="No preview, no undo">
  `DELETE` removes the SKU from your catalog. Validate skips `DELETE` rows because Amazon has no preview for them, and the deletion cannot be undone.
</Callout>

## All four in one batch [#all-four-in-one-batch]

A sheet can hold rows of every Operation Type. One click of **Create/Replace/Del.** runs each row by its own type:

<img alt="Four cards, one per Operation Type, each with a one-row example. UPDATE: EB-PRO-BLK with every gold column and a product ID. PARTIAL_UPDATE: EB-LITE-BLU with its ASIN and a new price. PATCH-DELETE: EB-LITE-RED with only the variation cells and their real values. DELETE: EB-OLD-GRY with only the SKU" src="__img4" />

## Validate, publish, read the result [#validate-publish-read-the-result]

<img alt="Flow: Get Template, fill the rows, Validate (Preview) — DELETE rows are skipped, and issues are fixed and validated again. Then, for up to 20 rows Create/Replace/Del., for more Submit Feed followed by Refresh Status until DONE. Both end in the Submission Log" src="__img5" />

| Button                  | Rows                       | What it does                                                                   |
| ----------------------- | -------------------------- | ------------------------------------------------------------------------------ |
| **Validate (Preview)**  | up to 20                   | Amazon checks the rows and nothing goes live. `DELETE` rows are skipped.       |
| **Create/Replace/Del.** | up to 20                   | Live. Each row runs by its Operation Type; the result for each SKU is instant. |
| **Submit Feed**         | up to 25,000 (under 10 MB) | Live. Every row goes in one feed, which Amazon processes in its queue.         |

Each run adds one row to the **Submission Log** tab:

<img alt="The Submission Log tab: a Validate run with &#x22;0 of 1 valid&#x22; and the issue &#x22;Row 7 · EB-PRO-BLK · 'Country of Origin' is required but missing&#x22;, a Validate with 4 of 4 valid, a Publish with 4 of 4 accepted, and a Submit Feed with 248 of 250 accepted and two issues" src="__img6" />

* **Action** names the button: **Publish** is **Create/Replace/Del.**
* **Result** is the cell to read: `✓ 4 of 4 accepted`, `⚠ 248 of 250 accepted` or `⏳ Processing`.
* **Issues** gives one line per problem, naming the sheet row or the SKU.
* **Feed ID** and **Feed Status** are filled for Submit Feed only. **Remark ✎** is for your own notes, and **Raw Response** keeps Amazon's full answer.

### Bulk: more than 20 rows [#bulk-more-than-20-rows]

1. Put up to 20 sample rows on the tab, one or two of each product type, and **Validate** them until they pass.
2. Add the rest of the rows and click **Submit Feed**.
3. Open the **Submission Log** tab and click **Submission Log › Refresh Status** until **Feed Status** reads `DONE`. **Result** then shows how many rows Amazon accepted, and **Issues** shows the rest.

<Callout title="Other ways to fill rows">
  * **Fill from JSON:** paste a listing's JSON (for example the JSON cell of a [Listing Snapshot](/guides/fetch-live-listings-in-google-sheets) row) into **Attributes JSON** and click **Fill from JSON**. An empty SKU or Product Type is filled from the JSON too.
  * **From Listing Drafts:** copy written with AI arrives with **Send to Publish Queue**. See [Write listings with AI](/guides/write-amazon-listings-with-ai-in-google-sheets).
  * **Existing ASINs:** to sell a product that is already on Amazon, use product type `PRODUCT`. See [Bulk add existing ASINs](/guides/bulk-add-existing-asins-to-your-catalog).
  * The sidebar's full button list is on [Catalogs](/help/sheets/sellers/catalogs).
</Callout>

## Tricks that save you time [#tricks-that-save-you-time]

### Fetch a whole column of SKUs at once [#fetch-a-whole-column-of-skus-at-once]

Type 50 SKUs in column B and click **Fetch by SKU** once; each row fills from its own listing. Only rows with an empty Item Name are fetched. A run stops after about five minutes, and the sidebar says how many rows are left — click again to continue.

### Let Amazon fill in the product type [#let-amazon-fill-in-the-product-type]

You don't need to know a SKU's product type to get its template:

<img alt="Three steps on the Publish Queue tab. 1, Fetch by SKU: the SKUs in column B, with PARTIAL_UPDATE in column C, get their product type in column D, HEADPHONES and SPEAKERS. 2, Get Template builds the columns for both types; columns B to D stay and the other cells are cleared. 3, Fetch by SKU again fills the rows under the template's own columns" src="__img7" />

1. Type the SKUs in column B and `PARTIAL_UPDATE` in column C, then click **Fetch by SKU**. Column D fills with each SKU's product type. Values that have no column yet go into new columns at the far right.
2. Click **Get Template**. It builds the columns of every product type in column D, in Amazon's order, with the required names in gold, and replaces those extra columns.
3. Click **Fetch by SKU** again. Get Template cleared everything except columns B–D, so this second fetch puts the values back, under the template's own columns this time.
4. Change the cells you want, then click **Validate (Preview)**.

You can also copy a SKU's **SKU** (column B) and **Product Type** (column J) from [Listing Snapshot](/guides/fetch-live-listings-in-google-sheets). For a product you don't sell yet, put its ASIN on a Listing Snapshot row and click **Fetch by ASIN**; column J shows its product type.

### Change a listing without a new template [#change-a-listing-without-a-new-template]

A SKU of another product type can use the columns already on the tab, so you skip **Get Template**, which would clear your rows. Item Name, Bullet Point and Your Price are on almost every template. For a `PARTIAL_UPDATE`, **column D** must hold the SKU's own product type, because Amazon checks the row against it. Copy it from Listing Snapshot, or click **Fetch by SKU** on the row.

### Check whether Amazon took your change [#check-whether-amazon-took-your-change]

`accepted` means Amazon accepted your submission. Shoppers see Amazon's product page, and Amazon may show another seller's value there, or its own, instead of yours. To see which value won, fetch the product twice on Listing Snapshot — once by SKU, once by ASIN — and compare. See [Live listings, Lesson 3](/guides/fetch-live-listings-in-google-sheets#lesson-3--check-whether-amazon-took-your-change).

### Read the guides in your own language [#read-the-guides-in-your-own-language]

**B3 Listing Locale** is the language shoppers read. **C3 Template Locale** is the language you read the row-4 guides and the row-6 names in. A US listing can be written in **en_US** while you read the template in **zh_CN**; the row-6 names then show in Chinese, while this guide uses the English names.

### One Publish Queue per marketplace [#one-publish-queue-per-marketplace]

The Publish Queue buttons work on any tab whose name starts with **Publish Queue**. Duplicate the tab and rename the copy **Publish Queue UK**. Set its **A3** to `myStore-UK` and **B3** to **en_GB**, then click **Get Template**. Each tab keeps its own store and template. Listing Drafts' **Send to Publish Queue** always fills the tab named exactly **Publish Queue**.

## If a row is blocked [#if-a-row-is-blocked]

The sidebar checks every row before it sends anything. If one row fails a check, nothing is sent, and the message names the row:

| The message says                                    | Fix                                                                                                               |
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| operationType is empty                              | Fill column C. A blank is never treated as `UPDATE`, because `UPDATE` replaces the whole listing.                 |
| SKU "…" is on rows 7, 9                             | Keep one row per SKU.                                                                                             |
| … has no productType                                | Fill column D. Only a `DELETE` row can leave it blank.                                                            |
| UPDATE needs a product identifier                   | Fill External Product ID (type and value) or Merchant Suggested ASIN, or set Has GTIN exemption? to Yes.          |
| … are mutually exclusive — fill exactly one         | A row has both a product ID and the GTIN exemption. Clear one.                                                    |
| PARTIAL_UPDATE requires …                           | Fill the ASIN in Merchant Suggested ASIN. **Fetch by SKU** fills the ASIN or the barcode.                         |
| Product type "…" does not exist on this marketplace | Check column D. Product types are in capitals, such as `HEADPHONES`.                                              |
| Country Mismatch                                    | Set **B3** to a language of the store's country, such as **en_GB** for `myStore-UK`.                              |
| Too many SKUs … Maximum allowed is 20               | Use **Submit Feed** for more than 20 rows.                                                                        |
| This Publish Queue sheet is an old version          | Update the tab as the message says. Your old tab is kept as a backup tab, so you can copy your rows over from it. |

This message comes from Amazon, not from the sidebar: **"'X' is required but missing — but you filled X…"**. The value you typed isn't exactly one of the dropdown options, and capital letters count. Amazon ignores the value and reports it as missing. Pick it again from the dropdown.

## Frequently asked questions [#frequently-asked-questions]

### Is the Publish Queue the same as Seller Central's flat file? [#is-the-publish-queue-the-same-as-seller-centrals-flat-file]

It holds the same columns. The tab's hidden row 5 carries Amazon's own flat-file key for every column, and row 6 the column names you know from the template. What differs is the workflow — the template builds in the sheet, Amazon checks rows before they go live, and the results land in the Submission Log tab instead of a report you download.

### Why was my PARTIAL_UPDATE row blocked? [#why-was-my-partial_update-row-blocked]

A `PARTIAL_UPDATE` row needs the listing's identifier — its ASIN in Merchant Suggested ASIN, or the External Product ID. Amazon sometimes creates a new listing from a partial update; with the identifier filled it never will. Fetch by SKU fills it from your live listing.

### Can I validate more than 20 rows? [#can-i-validate-more-than-20-rows]

No. Validate (Preview) and Create/Replace/Del. take up to 20 SKUs. For a bigger batch, validate up to 20 sample rows first, then put all the rows in and click Submit Feed — up to 25,000 rows, under 10 MB.

### Can I undo a DELETE? [#can-i-undo-a-delete]

No. `DELETE` removes the SKU from your catalog, has no preview and cannot be undone. Fetch the SKU first, then click Backup — it saves a copy of the tab, with the whole listing, and records its link on the Listing Log tab — so you can list the SKU again from the copy.

### Why did Fetch by SKU skip my row? [#why-did-fetch-by-sku-skip-my-row]

Fetch by SKU, Fetch by ASIN and Fill from JSON run only on rows whose Item Name is empty — a filled title means the row is done. Clear the Item Name to fetch the row again; the whole row is then rewritten from the live listing.

### Does Get Template erase what I typed? [#does-get-template-erase-what-i-typed]

It keeps the SKU, Operation Type and Product Type of every row (columns B–D) and clears the other cells of the rows below the header, so run it before you fill the rows. If the rows came from Fetch by SKU or Fetch by ASIN, fetch again afterwards to put the values back.
