0š
I ended up contacting Amazon api support and they found out that it takes up to 15 minutes for the price to change. Also I had another script that uploaded new products and updated the inventory & price for existing productsā¦this script was competing with my repricing script.
I resolved the issue by changing how the second script updates price for existing products.
5š
There are a couple of possible reasons, listed roughly in the order of likelihood:
1. Amazon is slower to update values than they say they are. It is possible that although the feed was successful, there is still a period of time before that change reflects on Amazon (even changing values from SellerCentral comes with a messages that it isnāt instant).
Wait a few minutes and see if the change eventually shows up.
2. You could have an alternate repricing service still active. If you are currently using another repricer for this SKU, it might be competing with your attempts and reverting the price based on its own ruleset.
Itās possible to use the GetFeedSubmissionList call to see if another _POST_PRODUCT_PRICING_DATA_
feed was submitted after yours (though with no way to view the submitted contents).
3. There might be a conflict with the min and max prices on the SKU (whether you set them or not), and the price you tried to set is outside of the allowed range. This is a result of one of Amazonās policies requiring new and updated SKUās to have those set or it uses a default criteria.
In our continued effort to reduce price error risks to sellers and to avoid potentially negative customer experiences, starting on January 14, 2015, you will not be able to use your Seller Central preferences to select a blanket āopt-outā from all potential low- and high-pricing error rules. Instead, you will need to set a minimum and maximum allowed selling price for each product in your inventory if you do not want Amazonās default potential pricing error rules to apply to that product.
I canāt find an announcement page on this so it may have been an email, but it is quoted as such on the forums
Under those circumstances the feed will report back successful (because its references/format are correct), but the price change will silently fail because of the price range limits that are set.
You can verify if this is your issue by viewing the SKU under SellerCentral Manage Inventory page. You may have to turn on the min/max columns to view current values depending on your preferences set for that page.
Unfortunately, there is no way to pull min/max prices on inventory items to know if this will be an issue ahead of time:
Dear Seller,
I am Sharon from Amazon Seller Support and I will be assisting you with your concern today.
From the content of your email, I understand that you are concerned if thereās any report where you can download the report for āMinimum Priceā and āMaximum Priceā.
I regret to inform you that as of now the reports which are available will only provide information for āstandard_priceā and ālist_priceā.
I understand that this is a disappointment for you but please understand that as of not this feature of including āMinimum Priceā and āMaximum Priceā in the inventory reports has not been included and I sincerely apologize for all the inconvenience caused to you in this regard.
via support ticket to Amazon MWS team, Jul 03, 2016
4. It could be possible Amazon does not allow the feed to update a price during an active promotion. You should be able to check if an item is on sale by viewing the SellerCentral Manage Inventory page, where the āpriceā column would be bordered in green.
Seems unlikely as they require the āStandardPriceā element to be provided with the āSaleā element, but Amazonās own āAutomate Pricingā tool lists it as a possible reason for the tool failing.
5. You are applying the price update to the wrong marketplace.
If the id provided to the call under MarketplaceIdList=[MARKETPLACE_ID],
is for a different marketplace than the one you are checking, you wonāt see the price change.
Amazon does fail the feed submission request if you submit to a marketplace you do not have access to, so this may not be the issue if you only have one marketplace.
6. You are looking for the new price in the wrong spot.
If you are looking under the SellerCentral Manage Inventory page, make sure you are looking at the āPriceā column and not the āLowest Priceā column.
If you are looking at the productās detail or offer page (on Amazonās storefront), make sure you are looking at your offer. You may not be the main offer shown on the detail page or the top offer shown on the offer listing page.
And of course, make sure you have the right SKU / ASIN.
7. This is for a different feed, but a user has reported that Amazon just doesnāt update information sometimes, requiring the feed to be resent.
There is an alternate feed you can try using to update price information _POST_FLAT_FILE_INVLOADER_DATA_
, but it is a flat file type (tab delimited) so your XML schema would not transfer over. Probably only worth trying if you think the issue is related to the specific feed youāre using.
- Deploy-time commands inside Docker on Elastic Beanstalk
- Accessing model manager methods in datamigration
0š
I donāt know Python but your XML looks ok, here is my PHP code which I use to do price change for last 5 years and it works fine. I donāt know if this helps you as itās PHP.
$feed = <<< EOD
<?xml version="1.0" encoding="utf-8"?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.01</DocumentVersion>
<MerchantIdentifier>$merchant_token</MerchantIdentifier>
</Header>
<MessageType>Price</MessageType>
<Message>
<MessageID>1</MessageID>
<Price>
<SKU>$sku</SKU>
<StandardPrice currency="$currency">$new_price</StandardPrice>
</Price>
</Message>
</AmazonEnvelope>
EOD;
$feed = trim($feed);
$feedHandle = @fopen('php://temp', 'rw+');
fwrite($feedHandle, $feed);
rewind($feedHandle);
$parameters = array(
'Merchant' => $MERCHANT_ID,
'MarketplaceIdList' => $marketplaceIdArray,
'FeedType' => '_POST_PRODUCT_PRICING_DATA_',
'FeedContent' => $feedHandle,
'PurgeAndReplace' => false, //Leave this PurgeAndReplace to false so that it want replace whole product in amazon inventory
'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true))
);
rewind($feedHandle);
$request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters);
$return_feed = invokeSubmitFeed($service, $request, $price_change_info_log);
fclose($feedHandle);