JewelstackJewelstack
A laptop showing a gold necklace priced Rs 1,24,800, with a gold-rate-updated badge pointing to a clock reading 09:47.
Ecommerce

The product page that has to change at 09:47 every morning

When the morning rate publishes, every price on a jewellery website becomes wrong at once. How live rate integration works, and what breaks when it does not.

kavin04 Dec 202516 min read

Somewhere around a quarter to ten, the rate publishes. At that moment every price on a jewellery website is wrong, all at once, and stays wrong until something recalculates them.

For most retailers a price is a number someone typed. For a jeweller it is the output of a sum — metal weight times rate, plus making, plus stones, plus GST — and one of those inputs changes daily. A catalogue of fifty thousand variants is fifty thousand sums waiting on the same number.

This is one of the less visible engineering problems in jewellery ecommerce. The product page looks simple enough: a photograph, a product name, a few specifications and a price. But behind that price sits a calculation that may depend on the gold rate, purity, net metal weight, making charges, stone value, taxes and store-specific pricing rules.

When the underlying rate changes, the challenge is not simply updating a number in the database. It is making sure that the product page, search results, category listings, shopping cart, checkout and physical store all work from a consistent pricing decision.

For a jewellery brand selling thousands of products across multiple locations, that is a systems problem, not a content-management task.

What Actually Moves When the Rate Moves

A jewellery product price is usually a combination of variable and fixed components. Understanding which inputs change is the first step towards designing a reliable pricing engine.

Consider a simplified gold jewellery pricing formula:

Final Price = Metal Value + Making Charges + Stone Value + Applicable Taxes

Each component behaves differently.

1. Metal value

Metal value is generally calculated using the applicable metal rate and the relevant metal weight.

Metal Value = Net Metal Weight × Rate Per Gram

For example, if a piece contains 10 grams of gold and the applicable rate is ₹7,000 per gram, its metal value is ₹70,000. If the rate increases to ₹7,100, the metal value becomes ₹71,000, assuming the weight and applicable rate basis remain unchanged.

The product has not physically changed. Its underlying metal cost has.

2. Making charges

Making charges may be calculated as a percentage of metal value, a fixed amount per gram or a fixed amount per piece.

If making charges are 10% of metal value, a change in the gold rate also changes the making component. If the charge is fixed at ₹500 per gram, the charge may remain unchanged even as the metal value moves.

The pricing engine must understand the retailer's actual commercial rules rather than applying one formula to every product.

3. Stone and diamond value

Diamond and gemstone components may be fixed, independently priced or subject to their own valuation rules. A gold-rate change does not automatically mean that every stone-related component should change.

This distinction matters because a simplistic recalculation can produce prices that are mathematically consistent but commercially incorrect.

4. Purity and metal composition

A 22-karat gold product and an 18-karat gold product should not necessarily use the same rate per gram. The applicable rate depends on the retailer's rate card and pricing policy for each purity and metal type.

The system must also account for product-specific metal weights and any applicable rules for mixed-metal jewellery.

5. GST and other applicable charges

Taxes must be calculated according to the applicable rules and the retailer's pricing configuration. If the underlying taxable value changes, the tax calculation may need to change as well.

The order in which discounts, making charges, stones and taxes are applied should be explicitly defined. There is no safe substitute for implementing the retailer's actual pricing policy.

The result is a dependency chain: one rate update can affect multiple components across thousands of products. A robust jewellery ecommerce platform represents those dependencies in a central pricing engine instead of scattering pricing calculations across individual pages and services.

The Window Where the Site Is Wrong

Imagine that the retailer publishes a new gold rate at 09:47.

The website's product database still contains prices calculated using yesterday's rate. Category pages display those values. Search results return them. A customer who bookmarked a product sees the old price, while another customer visiting a different page may see a newly calculated price.

Until the system propagates the change, the storefront is operating with inconsistent pricing information.

This gap is the rate-update window.

Its duration depends on the architecture. A system that relies on manual updates or a scheduled overnight import may remain stale for hours. A properly designed event-driven system can propagate a rate change much more quickly, although the actual update time must be measured rather than assumed.

The commercial consequences are straightforward.

A customer may make a buying decision using an outdated price. A campaign may direct traffic to a product whose displayed price no longer matches the retailer's intended price. Customer support teams may need to explain discrepancies between the website and showroom. Sales teams may lose confidence in the digital catalogue if they cannot rely on the numbers it displays.

