> For the complete documentation index, see [llms.txt](https://docs.violet.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.violet.io/prism/catalog/skus.md).

# 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.

{% hint style="info" %}
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.
{% endhint %}

### **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.

{% hint style="warning" %}
If a channel no longer sees a SKU listed under an Offer that it previously appeared on, it means the merchant has **permanently deleted** that individual SKU from their store. The SKU will not return unless the merchant recreates it, in which case it would come back as a new SKU with a new ID.
{% endhint %}

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`](/prism/webhooks/events/offer-webhooks.md) event that fires when an Offer's SKUs change.

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

<details>

<summary>SKU as part of Offer</summary>

```json
{
    "id": 39045,
    "product_id": "8d8c749c469b45e795f458360e2fc4be",
    "external_id": "8335172993325",
    "external_url": "https://the-violet-garden.myshopify.com/products/rouge-fire-flower-t-shirt",
    "name": "Shirt",
    "description": "Pastel-red flower design, short-sleeved t-shirt. Designed to keep you cool when you need to be cool and hot when you need to be hot. This shirt looks great on a sunny day under a blue sky.",
    "source": "SHOPIFY",
    "seller": "the violet garden",
    "vendor": "The Violet Garden",
    "merchant_id": 10189,
    "available": true,
    "visible": true,
    "min_price": 3000,
    "max_price": 3000,
    "currency": "USD",
    "source_category_name": "",
    "meta": [],
    "variants": [ ... ],
    "skus": [
        {
            "id": 196701,
            "offer_id": 39045,
            "merchant_id": 10189,
            "external_id": "45101095092525",
            "name": "Shirt - Large / Design Three / Red",
            "gtin": "",
            "upc": "",
            "in_stock": true,
            "qty_available": 100,
            "inventory_tracked": true,
            "sale_price": 3000,
            "retail_price": 3000,
            "currency": "USD",
            "taxable": true,
            "tax_type": "DEFAULT",
            "albums": [],
            "variant_values": [
                {
                    "variant": "Style",
                    "value": "Design Three"
                },
                {
                    "variant": "Size",
                    "value": "Large"
                },
                {
                    "variant": "Color",
                    "value": "Red"
                }
            ],
            "type": "PHYSICAL",
            "status": "AVAILABLE",
            "date_created": "2023-05-01T20:08:25+0000",
            "date_last_modified": "2023-06-29T23:58:33+0000",
            "sku_dimensions": {
                "weight": 0.0,
                "type": "SKU"
            }
        },
        {
            "id": 196697,
            "offer_id": 39045,
            "merchant_id": 10189,
            "external_id": "45101095059757",
            "name": "Shirt - Large / Design Two / Red",
            "gtin": "",
            "upc": "",
            "in_stock": true,
            "qty_available": 100,
            "inventory_tracked": true,
            "sale_price": 3000,
            "retail_price": 3000,
            "currency": "USD",
            "taxable": true,
            "tax_type": "DEFAULT",
            "albums": [],
            "variant_values": [
                {
                    "variant": "Size",
                    "value": "Large"
                },
                {
                    "variant": "Color",
                    "value": "Red"
                },
                {
                    "variant": "Style",
                    "value": "Design Two"
                }
            ],
            "type": "PHYSICAL",
            "status": "AVAILABLE",
            "date_created": "2023-05-01T20:08:25+0000",
            "date_last_modified": "2023-06-29T23:58:33+0000",
            "sku_dimensions": {
                "weight": 0.0,
                "type": "SKU"
            }
        },
        {
            "id": 196705,
            "offer_id": 39045,
            "merchant_id": 10189,
            "external_id": "45101094797613",
            "name": "Shirt - Small / Design Two / Red",
            "gtin": "",
            "upc": "",
            "in_stock": true,
            "qty_available": 99,
            "inventory_tracked": true,
            "sale_price": 3000,
            "retail_price": 3000,
            "currency": "USD",
            "taxable": true,
            "tax_type": "DEFAULT",
            "albums": [
                {
                    "id": 90993,
                    "parent_id": 196705,
                    "type": "SKU",
                    "name": "Rouge Fire Flower T-Shirt - Small / Design Two Media",
                    "media": [
                        {
                            "id": 185704,
                            "album_id": 90993,
                            "external_id": "41483613471021",
                            "url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_b6d58e24-200e-42b9-86c4-8feeaf4bc8e6.png",
                            "source_url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_b6d58e24-200e-42b9-86c4-8feeaf4bc8e6.png",
                            "type": "IMAGE",
                            "display_order": 1,
                            "primary": true
                        }
                    ],
                    "primary_media": {
                        "id": 185704,
                        "album_id": 90993,
                        "external_id": "41483613471021",
                        "url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_b6d58e24-200e-42b9-86c4-8feeaf4bc8e6.png",
                        "source_url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_b6d58e24-200e-42b9-86c4-8feeaf4bc8e6.png",
                        "type": "IMAGE",
                        "display_order": 1,
                        "primary": true
                    }
                }
            ],
            "variant_values": [
                {
                    "variant": "Size",
                    "value": "Small"
                },
                {
                    "variant": "Color",
                    "value": "Red"
                },
                {
                    "variant": "Style",
                    "value": "Design Two"
                }
            ],
            "type": "PHYSICAL",
            "status": "AVAILABLE",
            "date_created": "2023-05-01T20:08:25+0000",
            "date_last_modified": "2023-06-29T23:58:33+0000",
            "sku_dimensions": {
                "weight": 0.0,
                "type": "SKU"
            }
        },
        ...
    ],
    "albums": [
        {
            "id": 90990,
            "parent_id": 39045,
            "type": "OFFER",
            "name": "Primary Album",
            "media": [
                {
                    "id": 185779,
                    "album_id": 90990,
                    "external_id": "41483613339949",
                    "url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_e963dc9b-12e7-4b1e-96bb-97dc1b061cbc.png",
                    "source_url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_e963dc9b-12e7-4b1e-96bb-97dc1b061cbc.png",
                    "type": "IMAGE",
                    "display_order": 1,
                    "primary": true
                },
                {
                    "id": 185780,
                    "album_id": 90990,
                    "external_id": "41483613405485",
                    "url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_a80ec00e-eae1-41e4-8d6b-81c64bbc8f52.png",
                    "source_url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_a80ec00e-eae1-41e4-8d6b-81c64bbc8f52.png",
                    "type": "IMAGE",
                    "display_order": 2,
                    "primary": false
                },
                {
                    "id": 185781,
                    "album_id": 90990,
                    "external_id": "41483613274413",
                    "url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/grid_0.webp",
                    "source_url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/grid_0.webp",
                    "type": "IMAGE",
                    "display_order": 3,
                    "primary": false
                },
                {
                    "id": 185782,
                    "album_id": 90990,
                    "external_id": "41483613372717",
                    "url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_d2f90fab-7ac4-4161-b710-5363f1b4e244.png",
                    "source_url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_d2f90fab-7ac4-4161-b710-5363f1b4e244.png",
                    "type": "IMAGE",
                    "display_order": 5,
                    "primary": false
                },
                {
                    "id": 185783,
                    "album_id": 90990,
                    "external_id": "41483613438253",
                    "url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_d90ec5f7-a1a7-43c6-bdf9-38f7ff5764b9_1.png",
                    "source_url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_d90ec5f7-a1a7-43c6-bdf9-38f7ff5764b9_1.png",
                    "type": "IMAGE",
                    "display_order": 6,
                    "primary": false
                },
                {
                    "id": 185778,
                    "album_id": 90990,
                    "external_id": "41483613471021",
                    "url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_b6d58e24-200e-42b9-86c4-8feeaf4bc8e6.png",
                    "source_url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_b6d58e24-200e-42b9-86c4-8feeaf4bc8e6.png",
                    "type": "IMAGE",
                    "display_order": 4,
                    "primary": false
                }
            ],
            "primary_media": {
                "id": 185779,
                "album_id": 90990,
                "external_id": "41483613339949",
                "url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_e963dc9b-12e7-4b1e-96bb-97dc1b061cbc.png",
                "source_url": "https://cdn.shopify.com/s/files/1/0758/9363/7421/files/wealthy_floral_design_tshirt_with_a_red_pastel_colour_backgroun_e963dc9b-12e7-4b1e-96bb-97dc1b061cbc.png",
                "type": "IMAGE",
                "display_order": 1,
                "primary": true
            }
        }
    ],
    "three_denabled": false,
    "type": "PHYSICAL",
    "status": "AVAILABLE",
    "publishing_status": "PUBLISHED",
    "date_created": "2023-05-01T20:08:25+0000",
    "date_last_modified": "2023-06-29T23:58:33+0000",
    "commission_rate": 25.0,
    "currency_symbol": "$",
    "subscription_status": "NOT_SUBSCRIBED",
    "tags": [
        "madebymidjourney"
    ]
}
```

</details>

Here is an example of a SKU object in isolation:

<details>

<summary>SKU JSON</summary>

```json
{
            "id": 196701,
            "offer_id": 39045,
            "merchant_id": 10189,
            "external_id": "45101095092525",
            "name": "Shirt - Large / Design Three / Red",
            "gtin": "",
            "upc": "",
            "in_stock": true,
            "qty_available": 100,
            "inventory_tracked": true,
            "sale_price": 3000,
            "retail_price": 3000,
            "currency": "USD",
            "taxable": true,
            "tax_type": "DEFAULT",
            "albums": [],
            "variant_values": [
                {
                    "variant": "Style",
                    "value": "Design Three"
                },
                {
                    "variant": "Size",
                    "value": "Large"
                },
                {
                    "variant": "Color",
                    "value": "Red"
                }
            ],
            "type": "PHYSICAL",
            "status": "AVAILABLE",
            "date_created": "2023-05-01T20:08:25+0000",
            "date_last_modified": "2023-06-29T23:58:33+0000",
            "sku_dimensions": {
                "weight": 0.0,
                "type": "SKU"
            }
        }
```

</details>

You can learn more about how to interact with SKUs in our [API Reference](/api-reference/catalog/skus/get-sku-by-id.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.violet.io/prism/catalog/skus.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
