PRODUCTS & VARIANTS

This page introduces Product and Variant imports in DJUST. It explains the overall logic, the data structure, and the expected format for creating, updating, and managing Products and their Variants.

⚙️ Introduction

This job allows the creation and update of Products and Variants via CSV import or API Connector.

You can:

  • Create and update Products
  • Create and update Variants linked to Products
  • Assign Products to Classification Categories
  • Manage product and variant visibility (active/inactive)
  • Delete Products and Variants
  • Associate Products with Stores
  • Map Attributes at both Product and Variant level

📂 Import model

CSV Structure

The CSV file must contain one row per Variant. Multiple rows can belong to the same Product.

📄

Template

You can use the following spreadsheet as a template to structure your import:

Products - Template


API Connector

The API Connector sends data as a JSON payload. The JSON must always be a list of objects.

[
  {
    "productExternalId": "string",
    "productNames": "string",
    "productDescriptions": "string",
    "productBrand": "string",
    "productClassificationCategoryId": "string",
    "productUnit": "string",
    "deletedProduct": false,
    "inactiveProduct": false,
    "variantNames": "string",
    "variantDescriptions": "string",
    "variantExternalId": "string",
    "variantExternalSku": "string",
    "variantEan": "string",
    "variantMpn": "string",
    "variantMainImageUrl": "string",
    "variantAdditionalImageLinks": "string",
    "deletedVariant": false,
    "inactiveVariant": false,
    "storeExternalIds": "string",
    "attribute-weight": "string",
    "attribute-color": "string"
  },
  {
    "productExternalId": "string",
    "variantNames": "string",
    "variantExternalId": "string",
    "attribute-weight": "string"
  },
  {
    "productExternalId": "string",
    "productNames": "string",
    "productClassificationCategoryId": "string",
    "variantNames": "string",
    "variantExternalId": "string"
  }
]
💡

Each object represents one Variant. Multiple objects can belong to the same Product (same productExternalId). The second object above illustrates adding a new Variant to an existing Product. The third object illustrates creating a new Product with a first Variant.

Attributes are included directly in the payload. The attribute key corresponds to the attribute identifier configured in the Attributes mapping panel of the job (e.g. attribute-weight, attribute-color).


📋 Fields

FieldDefinitionRequired for creationRequired for updateEditableDefault Value
Product External IdUnique external reference of the Product
Product NamesName of the Product
Product DescriptionsDescription of the Product. Supports HTML tags for text formatting (<br>, <i></i>, <b></b>, <p></p>)☑️ If previously imported and re-imported empty, existing value is cleared
Product BrandBrand of the Product☑️ If previously imported and re-imported empty, existing value is cleared
Product Classification Category IdClassification category the Product is attached to
Product UnitBase unit of the Product (only Item is currently supported)☑️ If previously imported and re-imported empty, existing value is cleared
Deleted ProductSet to TRUE to delete the ProductFALSE
Inactive ProductSet to TRUE to deactivate the Product without deleting itFALSE
Variant NamesName of the Variant
Variant DescriptionsDescription of the Variant. Supports HTML tags for text formatting☑️ If previously imported and re-imported empty, existing value is cleared
Variant External IdUnique external reference of the Variant☑️ If previously imported and re-imported empty, existing value is cleared
Variant External SkuSecondary external reference for the Variant, specific to your system. Must be unique.☑️ If previously imported and re-imported empty, existing value is cleared
Variant EanEAN / GTIN code of the Variant☑️ If previously imported and re-imported empty, existing value is cleared
Variant MpnManufacturer Part Number of the Variant☑️ If previously imported and re-imported empty, existing value is cleared
Variant Main Image UrlURL of the main image for the Variant. Must be a valid public URLDefault image if not provided
Variant Additional Image LinksAdditional image URLs for the Variant. Must be valid public URLs☑️ If previously imported and re-imported empty, existing value is cleared
Deleted VariantSet to TRUE to delete the VariantFALSE
Inactive VariantSet to TRUE to deactivate the Variant without deleting itFALSE
Store External IdsStore ID(s) the Variant is associated with. Used in multi-store context☑️ If previously imported and re-imported empty, existing value is cleared
ATTR_[attributeExternalId]Attribute value for the given attribute. Column name must follow the convention ATTR_ followed by the attribute external ID (e.g. ATTR_weight, ATTR_color). Available on both Products and Variants☑️ If previously imported and re-imported empty, existing value is cleared
☑️

Conditionally updated — if a value was previously imported and the field is re-imported empty, the existing value is cleared.


🧠 Key Business Rules

  • A Product must have at least one Variant.
  • Product External Id is the key identifier for a Product. If it does not exist, the Product is created. If it exists, it is updated.
  • Variant External Id is the key identifier for a Variant within a Product.
  • Setting Deleted Product to TRUE permanently removes the Product and all its Variants. This action is irreversible.
  • Setting Inactive Product to TRUE deactivates the Product without deleting it. It will no longer be visible on the platform.
  • Setting Deleted Variant to TRUE permanently removes the Variant. This action is irreversible.
  • Setting Inactive Variant to TRUE deactivates the Variant without deleting it.
  • The classification of a Product can be changed via import without deleting the Product first.
  • Variant Main Image Url must be a publicly accessible URL. If not provided, a default image is used.
  • Variant Additional Image Links accepts multiple URLs. In CSV, separate values with | (e.g. url1|url2|url3).
  • Empty fields in standard columns clear the previously recorded values — unlike Accounts or Offers where empty standard fields preserve existing values.
  • Attributes in CSV: use the column naming convention ATTR_[attributeExternalId] (e.g. ATTR_weight, ATTR_color). No mapping is required — attributes are automatically recognised from the column name.
  • Attributes via API Connector: attributes are configured in the dedicated Attributes mapping panel of the job, not in the JSON payload.
  • Decimal separator for numeric values: dot (.) — e.g. 12.50.
  • Date format: yyyy-MM-dd — e.g. 2026-01-01.
📌

Best Practices

✔️ Always provide Variant Main Image Url to ensure proper display on the storefront.

✔️ Use ATTR_[attributeExternalId] column naming in CSV — no additional mapping configuration needed.

✔️ Be careful with empty fields — unlike other entities, empty values clear existing data on Products and Variants.

✔️ The classification of a Product can be updated at any time without deleting it first.