There is also a question of price commitments and consumer protection. Whether a retailer is legally required to honour a displayed price depends on the applicable law, the circumstances of the transaction and the terms presented to the customer. A retailer should not assume that every technical pricing error can automatically be corrected after an order is placed.

The engineering objective, therefore, is not merely to reduce the time needed to update prices. It is to define how the system behaves during that interval, prevent inconsistent quotes and maintain a record of which pricing rules were applied.

A useful service-level objective might be: every customer-facing surface reflects the newly published rate within a defined number of seconds, with checkout validating the applicable price before an order is confirmed.

The precise target depends on catalogue size, traffic, infrastructure and business requirements. What matters is that the target exists, is measured and is monitored.

Batch Recalculation Versus Derived Pricing

There are two common architectural approaches to keeping jewellery prices current. Neither is universally superior.

Approach 1: Recalculate and store prices

When the gold rate changes, a background job recalculates the affected products and saves their new prices to the database.

The workflow looks like this:

  1. The authorised rate is published.
  2. The system identifies products affected by the rate change.
  3. A background worker recalculates their prices.
  4. Updated values are written to the product or pricing tables.
  5. Relevant caches and search indexes are refreshed.
  6. The storefront begins serving the updated values.

The advantage is speed at read time. Product pages can retrieve a precomputed price without repeating the entire calculation for every request. This can be particularly useful for large catalogues, busy category pages and search results.

The disadvantage is that the update process itself becomes a critical dependency. A job may fail, process only part of the catalogue or complete its database writes while old cached values remain available. A partially completed recalculation can leave the website showing different prices for related products.

This architecture therefore needs job tracking, retries, idempotent processing, monitoring and a way to distinguish completed updates from in-progress updates.

Approach 2: Calculate prices when requested

In a derived-pricing architecture, the system stores the underlying product attributes and pricing rules. When a customer requests a product price, the pricing service calculates the amount using the current applicable rate and the product's attributes.

The workflow becomes simpler conceptually: retrieve the product data, retrieve the applicable rate, apply the pricing rules and return the result.

The biggest advantage is freshness. If the pricing service reads the newly published rate, it can return a new price without waiting for every product record to be rewritten.

However, this approach introduces its own challenges. Calculating prices for every request can increase database activity and application load. A popular product page may trigger many identical calculations, and poorly designed rate lookups can become an unnecessary bottleneck.

Derived pricing also does not eliminate stale data if the rate itself is cached incorrectly or if the application continues to use an outdated pricing configuration.

A practical third option: Hybrid pricing

For many enterprise jewellery platforms, a hybrid architecture offers a useful balance.

The system stores the product attributes, pricing rules and optionally precomputed prices. A central pricing service owns the calculation logic and the currently published rate version. A rate-change event triggers asynchronous recalculation where useful, while critical customer-facing requests validate that the price corresponds to an acceptable rate version.

This approach supports fast catalogue browsing without making a bulk update the only mechanism for price correctness.

The design should also distinguish between a price that is ready to display and a price that is safe to use for checkout. If a recalculation is still in progress, the system can calculate the latest price on demand or temporarily prevent an outdated quote from being confirmed.

The right choice depends on catalogue size, request volume, pricing complexity and the retailer's tolerance for stale prices. The important principle is that pricing logic should have one authoritative implementation, even when multiple services consume its output.

What Happens to a Cart Mid-Session?

Consider a customer who adds a gold necklace to their cart at 09:40. The displayed price is based on the current rate at that time. At 09:47, the retailer publishes a new rate. The customer proceeds to checkout at 09:50.

Should the retailer honour the original price or calculate a new one?

There is no universal answer. It is a commercial policy decision that the software must implement consistently.

One retailer may choose to honour a quoted price for a defined period. Another may revalidate metal-linked prices at checkout. A third may allow a short reservation window for selected products or confirmed orders.

Whichever policy is chosen, the customer should not discover an unexplained price change only after completing payment.

A defensible implementation records the price shown when the item was added, the applicable rate version, the time of the quote and the conditions under which that quote remains valid.

At checkout, the system evaluates the quote against the retailer's policy. If the price is still valid, it can be honoured. If it has expired and re-quotation is permitted, the system should calculate the new price and clearly explain the difference before the customer confirms the order.

