Back to home
B2B Any Offer Changed
Pricing
Any Offer Changed
B2B Any Offer Changed
Pricing Health
Listing
Status Change
Issues Change
Quantity Change
Get started
Input
Output
{ "context": { "listing": { "asin": "B00EXAMPLE01", "condition": "used", "subcondition": "good", "price": 15.27, "floor": 10.0, "ceiling": 25.0, "shipping": 0.0, "b2bPrice": null, "fulfillmentChannel": "Amazon", "quantity": 3, "enabled": true, "suppressed": false } }, "event": { "NotificationVersion": "1.0", "NotificationType": "B2B_ANY_OFFER_CHANGED", "PayloadVersion": "1.0", "EventTime": "2024-11-18T14:31:09.305Z", "NotificationMetadata": { "ApplicationId": "amzn1.sellerapps.app.00000000-0000-0000-0000-000000000000", "SubscriptionId": "00000000-0000-0000-0000-000000000000", "PublishTime": "2024-11-18T14:31:09.453Z", "NotificationId": "00000000-0000-0000-0000-000000000000" }, "Payload": { "B2BAnyOfferChangedNotification": { "SellerId": "A1EXAMPLE00001", "OfferChangeTrigger": { "MarketplaceId": "ATVPDKIKX0DER", "ASIN": "B00EXAMPLE01", "ItemCondition": "new", "TimeOfOfferChange": "2024-11-18T14:31:09.116Z", "OfferChangeType": "Internal" }, "Summary": { "NumberOfOffers": [ { "Condition": "new", "FulfillmentChannel": "Amazon", "OfferCount": 3 } ], "LowestPrices": [ { "Condition": "new", "FulfillmentChannel": "Amazon", "LandedPrice": { "Amount": 100.0, "CurrencyCode": "USD" }, "ListingPrice": { "Amount": 100.0, "CurrencyCode": "USD" }, "Shipping": { "Amount": 0.0, "CurrencyCode": "USD" } } ], "BuyBoxPrices": [ { "Condition": "New", "LandedPrice": { "Amount": 100.0, "CurrencyCode": "USD" }, "ListingPrice": { "Amount": 100.0, "CurrencyCode": "USD" }, "Shipping": { "Amount": 0.0, "CurrencyCode": "USD" } } ], "ListPrice": { "Amount": 150.0, "CurrencyCode": "USD" }, "SalesRankings": [ { "ProductCategoryId": "example_category", "Rank": 12345 } ], "NumberOfBuyBoxEligibleOffers": [ { "Condition": "new", "FulfillmentChannel": "Amazon", "OfferCount": 3 } ] }, "Offers": [ { "SellerId": "A1EXAMPLE00002", "SubCondition": "new", "SellerFeedbackRating": { "FeedbackCount": 5000, "SellerPositiveFeedbackRating": 98 }, "ShippingTime": { "MinimumHours": 0, "MaximumHours": 0, "AvailabilityType": "NOW", "AvailableDate": "" }, "ListingPrice": { "Amount": 100.0, "CurrencyCode": "USD" }, "Shipping": { "Amount": 0.0, "CurrencyCode": "USD" }, "IsFulfilledByAmazon": true, "IsBuyBoxWinner": true, "PrimeInformation": { "IsOfferPrime": true, "IsOfferNationalPrime": true }, "IsFeaturedMerchant": true, "ShipsDomestically": true }, { "SellerId": "A1EXAMPLE00003", "SubCondition": "new", "SellerFeedbackRating": { "FeedbackCount": 2500, "SellerPositiveFeedbackRating": 97 }, "ShippingTime": { "MinimumHours": 0, "MaximumHours": 0, "AvailabilityType": "NOW", "AvailableDate": "" }, "ListingPrice": { "Amount": 105.0, "CurrencyCode": "USD" }, "Shipping": { "Amount": 0.0, "CurrencyCode": "USD" }, "IsFulfilledByAmazon": true, "IsBuyBoxWinner": false, "PrimeInformation": { "IsOfferPrime": true, "IsOfferNationalPrime": true }, "IsFeaturedMerchant": true, "ShipsDomestically": true } ] } } } }
# Run your code to preview the output.
Run
⌘↵
function handle(event, context) { const listing = context.listing; const notification = event.Payload?.B2BAnyOfferChangedNotification; // Use B2C bounds (Amazon doesn't provide B2B-specific min/max) if (!listing.floor || !listing.ceiling) return context; // Find lowest B2B price for matching fulfillment channel const lowestPriceEntry = notification?.Summary?.LowestPrices?.find( (p) => p.FulfillmentChannel === listing.fulfillmentChannel, ); const lowestB2bPrice = lowestPriceEntry?.ListingPrice?.Amount; if (!lowestB2bPrice) return context; // Match lowest B2B price, clamped to B2C bounds const price = Math.max( listing.floor, Math.min(lowestB2bPrice, listing.ceiling), ); listing.set({ b2bPrice: price }); return context; }