A Shopify to AbeBooks integration, and what the spreadsheet was hiding
How Rendezvous Cinema's 30,000 posters moved from a spreadsheet upload to a live AbeBooks API link, and the traps in AbeBooks' API that cost the most time.
119 days median time a sold poster stayed for sale on AbeBooks, found September 2026
Rendezvous Cinema sells original film posters and lobby cards, around 30,000 of them, on its own Shopify store, on eBay and on AbeBooks. AbeBooks is best known for books, but it has a real market for posters and collectables, and its buyers are exactly the people who pay for an original.
eBay was already handled by Overlook, the listing system I built for Rendezvous earlier in the year. AbeBooks was still done by hand. In September it moved onto the same system, and it went live on 15 September 2026.
How it used to work
The old process was a spreadsheet. Export everything, run four rounds of find and replace, split the result into about 50 files, then upload them with AbeBooks’ “upload and purge” option, which deletes the whole AbeBooks catalogue and rebuilds it.
That has three problems, and only the first is obvious:
- While it runs, nothing is for sale. Purge first, rebuild after.
- One bad file stops the lot. An error in file 31 of 50 leaves a partial catalogue.
- Nothing takes sold stock down between uploads. This is the one that cost money.
When I compared what AbeBooks was showing with what was actually in stock, 163 posters that had already sold elsewhere were still for sale on AbeBooks. The median one had been there 119 days. Every order for one of those is a refund, an apology, and a mark against the seller’s completion rate, which AbeBooks watches closely.
It ran the other way too. New stock reached eBay by itself and AbeBooks never: 397 posters worth £7,125 were missing from AbeBooks entirely.
How it works now
Overlook talks to AbeBooks directly, through AbeBooks’ inventory API for listings and its order API for orders.
- New stock goes on by itself. Every five minutes a sweep looks for posters and lobby cards that are in stock and not yet on AbeBooks, and lists them in small batches.
- Sold stock comes off by itself. A sale on any channel withdraws the item from the others. A second sweep removes anything that should not be listed, however it got there.
- It looks at state, not events. Bulk imports and scripts skip the “product changed” hooks, which is exactly how those 163 posters were missed. A sweep that compares what should be listed against what is listed catches them whichever way they changed.
- Archived in Shopify means gone everywhere. Archive or delete a product in Shopify and it comes off eBay, Amazon and AbeBooks.
- Orders land in Shopify. AbeBooks orders used to be keyed into Shopify by hand. Since 7 October they are copied in automatically, and when the Shopify copy is fulfilled with tracking, the order is marked shipped on AbeBooks.
The traps in AbeBooks’ API
These cost the most time. If you are building against AbeBooks yourself, they are the reason to read this.
It fails with a success
The documented username for the API did not work. It did not return an error either: it returned a normal success code with an empty body. The account’s user ID was what worked. Deleting a listing that never existed also returns the same success code as deleting a real one. Read the body of every response, not the status.
An update replaces the whole record
An update is not a patch. Any field you leave out is cleared. A small test update with only a price in it wiped the rest of a live listing. Every request now sends the complete item, every time.
The seller reference has to match exactly
AbeBooks matches your SKU byte for byte. The old spreadsheet upload had quietly collapsed double spaces in about 5,000 SKUs, so when the API sent the real SKU, AbeBooks did not recognise it and created a second listing. Two of the first five test items came out duplicated. SKUs are now normalised the same way on both sides, and a sync refuses to run if two SKUs would collide.
The character set is not what you send
The endpoints declare ISO-8859-1, and most modern code sends UTF-8. Every accented letter would have been stored as two wrong characters, across every accented title in the catalogue, and nobody would have noticed until a customer searched for one. An audit caught it before the first sync. Everything outside plain ASCII is now written as a numeric character reference, which reads the same under either.
Shipping an order takes the payment
Marking an AbeBooks order as shipped charges the buyer’s card, and there is no undo. So it only happens when the order, read fresh from AbeBooks at that moment, is still accepted and every line is still confirmed, and it can never happen twice for the same order. An order also has to be confirmed or rejected in a single request covering every line, or AbeBooks rejects the request.
Your images have to be somewhere AbeBooks will load
AbeBooks will not show images from just anywhere. Images served from Shopify’s own image CDN worked, which was lucky: 29,043 of the 30,434 eligible items had their photos nowhere else.
The clean-up nobody asked for
Sending complete, structured listings exposed the state of the descriptions. The catalogue had two different listing templates with different headings, and 597 descriptions opened with an eBay template designer’s credit and three paragraphs of boilerplate. Those were fixed before anything was sent, so the first AbeBooks buyers saw the poster, not the template.
What it changed
The spreadsheet process is gone. New stock reaches AbeBooks within minutes rather than at the next upload, nothing comes down to be rebuilt, and a poster that sells on one channel comes off the others without anyone remembering to do it.
It has not been running long enough to say what it has done for AbeBooks sales, and I will not guess. I will add the figures when there is a fair period to measure.
If you sell on AbeBooks too
If you upload from a spreadsheet, check two things this week:
- Pick ten items you have sold elsewhere in the last month and search for them on your AbeBooks storefront. Any that are still there are refunds waiting to happen.
- Pick ten items you listed on your own site in the last month and search for those too. Any that are missing are sales you are not getting.
If either list is longer than you would like, the fix is not a better spreadsheet. It is a link that runs whether anyone remembers or not.
If this sounds like your shop, a twenty minute call will tell us both whether it is worth fixing.
More like this in the articles, or see what ecommerce technology involves.