For example, the checkout could communicate that the gold rate has changed since the item was added and show the revised item price before payment. The customer should have a reasonable opportunity to accept the revised amount or return to the cart.

A technically convenient solution is not necessarily a commercially defensible one. Automatically replacing every cart price without an explicit policy can undermine trust, while permanently honouring every old quote may expose the retailer to unacceptable pricing risk.

The key is to make the quote lifecycle explicit: when a price is created, how long it remains valid, when it is revalidated and what happens when it expires.

Caching a Page Whose Price Changes Daily

Jewellery ecommerce has a natural performance challenge.

Product pages contain expensive, high-value imagery, product descriptions, structured data, specifications and pricing. Much of this content changes infrequently. The metal rate, however, may change daily or more often.

Caching the entire page as one indivisible object creates a problem. A cached page may continue to display yesterday's price even after the underlying pricing service has updated the rate.

Disabling caching altogether is not a good default answer. It can increase server load, slow down product discovery and make large catalogues unnecessarily expensive to serve.

The better solution is to separate relatively stable product content from frequently changing pricing data.

The same necklace product page before 09:47 priced at Rs 1,24,800 and after 09:47 at Rs 1,31,600, with a gold-rate-updated badge between the two.

Cache stable content aggressively

Product names, descriptions, images, dimensions, craftsmanship details and other relatively stable attributes can generally use longer cache lifetimes.

These elements do not need to be regenerated merely because the gold rate changes.

Treat pricing as a separately versioned dependency

The pricing service can return the calculated amount alongside a rate version or pricing revision. That makes it possible to determine which underlying rate was used to produce a particular price.

For example, a published rate event might increment the relevant pricing version. Requests for price-dependent data can then use the new version rather than continuing to reference an older cache entry.

Invalidate the right caches when the rate changes

When a new rate is published, the system should identify the dependent data that needs refreshing. Depending on the architecture, this may include cached price fragments, API responses, category listing data, search indexes and precomputed product prices.

Invalidating every cache in the entire platform is usually wasteful. The invalidation strategy should target affected pricing data and the surfaces that depend on it.

Revalidate at checkout

Even a well-designed caching strategy cannot guarantee that every displayed price remains current between the time a page loads and the moment an order is confirmed.

Checkout should therefore validate the applicable quote against the authoritative pricing service and the retailer's policy.

This separation makes it possible to maintain fast page delivery without treating a cached number as permanently authoritative.

For a modern jewellery storefront built with technologies such as Next.js, this may involve separating static product information from dynamic price components, using suitable cache tags or versioned keys, and coordinating invalidation across application and CDN layers. The exact implementation depends on the rendering strategy and caching infrastructure.

The principle remains the same: cache the content that can safely be cached, refresh the content that depends on the rate, and validate prices at the point where commercial commitment occurs.

Where the Rate Comes From

A pricing engine is only as reliable as the rate it receives.

Jewellery retailers may use bullion data feeds, market references, association rates or their own authorised store or head-office rate board. Some brands adopt an external reference with adjustments; others publish their own selling rates for different metals and purities.

The system must use the rate that the retailer has designated as authoritative for the relevant product, location and transaction.

This requires more than storing a single number called gold_rate.

A useful rate record includes:

  • Metal type and purity.
  • Rate per unit and currency.
  • Applicable store, region or pricing group.
  • Effective date and publication timestamp.
  • Source or authorised publisher.
  • Rate version and approval status.
  • Audit information showing who or what published the change.

The distinction between publication time and effective time is important. A new rate may be approved at one moment but intended to take effect at another.

The rate-ingestion process should validate incoming data before publishing it. It should reject malformed values, detect unexpected movements and handle missing or delayed feeds according to a defined policy.

For example, if an external feed fails, the system should not silently interpret a missing rate as zero or continue indefinitely without indicating that its data is stale. Depending on the retailer's rules, it may retain the last approved rate for a limited period, raise an alert or stop issuing new price quotes.

Most importantly, an external feed should not automatically override an authorised house rate simply because it has a newer timestamp. The source hierarchy must be explicit.

Multi-Store, Multi-Rate Reality

A jewellery brand with multiple showrooms may operate a single ecommerce catalogue while applying different rates or commercial rules across locations.

The same product could be priced differently because of regional rate policies, making charges, store-level discounts or other approved commercial variations.

A single global product price is not always sufficient.

