Skip to content

Product Creation

Product Creation builds Shopify products out of your MYOB Exo stock items, so Exo stays the place a product is defined and Shopify is where it is sold.

It runs in two stages. InSyncer first stages a preview of each product it wants to create, then creates it in Shopify only once you push it.

  1. InSyncer reads your stock items from Exo.
  2. Items that qualify are staged as previews — title, vendor, description, option names, variants, metafields. Nothing exists in Shopify yet.
  3. You review the staged list in the Product Creation tab and push the ones you want.
  4. Pushed products are recorded against their Exo item, so the same product is never created twice.

If a push fails, the preview keeps the error against it rather than silently disappearing, so a failed product stays visible in the list.

Setting What it controls
product_creation_trigger_attribute The Exo stock item extrafield that flags an item for creation
product_creation_trigger_attribute_value The value that extrafield must hold to trigger it — commonly Y
product_creation_sku_must_not_exist Set to no to skip creation when the SKU already exists in Shopify

Using a trigger extrafield is the safest way to run this. It means a product appears in the staging list because someone in Exo ticked it for the web, not because it happened to be in the catalogue.

product_creation_type decides the shape of what gets built:

  • single_variant — each Exo stock item becomes its own Shopify product.
  • multi_variant — several Exo stock items are grouped into one Shopify product, each becoming a variant.

In multi-variant mode, product_creation_group_attribute names the Exo extrafield that does the grouping. Every stock item sharing a value in that field lands on the same Shopify product. In practice the same extrafield is often used for both the grouping and the product title, so the group and the name of the product agree.

Shopify allows a maximum of three variant options per product. Group your items so that no product needs a fourth.

Shopify field Source
Title The Exo extrafield named in product_creation_map_product_title_from_extrafield
Description product_creation.html_source_field — either the Exo web description or the item notes
Product status product_creation_default_status — ACTIVE or DRAFT
Images Attached from the Exo item image when product_creation_attach_images is on
SKU The Exo stock code
Barcode barcode_sync_source — barcode1, barcode2, or barcode3, when barcode_sync_enabled is on
Weight The extrafield in weight_sync_extrafield_key, in the unit set by weight_sync_unit
Variant metafields Mapped in variant.metafield_sync_mapping, from either a stock item field or an extrafield
Inventory policy product_creation_inventory_policy — DENY to stop overselling, CONTINUE to allow it

Price and inventory are set as part of creation. You do not need to wait for the next scheduled sync for a new product to be sellable.

Created products have track quantity switched on and are assigned to all of your Shopify locations.

To control tracking per stock item instead, create a checkbox extrafield in Exo, switch on track_quantity_sync_enabled, and name that field in track_quantity_sync_extrafield_key. Tracking then follows the tick in Exo.

Left alone, option values sort in whatever order they arrive, which puts 10mm before 2mm and reads badly on the storefront.

product_creation_option_values_order fixes that. It is a JSON object keyed by the Exo extrafield behind each option, holding that option’s values in the order you want them shown:

product_creation_option_values_order
{
"X_SIZE": ["Small", "Medium", "Large", "XL"],
"X_DIAMETER": ["0.3mm", "0.5mm", "0.7mm", "1.0mm", "2.0mm"]
}

Any value not in the list falls in after the ones that are. On a large catalogue this setting holds every option value you sell, so the settings page for it can take a moment to load.

Creation is a one-off. Whether a product keeps following Exo after that is ongoing_product_sync_enabled, and ongoing_product_sync_config decides field by field what it is allowed to touch:

ongoing_product_sync_config
{
"title": true,
"description_html": true,
"vendor": true,
"product_type": false,
"seo_title": false,
"seo_description": false,
"metafields": true,
"reorder_options": true,
"showonweb_status": "DRAFT",
"inactive_status": "ARCHIVED"
}
  • Fields set to true are rewritten from Exo on every run.
  • showonweb_status is the Shopify status a product moves to when its Exo item is no longer flagged for the web.
  • inactive_status is the status it moves to when the Exo item goes inactive — usually DRAFT if you want it back easily, ARCHIVED if you do not.

deactivate_products_enabled is the blunter version of the same idea: when it is on, a Shopify product is deactivated automatically once its Exo item is inactive.