# 商品创建

**Webhook** products/create

商品创建时触发。

需要 `product` [访问权限](/zh-CN/docs/app/building-blocks/authentication/access-scopes)。最低支持版本：`202007`。

## 请求头

- `X-Shoplazza-Topic` string

  触发本次推送的事件，例如 orders/create

  **示例：** `orders/create`
- `X-Shoplazza-Hmac-Sha256` string

  请求体的 HMAC-SHA256 签名（base64 编码），使用应用的 Client Secret 生成，用于验证请求来自 Shoplazza
- `X-Shoplazza-Shop-Domain` string

  产生该事件的店铺域名

  **示例：** `example.myshoplaza.com`
- `X-Shoplazza-Api-Version` string

  序列化 payload 使用的 API 版本

  **示例：** `2025-06`
- `X-Shoplazza-Deduplication-ID` string

  本次推送的去重 ID，同一事件重发时保持不变，用于幂等去重

## 请求体

**数据结构 | 示例**

- `product` object

  - `brief` string

    商品简介
  - `created_at` string

    商品创建时间
  - `description` string

    商品描述
  - `handle` string

    商品 handle（用于 URL 的友好别名）
  - `has_only_default_variant` boolean

    是否仅有默认款式（即无多款式）
  - `id` string

    商品 ID
  - `image` object

    商品主图

    - `alt` string

      图片替代文本（alt）
    - `height` integer

      图片高度（单位：像素）
    - `path` string

      图片存储路径
    - `src` string

      图片 URL
    - `watermark_src` string

      水印图片 URL
    - `watermark_template_id` string

      水印模板 ID
    - `width` integer

      图片宽度（单位：像素）
  - `images` object[]

    商品图片列表

    *   Array \[

    - `alt` string

      图片替代文本（alt）
    - `height` integer

      图片高度（单位：像素）
    - `id` string

      图片 ID
    - `path` string

      图片存储路径
    - `src` string

      图片 URL
    - `width` integer

      图片宽度（单位：像素）
    *   \]
  - `inventory_policy` string

    库存策略，可选值：`continue`（缺货时继续销售）、`deny`（缺货时停止销售）、`auto_unpublished`（缺货时自动下架）；当 `inventory_tracking` 为 `true` 时必填
  - `inventory_quantity` integer

    库存数量
  - `inventory_tracking` boolean

    是否启用库存追踪
  - `meta_description` string

    SEO 描述
  - `meta_keyword` string

    SEO 关键词列表，多个值之间使用英文逗号分隔，例如：`key1,key2`
  - `meta_title` string

    SEO 标题
  - `need_variant_image` boolean

    是否需要为款式设置图片；当 `has_only_default_variant` 为 `false` 时必填
  - `note` string

    自定义备注，例如："This is a customizable product"
  - `options` object[]

    商品款式属性列表（如颜色、尺寸等）

    *   Array \[

    - `id` string

      款式属性 ID
    - `name` string

      款式属性名称，例如："color"、"size"
    - `position` integer

      款式属性排序位置
    - `product_id` string

      所属商品 ID
    - `values` undefined[]

      款式属性的可选值列表，例如：\["red", "black"\]、\["small", "large"\]
    *   \]
  - `published` boolean

    商品是否已上架
  - `published_at` string

    商品上架时间
  - `requires_shipping` boolean

    商品是否需要物流
  - `spu` string

    商品 SPU（标准产品单元）
  - `tags` string

    商品标签列表
  - `taxable` boolean

    商品是否需要计税
  - `title` string

    商品名称
  - `updated_at` string

    商品最后更新时间
  - `variants` object[]

    商品子款式列表

    *   Array \[

    - `barcode` string

      条形码
    - `compare_at_price` string

      划线价
    - `cost_price` string

      成本价
    - `created_at` string

      子款式创建时间
    - `id` string

      子款式 ID
    - `image` object

      子款式图片

      - `alt` string

        图片替代文本（alt）
      - `height` integer

        图片高度（单位：像素）
      - `path` string

        图片存储路径
      - `src` string

        图片 URL
      - `watermark_src` string

        水印图片 URL
      - `watermark_template_id` string

        水印模板 ID
      - `width` integer

        图片宽度（单位：像素）
    - `inventory_quantity` integer

      库存数量
    - `note` string

      款式备注
    - `option1` string

      子款式在第 1 个商品款式属性上的取值
    - `option2` string

      子款式在第 2 个商品款式属性上的取值
    - `option3` string

      子款式在第 3 个商品款式属性上的取值
    - `position` integer

      子款式在商品中的排序位置
    - `price` string

      子款式售价
    - `product_id` string

      子款式所属商品的 ID
    - `sku` string

      SKU
    - `title` string

      子款式标题
    - `updated_at` string

      子款式最后更新时间
    - `weight` string

      重量
    - `weight_unit` string

      重量单位，可选值：`kg`、`g`、`lb`、`oz`
    *   \]
  - `vendor` string

    供应商名称
  - `vendor_url` string

    供应商 URL

```json
{
  "product": {
    "brief": "string",
    "created_at": "string",
    "description": "string",
    "handle": "string",
    "has_only_default_variant": true,
    "id": "string",
    "image": {
      "alt": "string",
      "height": 0,
      "path": "string",
      "src": "string",
      "watermark_src": "string",
      "watermark_template_id": "string",
      "width": 0
    },
    "images": [
      {
        "alt": "string",
        "height": 0,
        "id": "string",
        "path": "string",
        "src": "string",
        "width": 0
      }
    ],
    "inventory_policy": "string",
    "inventory_quantity": 0,
    "inventory_tracking": true,
    "meta_description": "string",
    "meta_keyword": "string",
    "meta_title": "string",
    "need_variant_image": true,
    "note": "string",
    "options": [
      {
        "id": "string",
        "name": "string",
        "position": 0,
        "product_id": "string",
        "values": [
          null
        ]
      }
    ],
    "published": true,
    "published_at": "string",
    "requires_shipping": true,
    "spu": "string",
    "tags": "string",
    "taxable": true,
    "title": "string",
    "updated_at": "string",
    "variants": [
      {
        "barcode": "string",
        "compare_at_price": "string",
        "cost_price": "string",
        "created_at": "string",
        "id": "string",
        "image": {
          "alt": "string",
          "height": 0,
          "path": "string",
          "src": "string",
          "watermark_src": "string",
          "watermark_template_id": "string",
          "width": 0
        },
        "inventory_quantity": 0,
        "note": "string",
        "option1": "string",
        "option2": "string",
        "option3": "string",
        "position": 0,
        "price": "string",
        "product_id": "string",
        "sku": "string",
        "title": "string",
        "updated_at": "string",
        "weight": "string",
        "weight_unit": "string"
      }
    ],
    "vendor": "string",
    "vendor_url": "string"
  }
}
```
