Products Onboarding Cheatsheet

This reference provides a high-level overview of the core concepts of product onboarding to serve as a reference during development.

Product Structure Highlights

  • The Zalando Catalog is the master database for all products for sale through Zalando.
  • A product is one salable item, including all of its options and variants, such as one model of shoe, including all size and color options.
  • During product submission, products are defined in JSON files by a three-tier hierarchy of attributes:
    • product_model
    • product_config
    • product_simple

For more information, see Understanding Products.

Outline of Product Onboarding

Check if EAN is already present in Zalando Catalog

  1. Use the Products API to check if the EAN already exists in the Zalando Catalog.
  2. If so, proceed to "Onboarding Existing Products."
  3. If not, proceed to "Onboarding New Products"

For more information, see Checking if a Product Exists in the Zalando Catalog.

Onboarding Existing Products

  1. Map your unique product identifiers to the product EAN.
  2. You may then set available stock and price.

For more information, see Onboarding Existing Products.

Onboarding New Products

  1. Get a product outline for your product type, which provides an enumeration of the attributes required.
  2. Use the Product Submission JSON Template as a starting point for constructing a product submission JSON for one product and all its variants.
  3. Use the Product Attributes API to get information about each attribute and complete the submission JSON.
  4. Use the Product Submissions API to submit the JSON.
  5. Use your Product Status Report (PSR) to monitor the validation status of your product submissions.
  6. Once a product is added to the Zalando Catalog, you may set available stock and price.
  7. If necessary, make any required corrections and use the Product Submissions API to resubmit the JSON.

Warning

When you have submitted the product for (a) correcting mistakes or (b) by adding new Variants/Sizes to the Product, you must always resubmit the entire Product including all previous parts

For more information, see Onboarding New Products.

Product Images

  • All products in the Zalando Catalog have one and only one set of associated images.
  • To submit images, host them on any publicly-available URL such as Dropbox and submit the URLs in the media attribute of the product_config.

For more information, see Images in "Onboarding New Products."

Product Onboarding APIs

Type Path Main Uses API
GET /merchants​/{merchant_id}​/outlines Return available outlines for the merchant. Products
GET ​/merchants​/{merchant_id}​/outlines​/{outline_label} Return specific outline by product type. Products
GET ​/merchants​/{merchant_id}​/attribute-types​/{type_label} Return the schema for the specified attributes type. Product Attributes
GET ​/merchants​/{merchant_id}​/attribute-types​/{type_label}​/attributes Return all attributes of the specified attribute type. Product Attributes
GET ​/merchants​/{merchant_id}​/attribute-types​/{type_label}​/attributes​/{attribute_label} Return the specified attribute of the specified attribute type. Product Attributes
POST ​/merchants/{merchant_id}/product-submissions Post a single product submission JSON. Product Submissions API

Example Calls

Note: all requests require authentication.

Return all outlines

Returns a (large) JSON with all available product outlines.

GET /merchants​/{merchant_id}​/outlines

Return a specific outlines

To get the outline for sandals:

GET /merchants​/{merchant_id}​/outlines​/sandals

Return the schema for the specified attributes type

Learn more about an attribute type such as target_genders.

GET /merchants​/{merchant_id}​/attribute-types​/target_genders

Example response:

{
    "cardinality": "many",
    "definition": {
        "type": "StringDefinition"
    },
    "description": {
        "en": "Target genders"
    },
    "label": "target_genders",
    "name": {
        "en": "target genders"
    },
    "type_variants": [],
    "usage": "reference_by_label"
}

For more information on parsing this response, see Attribute Type Schema below.

Return all attributes of the specified attribute type

Learn more about the attributes of a specified attribute type such as target_genders.

If the attribute value must be one from a list of possible options (that is, the usage value is reference_by_label), then this call will return all valid values for the attribute type.

GET ​/merchants​/{merchant_id}​/attribute-types​/target_genders/attributes

Example response:

{
    "items": [
        {
            "label": "target_gender_male",
            "name": {
                "en": "target gender male"
            },
            "value": {
                "string": "target_gender_male"
            }
        },
        {
            "label": "target_gender_female",
            "name": {
                "en": "target gender female"
            },
            "value": {
                "string": "target_gender_female"
            }
        }
    ]
}

Return specified attribute of specified attribute type

Similar to above, but returns only the specified attribute of the specified attribute type.

GET ​/merchants​/{merchant_id}​/attribute-types​/target_genders​/attributes​/target_gender_male

Example response:

