USER & SETUP GUIDES

Documentation

Everything you need to set up, run, and get the most out of JewelTag — from first login to your hundredth sale.

Getting Started

Platform Overview

JewelTag is built around four connected modules that share the same underlying item and customer records. Anything you scan at intake follows the piece through pricing, sale, and any future repair — without re-entering data.

Inventory
RFID, barcodes, certs, Shopify sync
Point of Sale
Layaway, trade-ins, commission splits
Repairs
Work orders, photos, status notifications
CRM_JewelTag
Profiles, wishlists, marketing automation

PIN Login & Staff Switch

JewelTag uses a two-layer authentication system. The store owner logs in with their email and password once — after that, individual staff members use a 4-digit PIN to identify themselves at the counter without fully logging out.

First-day confusion point: staff who try to log in with their email at /admin/login won't see the PIN screen. The owner must log in first, then staff tap Switch Associate from the user menu top-right.
PIN login screen
pin-login-screen.png → public/pin-login-screen.png
PIN login screen — staff enter their 4-digit code here after the owner has authenticated
Switch Associate modal
switch-associate-modal.png → public/switch-associate-modal.png
Switch Associate modal — accessible from the top-right user menu at any time

Steps to switch staff mid-shift

  1. Click your name / avatar in the top-right corner of the admin panel
  2. Select Switch Associate PIN
  3. The new associate enters their 4-digit PIN
  4. All subsequent sales and repairs are attributed to the new associate

Quick Start Guide

Most stores take their first sale on day one. Follow this order:

01
Log in & set up your store
Add store name, address, timezone, and tax rate under Settings → Store.
02
Create staff accounts
Add each associate under Users, assign a role, and set their 4-digit PIN.
03
Import or add inventory
Upload your existing spreadsheet, or start scanning items in with a barcode gun.
04
Set up your label printer
Connect your Zebra ZD621R to the network and enter its IP under Settings → Hardware.
05
Take your first sale
Scan an item, add a customer, choose a payment method, and complete the sale.

Staff Accounts & Roles

Every staff member gets their own account so sales, commissions, and repairs are correctly attributed. Roles control what each person can see and do.

RoleAccess
Superadmin / OwnerFull access — settings, all reports, user management, deletion requests.
AdministrationAll reports, settings, no system-level changes.
Sales AssociatePOS, customer profiles, repair intake. No settings or financial reports.
Bench / RepairRepair queue and status updates only.

Store Settings

Under Settings → Store configure the fields that affect every transaction — tax rate, default currency, store address on receipts, and logo. The timezone here controls how dates display in all reports.

If your Sales Report shows transactions at midnight UTC instead of local time, this timezone setting is the first thing to check.
Inventory

Adding Inventory Items

Each inventory item holds up to 62 fields — but most are optional. At minimum you need a barcode, cost price, and supplier. Everything else (certifications, stone weights, RFID) can be added later.

New Inventory Form
new-inventory-form.png → public/new-inventory-form.png
New Inventory form — field groups: Basic Info, Stone Details, Metal, Pricing, Status

Field groups explained

Basic Info

Department, sub-department, category, supplier code, custom description, primary image

Stone Details

Shape, color, clarity, cut, polish, symmetry, fluorescence, measurements, diamond weight, is_lab_grown

Certification

Certificate number (GIA/IGI/AGS), certificate agency — prints on customer receipts

Metal

Metal type, purity, gross weight, stone weight, metal weight, size

Pricing

Cost price (hidden from sales staff), retail price, web price, markup %, discount %

Status & Flags

Status (in_stock/on_hold/sold/inactive), is_memo, is_trade_in, RFID code, barcode, serial number

CSV Bulk Import

Minimum required CSV columns
barcode, cost_price, supplier_id, department, category, retail_price, metal_type, status

RFID & Barcode Setup

JewelTag supports both barcode scanning and RFID. Barcodes work on all plans. RFID (the rfid_code field on each item) is available on Pro and above.

RFID scan modal
rfid-barcode-scan-modal.png → public/rfid-barcode-scan-modal.png
Scan modal — click the barcode icon on any search field to open this

