Every few months a jewellery retailer asks us the same question in slightly different words. They have opened a wholesale account, they can see hundreds of thousands of certificated diamonds in the supplier dashboard, and they want that inventory on their own website. How hard can it be. The honest answer is that the API call is easy and the shop around it is not. Retailers who commission a bespoke build routinely discover that the integration is 10% of the work and the caching, pricing, availability handling and checkout logic are the other 90%.
This piece sets out what a Nivoda API integration actually involves on WordPress and WooCommerce, what it costs to build against what it costs to license, and which technical details separate an integration that survives contact with real customers from one that does not. It is written for retailers evaluating quotes rather than for developers writing the code, though the diagnostic questions below work equally well in either conversation.
Disclosure: Teksyte UK Ltd builds NivoSync, one of the products referenced below. The technical assessment here applies equally to any implementation approach.


What a Nivoda API Integration Gives You and What It Does Not
Nivoda operates a B2B diamond marketplace aggregating independent suppliers across India, Belgium, Israel and Hong Kong, and exposes that inventory through a GraphQL API. The API returns structured stone data including shape, carat, the 4Cs, polish, symmetry, fluorescence, measurements, laboratory, certificate number and wholesale cost. That is all it returns. It is a data source, not a storefront.
The distinction matters because most build quotes are scoped against the API documentation rather than against the retail requirement. Authenticating and pulling a result set is genuinely a day of work for a competent developer. Turning that result set into something a customer can search, filter, compare, price correctly, and buy without the retailer losing money or overselling is a different order of problem.
One further constraint surprises nearly every new account. Nivoda is a marketplace of independent suppliers, not a single warehouse, and each supplier decides which buyers may trade its stock. A brand new account does not see the full platform inventory. Access is requested supplier by supplier and granted over time, so catalogue size is a function of your commercial relationships rather than your software. Any integration will faithfully show you exactly what your account can see, which means a thin catalogue on launch day is a Nivoda-side problem, not a code problem.
Why Building It Yourself Costs More Than the Quote Says
Agency quotes for wiring a diamond marketplace into a WooCommerce store typically land between £15,000 and £40,000, and a full custom catalogue built from first principles has been costed at around £50,000 over 18 months. Those figures are for version one. The recurring cost is what catches retailers out.
The maintenance burden has four sources. The upstream API changes, and schema drift breaks field mappings silently rather than loudly. WooCommerce and WordPress ship major releases that alter checkout and product handling. Pricing rules accumulate exceptions as the business grows, covering currency, VAT treatment, rounding and per-shape margin. And sync failures need monitoring, because a catalogue that silently stopped updating 6 days ago is worse than no catalogue at all.
None of this is exotic. It is ordinary software maintenance, and it is the reason a bespoke integration behaves less like a project and more like a subscription you pay in developer time. A retailer with 8 staff and no in-house engineer is signing up for a dependency they cannot service.
The pattern is familiar from other areas of technical debt. Systems that are never audited degrade quietly rather than loudly, which is the same failure mode we describe in our walkthrough of running a technical audit that actually fixes rankings. A diamond catalogue that stopped syncing 6 days ago produces no error message. It simply sells stones that no longer exist.
The Caching Problem That Decides Whether Your Catalogue Is Usable
The central technical decision in any diamond catalogue is how to reconcile speed with freshness, and getting it wrong is the most common cause of a failed build. Querying the marketplace live on every page load produces correct data at unusable speed. Serving purely from a nightly import produces instant pages showing stones that sold yesterday.
Three strategies exist and each suits a different retailer. Cache-only serves everything from the local database and is fastest, appropriate where the stock selection is stable and a short lag on new arrivals is tolerable. API-first queries the marketplace on every load and is always current, which suits high-touch boutiques handling rare or one-of-a-kind stones at low traffic volume. Hybrid serves the page from cache in under 200 milliseconds, then runs a background call to merge fresh prices and drop sold stones for the next request.
Hybrid is the right default for almost everyone, and it is materially harder to build than either alternative because it requires reconciliation logic, background job scheduling and a cache invalidation strategy that does not thrash. Benchmarks on packaged implementations put median page load under 200 milliseconds on a 50,000-stone catalogue, with incremental syncs completing in around 30 seconds after the initial pull and deployments tested up to 200,000 stones. Those are the numbers a custom build should be measured against.
Fun fact: GraphQL was developed internally at Facebook in 2012 to solve exactly this class of problem, namely fetching precisely the fields a client needs in one request rather than assembling data from many REST endpoints.
The Stock Hold Logic Most Implementations Skip
Diamonds above roughly half a carat are individually unique, which creates a concurrency problem that ordinary ecommerce does not have. Two retailers on opposite sides of the world can list the same physical stone simultaneously, and nothing prevents both from selling it within the same minute.
The correct behaviour is to place a hold on the specific stone with the marketplace at the moment of checkout, and to release that hold automatically if the order is cancelled or refunded. This is a small amount of code and a large amount of business value. Without it, a retailer's first busy weekend produces oversold orders, apologetic phone calls and refunds on transactions the payment processor has already charged for.
We consider hold handling the single best diagnostic question to put to any vendor or developer. A ready-made Nivoda API integration for WordPress and WooCommerce should implement it as standard rather than as a paid extra, and a bespoke quote that does not mention it has not been scoped properly.
Pricing, Margin and the Cost Price You Must Never Expose
The marketplace returns wholesale cost. Your customer must never see it. That sounds obvious and it is violated constantly, usually through a JSON payload sent to the browser containing the original figure alongside the retail price.
Markup must be applied server-side, before the data reaches the client, and the response delivered to the browser should contain only the retail figure. Beyond that, a workable pricing engine needs currency conversion, VAT handling appropriate to the customer's location, rounding rules so that prices present sensibly rather than at odd fractions, and ideally differential margin by shape or price band, since the sensible markup on a £900 stone is not the sensible markup on a £14,000 one.
These rules also have to apply consistently across the catalogue, any ring builder, the cart and the order confirmation. Inconsistency between those surfaces is a common and embarrassing bug, and it is a good argument for a single pricing engine rather than logic duplicated per template.
How to Decide Between Building and Licensing
The decision turns on three questions rather than on preference. Do you have requirements no packaged product meets, do you have engineering capacity to maintain the result, and is the integration itself a competitive advantage for your business.
Build if you answer yes to all three. A multi-brand group with unusual fulfilment rules, an in-house development team and a genuine need for proprietary merchandising logic has a real case. Everyone else is buying a maintenance liability at a premium.
License if the catalogue is infrastructure rather than differentiation, which is true for the overwhelming majority of independent jewellers. Packaged options such as NivoSync bundle the sync, hybrid caching, pricing engine, filtering, ring builder and WooCommerce checkout for an annual licence, with launch pricing at £899 per year against a standard £1,499, VAT excluded and bound to a single domain. Set against a £15,000 build plus ongoing developer retainer, the comparison is not close for a shop turning over under seven figures online.
Before committing either way, verify your stack. Realistic requirements are PHP 8.1 or later, WordPress 6.5 or later, WooCommerce 8.2 or later, a memory limit of 256MB with 512MB preferable, and an execution ceiling generous enough for the initial sync. Standard gateways including Stripe, PayPal, WooPayments and Klarna are well trodden. Hosts such as WP Engine, Kinsta, Cloudways, SiteGround and Kualo handle the load comfortably. Shared hosting with a 128MB memory limit will not complete the first sync, and that is the most frequent cause of a failed installation.
What Good Looks Like Six Months After Launch
A healthy diamond catalogue is judged on operational metrics rather than on launch-day appearance. Sync should be completing on schedule without manual intervention. Oversell incidents should be zero. Median page load should stay under a second at full catalogue size. Retail pricing should be correct across every surface, and the wholesale figure should appear nowhere in any client-side response.
The commercial test is different again. A catalogue on its own converts poorly, because a grid of 50,000 stones is a research tool rather than a purchase journey. Retailers who see genuine revenue pair it with a guided configurator, which is why we treat the catalogue and the WooCommerce ring builder as one system rather than two features.
Retailers should also plan for discovery from day one rather than treating it as a later phase, because a catalogue that nobody finds is an expensive internal tool. The reasons consistent publishing outperforms one-off launches are set out in our note on why quality blog content improves search performance.
The strategic point for jewellers weighing a Nivoda API integration is that the inventory is no longer the moat. Every competitor can access the same stones. The advantage now sits in setting design, photography, consultation quality and the speed with which you can put a credible catalogue in front of a customer who is comparing you against three other websites at eleven o'clock at night.
