Webhook message schema

Every field of a SellerSheet Webhooks HTTPS delivery, schemaVersion 1 — the headers, the delivery, each message, its store, Amazon's notification and the typed summary of every notification delivered today.

What an HTTPS webhook receives, field by field. The same is published as a JSON Schema (draft 2020-12) at sellersheetai.com/schemas/webhooks-v1.json, with one sample delivery per notification at sellersheetai.com/schemas/webhooks-v1-samples.json. Every value on this page is made up.

Rules that hold everywhere:

  • Keys are camelCase, except inside amazon, which keeps Amazon's own spelling.
  • Every key is always sent. "Required" below is what the schema requires; a key that is not required is sent as null (or [], {}) when it has no value.
  • Objects are not closed: a key you do not know may appear later within schemaVersion 1 — ignore it.
  • Times are ISO 8601 date-times in UTC (2026-10-27T09:28:33Z), except inside amazon, which keeps Amazon's text.

Headers

HeaderExampleWhat it is
Content-Typeapplication/jsonAlways JSON.
X-SellerSheet-Webhook-Id0c6f2a8e-4d1b-4e7a-9b35-6e8d2f1a4c90The webhook — equal to webhookId.
X-SellerSheet-Delivery-Iddlv_8f3a1c9e2b7d4e6fa0b1c2d3e4f5a6b7The delivery — equal to deliveryId, the same on every try.
X-SellerSheet-Timestamp1793092113Unix seconds when this try was sent.
X-SellerSheet-Signaturesha256=2225d8c4…sha256= and the hex HMAC-SHA256, keyed with your signing secret, of the timestamp, a . and the raw body. How to verify.
X-SellerSheet-Testfalsetrue on a Send test: the messages are samples for the made-up store SampleStore.

The delivery

The body of one request: up to 100 messages, at most 1 MB.

FieldTypeRequiredWhat it isExample
deliveryIdstringyesThis delivery. The same on every try of it.dlv_8f3a1c9e2b7d4e6fa0b1c2d3e4f5a6b7
webhookIdstringyesThe webhook it was sent to.0c6f2a8e-4d1b-4e7a-9b35-6e8d2f1a4c90
organizationIdstringyesYour workspace.7b2e9c41-0d3a-4f6b-8e15-9c2a4d6f8b30
sentAtdate-timeyesWhen this try was sent.2026-10-27T09:28:33Z
attemptinteger ≥ 1yesWhich try this is: 1, 2 or 3.1
schemaVersioninteger, 1noThis format's version — always 1.1
messagesarray of messageyesThe messages, in the order SellerSheet received them.

A message

One Amazon notification.

