I’ve been working with a client that wants to sell their products on Walmart.com. Working with the Walmart API has been a real challenge so far.
First off, Walmart provides no test environment. Want to test your item upload process? You upload items to the live site – better hope customers don’t find it and buy it before you’re ready. Want to test your order processing? You’ll have to get on Walmart.com, find one of your items, and place a live order. Who designs a system that doesn’t allow for testing?
Walmart doesn’t allow updating one item via their API. Instead, you have to build a batch of items to update and then send that batch (which they call a “feed”). Walmart has three different feeds for adding/updating an item, updating the quantity, and updating the price. Walmart, however, does not necessarily process those feeds in the order you send them. Have a new item and you want to update the price and quantity? You have to do the add, wait, wait, wait for Walmart to process that feed, and then send the price and quantity feed. Otherwise Walmart might process the price feed first and reject it all because the items don’t yet exist.
Have you managed to work out all your bugs while on a live site? Have you made sure you’re submitting feeds in a timely fashion? Do you think things will now go smoothly? Nope! Walmart might reject your feed for any number of reasons.
Sometimes Walmart just doesn’t feel like processing your feed. No reason or explanation, just rejected:
Or maybe Walmart will like some of the items in your feed, but won’t like other items. Again, no real reason for this. You can sometimes resubmit the item and Walmart will take it:
Sometimes Walmart rejects your item for unexpected and unexplained reasons:
Sometimes Walmart rejects your item because it is feeling a little glitchy:
Sometimes Walmart rejects your item because it is a little busy:
Update 8/17/17: One very good thing about Walmart is that their customer support is strong. Emails we send get replies. Issues we bring up have been fixed in a timely manner. So while it was a bumpy road getting here, we’ve gotten all our products on Walmart and things are running smoothly.
Update 9/18/17: Here’s a fun error message:
Wonder which field it might be? Contacting support, they say it’s the product title. I replied that it can’t be – we’ve got several thousand items with titles longer than that. They reply, nope, impossible, has to be product title. It ended up being the model number field.
Update 10/5/17: Out of the blue, we went from 350k products live on Walmart to 160k live products. After some hectic emails with support, we got a vague “our pricing routines changed” answer. It seems Walmart thinks our prices aren’t competitive. They won’t tell you who they compare to or how much a price difference matters – just that price is a problem.
We spent two weeks looking into it, comparing our prices to Amazon/EBay/etc. Looking at different prices, wondering if Walmart is comparing Apples to Apples.
Then today we’re suddenly back to 350k live products. We didn’t change anything.
Update 3/14/18: Suddenly none of our orders on Walmart are acknowledged. None of our shipping information is being uploaded. Frantically rushing around trying to figure out why our code is not working – my code is fine, it’s Walmart’s API that is suddenly not working. We email support, they say “Yep, it’s on our end. We’re working on it.” We check after 8 hours, still not working. 24 hours, still not working. 48 hours, suddenly working again. They didn’t bother to tell us they had fixed it.
Update 4/4/18: We updated the price on several 100,000 items. Most of them update, but we can see there are some that did not. We compare our database to the downloaded Walmart catalog and find 18,000 items that didn’t update price. I flag those to update price. They still don’t update. Flag and update again, still not changing.
I go to the Walmart site directly and I see the price on the item is correct there. It’s the Walmart dashboard (what they call Seller Center) that doesn’t work. That’s good – the customer isn’t seeing the right price, but it’s really bad in that we have no way of knowing if our prices on Walmart are correct.
It’s been over two weeks now – Walmart says they’ve fixed the issue. I say nope and give them a dozen examples of ones that are still wrong. Still not fixed at this point.
Update 4/4/18: Walmart will let you override shipping options on an item by item basis, but they provide next to no documentation. Comically, the documentation on how to setup the XML shows spreadsheets rather than XML. SMH.
So after a lot of tries, I got it to work. Here’s the XML to remove the Next Day shipping option from an item. Hope it helps someone.
Update 2/4/2020: Several thousand of our items suddenly disappear again from Walmart. After much back and forth with support, we figure out that it is the “EndDate” parameter in the Item update. If you don’t include an end date (why would you? You don’t want your items to disappear, documentation doesn’t say it’s required) — Walmart assigns one for you about a year out. At that point all your items disappear. Good stuff.
And you might be confused because this date shows up under Special Offers on the Seller Center. But you set this date when you upload an item, not when you are updating pricing.
And, one last kick in the nuts, Walmart’s documentation is wrong. This field is just a date, not a time (so <EndDate>2030-02-01</EndDate>). If you send a time, the Feed will be rejected.
Update 2/4/2020: Walmart’s back end is a steaming pile of crap. We’ve had 2,000 of our items turn into someone else’s item. One hilarious example, is our $20 package of light bulbs turned into a 48 Vizio TV – still for just $20. We became aware of the problem when we had a flood of orders pour in. Good work catching that, user!
We had to download our catalog, search it for item names that don’t match our standard (fortunately, we have an item naming standard making these easy to find), set the inventory for all of them to 0 through the Seller Center, and then stop our automated program from updating them and making them live again). It’s been 2 weeks now, Walmart has no answer on how it happened or ideas on how to stop it happening in the future.