The messiest fulfillment errors in a jewelry store almost never come from a missing SKU or a bad photo. They come from size. A ring gets sold online in size 6, someone at the counter promises the same ring in size 7 to a walk-in, and the piece that was physically in the case gets sent to the bench for resizing — while both customers are now waiting on the same band. That's the quiet double-sell that ring sizing operations jewelry teams keep tripping over, and it's almost entirely preventable with better capture fields, honest hold timers, and vendor SLAs that you actually enforce.
This is a tight, specific problem. Let's stay on it.
Where the double-sell actually starts: your capture fields are lying to you
Most POS and web systems treat a ring as a single sellable unit. One SKU, one quantity, one availability flag. But a ring is really two things at once: a physical piece sitting in a specific size, and a promise you can fulfill across a range of sizes through resizing.
When your product record only stores "in stock: 1," the system has no idea whether that 1 is:
-
a size 6.5 physically sitting in the case,
-
a size 6.5 already committed to an online order that hasn't shipped yet,
-
or a "we can make this in any size 4–9" catalog listing with no physical piece behind it at all.
This usually happens when the web catalog inherits availability from the same field the counter uses, but neither one records the actual current size on hand versus the sellable size range. So the website shows "available in 4–9" because the vendor can produce those sizes, and the counter shows "1 in stock" because there's one ring in the drawer. Both are true. Both are dangerous. The moment someone sells the physical piece and someone else sells the "make-to-size" version off the same inventory line, you're double-committed.
The fix starts at the field level. Every ring record needs to separate these clearly:
| Field | What it captures | Why it prevents errors |
|---|---|---|
physical_size | The exact size of the piece currently on hand | Stops the counter from promising a size that requires resizing without flagging it |
sellablesizerange | Sizes you can fulfill via resize or vendor build | Keeps the web listing honest about lead time |
resize_required (bool) | Whether the requested size ≠ physical size | Triggers a bench or vendor task automatically |
hold_status | none / soft-hold / firm-hold | Prevents two channels from claiming the same physical unit |
channel_committed | web / counter / phone / appointment | Tells you who "owns" the piece right now |
The single biggest capture mistake is letting a customer specify their size after the sale instead of at the point of interest. Online, that means putting the size selector before the add-to-cart, not in a post-purchase email. In-store, it means the associate records the requested size on the ticket even when the customer is "pretty sure it's a 7." That phrase — "pretty sure" — is how a resize gets skipped and a return gets created.
Transient holds: the timer nobody sets
When a piece needs resizing or gets pulled for an online order, it goes into a limbo state — off the shelf but not yet shipped, or at the bench but not yet back. During that window, the piece is effectively invisible. Nothing stops another channel from selling it.
Never miss a sale or shipment again.
Jewlyly helps you manage orders, track inventory, and engage customers seamlessly.
- Real-time inventory tracking
- Automated customer notifications
- Sales and order analytics
No credit card required
A transient hold flag is just a temporary claim on a physical unit with an expiration. The key word is temporary. A hold that never expires clogs your available inventory and makes staff distrust the flag entirely — once people stop trusting the hold, they start checking the drawer manually, and you're back to double-sells. A hold with no timer is worse than no hold at all.
A practical hold model has three tiers:
-
Soft-hold (cart / quote) Someone added the ring to an online cart or an associate is building a quote. Lasts roughly 20–30 minutes online, until end-of-appointment in-store. The piece isn't yet unavailable to others, but the system knows there's interest.
-
Firm-hold (payment captured or deposit taken) The piece is committed to one channel. It disappears from other channels' availability immediately. Lasts until fulfillment or a set expiration.
-
Bench-hold (out for resize) The physical piece is with a bench jeweler or in a vendor's resize queue. It's committed and physically unavailable. This should never show as sellable in any channel.
The mistake that quietly kills you is the soft-hold that never converts and never releases. A customer abandons a cart, the ring stays soft-held, and three days later the piece looks spoken for to your counter staff even though nobody bought it. Set the timer short and let it auto-release. If a serious buyer comes back, the system re-holds instantly.
One pattern worth watching: stores that let associates place manual holds "for a customer who's thinking about it" almost always end up with a drawer full of phantom holds by end of month.
If you allow manual holds, cap them at 48–72 hours and require a follow-up before extension.
No follow-up, hold dies.
Resize SLAs: the gap between "sold" and "shipped"
The resize window is where the size-driven double-sell becomes a size-driven fulfillment delay, which is often the more expensive problem. A customer buys a ring online in a size you don't physically have, the piece has to go to the bench or back to the vendor before it ships, and if nobody's tracking how long that takes, the order just sits. The customer emails. You eat a chargeback or an angry review.
You need two SLA numbers, and they're different:
-
In-house resize SLA — how long from "flagged for resize" to "back on the shelf, ready to ship." For a simple sizing up or down a couple sizes in a standard metal, this is usually a few business days if your bench isn't overloaded. If your bench is overloaded, that's exactly the kind of capacity math worth planning ahead; the approach in bench capacity planning for small jewelry shops applies directly to sizing queues, not just repairs.
-
Vendor resize SLA — when the resize goes outside (complex settings, eternity bands, sizing beyond a safe in-house range), how long your vendor commits to turn it around. This is a number you negotiate and hold them to, not one you guess at.
A common scenario: a store promises online buyers "ships in 5–7 business days" but their vendor resize SLA is quietly 10–14 days. Every out-of-stock-size sale that routes to the vendor blows the customer promise before it even starts. The fix isn't necessarily a faster vendor — it's making the displayed shipping window conditional on whether a resize is required and where that resize is going.
Here's the process that keeps sizing from breaking promises:
-
At sale, check
physical_sizevs requested size. If they match, standard fulfillment. -
If they don't match, set
resize_requiredand route in-house if within your bench's safe range and capacity, vendor if not. -
Apply the correct SLA to the customer-facing ship date automatically. In-house adds a few days; vendor adds the negotiated window plus shipping both ways.
-
Set a bench-hold on the physical unit so it can't be sold again anywhere.
-
Log the resize as a task with a due date matching the SLA, so an overdue sizing job surfaces before the customer complains.
-
Release the hold only when the piece is verified back and the size is confirmed correct — measured, not assumed.
Here's a quick visual of the resize routing process.
That verification step matters more than people expect. A resize that comes back a half-size off restarts the whole clock, and if you released the hold on receipt instead of on confirmation, someone may have already re-sold the piece. The same discipline that prevents dispute-driven rework on the bench — documented, verified handoffs — applies here; the repair operations playbook covers that handoff mindset well and it maps cleanly onto sizing jobs.
The accounting side nobody documents: worked POS entries for held and resized pieces
Sizing limbo creates an accounting problem that shows up at month-end as a mismatch nobody can explain. The piece is sold (revenue recognized?), but it's at the bench (still inventory?), and the vendor charged a resize fee (COGS?). If your entries don't reflect the transient state, the books drift.
Here's a worked example. A ring costs you $900, sells online for $2,200 in a size you don't stock, and needs a vendor resize costing $85.
-
At order (payment captured), piece still on hand awaiting resize Keep the piece in inventory with a bench-hold flag — it hasn't shipped. Don't relieve COGS yet. Many stores wrongly relieve inventory the moment an order is placed, which makes their on-hand count wrong for the days the piece sits at the vendor.
-
Vendor resize invoice ($85) Add this to the cost basis of that specific piece, not to a generic "repairs" bucket. Its landed cost is now $985. If you dump resize fees into a shared expense line, your per-piece margin math lies to you — pieces that get resized frequently look more profitable than they actually are.
-
At ship (piece verified, size confirmed) Relieve inventory at $985, recognize COGS, close the bench-hold. Now revenue and cost land in the same period against the same unit.
The recurring mistake here is treating resize fees as overhead instead of unit cost. Rings that need frequent resizing — odd sizes, wide bands, certain settings — carry a real hidden cost. If you never attach that cost to the piece, you'll keep stocking sizes that quietly erode margin because the resize expense is buried where you can't see it per SKU.
When strict holds and SLAs actually make sense — and when they don't
When this is worth the effort: You sell the same ring styles across a website and one or more physical locations, and your average piece is valuable enough that a double-sell means a real refund, an apology gift, or a lost customer. If a meaningful share of your online ring sales require sizing you don't physically stock, the SLA discipline pays for itself in avoided chargebacks alone.
When it's overkill: If your rings are one-of-a-kind estate pieces sold as-is with no resizing offered, most of this collapses into a simple "sold / not sold" flag. There's no sellable-size-range to track because the piece is the piece. Don't build a three-tier hold system for a channel that can't double-sell in the first place.
Who should not bolt this on carelessly: Stores whose staff already ignore existing flags. If your team doesn't trust the current "in stock" number and routinely checks the physical drawer anyway, adding more flags won't fix the trust problem — it'll just add noise. Fix the reliability of one flag (the firm-hold) before layering on soft-holds and bench-holds.
A real scenario
A two-location jeweler with a modest online store was running around 30–40 online ring orders a month, and a good chunk of those needed sizing they didn't stock. Roughly once or twice a month, a ring out for resize got promised to a walk-in — the classic double-sell — and about the same frequency, an online sizing order shipped late because it silently went into the vendor's 12-day queue while the site promised a week.
They didn't do anything dramatic. They split the size fields (physical vs sellable range), added a firm-hold that auto-dropped a piece from web availability the moment a deposit or payment hit, and put a bench-hold on anything sent for resizing. Then they pulled their vendor's real resize turnaround out into the open and set the online ship-date to add that window automatically whenever a resize was required.
Double-sells basically stopped — not because staff got more careful, but because the physical unit disappeared from the other channel the instant it was committed. Late-ship complaints dropped to nearly nothing because customers were quoted the honest window up front, resize included. And once resize fees were attached per-piece, they noticed two specific ring styles were resized on almost every sale and quietly adjusted which sizes they stocked. Nothing dramatic in the numbers — a handful fewer refunds and rework jobs a month — but that's a handful of high-value pieces that stopped bleeding margin.
The short version worth keeping at the counter
Sizing errors aren't a discipline problem, they're a data-model problem. If your system can tell the difference between the ring that's physically in the drawer and the ring you can build to size, and if a committed piece vanishes from every other channel the moment it's claimed, most double-sells and late ships disappear on their own.
Three things to get right, in order: separate the size fields so "in stock" means one specific size; give every hold an expiration so nothing gets stuck in limbo; and quote the customer a ship date that already includes the honest resize window — in-house or vendor. Do those, attach resize costs to the actual piece, and the fulfillment errors that used to feel random start looking very avoidable.
Sizing errors aren't a discipline problem, they're a data-model problem. If your system can tell the difference between the ring that's physically in the drawer and the ring you can build to size, and if a committed piece vanishes from every other channel the moment it's claimed, most double-sells and late ships disappear on their own.
Three things to get right, in order: separate the size fields so "in stock" means one specific size; give every hold an expiration so nothing gets stuck in limbo; and quote the customer a ship date that already includes the honest resize window — in-house or vendor. Do those, attach resize costs to the actual piece, and the fulfillment errors that used to feel random start looking very avoidable.
Ready to elevate your jewelry store operations?
Join 500+ jewelers using Jewlyly to increase efficiency, reduce errors, and grow revenue.