FOD (Featured Offer Disqualification), Amazon'da bir satıcının ürün listesinin Öne Çıkan Teklif olma hakkını kaybettiğini ifade eder.
PRICING_HEALTH bildirimi, Amazon'da bir satıcının ürün listesinin Öne Çıkan Teklif olma hakkını kaybettiğinde gönderilen bildirim türüdür. Rekabetçi olmayan bir fiyat nedeniyle bir satıcı teklifi Öne Çıkan Teklif olmaya uygun olmadığında PRICING_HEALTH bildirimi gönderilir.
Satıcı,
- Satıcı merkezinde ürününün ‘Öne Çıkan Teklif Değil’ durumunda olduğunu görür.
- PRICING_HEALTH bildiriminde BuyBoxDisqualification hata tipini görür.
Bir ürün Önerilen Teklif Olma durumunu kaybettiğinde;
- Ürün, ürün sayfasında "Amazon'daki Diğer Satıcılar" kısmına düşer ve satın alma kutusunda görünmez.
Bu kapsamda, Öne Çıkan Teklif olmayı kaybeden ürünün çözümü için;
- Notifications API kullanılarak PRICING_HEALTH’e abone olunması,
- Öne Çıkan Teklif olmayı kaybeden ürün bildirimlerinin alınması,
- Alınan bildirimin incelenerek fiyat güncellemesi yapılması ve
- Güncellemenin başarı ile gerçekleşip gerçekleşmediğini kontrol edilmesi gerekmektedir.
Not : Ürünün Öne Çıkan Teklif olmaya uygun olabilmesi için iyi fiyatlar, stok durumu ve teslimat hızı sağlamanız gerekir. Sadece fiyat güncellendiğinde Öne Çıkan Teklif olacağı garanti edilmemektedir.
NOTIFICATION Teknik Kurulumu & PRICING_HEALTH Aboneliği
PRICING_HEALTH bildirimlerine abone olma kapsamında AWS hesabına ve NOTIFICATION SQS Queue yapısının kurulmuş olmasına ihtiyacınız vardır.
Aşağıda bu yapının kurulması için tercih edilen bir süreç aktarılmıştır. Diğer süreçleri incelemek için https://developer-docs.amazon.com/sp-api/docs/tutorial-grant-permission-to-sqs-queue linkini kontrol edebilirsiniz.
Bu süreç için ilk olarak kurulum yapıp gerekli izinlerle birlikte kuyruğunuzu oluşturmalısınız. Bunun için;
-
İlk olarak bir AWS hesabı oluşturmalısınız.
-
Daha sonra aşağıdaki AWS CloudFormation şablonunu bir dosyaya kopyalamalısınız. Şablon, YAML kodu içerir.
AWSTemplateFormatVersion: 2010-09-09
Description: >-
AWS CloudFormation Template to create a new SQS queue used to receive notifications from Notifications API.
Parameters:
DestinationQueueName:
Type: String
Description: The name of the SQS queue to be created.
Resources:
DestinationQueue:
Type: 'AWS::SQS::Queue'
Properties:
QueueName: !Ref DestinationQueueName
DestinationQueuePolicy:
Type: 'AWS::SQS::QueuePolicy'
Properties:
Queues:
- !Ref DestinationQueue
PolicyDocument:
Version: 2012-10-17
Statement:
- Sid: AllowSPAPIAccess
Effect: Allow
Principal:
AWS: '437568002678'
Action:
- 'sqs:GetQueueAttributes'
- 'sqs:SendMessage'
Resource: !GetAtt
- DestinationQueue
- Arn
- AWS CloudFormation konsoluna giriş yapın.
- AWS CloudFormation şablonunu belirlemeniz gerekmektedir. Bunu yapabilmek için;
- AWS CloudFormation konsolunda "Create stack" seçin ve "With new resources (standard)" seçeneğini işaretleyin.
- Stack oluşturma sayfasında, "Specify template" altında "Upload a template file" seçin ve başlangıçta kopyaladığınız şablonu seçin ve yükleyin.
- "Next" seçeneğine tıklayın.
- Oluşturduğunuz stack için isim belirleyin.
- "Provide a stack name" alanına, yüklediğiniz AWS CloudFormation şablonuna dayalı olarak oluşturulacak stack için bir isim girin.
- Hedef SQS kuyruğu için isim belirleme
- "DestinationQueueName" için bir Amazon SQS kuyruk ismi girin ve "Next" seçeneğine tıklayın.
- Not: PRICING_HEALTH bildirimi için SQS Queue kullanılmaktadır. Kullanılan yapı bildirim türüne göre farklılık gösterebilir. Seçilen bu yolla birlikte stack oluşturulurken SQS kuyruğu otomatik oluşmaktadır.
- Stack seçeneklerini yapılandırmanız gerekmektedir. Bunun için;
- "Configure stack options" sayfasında varsayılan ayarları koruyun ve "Next" seçeneğine tıklayın.
- Yapılandırmayı gözden geçirin ve "Submit" seçeneğine tıklayın.
- Stack'in başarıyla oluşturulmasını bekleyin. Not: Stack detay sayfasında durum "CREATE_COMPLETE" olduğunda stack başarıyla oluşturulmuş demektir.
- Amazon SQS kuyruğunun ARN'sini almanız gerekmektedir. Stack oluşturulurken kuyruk otomatik oluşmaktadır. Oluşturulan kuyruğun Amazon Resource Name (ARN)'si abonelik oluştururken kullanılacağından dolayı almak gerekmektedir.
- Amazon SQS konsoluna gidin.
- Listede yeni kuyruğunuzu görmelisiniz, yeni oluşan kuyruğunuzu seçin.
- "ARN" altında, kuyruk için Amazon Resource Name (ARN)'yi kopyalayın.
Şu ana kadar yapılan adımlarla birlikte bir AWS hesabı kuruldu, gerekli izinler alındı ve bildirim alabilmek için gerekli SQS (Simple Queue Service) kuyruğunun kurulumu yapıldı.
Bir sonraki adımda kurulumu yapılan yapı ile PRICING_HEALTH bildirim türüne abone olunacaktır.
- İlk olarak bir destination oluşturmanız gerekmektedir. Bu adımla birlikte adımların ilgili kuyruğa iletilmesi sağlanır.
- Bunun için createDestination servisi kullanılır.
- Bu servis bildirimleri almak amacıyla destination oluşturmaya yarayan servistir.
- Servisin teknik detayları için : bknz.
- Servisin Uzantısı : POST /notifications/v1/destinations
- Ardından abonelik oluşturmanız gerekmektedir. Oluşturulan kuyruğa, istenilen bildirim türlerine ait bildirimlerin iletilmesini sağlar.
- Bunun için createSubscription sercisi kullanılır.
- Bu servis ile istediğiniz bildirim türüne abone olabilirsiniz. Bu servisi kullanmadan önce createDestination servisi çağrılmış ve destination oluşturulmuş olmalıdır.
- Servisin teknik detayları için : bknz.
- Servisin Uzantısı : POST /notifications/v1/subscriptions/{notificationType}
- Bu durumda notificationType = PRICING_HEALTH olacaktır.
- Kuyruğa iletilen bildirimleri kontrol edip mesaj geldiğinde çekmeniz gerekmektedir. Bu işlemi düzenli periyotlarda ya da ihtiyaçlarına uygun özellikte otomatik olarak yapabilirsiniz.
- Yapılan aboneliğin başarılı olup olmadığını kontrol etmek amacıyla AWS hesabınızdan ilgili kuyruğa girip manuel olarak mesajlar poll kontrol edilip çekilebilir.
- Bunu yapabilmek için kuyruğa tıkladıktan sonra “Send and Receives Messages” butonuna tıklanıp sayfanın aşağında belirginleşen “Poll for Messages” butonuna tıklanabilir.
- Alınan bildirimi işlemek ve bu bildirime göre fiyatlama aksiyonu almanız gerekmektedir.
- Örnek bir PRICING_HEALTH yapısı aşağıdaki gibidir:
{
"notificationVersion" : "1.0",
"notificationType" : "PRICING_HEALTH",
"payloadVersion" : "1.0",
"eventTime" : "2025-03-24T07:09:26.126Z",
"notificationMetadata" : {
"applicationId" : "amzn1.sp.solution.8591b031-e6**\*\*\*\***",
"subscriptionId" : "f10626b2-ea70-49**\*\*\*\***",
"publishTime" : "2025-03-24T07:09:26.997Z",
"notificationId" : "acbdb015-0931-****\*****"
},
"payload" : {
"issueType" : "BuyBoxDisqualification",
"sellerId" : "A297A7DJHEYXBY",
"offerChangeTrigger" : {
"marketplaceId" : "A33AVAJ2PDY3EV",
"asin" : "B0D4RJFLT9",
"itemCondition" : "new",
"timeOfOfferChange" : "2025-03-24T07:09:26.126Z"
},
"merchantOffer" : {
"condition" : "new",
"fulfillmentType" : "MFN",
"listingPrice" : {
"amount" : 330.0,
"currencyCode" : "TRY"
},
"shipping" : {
"amount" : 0.0,
"currencyCode" : "TRY"
},
"landedPrice" : {
"amount" : 330.0,
"currencyCode" : "TRY"
}
},
"summary" : {
"numberOfOffers" : [ {
"condition" : "new",
"fulfillmentType" : "MFN",
"offerCount" : 3
} ],
"buyBoxEligibleOffers" : [ {
"condition" : "new",
"fulfillmentType" : "MFN",
"offerCount" : 3
} ],
"buyBoxPrices" : [ {
"condition" : "new",
"listingPrice" : {
"amount" : 330.0,
"currencyCode" : "TRY"
},
"shipping" : {
"amount" : 0.0,
"currencyCode" : "TRY"
},
"landedPrice" : {
"amount" : 330.0,
"currencyCode" : "TRY"
}
} ],
"salesRankings" : [ {
"productCategoryId" : "book_display_on_website",
"rank" : 230260
}, {
"productCategoryId" : "13808232031",
"rank" : 11071
} ],
"referencePrice" : {
"competitivePriceThreshold" : {
"amount" : 235.87,
"currencyCode" : "TRY"
}
}
}
}
}
Bildirim yapısında payload’da:
- issueType,
- Öne Çıkan Teklif olmayı kaybeden ürünü temsil etmesi için bu hata tipinin BuyBoxDisqualification olması gerekmektedir.
- sellerId,
- Size ait satıcı Id’niz burada gönderilmektedir.
- marketplaceId ve
- Bildirime ait ilgili ASIN bilgilerini görebilirsiniz.
Bildirimde yer alan referencePrice objesi ise;
- Ürünün Öne Çıkan Teklif olmaya uygun olabilmesi için güncellemeniz gereken referans fiyat bilgisini vermektedir.
- Teklifinizin Öne Çıkan Teklif olmaya uygun olmasını istiyorsanız, referans fiyatınız ile birlikte ilgili ASIN için fiyat güncellemeli ve bunu satıcının onayından sonra SP-API servislerine iletmelisiniz.
Ek Notlar :
1.Pricing Health Bildirimi kapsamında; Öne Çıkan Teklif olmaya uygun olabilmek için dikkate alınması gereken fiyat, bildirim yapısında aşağıdaki gibi dönmektedir;
"referencePrice" : {
"competitivePriceThreshold" : {
"amount" : 235.87,
"currencyCode" : "TRY"
}
}
referencePrice bu şekilde competitivePriceThreshold içerisinde gönderiliyorsa fiyat güncellemesi buna göre yapılmalıdır. Bu ilgili ürünün herhangi bir Öne Çıkan Teklif olmadığını ve fiyat güncelleme doğrultusunda Öne Çıkan Teklif olma hakkına uygun hale gelebileceğinizi temsil eder.
2.Eğer ilgili ürünün halihazırda Amazon içerisinde farklı bir satıcıya ait Öne Çıkan Teklif varsa aşağıdaki bildirim size dönecektir.
{
"notificationVersion" : "1.0",
"notificationType" : "PRICING_HEALTH",
"payloadVersion" : "1.0",
"eventTime" : "2025-03-27T10:55:29.436Z",
"notificationMetadata" : {
"applicationId" : "amzn1.sp.solution.8591b031-e6aa-48\***\*",
"subscriptionId" : "f10626b2-ea70-4944-8ca2-**\*****",
"publishTime" : "2025-03-27T10:55:30.855Z",
"notificationId" : "9bf74ca2-1525-4879-8e89-**\***"
},
"payload" : {
"issueType" : "BuyBoxDisqualification",
"sellerId" : "A297A7DJHEYXBY",
"offerChangeTrigger" : {
"marketplaceId" : "A33AVAJ2PDY3EV",
"asin" : "B09PZ7Z7P8",
"itemCondition" : "new",
"timeOfOfferChange" : "2025-03-27T10:55:29.435Z"
},
"merchantOffer" : {
"condition" : "new",
"fulfillmentType" : "MFN",
"listingPrice" : {
"amount" : 240.0,
"currencyCode" : "TRY"
},
"shipping" : {
"amount" : 0.0,
"currencyCode" : "TRY"
},
"landedPrice" : {
"amount" : 240.0,
"currencyCode" : "TRY"
}
},
"summary" : {
"numberOfOffers" : [ {
"condition" : "new",
"fulfillmentType" : "MFN",
"offerCount" : 2
} ],
"buyBoxEligibleOffers" : [ {
"condition" : "new",
"fulfillmentType" : "MFN",
"offerCount" : 2
} ],
"buyBoxPrices" : [ {
"condition" : "new",
"listingPrice" : {
"amount" : 133.2,
"currencyCode" : "TRY"
},
"shipping" : {
"amount" : 0.0,
"currencyCode" : "TRY"
},
"landedPrice" : {
"amount" : 133.2,
"currencyCode" : "TRY"
}
} ],
"salesRankings" : [ {
"productCategoryId" : "home_display_on_website",
"rank" : 37021
}, {
"productCategoryId" : "13028174031",
"rank" : 653
} ],
"referencePrice" : { }
}
}
}
Bu bildirimde güncel satın alma kutusu fiyatını landedPrice alanından görebilirsiniz. Halihazırda Öne Çıkan Teklif olduğu için tarafınıza herhangi bir referencePrice dönmeyecektir.
3.Bildirim kapsamında referencePrice objesinde aşağıdaki fiyat tipleri de dönebilmektedir. Bu fiyat tiplerinin, fiyat güncelleme kapsamına alınmaması gerekmektedir. Fiyat güncellemelerine konu olacak tek fiyat tipi 1. maddede yer alan competitivePriceThreshold.amount’tur.
Bu fiyat tipleri birlikte ya da ayrı ayrı bildirimde yer alabilir.
"referencePrice": {
"averageSellingPrice": {
"amount": 7500,
"currencyCode": "TRY"
},
"msrpPrice": {
"amount": 37.04,
"currencyCode": "TRY"
},
"retailOfferPrice": {
"amount": 37.04,
"currencyCode": "TRY"
}
}