For the complete documentation index, see llms.txt. This page is also available as Markdown.

SKUs

What is a SKU?

A SKU (Stock Keeping Unit) represents a specific, purchasable configuration of a product, such as a black pair of shoes in size 7. Shoppers cannot purchase an Offer directly; they must select a SKU, which is a distinct combination of variant options that represent an actual item.

Offers and SKUs

Offers serve as the top-level category or wrapper in Violet's system. One Offer can contain multiple SKUs, sometimes just one, but in other cases, as many as 100 or more. This variability directly impacts the sizing and processing demands on our respective systems.

For example, an Offer may represent a t-shirt with variant options for COLOR and SIZE. The combination of the RED color variant option and the MEDIUM size variant option creates an individual SKU. Each distinct combination constitutes its own unique SKU.

SKU Data

Each SKU has its own unique ID. SKU data includes specific details about a product, such as

  • Quantity available (inventory)

  • Pricing information

  • Other product-specific attributes

While a SKU may carry a specific inventory quantity, that quantity is simply a data value within the SKU entity and is not included in the SKU count calculation.

You can access individual SKU data within the Offer Object, or retrieve data for a specific SKU by using its ID.

Product Types

Both Offers and SKUs have a type property that indicates the nature of the product. The possible values are:

Type
Description

PHYSICAL

Traditional physical goods that require shipping and fulfillment

DIGITAL

Digital or downloadable products (e.g., e-books, software, gift cards)

VIRTUAL

Virtual services or experiences that don't require physical delivery

BUNDLED

Bundle products that combine multiple items

Digital Product Delivery

When a shopper purchases a digital product (type: "DIGITAL"), the fulfillment process differs from physical goods:

  • No shipping method required: Digital products do not require a shipping method. When all SKUs in a bag are digital, you should skip the shipping method selection during checkout.

  • Email delivery: Digital products such as downloadable files, e-books, software licenses, and gift cards are delivered to the shopper via email. The merchant's e-commerce platform handles this delivery automatically after the order is completed. The email is sent to the customer email address associated with the order.

  • Instant fulfillment: Unlike physical products that require shipping time, digital products are typically fulfilled immediately upon successful order completion.

The delivery email content and format are controlled by the merchant's e-commerce platform settings. Violet does not modify or control the digital product delivery emails sent by merchants.

Keeping SKUs Updated

It is essential to keep every SKU up to date. When a SKU is updated in the merchant's platform, a webhook typically notifies Violet's system so we can update the SKU accordingly. Violet doesn't create a new SKU for every update; instead, Violet stores a new version to ensure that inventory, pricing, and related details remain accurate for shoppers.

Deleted SKUs

How a SKU is affected depends on whether the merchant deleted just the variant or the entire product:

  • The merchant deletes an individual variant (SKU). The SKU is permanently deleted from Violet and simply removed from its parent Offer. It does not receive an archived or "marked for deletion" status of its own; it disappears from the Offer's SKU list entirely.

  • The merchant deletes the entire product. The parent Offer is moved to an ARCHIVED (and eventually FOR_DELETION) status, and its SKUs inherit that same status from the Offer. In this case a SKU can be seen in an ARCHIVED or FOR_DELETION state, but only because its parent Offer was set into that state.

Because individual SKU deletions are not surfaced through a dedicated webhook event, you'll typically detect a removed SKU either by comparing the SKUs on the Offer against a previously stored copy, or by handling the OFFER_UPDATED event that fires when an Offer's SKUs change.

Here is an example of a SKU as part of the Offer object:

SKU as part of Offer

Here is an example of a SKU object in isolation:

SKU JSON

You can learn more about how to interact with SKUs in our API Reference.

Last updated

Was this helpful?