FieldTypeRequiredWhat it isExample
messageIdstringyesAmazon's NotificationId. Drop one you already handled.5c0e8f4a-2b7d-4e91-a3c6-000000000001
messageTypestringyesAmazon's notification type; it decides the shape of summary. More types may be added within schemaVersion 1.LISTINGS_ITEM_ISSUES_CHANGE
fingerprintstring or nullnosha256: and 64 hex characters, the same for the same change published again by Amazon under a new messageId.sha256:af6e358a…
storestore or nullnoYour store and the marketplace the message is about. A delivered message always names one of your stores.
eventTimedate-time or nullnoWhen the change happened (Amazon's EventTime).2026-10-27T09:14:03Z
publishTimedate-time or nullnoWhen Amazon sent it.2026-10-27T09:28:30Z
receivedAtdate-timeyesWhen SellerSheet received it.2026-10-27T09:28:32Z
summarysummaryyesSellerSheet's reading of the message, typed by messageType.
amazonamazonyesAmazon's notification, every value as Amazon sent it.

store

FieldTypeRequiredWhat it isExample
storeIdstringyesSellerSheet's ID of the store.3f6c2a9e-5b1d-4c8e-9a7f-2d4e6b8c0a11
refstringyesThe store ref <store>-<CC>: the store name and the message's marketplace.myStore-US
sellerIdstring or nullnoAmazon's seller ID.A1EXAMPLESELLER
marketplaceIdstring or nullnoAmazon's marketplace ID — null when Amazon names none (account health, reports, feeds and other account-wide messages).ATVPDKIKX0DER
countryCodestring or nullnoThe marketplace's country code.US
connectedbooleanyesfalse when the store has not connected this marketplace in SellerSheet.true

amazon

Amazon's notification — the source of truth. The top-level names are fixed; every value is exactly what Amazon sent, in Amazon's own casing (PascalCase for some notifications, camelCase for others): read a key in either casing.

FieldTypeRequiredWhat it isExample
notificationTypestringyesAmazon's NotificationType.LISTINGS_ITEM_ISSUES_CHANGE
notificationVersionstring or nullnoAmazon's NotificationVersion.1.0
payloadVersionstring or nullnoAmazon's PayloadVersion — the shape of payload.2023-12-13
eventTimestring or nullnoAmazon's EventTime, as Amazon wrote it.2026-10-27T09:14:03.000Z
notificationMetadataobjectnoAmazon's NotificationMetadata: ApplicationId, SubscriptionId, PublishTime, NotificationId.
payloadobjectnoAmazon's Payload, unchanged.

The payload of each notification is documented by Amazon in the Selling Partner API's notification type reference.

summary

Every summary has these four fields:

FieldTypeRequiredWhat it isExample
textstringyesOne readable line: the item and marketplace, plain words, then Amazon's field names and values.SKU SKU-EXAMPLE-01 (B0EXAMPLE01) on US: Listing not buyable (suppressed) · Severities=ERROR · EnforcementActions=LISTING_SUPPRESSED
severitycritical · warning · info · recoveryyesHow bad it is — red, orange, blue, green on a chat card. When each applies.critical
skustring or nullnoThe SKU, when Amazon sent one.SKU-EXAMPLE-01
asinstring or nullnoThe ASIN, when Amazon sent one.B0EXAMPLE01

Then the fields of its messageType, below, in the order of the Webhooks page. A type this page does not list carries the four fields only. A full sample delivery of each type, valid against the schema: webhooks-v1-samples.json.

messageTypeNotification
LISTINGS_ITEM_ISSUES_CHANGEListing issues
LISTINGS_ITEM_STATUS_CHANGEListing status
BRANDED_ITEM_CONTENT_CHANGEBrand content
ITEM_PRODUCT_TYPE_CHANGEProduct type change
LISTINGS_ITEM_MFN_QUANTITY_CHANGESelf-fulfilled quantity
PRODUCT_TYPE_DEFINITIONS_CHANGEProduct type definitions
PRICING_HEALTHPricing health
ANY_OFFER_CHANGEDCompeting offers
B2B_ANY_OFFER_CHANGEDBusiness offers (B2B)
FEE_PROMOTIONFee promotions
ORDER_CHANGEOrder changes
FULFILLMENT_ORDER_STATUSMulti-Channel Fulfillment orders
FBA_OUTBOUND_SHIPMENT_STATUSFBA Onsite shipments (Brazil)
EXTERNAL_FULFILLMENT_SHIPMENT_STATUS_CHANGEExternal fulfillment shipments
FBA_INVENTORY_AVAILABILITY_CHANGESFBA inventory
ITEM_INVENTORY_EVENT_CHANGEHourly inventory
ITEM_SALES_EVENT_CHANGEHourly sales
DETAIL_PAGE_TRAFFIC_EVENTHourly page views
TRANSACTION_UPDATETransactions
ACCOUNT_STATUS_CHANGEDAccount health
REPORT_PROCESSING_FINISHEDReport finished
FEED_PROCESSING_FINISHEDFeed finished
DATA_KIOSK_QUERY_PROCESSING_FINISHEDData Kiosk query finished

Listing issues

LISTINGS_ITEM_ISSUES_CHANGE — the issues now in force on a listing. Amazon never sends the issue text: open the SKU in Seller Central to read it.

FieldTypeWhat it is
severitiesarray of stringAmazon's Severities: ERROR, WARNING (NONE is left out).
enforcementActionsarray of stringAmazon's EnforcementActions: LISTING_SUPPRESSED (not buyable), ATTRIBUTE_SUPPRESSED (an attribute value rejected), CATALOG_ITEM_REMOVED (the catalog item is inactive, every offer non-buyable), SEARCH_SUPPRESSED (hidden from search).
clearedboolean or nulltrue when no issue remains.
{
  "text": "SKU SKU-EXAMPLE-01 (B0EXAMPLE01) on US: Listing not buyable (suppressed) · Severities=ERROR · EnforcementActions=LISTING_SUPPRESSED",
  "severity": "critical",
  "sku": "SKU-EXAMPLE-01",
  "asin": "B0EXAMPLE01",
  "severities": ["ERROR"],
  "enforcementActions": ["LISTING_SUPPRESSED"],
  "cleared": false
}

Listing status

LISTINGS_ITEM_STATUS_CHANGE — the listing's current status set. A status that is missing is its opposite: no BUYABLE means not buyable, no DISCOVERABLE means not in search results.

FieldTypeWhat it is
statusarray of stringAmazon's Status: BUYABLE, DISCOVERABLE, DELETED.
buyableboolean or nullBUYABLE is in the set.
discoverableboolean or nullDISCOVERABLE is in the set.
deletedboolean or nullDELETED is in the set.
{
  "text": "SKU SKU-EXAMPLE-02 (B0EXAMPLE02) on US: Buyable · Status=BUYABLE,DISCOVERABLE",
  "severity": "recovery",
  "sku": "SKU-EXAMPLE-02",
  "asin": "B0EXAMPLE02",
  "status": ["BUYABLE", "DISCOVERABLE"],
  "buyable": true,
  "discoverable": true,
  "deleted": false
}

Brand content

BRANDED_ITEM_CONTENT_CHANGE — which attributes of a catalog item of your brand changed. No SKU. Amazon sends one copy per brand-owner store the webhook takes.

FieldTypeWhat it is
brandNamestring or nullAmazon's BrandName.
attributesChangedarray of stringAmazon's AttributesChanged — attribute names as Amazon spells them.
{
  "text": "ASIN B0EXAMPLE04 on US: Changed: item_name, bullet_point · AttributesChanged=item_name,bullet_point · BrandName=MyBrand",
  "severity": "info",
  "sku": null,
  "asin": "B0EXAMPLE04",
  "brandName": "MyBrand",
  "attributesChanged": ["item_name", "bullet_point"]
}

Product type change

ITEM_PRODUCT_TYPE_CHANGE — an ASIN's product type, before and now. What its listings must say may have changed with it. No SKU.

FieldTypeWhat it is
previousProductTypestring or nullThe product type before, as Amazon names it.
currentProductTypestring or nullThe product type now.

Self-fulfilled quantity

LISTINGS_ITEM_MFN_QUANTITY_CHANGE — a SKU's self-fulfilled quantity now. No ASIN, and no marketplace: the quantity is the seller account's.

FieldTypeWhat it is
quantityinteger or nullThe quantity now; 0 is out of stock.
fulfillmentChannelCodestring or nullAmazon's FulfillmentChannelCode: DEFAULT is your own fulfillment; another code names a supply source.

Product type definitions

PRODUCT_TYPE_DEFINITIONS_CHANGE — a new version of a marketplace's product type definitions. No SKU or ASIN. Amazon sends one copy per store the webhook takes.

FieldTypeWhat it is
productTypeVersionstring or nullAmazon's ProductTypeVersion.
newProductTypesarray of stringThe product types this version adds.

Pricing health

PRICING_HEALTH — why your offer cannot be the featured offer, against Amazon's reference prices. No SKU: Amazon sends the ASIN only.

FieldTypeWhat it is
issueTypestring or nullAmazon's issueType, for example BuyBoxDisqualification.
yourPricemoney or nullYour landed price: listing plus shipping.
fulfillmentTypestring or nullAFN (FBA) or MFN (FBM).
competitivePriceThresholdmoney or nullAmazon's competitive price threshold.
referencePricesobject of moneyEvery reference price Amazon sent, under Amazon's name: competitivePriceThreshold, averageSellingPrice, retailOfferPrice, msrpPrice, …
{
  "text": "ASIN B0EXAMPLE03 on US: Not eligible for the featured offer · issueType=BuyBoxDisqualification · yours 29.99 USD, FBA (fulfillmentType=AFN) · competitivePriceThreshold=24.99 USD · averageSellingPrice=26.50 USD",
  "severity": "warning",
  "sku": null,
  "asin": "B0EXAMPLE03",
  "issueType": "BuyBoxDisqualification",
  "yourPrice": { "amount": 29.99, "currencyCode": "USD" },
  "fulfillmentType": "AFN",
  "competitivePriceThreshold": { "amount": 24.99, "currencyCode": "USD" },
  "referencePrices": {
    "competitivePriceThreshold": { "amount": 24.99, "currencyCode": "USD" },
    "averageSellingPrice": { "amount": 26.5, "currencyCode": "USD" }
  }
}

Competing offers

ANY_OFFER_CHANGED — the Buy Box, your offer and up to five other sellers' offers on an ASIN another seller is on. Amazon gives seller IDs, never names, and no SKU.

FieldTypeWhat it is
changeTypestring or nullAmazon's OfferChangeType, for example External.
buyBoxbuy box or nullThe Buy Box price and who holds it.
yourOfferoffer or nullYour own offer, when it is among Amazon's offers.
competitorsarray of offer, at most 5The other sellers' offers, in Amazon's order.
numberOfOffersinteger or nullEvery offer on the ASIN, all conditions and channels.
sellersChangedboolean or nullThe sellers on the ASIN differ from the previous message about it. true on the first message.
buyBoxWinnerChangedboolean or nullThe Buy Box winner differs from the previous message about it. true on the first message.
{
  "text": "ASIN B0EXAMPLE05 on US: 1 other seller: A2EXAMPLEOTHER 19.99 USD FBM, Buy Box, 95% of 120 · you 21.49 USD FBA, 99% of 812 · OfferChangeType=External · BuyBoxPrice=19.99 USD · NumberOfOffers=new Merchant 1,new Amazon 1",
  "severity": "warning",
  "sku": null,
  "asin": "B0EXAMPLE05",
  "changeType": "External",
  "buyBox": {
    "price": { "amount": 19.99, "currencyCode": "USD" },
    "sellerId": "A2EXAMPLEOTHER",
    "isYours": false
  },
  "yourOffer": {
    "sellerId": "A1EXAMPLESELLER",
    "price": { "amount": 21.49, "currencyCode": "USD" },
    "shipping": { "amount": 0.0, "currencyCode": "USD" },
    "fulfillment": "FBA",
    "isBuyBoxWinner": false,
    "feedbackRating": 99,
    "feedbackCount": 812
  },
  "competitors": [
    {
      "sellerId": "A2EXAMPLEOTHER",
      "price": { "amount": 19.99, "currencyCode": "USD" },
      "shipping": { "amount": 0.0, "currencyCode": "USD" },
      "fulfillment": "FBM",
      "isBuyBoxWinner": true,
      "feedbackRating": 95,
      "feedbackCount": 120
    }
  ],
  "numberOfOffers": 2,
  "sellersChanged": true,
  "buyBoxWinnerChanged": true
}

Business offers (B2B)

B2B_ANY_OFFER_CHANGED — as Competing offers, over the business (B2B) offers on the ASIN. No changeType, sellersChanged or buyBoxWinnerChanged.

FieldTypeWhat it is
buyBoxbuy box or nullThe B2B Buy Box price and who holds it.
yourOfferoffer or nullYour own B2B offer, when it is among Amazon's offers.
competitorsarray of offer, at most 5The other sellers' B2B offers, in Amazon's order.
numberOfOffersinteger or nullEvery B2B offer on the ASIN.

Fee promotions

FEE_PROMOTION — a fee promotion Amazon offers you: what it is, when it runs, and its first discount. sku or asin is set when it names exactly one item.

FieldTypeWhat it is
promotionTypestring or nullAmazon's FeePromotionType.
descriptionstring or nullAmazon's description of the promotion (FeePromotionTypeDescription).
effectiveFromdate-time or nullWhen it starts.
effectiveThroughdate-time or nullWhen it ends.
feeTypestring or nullThe fee it discounts, for example ReferralFee.
discountTypestring or nullAmazon's FeeDiscountType, for example PERCENTAGE.
discountValuenumber or nullAmazon's FeeDiscountValue.
discountAmountmoney or nullThe discount as an amount, when Amazon gives one.

Order changes

ORDER_CHANGE — the order's status now and what changed. sku is set when the order holds one SKU.

FieldTypeWhat it is
amazonOrderIdstring or nullThe order.
changeTypestring or nullAmazon's OrderChangeType: BuyerRequestedChange, OrderStatusChange, DeliveryTipChange.
changeReasonstring or nullAmazon's ChangeReason, for example Buyer Requested Cancel.
orderStatusstring or nullThe order's status now, for example Unshipped.
fulfillmentTypestring or nullAFN (FBA) or MFN (FBM).
buyerRequestedCancelboolean or nullAn item of the order says the buyer asked to cancel.
sellerSkusarray of stringThe order's SKUs.

Multi-Channel Fulfillment orders

FULFILLMENT_ORDER_STATUS — a Multi-Channel Fulfillment order, its packages and tracking. Amazon names no marketplace. sku is set when the order holds one SKU.

FieldTypeWhat it is
orderIdstring or nullThe fulfillment order.
eventTypestring or nullAmazon's eventType, for example ORDER_STATUS_CHANGED.
statusstring or nullPROCESSING, COMPLETE, COMPLETE_PARTIAL, CANCELLED, UNFULFILLABLE, INVALID.
sellerSkusarray of stringThe order's SKUs.
packagesarray of package, at most 20The packages of its shipments, with the carrier's tracking.

FBA Onsite shipments (Brazil)

FBA_OUTBOUND_SHIPMENT_STATUS — a shipment Amazon created or cancelled for an order. Brazil only.

FieldTypeWhat it is
amazonOrderIdstring or nullThe order.
amazonShipmentIdstring or nullThe shipment.
shipmentStatusstring or nullAmazon's ShipmentStatus: Created or Cancelled.

External fulfillment shipments

EXTERNAL_FULFILLMENT_SHIPMENT_STATUS_CHANGE — a shipment of your own fulfillment location changed status. Amazon names no marketplace.

FieldTypeWhat it is
shipmentIdstring or nullThe shipment.
shipmentStatusstring or nullIts status now, for example CREATED or CANCELLED.
channelNamestring or nullAmazon's channelName.
locationIdstring or nullYour fulfillment location.

FBA inventory

FBA_INVENTORY_AVAILABILITY_CHANGES — a SKU's FBA quantities, summed over every marketplace Amazon lists, and per marketplace. The message's marketplace is the first one listed.

FieldTypeWhat it is
fnskustring or nullAmazon's FNSKU.
fulfillableinteger or nullFulfillable units; 0 is out of stock at FBA.
inboundinteger or nullWorking + shipped + receiving.
reservedinteger or nullEvery reserved quantity.
unfulfillableinteger or nullUnfulfillable units.
marketplacesarray of marketplace inventoryThe same counts per marketplace.

Hourly inventory

ITEM_INVENTORY_EVENT_CHANGE — one hour's highly available inventory, summed over every ASIN Amazon lists. asin is set when it lists one.

FieldTypeWhat it is
startTimedate-time or nullThe start of the hour.
endTimedate-time or nullThe end of the hour.
asinCountinteger or nullHow many ASINs Amazon listed.
highlyAvailableInventoryinteger or nullHighly available inventory, in units.

Hourly sales

ITEM_SALES_EVENT_CHANGE — one hour's ordered units and revenue, summed over every ASIN Amazon lists. asin is set when it lists one.

FieldTypeWhat it is
startTimedate-time or nullThe start of the hour.
endTimedate-time or nullThe end of the hour.
asinCountinteger or nullHow many ASINs Amazon listed.
orderedUnitsinteger or nullUnits ordered.
orderedRevenuearray of moneyRevenue ordered, one entry per currency.

Hourly page views

DETAIL_PAGE_TRAFFIC_EVENT — one hour's detail page views, summed over every ASIN Amazon lists. asin is set when it lists one.

FieldTypeWhat it is
startTimedate-time or nullThe start of the hour.
endTimedate-time or nullThe end of the hour.
asinCountinteger or nullHow many ASINs Amazon listed.
glanceViewsinteger or nullDetail page views (Amazon's GlanceViews).

Transactions

TRANSACTION_UPDATE — a transaction posted to your account.

FieldTypeWhat it is
transactionTypestring or nullAmazon's TransactionType, for example Shipment.
postedDatedate-time or nullWhen it was posted.
totalAmountmoney or nullIts total.
accountTypestring or nullAmazon's AccountType, for example PAYABLE.
relatedIdentifiersobject of stringAmazon's RelatedIdentifiers, name → value (OrderId, …).

Account health

ACCOUNT_STATUS_CHANGED — the seller account's status. No item; the message's store is your store in its first marketplace.

FieldTypeWhat it is
previousStatusstring or nullNORMAL, AT_RISK or DEACTIVATED.
currentStatusstring or nullNORMAL, AT_RISK or DEACTIVATED.
{
  "text": "Account at risk · PreviousAccountStatus=NORMAL · CurrentAccountStatus=AT_RISK",
  "severity": "warning",
  "sku": null,
  "asin": null,
  "previousStatus": "NORMAL",
  "currentStatus": "AT_RISK"
}

Report finished

REPORT_PROCESSING_FINISHED — a report request finished. It includes the reports SellerSheet requests to keep your store's data in sync. Amazon names no marketplace.

FieldTypeWhat it is
reportIdstring or nullThe report.
reportTypestring or nullAmazon's reportType.
processingStatusstring or nullDONE, CANCELLED (Amazon had no data, or the request was cancelled) or FATAL.
reportDocumentIdstring or nullThe document to download, on DONE.

Feed finished

FEED_PROCESSING_FINISHED — a feed finished. Amazon names no marketplace.

FieldTypeWhat it is
feedIdstring or nullThe feed.
feedTypestring or nullAmazon's feedType, for example JSON_LISTINGS_FEED.
processingStatusstring or nullDONE, CANCELLED or FATAL.
resultFeedDocumentIdstring or nullThe processing report's document, on DONE.

Data Kiosk query finished

DATA_KIOSK_QUERY_PROCESSING_FINISHED — a Data Kiosk query finished. Amazon names no marketplace.

FieldTypeWhat it is
queryIdstring or nullThe query.
processingStatusstring or nullDONE, CANCELLED or FATAL.
dataDocumentIdstring or nullThe data document; null when the query matched no data.
errorDocumentIdstring or nullThe error document, on FATAL.
nextTokenstring or nullSet when the result has more pages.

Objects

money

FieldTypeRequiredWhat it is
amountnumberyesThe amount.
currencyCodestring or nullnoThe currency, for example USD.

offer

FieldTypeRequiredWhat it is
sellerIdstringyesAmazon's seller ID.
pricemoney or nullnoThe listing price.
shippingmoney or nullnoThe shipping price.
fulfillmentFBA · FBM or nullnoWho ships it.
isBuyBoxWinnerbooleanno (default false)This offer holds the Buy Box.
feedbackRatinginteger or nullnoPositive feedback, percent.
feedbackCountinteger or nullnoNumber of ratings.

buy box

FieldTypeRequiredWhat it is
pricemoney or nullnoThe Buy Box landed price.
sellerIdstring or nullnoThe seller holding it, when one of the offers Amazon listed does.
isYoursboolean or nullnoYou hold the Buy Box.

package

FieldTypeRequiredWhat it is
packageIdstring or nullnoThe package.
statusstring or nullnoIts status, for example DELIVERED.
carrierCodestring or nullnoThe carrier, for example FEDEX.
trackingNumberstring or nullnoThe carrier's tracking number.

marketplace inventory

FieldTypeRequiredWhat it is
marketplaceIdstring or nullnoAmazon's marketplace ID.
countryCodestring or nullnoThe marketplace's country code.
fulfillableintegerno (default 0)Fulfillable units.
inboundintegerno (default 0)Working + shipped + receiving.
reservedintegerno (default 0)Every reserved quantity.
unfulfillableintegerno (default 0)Unfulfillable units.

Validating

Any JSON Schema draft 2020-12 validator can check a body against webhooks-v1.json. The schema types summary by messageType (one "if messageType is this type, then summary is this shape" rule per notification), so a validator checks each message's summary against its own type.

On this page

Actions

View as Markdown

Ask an assistant

Ask ChatGPTAsk Claude