Zebra ZD621R Label Printer

Your Zebra printer connects over the local network at 192.168.1.60 by default. Update the IP under Settings → Hardware if your network differs.

Zebra Browser Print must be running on the printing computer. The status dot top-right shows: green = online, yellow = app running but no printer, grey = app not running.

Diamond Certifications

Attach GIA, IGI, AGS, EGL, or HRD certification details to any inventory item via Certificate Number and Certificate Agency fields. These print on customer receipts and appraisal documents automatically. The cert stays linked to the item's history even after it sells.

Memo / Consignment Inventory

Items received on memo from a vendor are flagged is_memo = true and linked to a Memo Vendor. The memo_status field tracks lifecycle:

StatusMeaning
on_memoIn your store, not yet owned — vendor can recall it
soldSold — you owe the vendor; reconcile under Memo Inventory
returnedPhysically returned to vendor; closes out the memo line
Memo items over 60 days without a status change are flagged in the Memo Aging Report — check monthly to avoid vendor disputes.

Multi-Store Stock Transfers

Move items between locations via Inventory → Stock Transfers. Items stay linked to full history across all stores.

  1. Go to Inventory → Stock Transfers → New Transfer
  2. Select source store and destination store
  3. Scan or search items to include
  4. Submit — items move to In Transit status
  5. Destination store confirms receipt — status becomes Completed

Inventory Audits

Run a physical count audit under Inventory → Inventory Audits. JewelTag compares your counted quantities against the system's expected stock and generates a variance report — showing shrinkage, overages, and unaccounted items.

Inventory Audit
inventory-audit.png → public/inventory-audit.png
Inventory Audit — scan or manually count items; variance column highlights discrepancies

How an audit works

  1. Create a new audit — it snapshots expected counts from the database
  2. Scan or enter actual counts for each item or location
  3. Submit — the system calculates variance per item (audit_items table)
  4. Review the variance report — investigate any unexplained differences
RFID-enabled stores can complete a full audit 5–10× faster by scanning batches of tags simultaneously rather than one at a time.

Restocking & Purchase Orders

When new stock arrives from a supplier, record it under Inventory → Restock. Each restock entry logs the supplier, quantity, cost, and receipt date — creating a permanent purchase history in the restocks table.

Restock logs
restock-logs.png → public/restock-logs.png
Restock Logs — full purchase history by supplier, date, and item
Restock entries do not automatically create inventory items — they log the purchase event. You still need to add individual items to inventory via the standard item form or CSV import.

Supplier Management

Manage your vendors under Inventory → Suppliers. Every inventory item links to a supplier via supplier_id — so your cost reports and restock logs always show which vendor each piece came from.

Supplier management
supplier-management.png → public/supplier-management.png
Suppliers list — name, contact, and item count per vendor
Create all suppliers before importing inventory via CSV — the import requires a valid supplier_id for every row.

Archived Stock

Items can be archived rather than deleted — archiving removes them from active inventory counts and reports without permanently losing their history. Access archived items under Inventory → Archived Stock.

Common reasons to archive: item sent for repair by supplier, item lost/stolen (pending investigation), end-of-season pieces being held. Archived items can be restored to active stock at any time.

Shopify Sync

JewelTag pushes inventory items to Shopify and keeps stock counts in sync both ways. Synced items store shopify_product_id and shopify_inventory_item_id on the item record.

Shopify push button
shopify-push-button.png → public/shopify-push-button.png
Shopify sync button on an inventory item's detail page

Required Shopify scopes

write_products · write_inventory · read_locations
Images must be under 2MB. Synced items get the jeweltag-instore Shopify tag automatically. If the push fails, check the browser console — the most common cause is an oversized image.
Point of Sale

Making a Sale

Go to Sales → New Sale. Scan or search items to add to cart, attach a customer, choose a payment method, and complete. Inventory moves from in_stock to sold the moment the receipt prints.

Duplicate sale guard: submitting twice within 30 seconds shows a warning and blocks the second transaction. Dismiss it and check the Sales list — the first sale went through.