{
    "label": "target_gender_male",
    "name": {
        "en": "target gender male"
    },
    "value": {
        "string": "target_gender_male"
    }
}

Attribute Type Schema

Field Description
cardinality Indicates if one or many responses are allowed.
definition The expected data type of the value.
description Any additional information about the attribute type.
label Other calls may reference the attribute type by referencing the value of this field.
name A human-readable description of the field for use in referencing the attribute type in front ends or UIs.
type_variants Some attribute types have variants that are independently defined, such as color_code.primary and color_code.secondary. An outline may only allow some of the possible variants.
usage Either literal or reference_by_label. For literal, enter a value. For reference_by_label, the specification takes a label value to specify the value.

Size Attributes

The following chart indicates which values in the size attribute enumeration contains the values you must submit in your JSON.

Value Where it is defined in the size attributes enumeration
size_group.size For any size group where dimension.type = size, the value of label
size_group.length For any size group where dimension.type = length, the value of label
size_code.size For any size group where dimension.type = size, the value of supplier_size
size_code.length For any size group where dimension.type = length, the value of supplier_size

For more information, see Sizes in "Onboarding New Products".

Glossary of Key Terms

  • Attribute type: One type of information about a product, such as name or size_code.
  • Attribute value: A value specified for an attribute type.
  • Attribute type attribute: An attribute of an attribute type.
  • Attribute schema: The data model for any attribute or type attribute.
  • Outline: A product outline is a JSON that enumerates all of the mandatory and optional attributes that are used to define a product of a particular type.
  • Product: In the Merchant Center, a product is an article for sale, such as a model of shoes or a watch, along with all of its options and variants.
  • Product identifiers: Unique IDs that each partner creates and maintains which map to an EAN. Each EAN must have three corresponding product identifier, which correspond to the three attribute tiers.
  • Product Status Report (PSR): A report available through the zDirect UI that gives real-time information on the status of product submissions.
  • Product submission JSON: A JSON file used to define all mandatory and any desired optional product attributes for a product during product submission. PSRs are available through the zDirect UI.
  • Silhouette: See "Outline".
  • Tier (of attributes): The attributes in product outlines and product submission JSONs are organized into three tiers, the product_model, product_config, and product_simple tiers. By organizing product attributes into a hierarchy, we can define attributes that are shared by many individual EANs only once.

Sample Outline

The following is an example of a valid outline for the sandals model.

