WooCommerce + SaaS

VinylSync: two-way Discogs WooCommerce sync for record stores

Independent record stores sell the same one-of-a-kind records on Discogs and their own WooCommerce shop. We hardened VinylSync, the SaaS that keeps both in step, and proved it on a real 869-product catalogue without touching production.

Discogs WooCommerce sync case study by PlusTechnology
Products tested
869
Discogs listings
333
End-to-end test steps passed
8 / 8
Description lines matched
97%
In short

Discogs WooCommerce sync case study. Problem: VinylSync, a multi-tenant SaaS that keeps a record store's Discogs listings and WooCommerce shop in step, had never been proven on a real catalogue, and a one-of-a-kind record must never be sold twice. What we did: built a full staging environment, found and fixed data-integrity and access-control bugs, and rebuilt sold-sync as three layers (instant webhooks, order polling and two-way state reconciliation). Result: two-way availability sync verified end to end on 869 WooCommerce products and 333 live Discogs listings, with no duplicates and production untouched. Stack: Node.js, Express, Supabase (PostgreSQL), WooCommerce REST API, Discogs Marketplace API, Render.

Product
VinylSync, a multi-tenant SaaS for record stores
Industry
Music retail and e-commerce
Test catalogue
A working record store: 869 WooCommerce products, 333 live Discogs listings
Services
Web app development, WooCommerce development
Stack
Node.js, Express, Supabase (PostgreSQL), WooCommerce REST API, Discogs Marketplace API, Render
Delivered by
PlusTechnology

The product

Independent record stores sell the same copies of the same records in two places at once: the Discogs marketplace and their own WooCommerce shop. VinylSync is a multi-tenant SaaS for Discogs WooCommerce sync: it imports a store's Discogs inventory, writes the product pages, publishes them to WooCommerce and keeps stock in step between the two.

The core promise is simple, and expensive to break: a one-of-a-kind record must never be sellable twice.

The challenge

The app worked, but it had never been proven against a real catalogue, and there was nowhere safe to test. Pushing fixes straight to production meant risking live listings and live orders. The brief: find and fix the bugs without breaking what already worked, then prove the result with evidence.

Our approach

  1. A real staging environment first. A full copy of the stack with its own database, its own hosted service and a staging branch that deploys automatically. Production was never touched during the work.
  2. Audit, then fix, with a written trail. Every fix went into a changelog with the cause, the evidence and the verification.
  3. Test against real data, not fixtures. The final test store was a working shop with 869 WooCommerce products and 333 live Discogs listings.

What broke, and how we fixed it

Problem foundWhy it matteredFix
A real order never reached Discogs; the item stayed for saleRisk of selling the same record twiceRebuilt sold-sync as three independent layers
Webhook lookups weren't scoped per storeOne store's sale could mark another store's record soldPer-store webhook URLs and store-scoped lookups
Sync could mark items sold but never undo itManual restocking left the two sides out of stepTwo-way reconciliation of actual state
A second copy of a record merged into the first copy's productThe wrong product was overwrittenProducts linked to another listing can't be claimed
Only the newest 5 listings were ever imported328 of 333 listings were unreachableFetch the full inventory; cap limits imports per run only
Overlapping syncs imported the same listing twiceDuplicate listings and productsPer-store run locks plus a database uniqueness rule
Autopilot dropped the link for existing productsThose products were ignored by sold-syncStore the existing product's ID on adoption
Autopilot routes had no ownership checkAny logged-in partner could control any store's AutopilotOwnership guard on every store-scoped route

Sold-sync that survives reality

  1. Instant webhook per store: a WooCommerce order triggers an immediate Discogs update.
  2. Order polling every 5 minutes: catches orders if a webhook is missed or not configured.
  3. State reconciliation every 5 minutes: compares what is actually for sale on each platform and syncs whichever side is stale, including manual stock changes and reversals such as cancelled orders.

Making synced products look like the store's own

The store's 869 existing products followed a specific title and description layout from an earlier plugin. We reverse-engineered the rules from the live data (artist naming, join words, tracklist formatting, tags and category) and built a deterministic formatter that needs no AI call, configurable per store. Checked against the live storefront:

  • Titles identical on 43 of 45 products compared.
  • 97% of description lines reproduced exactly (1,156 of 1,188); the rest were Discogs-side edits made since the original import.
  • Tags matched exactly on 52 of 66 products, with the rest explained by the same Discogs-side edits.

Re-publishing an existing product now leaves its URL, SKU, photos, category and tags untouched, and syncs only content, price and stock.

Verification

Test stepResult
Publish an item that already exists in the shopLinked to the existing product; no duplicate
Discogs listing set to DraftWooCommerce item went out of stock
Discogs listing relistedWooCommerce restocked
WooCommerce item set out of stockDiscogs listing drafted
WooCommerce item restockedDiscogs relisted
Real order placed on WooCommerceItem marked sold, Discogs drafted
Order cancelledBoth sides restored
Two syncs started simultaneouslyOne imported, one skipped; no duplicates

Autopilot was tested the same way: a new Discogs listing was imported, written up and published to WooCommerce automatically within one 5-minute cycle, with the right SKU, price and images and no duplicates. All test data was removed afterwards.

Results

  • Two-way Discogs WooCommerce sync covering manual changes and real orders in both directions, verified against a real catalogue.
  • Data-integrity and access-control bugs found and fixed before reaching production.
  • Per-store connection health checks with plain-language errors on admin and partner dashboards.
  • Product pages that match the store's format, with Rank Math SEO fields, categories and tags handled correctly.
  • Production untouched until each change is explicitly promoted.

What we'd highlight

  • Evidence over assumption. Answers came from logs, version history and live API calls. Several key bugs only appeared because of real data.
  • Design for reversal, not just events. "Item sold" is only half the story; in a reliable Discogs WooCommerce sync, reconciliation handles the rest.
  • Safe by default: staging first, locks and uniqueness rules against race conditions, ownership checks on every store-scoped route, and clean-up of every test fixture.
Discogs WooCommerce sync: three layers of sold-sync
The three layers behind the Discogs WooCommerce sync.
Discogs WooCommerce sync results for VinylSync
Discogs WooCommerce sync results.

Discogs WooCommerce sync FAQ

How do you sync Discogs and WooCommerce inventory?

VinylSync uses three layers: an instant per-store webhook when a WooCommerce order arrives, order polling every 5 minutes in case a webhook is missed, and a reconciliation job every 5 minutes that compares what is actually for sale on both platforms and fixes whichever side is stale.

How do you prevent a record being sold twice on Discogs and WooCommerce?

Sales trigger an immediate Discogs update, missed events are caught by polling, and reconciliation handles manual stock changes and reversals such as cancelled orders. Per-store run locks and a database uniqueness rule stop duplicate imports.

Can one sync app safely serve many stores?

Yes, if every lookup is scoped per store. We added per-store webhook URLs, store-scoped lookups and ownership checks on every store-scoped route, and verified it with two stores sharing the same WooCommerce product ID.

How was the sync tested?

With an eight-step end-to-end test on staging against a real catalogue: publishing existing items, drafting and relisting on Discogs, stock changes in WooCommerce, a real order, a cancellation and two simultaneous syncs. Every step passed with no duplicates.

Related reading

Want something similar for your business? Hire PlusTechnology on Upwork or get in touch.