Split Payments

Pay with multiple methods in one sale (e.g. $500 card + $200 cash). The split section is collapsed by default — click the toggle to expand it.

Split payment expanded
split-payment-expanded.png → public/split-payment-expanded.png
Split payment expanded — add payment lines; running total updates live
The split total must match the sale total exactly — even a cent difference keeps the submit button disabled.

Trade-Ins

Enable the Trade-In toggle on a sale to reveal trade-in fields. The value entered subtracts directly from the balance due.

Trade-in section
trade-in-section.png → public/trade-in-section.png
Trade-In toggle expanded — description, value, and auto-generated receipt number
FieldPurpose
trade_in_valueAmount credited — reduces balance due
trade_in_descriptionDescription of traded piece (e.g. "14K yellow gold ring, 4.2g")
trade_in_receipt_noAuto-generated receipt number — keep for records

Add the traded-in piece to inventory as a new item with is_trade_in = true to track its origin.

Trade-In / Scrap Gold Calculator

The Trade-In Check page is a standalone scrap gold and trade value calculator — separate from the sale form. Use it at the counter to quickly estimate what a customer's piece is worth before committing to a purchase price.

Trade-in check calculator
trade-in-check.png → public/trade-in-check.png
Trade-In Check — enter metal type, purity, and weight to get a live scrap value estimate

The calculator uses live metal spot prices. It does not create any record — it's purely for estimation. Once you agree on a price, enter the trade-in on the actual sale form.

Special Jobs (Repairs Within a Sale)

A Special Job is a repair billed as part of a sale — e.g. sizing a ring at purchase. It appears as a receipt line item AND creates a repair work order automatically.

Special Jobs section
special-jobs-section.png → public/special-jobs-section.png
Special Jobs — at the very bottom of the New Sale form, collapsed by default
This is the most-missed feature by new staff. It is at the bottom of the sale form and collapsed — scroll all the way down and open it.

Layaway (Laybuy)

Layaway holds an item for a customer with a deposit, paid off over time. The item immediately becomes on_hold via held_by_sale_id — it won't appear as available stock.

Laybuy creation
laybuy-creation-on-hold.png → public/laybuy-creation-on-hold.png
Laybuy creation — item status changes to ON HOLD as soon as the first deposit is recorded

Laybuy number format

Plans are numbered LB-YYYYMMDD-HIS (e.g. LB-20260609-143022). The timestamp ensures uniqueness even for same-day plans.

Recording a payment

  1. Open the plan from Sales → Layaways
  2. Click Record Payment
  3. Enter amount and method — creates a row in laybuy_payments, updates last_paid_date
  4. When balance_due hits zero the plan auto-closes and item moves to sold

If a customer cancels

Mark the plan Cancelled — the item returns to in_stock automatically. Process any deposit refund manually from Sales → Refunds.

Commission Tracking

When multiple staff share a sale, each person's split percentage is stored in the sales_person_list JSON field. The My Sales Report uses this to calculate per-associate earnings for any period.

Commission splits are set at sale time. Retroactive edits require an admin-approved Sale Edit Request.

Processing Refunds

Process refunds under Sales → Refunds → New Refund. Link the refund to the original sale, specify the amount and reason, and confirm. The refund is recorded in the refunds table and appears in your daily closing totals as a deduction.

Refund process
refund-process.png → public/refund-process.png
New Refund form — link to original sale, enter amount and reason
Refunding a sale does not automatically return the item to inventory. If the customer returned the physical piece, go to the item record and manually set its status back to in_stock.

Refund reasons tracked

Always enter a reason — refund patterns by staff member and by reason are visible to admins in the sales audit trail and help identify training gaps or policy issues.

Sale Edit Requests

Once a sale is completed, it cannot be edited directly. Staff submit a Sale Edit Request explaining the change needed — an admin reviews and approves or rejects it. Every request and decision is logged permanently.

