All articles

Integrations

Custom Website

Push inventory to a client-operated website (e.g. WordPress / WooCommerce) via a JewelTrak-built module. The module owns the format, transport, fields, and lookups; you manage credentials, lists, and per-item content. JewelTrak owns the data; the website's plugin owns the storefront.

Custom Website

A Custom Website integration pushes your inventory to a website that your own web developer operates — typically a WordPress / WooCommerce storefront. Unlike Shopify or eBay (named platforms with a fixed API), a custom website is bespoke, so JewelTrak builds a website module for it: a self-contained unit that knows the exact CSV format, transport (FTP + webhook), per-item fields, and lookup lists that your site expects.

A client selling through Shopify uses the Shopify integration, not this one. Custom Website is specifically for a site your developer maintains where JewelTrak delivers a data file and the site’s plugin imports it. A tenant can have both — they’re separate integration cards.

How a Custom Website gets set up

Setup is a JewelTrak task, done once per client during onboarding:

  1. JewelTrak builds your website module to match your developer’s CSV spec and import endpoints.
  2. An admin binds the module to your organization (Admin → org → Online Channels → Custom Website → pick the module → Bind & install). Binding also installs the module’s own tables and lookup lists into your tenant.
  3. The admin enables the Website channel. Until a module is bound, the toggle stays Locked — there’s nothing to render a card from, so the channel can’t be turned on.

Once the channel is enabled, the Custom Website card appears under Settings → Integrations, the Website sub-tab appears on inventory detail pages, and the bulk listings page is available under Online → Listings.

The integration card — credentials & config

Settings → Integrations → Custom Website is where you enter the credentials the module needs and manage its configuration. What appears here is declared by your module. For a two-site setup (a public retail site plus a dealer/members site) you’ll see two credential groups side by side — for example:

  • Jewelry World (the public retail site) — FTP host, user, password, and the webhook URLs the plugin listens on.
  • Jewelry Reserve (the dealer-gated site) — its own FTP + webhook values.

Both sets of credentials are required — the module always delivers to both sites. You get these values from your web developer. JewelTrak doesn’t host the site, so it can’t validate them up front; if a push hits an authentication problem, JewelTrak stops and prompts you to fix the affected credentials rather than silently skipping items.

Passwords are stored encrypted and only used at push time. To change a password, type the new one over the dots and save; leaving a password field blank keeps the existing value.

Use the Manage lookup lists button in the upper right to jump to the list editor (below).

Managing audited customers (memo hold)

Some clients need items that are on memo to a specific customer to come off the public site while they’re out — but stay on the dealer site — and automatically return to the public site when the memo comes back.

You control which customers this applies to yourself, with the Audited customers picker on the card config. Search for and add any customers whose memos should be audited; remove them when the arrangement ends. No code change or support ticket is needed — the list is yours to manage.

How it works once a customer is on the list:

  • Memo issued to an audited customer → the item is pulled from the public site, kept on the dealer site, and flagged JR Only.
  • Memo returned → the item is re-pushed to the public site automatically.

If the Audited customers list is empty, the feature is simply off. This behavior is specific to modules that declare it (Jewelry World does); other website modules won’t show the picker unless built with it.

The lookup-list editor

Settings → Integrations → Custom Website → Manage lookup lists manages the dropdown values that appear on the per-item panel:

  • Main categories — top-level pickable values (with a Jewelry / Watches filter).
  • Subcategories — grouped under a main category; drives the cascading multi-checkbox list on the panel.
  • Stones — stone types pickable per item.
  • Other options — free-form picks (e.g. Estate, Antique, Limited).
  • Other metals — beyond the standard gold purities (9K–24K + Platinum).

Adding a value makes it pickable on every item. Renaming isn’t exposed — pipe-delimited references in per-item settings would silently break. To rename, add the new value, repoint the affected items, then delete the old value. Lists start empty after a fresh module install; populate them here before configuring items.

The per-item panel

Every supported jewelry item has a Website sub-tab under Sales Channels on its detail page:

  • Item title — the short label under the main photo. Use AI to generate one in proper case (e.g. “18K Ladies’ Designer Diamond Necklace”).
  • Long description — the verbose product description. Use AI to draft a marketing-style description from the item’s spec fields.
  • Main category + subcategories — drives storefront navigation.
  • Stones, options, metals, gold colors, other metals — multi-selects that get pipe-joined into the CSV.
  • Uploadable — when unchecked, the item is excluded from bulk push runs even if every required field is filled.

The panel has its own Push and Remove from site buttons for acting on the single item you’re viewing. Remove from site only appears once the item is actually listed.

Required for a successful push: title, long description, main category, and at least one metal. The bulk listings page flags items missing any of these so you can fix them first.

The bulk listings page

Online → Listings → Website is where you push and manage items in bulk:

  • Push — sends the selected items’ full records to both sites.
  • Delete selected — removes the selected items from both sites. Use this to undo an accidental bulk push, or when a batch of items is no longer for sale.

Pushing always delivers to both sites; there’s no per-site toggle. (The “keep it off the public site but on the dealer site” case is handled automatically by the audited-customer memo hold above, not a manual button.)

Each row shows status badges:

  • JW — listed on the public site (green) or not (—).
  • JR — listed on the dealer site (green) or not (—).
  • JR Only badge — the item is currently held to the dealer site only (on memo to an audited customer).
  • Last push — when the most recent push ran and whether it succeeded.

Filter by listing status (Listed / Not listed / JR Only / Panel configured / Missing title or category) to focus on what needs attention.

Auto-removal when an item sells out

When an item’s quantity on hand reaches zero — sold on an invoice, scrapped, or returned to a vendor — JewelTrak automatically removes it from both sites, the same way it does for Shopify and RapNet. Items currently out on memo are left to the memo hold above and are not auto-removed. JewelTrak never auto-re-lists an in-stock item; re-listing is always a deliberate push.

Image hosting

Images stay on JewelTrak’s CDN. The CSV emits absolute Cloudflare URLs, and the site’s plugin downloads them at import time. There is no image sync — JewelTrak remains the single source of truth for product photos. If a plugin can’t accept absolute image URLs, that’s a plugin-side update for your developer; copying every image to the client’s bucket would double storage cost and create freshness drift, so JewelTrak doesn’t offer it.

Troubleshooting a failed push

Errors surface in two places:

  1. Push response banner at the top of the bulk listings page — the immediate error from FTP or the webhook.
  2. Last push column on each row — the per-item status if a partial failure occurred.

Common causes:

  • Missing credentials — JewelTrak prompts you to enter them on the card before attempting any push (no partial run).
  • FTP password rotated / wrong — the host accepts the connection but rejects the login; JewelTrak aborts and prompts you to update the password. Fix it on the Custom Website card.
  • FTP host wrong or down — the error names the host. Verify with your developer.
  • Webhook 404 — the import URL is wrong or the plugin’s action name changed. Get the current URL from your developer.
  • Webhook 200 but products not visible — the CSV reached the plugin but a column mismatch made it skip rows. Send your developer the most recent CSV so they can audit their plugin’s column expectations.

JewelTrak has done its job once the CSV arrives at the FTP target and the webhook returns success. Beyond that, your web developer is the right escalation — they own the plugin that reads the file.