Your article numbers
You always talk about articles by your own article number (pharmacy_sku,
1 to 64 printable characters). GO JOE links each of your SKUs to a GO JOE
product once. Until that is done the SKU is unmapped: GO JOE stores what you
sent and shows it to its team for mapping, but the shop does not sell it yet.
You don’t need to do anything for unmapped SKUs; keep pushing them.
The first time a push contains new unknown SKUs you also get one
inventory.sku_unmapped event (webhook and GET /events) listing them.
Push stock and prices
nameandavailableare required; everything else is optional.stock_gramsis grams (flower) or millilitres (extracts).price_centsis the gross price per gram or millilitre in cents, the unit the shop shows. GO JOE applies prices unless it has switched price sync off for the pharmacy; the response says so inprices_applied.- Up to 1,000 items per push. Validation is all or nothing: if one item is
invalid you get
422with anerrorslist (index, SKU, field) and nothing is applied.
partial or full
mode=partial(default) changes only the items you send. Use it for updates during the day.mode=fullsays “this is my complete catalogue”: mapped SKUs missing from the push are marked sold out. Use it for a nightly full sync. Send your whole catalogue in one push (up to 1,000 items).
The response
status is:
updated: the shop now sells with your numbers.unmapped: stored, waiting for GO JOE to map it.kept_off: GO JOE’s team switched this article off in the shop. Stock and prices still follow your push, but it stays off until GO JOE switches it back on.
One article in real time
After a sale or a delivery, update one SKU. Fields you leave out keep the value you pushed last:name and available.
Large price changes
A price change of more than 50 % up or down is applied, because you know your prices, but GO JOE double-checks it: the item gets aprice_change_large
warning with the old and new price, and GO JOE’s team is notified. Nothing
for you to do unless the price was a typo; then push the correct one.
Check what GO JOE holds
pushed), whether it is
mapped, and what the shop sells right now (in_shop).
The list is sorted by SKU and paged (200 per page, limit up to 500):
follow next_cursor until has_more is false.
Keep it fresh
Push at least every few hours while the pharmacy is open, even if nothing changed (apartial push with your current numbers is fine). If GO JOE hears
nothing from your ERP for 6 hours during opening hours it assumes the sync is
stuck and contacts you, because the shop would otherwise keep selling
yesterday’s stock.