Sale edit request
sale-edit-request.png → public/sale-edit-request.png
Sale Edit Request — staff describe the change needed; admin sees a queue of pending requests
Admins see all pending requests under Admin → Sale Edit Requests. Approved edits are applied immediately and the approval is logged in the activity trail with the approving admin's name.

Deposit Sales

A Deposit Sale is a partial payment collected upfront for a future purchase — different from a Layaway (which holds a specific item) and different from a Custom Order deposit (which is tied to a production order). Deposit sales are tracked in the deposit_sales table and appear in the Deposit Sales Report.

Deposit sales report
deposit-sales-report.png → public/deposit-sales-report.png
Deposit Sales Report — all open deposits with customer, amount held, and age
Custom Orders

Creating Custom Orders

Custom Orders are for pieces that don't exist yet — commissioned from scratch or special-ordered from a vendor. They live in their own pipeline separate from regular sales.

The three date fields — all different

FieldMeaning
due_dateDate promised to the customer
expected_delivery_dateWhen you expect the vendor to deliver to you — earlier than due_date
follow_up_dateWhen staff should next contact the customer with a status update

Order Stages — The Pipeline

Every custom order moves through six stages. The Pipeline Report groups all orders by stage so you can see at a glance what's stuck and what's overdue.

Custom order stages
custom-order-stages.png → public/custom-order-stages.png
The six status stages — each maps to a column in the Pipeline Report
StageMeaningWho acts next
DraftCreated, not yet quotedSales staff
QuotedPrice given, awaiting approvalCustomer
ApprovedApproved, deposit collectedYou / Vendor
In ProductionOrder placed with vendor / benchVendor / Bench
Ready for PickupPiece received, customer notifiedCustomer
CompletedPaid in full and collected

Deposit → Sale Conversion

When the customer collects and pays the balance, convert the order to a full sale. This is the most error-prone step for new staff.

Custom order deposit to sale
custom-order-deposit-to-sale.png → public/custom-order-deposit-to-sale.png
Convert to Sale — deposit carried forward, balance auto-calculated
  1. Open the order (status must be Ready for Pickup)
  2. Click Convert to Sale
  3. Review: quoted price, deposits paid, balance due
  4. Collect balance, select payment method, complete
  5. A linked sale is created; order moves to Completed
Never enter a manual sale for a custom order balance — always use Convert to Sale so deposit history and the order link are preserved.
Repairs

Creating Repair Orders

Start a repair from Repairs → New Repair or from a customer's profile. Always attach photos at intake — your proof of condition if any dispute arises.

Repairs created as Special Jobs within a sale link automatically to the sale record and appear in both the repair queue and sale line items.

Repair Number Format

Repairs are numbered YYMMDD-N where N resets to 1 each day.

Repair number format
repair-number-format.png → public/repair-number-format.png
Repair list — 260609-1 = first repair on June 9, 2026
Old repair numbers from a previous system are stored in legacy_repair_no and are fully searchable — no need to re-number.

Status & Notifications

Move repairs through stages as work progresses. Marking Ready for Pickup triggers an automatic SMS/email to the customer (CRM_JewelTag required).

StatusMeaning
ReceivedDropped off, work order created
In ProgressBench actively working
On HoldWaiting on parts or customer decision
Ready for PickupComplete — customer notified
CompletedCollected and paid
Reports

Analytics Dashboard

The main Dashboard shows today's at-a-glance metrics — revenue, items sold, repairs due, and layaway balances outstanding. Widgets update in real time as the day progresses.

Analytics dashboard
analytics-dashboard.png → public/analytics-dashboard.png
Analytics Dashboard — today's revenue, top items, pending repairs, and layaway health at a glance

The Analytics page (separate from Dashboard) provides deeper trend charts — sales by month, category performance, and staff rankings over a chosen date range.

Sales Report & Date Logic

The Sales Report filters by effective sale date — the payment date (payments.paid_at), not the record creation date. This is critical for imported historical data.

Sales report date filter
sales-report-date-filter.png → public/sales-report-date-filter.png
Sales Report — date filter uses payment date; the date column shows effective sale date
Imported / OnSwim data: invoice format D091225-XXXX encodes the real sale date (Sep 12, 2025). The report decodes this automatically — if dates look wrong, check the invoice number format.