The pricing service needs to resolve the applicable pricing context. That context may include the product, metal and purity, customer-facing channel, selected store, fulfilment location and current rate policy.

Consider a retailer operating stores in Delhi, Mumbai and Jaipur. The catalogue may be shared across all three locations, but the retailer may configure different authorised rates or making-charge rules for each market.

When the customer browses the website without selecting a store, the system needs a defined default pricing context. Once the customer selects a location or chooses store fulfilment, the applicable rules may need to be resolved again.

The challenge is to avoid creating separate, manually maintained catalogues for every store. A shared catalogue combined with store-aware pricing rules is easier to govern and scale.

This also affects caching. A cached price for one store must not accidentally be served to a customer shopping under another store's pricing policy. Cache keys and invalidation rules need to account for the dimensions that genuinely affect the price.

Inventory availability and pricing context should also remain distinct. A product being available at a nearby showroom does not automatically mean its rate or making charges are identical to those of another showroom.

For enterprise retailers, this is where centralised pricing governance becomes particularly important. The platform must support local flexibility without losing visibility, auditability or consistency across the wider business.

What Good Looks Like

A well-engineered jewellery pricing system does not depend on someone noticing that the website still shows yesterday's rate.

It starts with an authorised rate publication and follows a controlled sequence of events.

The rate publishes. The system validates the new rate, records its source and effective time, and assigns a new version.

The pricing service activates it. New price calculations use the appropriate approved rate and pricing rules.

Dependent data refreshes. Precomputed prices, relevant cache entries and price-dependent search or listing data are updated or invalidated.

Every surface stays consistent. Product detail pages, category cards, search results, shopping carts, mobile applications, POS integrations and other customer-facing channels use the appropriate pricing context.

Checkout validates the quote. Before the order is confirmed, the system checks the price against the applicable rate version and the retailer's quote policy.

The operation is measurable. Monitoring records when the rate was published, when each dependent surface became current, whether any jobs failed and how long the complete update took.

A retailer might set a target that all customer-facing surfaces reflect a new rate within 30 seconds. Another might require a different window based on its architecture and business needs. The specific number matters less than defining it, measuring it and ensuring that checkout does not rely on an invalid quote while propagation is incomplete.

The system should also have a clear recovery path. If recalculation fails halfway through a large catalogue, the platform should identify the affected products, retry safely and prevent incomplete updates from being mistaken for a successful publication.

The end state is straightforward: the rate publishes, every relevant surface updates within a defined window, and no customer is charged an unexplained amount because two parts of the system used different pricing assumptions.

For jewellery retailers, that is what reliable real-time pricing actually means. It is not simply displaying a gold rate on a website. It is maintaining a consistent, explainable pricing decision across the entire digital and physical commerce experience.

Frequently Asked Questions

How do jewellery websites update prices when the gold rate changes?

Jewellery websites update prices by connecting an authorised gold-rate source to a pricing engine that recalculates product prices using metal weight, purity, making charges, stone value and applicable taxes. The updated prices are then propagated to product pages, category listings, search results and other relevant channels. Reliable systems also invalidate affected caches and revalidate prices at checkout to prevent outdated quotes from being confirmed.

Should a jewellery website honour the price in a customer's cart if the rate changes?

A jewellery website should follow a clearly defined pricing and quote-validity policy. Some retailers honour a quoted price for a specified period, while others revalidate metal-linked prices at checkout and display a revised amount before the customer confirms the order. The system should record the original quote, its applicable rate version and validity conditions, while the retailer's policy must account for applicable consumer-protection and contractual obligations.

How often should gold rates update on an ecommerce site?

A jewellery ecommerce site should update prices whenever its authorised rate source publishes a new effective rate, rather than relying solely on a once-daily manual or overnight update. The required propagation time depends on catalogue size, traffic and business requirements, but the retailer should define and monitor a measurable update target. Checkout should validate the applicable price independently of the update schedule.

Can jewellery product pages be cached if prices change daily?

Yes. Jewellery product pages can be cached by separating relatively stable content, such as product images and descriptions, from dynamic pricing data. When an authorised rate changes, the system should refresh or invalidate the affected price caches and any dependent listing or search data. Checkout should still validate the applicable quote before order confirmation because a cached page can become outdated between viewing and purchasing.

Keep reading

Bring your rate, your catalogue and your worst spreadsheet.

Book a walkthrough +91 7703 929 790[email protected]