{
  "label": "sandals",
  "tiers": {
    "model": {
      "optional_types": [],
      "mandatory_types": [
        "target_age_groups",
        "target_genders",
        "name",
        "brand_code",
        "size_group"
      ],
      "restricted_attributes": []
    },
    "config": {
      "optional_types": [
        "condition",
        "color_code.secondary",
        "color_code.tertiary",
        "width",
        "shape",
        "decksohle",
        "material.filling",
        "futter",
        "heel_form",
        "insole_technology",
        "material_construction",
        "non_textile_but_animal_parts",
        "occasion",
        "padding_type",
        "pattern",
        "shoe_detail",
        "shoe_toecap",
        "shoe_width",
        "size_fits",
        "sole_material",
        "sport_qualities",
        "sport_shoe_details",
        "sport_shoe_insole",
        "sport_shoe_outer_sole",
        "sport_shoe_outer_sole_technology",
        "sport_type",
        "upper_material",
        "washing_instructions"
      ],
      "mandatory_types": [
        "color_code.primary",
        "media",
        "season_code",
        "supplier_color",
        "description"
      ],
      "restricted_attributes": [
        {
          "type": {
            "label": "washing_instructions",
            "version": "1.0.0"
          },
          "values": [
            "washing_instructions_4106",
            "washing_instructions_4107",
            "washing_instructions_6999",
            "washing_instructions_7858"
          ]
        },
        ...
      ]
    },
    "simple": {
      "optional_types": [
        "metric.heel_height",
        "metric.platform_height",
        "metric.schafthoehe",
        "metric.schaftweite"
      ],
      "mandatory_types": [
        "ean",
        "size_codes"
      ],
      "restricted_attributes": []
    }
}

As you can see washing_instructions only allows a subset of values, therefore, all other washing_instructions values fetched via Product Attributes API and not included in restricted_attributes will result in a subsequent rejection.

Product Submission JSON Template

This is the basic structure of a product submission JSON. The actual mandatory attributes will vary, depending on which product outline you are using.

{
  "outline":"$MODEL_LABEL",
  "product_model":{
    "merchant_product_model_id":"$YOUR_MERCHANT_PRODUCT_MODEL_ID",
    "product_model_attributes":{
      "name":"$MODEL_NAME",
      "brand_code":"$MODEL_BAND_CODE",
      ...
    },
    "product_configs":[
      {
        "merchant_product_config_id":"$YOUR_MERCHANT_PRODUCT_CONFIG_ID",
        "product_config_attributes":{
          "color_code.primary":"$CONFIG_COLOR_CODE.PRIMARY",
          "media":[
            {
              "media_path":"URL",
              "media_sort_key":"$SORT_KEY"
            },
            {
              "media_path":"URL",
              "media_sort_key":"$SORT_KEY"
            },
            {
              "media_path":"URL",
              "media_sort_key":"$SORT_KEY"
            }
          ],
          "season_code":"fs20",
          "supplier_color":"white",
          ...
        },
        "product_simples":[
          {
            "merchant_product_simple_id":"$YOUR_MERCHANT_PRODUCT_SIMPLE_ID",
            "product_simple_attributes":{
              "ean":"$EAN",
              ...
            }
          }
        ]
      }
    ]
  }
}

Sample Product Submission JSON

The following is an example of a valid product submission JSON payload using the sandals outline. For more information, see the Product Submissions API OpenAPI Reference.

{
  "outline": "sandals",
  "product_model": {
    "merchant_product_model_id": "MODEL_ID_123",
    "product_model_attributes": {
      "name": "AIR FORCE SANDALS 1 '07 LV8 UTILITY",
      "brand_code": "ns1",
      "size_group": {
        "size": "4MU1000E2A"
      },
      "target_genders": [
        "target_gender_male",
        "target_gender_female"
      ],
      "target_age_groups": [
        "target_age_group_adult"
      ]
    },
    "product_configs": [
      {
        "merchant_product_config_id": "7b077fc4-fde3-47d4-8b25-97af8792",
        "product_config_attributes": {
          "color_code.primary": "001",
          "description": {
            "en": "Nice sandals",
            "de": "Gute Sandale",
            "ru": "Отличные сандали"
          },
          "material.upper_material_clothing": [
            {
              "material_code": "li",
              "material_percentage": 97.5
            },
            {
              "material_code": "el",
              "material_percentage": 2.5
            }
          ],
          "media": [
            {
              "media_path": "https://hosting_of_your_choice/media/7b077fc4-fde3-47d4-8b25-97af8792/pic-1.jpg",
              "media_sort_key": 1
            },
            {
              "media_path": "https://hosting_of_your_choice/media/7b077fc4-fde3-47d4-8b25-97af8792/pic-2.jpg",
              "media_sort_key": 2
            }
          ],
          "washing_instructions": "washing_instructions_4106",
          "season_code": "fs20",
          "supplier_color": "white"
        },
        "product_simples": [
          {
            "merchant_product_simple_id": "white-shoes-1105AA",
            "product_simple_attributes": {
              "ean": "9780679762881",
              "size_codes": {
                "size": "42"
              }
            }
          },
          {
            "merchant_product_simple_id": "white-shoes-2216BB",
            "product_simple_attributes": {
              "ean": "9780679763992",
              "size_codes": {
                "size": "44.5"
              }
            }
          }
        ]
      },
      {
        "merchant_product_config_id": "7b077fc4-fde3-47d4-8b25-97af8793",
        "product_config_attributes": {
          "color_code.primary": "608",
          "description": {
            "en": "Nice sandals",
            "de": "Gute Sandale",
            "ru": "Отличные сандали"
          },
          "material": [
            {
              "material_code": "li",
              "material_percentage": 87.5
            },
            {
              "material_code": "el",
              "material_percentage": 12.5
            }
          ],
          "media": [
            {
              "media_path": "https://hosting_of_your_choice/media/7b077fc4-fde3-47d4-8b25-97af8793/pic-1.jpg",
              "media_sort_key": 1
            },
            {
              "media_path": "https://hosting_of_your_choice/media/7b077fc4-fde3-47d4-8b25-97af8793/pic-2.jpg",
              "media_sort_key": 2
            }
          ],
          "season_code": "fs20",
          "supplier_color": "mint"
        },
        "product_simples": [
          {
            "merchant_product_simple_id": "mint-shoes-3326CC",
            "product_simple_attributes": {
              "ean": "9813752182012",
              "size_codes": {
                "size": "44.5"
              }
            }
          }
        ]
      }
    ]
  }
}

Additional Resources

Contact Support