My Sales Report

The My Sales Report is a per-associate view — each staff member sees only their own sales and commission earnings. Admins can view any associate. It uses the sales_person_list JSON split to calculate each person's share correctly, even for multi-staff sales.

My Sales Report
my-sales-report.png → public/my-sales-report.png
My Sales Report — filtered to the logged-in associate; shows split commission per sale
OnSwim import note: imported sales decode the real date from the invoice number automatically — so historical commission figures are correct even for pre-migration sales.

Sold Stock Report

The Sold Stock Report shows every sold item with its cost, sale price, margin, and the associate who sold it — filtered by date range, category, or department. Use this for buying decisions and to identify your highest-margin categories.

Sold Stock Report
sold-stock-report.png → public/sold-stock-report.png
Sold Stock Report — item-level view of cost vs sale price vs margin

Stock Aging Report

Shows unsold inventory grouped by how long it has been in stock — 0–30 days, 31–60, 61–90, and 90+ days. Use this monthly to identify slow-moving pieces that need repricing or promotion.

Stock Aging Report
stock-aging-report.png → public/stock-aging-report.png
Stock Aging Report — items bucketed by days in stock; 90+ column flags stale inventory

Inactive Stock Report

Lists all items with status inactive — including when they were inactivated, by whom, and the stated reason (inactivated_at, inactivated_by, inactivated_reason). Useful for audits and for tracking items sent off-site.

Inactive Stock Report
inactive-stock-report.png → public/inactive-stock-report.png
Inactive Stock Report — who inactivated each item, when, and why

Warranty Report

Shows all items and custom orders with active warranties — including warranty_period, warranty_charge, and the original sale date. Use this when a customer returns for a warranty repair to quickly verify coverage.

Warranty Report
warranty-report.png → public/warranty-report.png
Warranty Report — active warranties with period, charge, and expiry

Deposit Sales Report

Lists all open deposit sales — money held from customers who haven't completed their purchase yet. Shows customer, deposit amount, date collected, and how many days old the deposit is. Review this weekly to follow up on aging deposits.

Deposit Sales Report
deposit-sales-report.png → public/deposit-sales-report.png
Deposit Sales Report — open deposits with age and customer detail

Restock Logs

Full purchase history from suppliers — every restock event with date, supplier, items, quantities, and cost. Use this to track vendor delivery performance and reconcile against supplier invoices.

Restock Logs
restock-logs.png → public/restock-logs.png
Restock Logs — chronological purchase history by supplier

End of Day Closing

EOD Closing locks the day's transactions and produces a summary for your records. After submission, edits require an admin-approved Sale Edit Request.

EOD before and after
eod-before-after.png → public/eod-before-after.png
EOD Closing — open day summary (before) and locked confirmation (after)
After submitting EOD, staff often can't find it. It moves to Reports → End of Day → Closed Days — it is not deleted.

Custom Order Pipeline Report

Kanban-style view of every active custom order by stage — total value per stage, average days stuck, and an overdue table at the bottom.

Custom Order Pipeline Report
custom-order-pipeline-report.png → public/custom-order-pipeline-report.png
Pipeline Report — six columns, overdue orders in red table below

Filter pills at the top narrow to last 30 or 90 days. Click any order number to jump to its edit page.

Laybuy Health Report

Classifies every active layaway into four risk tiers based on payment pace and due date proximity.

Laybuy Health Report
laybuy-health-report.png → public/laybuy-health-report.png
Laybuy Health — risk-tiered cards; urgent plans at the top
TierCriteriaAction
OverduePast due_date with balance remainingCall immediately
At RiskDue within 7 days AND under 50% paidSend reminder this week
WatchUnder 50% paid OR no payment in 30+ daysMonitor closely
On TrackPaying on scheduleNo action needed

Label Designer & Printing

Design label layouts under Admin → Label Designer. Labels print to your Zebra ZD621R via ZPL through the Zebra Browser Print app.

Label designer
label-designer-print.png → public/label-designer-print.png
Label Designer — layout editor, ZPL preview, and print button

Troubleshooting

SymptomFix
Grey dot top-rightStart Zebra Browser Print app on this computer
Yellow dotApp running but no printer — check cable/IP (192.168.1.60)
Label prints blankHold Feed 2s for media calibration
Wrong label sizeUpdate layout dimensions in Label Designer
CRM_JewelTag

Customer Profiles

Every sale and repair logs automatically to the customer's profile — purchase history, total spend, preferred categories, and key dates. Search by name, phone, or email from the top search bar.

Duplicate phone numbers: JewelTag shows a confirmation dialog if a phone already exists. Do not skip it — this prevents duplicate profiles for the same person.

Wishlists & Follow-ups

Add items to a customer's wishlist from their profile or from an item page. The Upcoming Follow-Ups report surfaces customers with a follow_up_date due today or in the next 7 days — so no customer check-in falls through the cracks.

Marketing Automation

Automate birthday, anniversary, and wishlist-restock messages under CRM → Automation. SMS campaigns require 10DLC registration — contact our team if you need help completing this.

Admin & Tools

Find Stock / Sale / Customer / Payment

JewelTag has four dedicated quick-search pages — faster than using the main resource lists when you know what you're looking for.

Find Stock page
find-stock.png → public/find-stock.png
Find Stock — search by barcode, RFID, description, or certificate number
PageSearch byBest used for
Find StockBarcode, RFID, description, cert numberLooking up a specific piece quickly at the counter
Find SaleInvoice number, customer name, datePulling up a past sale for a customer query or reprint
Find CustomerName, phone, emailIdentifying a customer before starting a sale
Find PaymentPayment reference, amount, dateReconciling a specific payment against bank records

Activity Logs

Every action in JewelTag is logged — who created, edited, or deleted what, and when. Access the full audit trail under Admin → Activity Logs. Useful for investigating discrepancies, staff disputes, or unexpected changes.

Activity log
activity-log.png → public/activity-log.png
Activity Log — timestamp, user, action type, and the changed record
Activity logs are read-only and cannot be cleared by any user — including superadmins. They are your permanent paper trail.

Deletion Requests

JewelTag does not allow direct deletion of sales, inventory items, or customer records by regular staff. Instead, staff submit a Deletion Request with a reason — an admin reviews and approves or rejects it.

This two-step process prevents accidental data loss and ensures there's always an audit trail for why something was removed. All requests and decisions are logged permanently.

How to submit a deletion request

  1. Open the record you need deleted (sale, item, or customer)
  2. Click the Request Deletion button (bottom of the form)
  3. Enter a reason — be specific
  4. Submit — an admin is notified
  5. The record is deleted only after admin approval

Support Tickets

Raise a support ticket with the JewelTag team directly from within the admin panel — under Help & Support in the user menu. Every ticket is emailed to the JewelTag support team and tracked until resolved.

Support ticket
support-ticket.png → public/support-ticket.png
Support Ticket form — describe the issue; replies go to your email
You can reply to tickets by replying to the email notification — no need to return to the admin panel. Your reply threads back to the ticket automatically.

API Keys

Generate API keys for external integrations under Settings → API Keys. Each key can be scoped to specific endpoints — create a separate key for each integration so you can revoke one without affecting others.

Store API keys in your integration's environment variables — never hard-code them in source files or share them in messages. If a key is compromised, revoke it immediately from this page.

Roles & Permissions

JewelTag ships with four default roles (Superadmin, Administration, Sales Associate, Bench). Custom roles can be created under Admin → Roles — assign exactly the permissions each role needs, no more.

Permissions are granular — you can create a role that can view reports but not edit sales, or one that can process refunds but not access settings. Contact support if you need help designing a custom role for your workflow.
Integrations

QuickBooks Sync

Connect QuickBooks Online or Desktop to push daily sales summaries directly to your books — no manual journal entries. Connect under Settings → Integrations → QuickBooks.

Can't find what you're looking for?

Contact Support