Content Template

The Content template for the import/export tools describes data for your Kibo eCommerce sites. This template is provided for the purposes of migrating site content between Kibo eCommerce environments. For example, you can use this functionality to export site data from a sandbox environment and then to import the data to your production tenant.

Successfully importing site content requires a solid understanding of various types of Kibo eCommerce data. Do not attempt to build out a new, full site using this template. Use this template only to migrate an existing site. For the smoothest possible migration, change as little data as possible within the template. Remember, if Publishing is set to Live, your import will immediately overwrite your live site.

Sites are comprised of a combination of document data for the page content, category information from your product catalog, and Hypr templating information for the page appearance, and widget code from your theme. Kibo recommends working with a theme developer to develop your template pages, widgets, and general site appearance.

Content template file content with example data

Access the Tools

With the Kibo eCommerce Import/Export Tool (1.0) installed, go to System > Customization > Applications. Click Mozu Import/Export (version 1.0.0), and click the Configuration link.

Supported File Formats

  • Excel (.xlsx): All sheets appear as tabs in a single Excel file. For imports, the Excel file can have any filename, but each tab must match the sheet names below. You can remove tabs for data you do not want to import.

Microsoft Excel limits both total file size and cell size. A single worksheet can contain a maximum of 1,048,576 rows and 16,384 columns. A single cell can contain up to 32,767 characters.

Template Key

For each sheet, we define each column and describe valid values for the column. Some values are not required for an import, but are required Kibo eCommerce data. For example, you do not have to specify a customer's FirstName every time you modify the customer account, but all customer accounts require a FirstName when they are created. If you have questions or concerns specific to your data, please contact your integration partner or Kibo Support.

Information Provided for Each Sheet of the Template
Corresponding REST API ResourceEvery column in a sheet corresponds to a property in the Kibo eCommerce REST API. For each sheet, we provide a link to any API resources that contain properties in the sheet.
Column NameThe name of the column in the sheet.
DescriptionA description of the data a column contains.
Valid ValuesLists valid values for the column.

Sheets

Each of the following sheets can be imported independently of any other sheet. If you are iterating on migration content, you can remove any sheets you do not need to re-import to save time.

Facets

Corresponding REST API Resource: commerce/catalog/admin/facets

Facets allow shoppers on your site to filter products within a category. For example, a shopper might want to filter results for "Shoes" by Men's > Boots > Size 10 > $50 - $100. Each element in that filter is a facet.

Categories, product attributes, and price are all valid facets. Product categories are inherently tied to facets, so if you add subcategories to a parent category, the subcategories are automatically added as facet values of the parent facet.

Column NameDescriptionValid Values
Catalog NameThe name of the catalog that contains the category to which the facet applies.A string matching any valid catalog name.
Category CodeThe category code for the category to which the facet applies.A string containing any valid category code for your tenant. You specify category codes when you create new categories.

Category codes can contain alphanumeric characters, hyphens, and underscores.
Facet IdThe unique identifier for the facet.Any number that is unique among all facets. Even if you reuse a common product attribute as a facet, each instance of that attribute as a facet must have a unique ID. For example, you can have a common attribute of color, but the facet that represents color in the given category must have an ID that is unique among all other color facets.
Facet TypeThe type of the facet.A string matching one of the following:
  • RangeQuery—Enables creation of a range of values. This is the facet type for pricing.
  • Value—Populates the facet values based on the associated attribute or category.
Source IdThe unique identifier of the source value for the facet. If the facet is an attribute, this is the fully qualified name of the attribute. If the facet is an element (a category or product price), this value indicates the object to look at for the source ID.A string matching one of the following:
  • CategoryId—Indicates that the category ID is the source ID.
  • Price—Indicates the source for the facet is a price.
  • The fully qualified name for an attribute. For example, if the source of the facet is the attribute "color," this might be Tenant~color.
Source NameThe name of the facet source as it appears in Kibo eCommerce Admin.A string matching one of the following:
  • Category—Indicates the source is a category.
  • Sale Price—Indicates the source is the sale price of the product.
  • Any valid attribute name you have defined on your tenant.
Source TypeThe source type of the facet.A string matching one of the following:
  • Element—Element facets are product categories, subcategories, or product price.
  • Attribute—Attribute facets are product properties, extras, or options.
Data TypeThe data type of the source property for the facet.A string matching one of the following:
  • Bool
  • DateTime
  • Number
  • String
Allow Range QueryIndicates whether the facet allows for values that consist of one or more ranges, such as 0-100, 100-200, and 200-300. If TRUE, Data Type must be Number or DateTime. You cannot set range queries on strings or Booleans.A Boolean value, specified as TRUE or FALSE.
Is HiddenIndicates whether the facet is hidden for this Category Code. For example, if the facet is based on an attribute "Popularity," you might want to hide the facet in some categories to avoid making certain products look undesirable.A Boolean value, specified as TRUE or FALSE.
OrderThe sequence order of the facet within its category. For example, if you want "Size" to appear before "Color," you can set "Size" to 1 and "Color" to 2. If you do not specify a value, facets appear according to their attribute or category order.Any integer.
Override Facet IdIf this facet overrides a facet inherited from a parent category, returns the Facet ID of the overridden facet. This value is read-only.(Read-Only) Any integer.
Sort TypeIndicates how the facet values are sorted on the storefront. For example, if the facet is a price range, you can set this field to ValuesAscending to show the low end of the price range first.A string matching one of the following:
  • CountAscending
  • CountDescending (Default)
  • ValuesAscending
  • ValuesDescending
Range QueriesFor range type facets, an array of ranges to use for the facet values. For example, a price facet might have range queries for $0-$25, $25-$50, and $50-$100.A string containing name/value pairs where the names are RangeValueEnd and RangeValueStart.

For example: [{"RangeValueEnd":"10","RangeValueStart":"5"}, {"RangeValueEnd":"15","RangeValueStart":"10"}, {"RangeValueEnd":null,"RangeValueStart":"15"}]

Catalog Content

Corresponding REST API Resource: content/documentlists/documents

The Catalog Content sheet describes the pages of your site that map to categories in your product catalog. For a category page to appear on your site, the category must exist in your site catalog and be configured to appear on your storefront (Hide category on store front set to FALSE on the category page in Admin).

If the same category appears on multiple rows, such as if the category page has multiple dropzones, ensure all global fields match exactly on all rows that reference the category. Only the Dropzone Id and Config fields should have different values in different rows.

Column NameDescriptionValid Values
Site NameThe name of the site that is displaying the category.A string containing any valid site name on your Kibo eCommerce tenant.
NameThe unique name of the document within the document list.Any string that is a unique name within the document list. Typically, this name will be in the form of category-[CATEGORYID].

For example: category-1.
Category CodeThe unique identifier for the category that this page maps to.A string containing any valid category code for your tenant. You specify category codes when you create new categories.

Category codes can contain alphanumeric characters, hyphens, and underscores.
Document TypeThe fully qualified name of the document type.Any valid document type FQN. In Kibo eCommerce, the FQN is formed as follows: name@namespace

The default for category pages is categoryContent@mozu
Publish StateThe current state of the document. This value is read-only, and can be active or draft. Active documents are published and cannot be deleted. If publishing is not supported or is currently disabled, this field returns active.(Read-Only) A string matching one of the following:
  • active—The category page is currently live on your site.
  • draft—The category page is in draft stage, and is not visible on your live site.
Page Type DefinitionIndicates the type of the page. This value maps the page to the appropriate page template.Any string that is a valid template in your theme. In the Kibo Core theme, the most common typedefs for catalog content are:
  • category—Maps the current page to the Category template.
  • parent-category—Maps the current page to the ParentCategory template.
  • product—Maps the current page to the Product template.
Dropzone IdThe unique identifier for a dropzone on the category page. If a page has multiple dropzones, each dropzone appears in a new row on this sheet.Any string that is unique among all Dropzone Ids for the current category page.
ConfigConfiguration code, in JSON format, for the dropzone specified by Dropzone Id. For example, if the dropzone contains a widget, the widget code appears in this column.Any string that is validly formatted JSON. If a dropzone exists but is not configured to display anything, this field contains empty brackets: [ ]

Sample Code

Page Templates

Corresponding REST API Resource: content/documentlists/documents

The Page Templates sheet describes the templates for your theme. Templates are the default pages that define styles for live pages on your site. Any change you make to a template propagates to all pages on your site that use that template.

Both the Catalog Content sheet and the Page Templates sheet can modify template pages. For example, you can use either sheet to add a dropzone to your Category template. If the same template appears in both sheets, an import will first apply configuration data from the Catalog Content sheet, and will then append data from this sheet.

If the same template appears on multiple rows, such as if the template page has multiple dropzones, ensure all global fields match exactly on all rows that reference the category. Only the Dropzone Id and Config fields should have different values in different rows.

Column NameDescriptionValid Values
Site NameThe name of the site that includes the page template.A string containing any valid site name on your Kibo eCommerce tenant.
NameThe name of the template. This is the name of the Hypr file, minus the .hypr extension. Any string that is a valid template name.
Document TypeThe fully qualified name of the document type.Any valid document type FQN. In Kibo eCommerce, the FQN is formed as follows: name@namespace

The default for page templates is: pageTemplateContent@mozu
Publish StateThe current state of the document. This value is read-only, and can be "active" or "draft." Active documents are published and cannot be deleted. If publishing is not supported or is currently disabled, this field returns "active."(Read-Only) A string matching one of the following:
  • active—The category page is currently live on your site.
  • draft—The category page is in draft stage, and is not visible on your live site.
Dropzone IdThe unique identifier for a dropzone on the page. If a page has multiple dropzones, each dropzone appears in a new row on this sheet.Any string that is unique among all Dropzone Ids for the current page.
ConfigConfiguration code, in JSON format, for the dropzone specified by Dropzone Id. For example, if the dropzone contains a widget, the widget code appears in this column.Any string that is validly formatted JSON. If a dropzone exists but is not configured to display anything, this field contains empty brackets: [ ]

Note: Due to cell size limitations in Microsoft Excel, Kibo eCommerce splits exported code at 32,000 characters. Additional code beyond the 32,000 character limit appears in Config2.

Sample Code
Config2Additional configuration code. This field only contains data if the code in Config exceeds 32,000 characters.Any string that is validly formatted JSON.

Pages

Corresponding REST API Resource: content/documentlists/documents

The Pages sheet describes single pages that appear on your site. Single pages are any pages that are not mapped to specific categories or products and do not provide standard functionality like log-in or checkout. Single pages only appear on your site through direct links.

Common uses for single pages include providing contact information for your store, publishing terms and conditions, and publicizing one-off promotions.

If the same page appears on multiple rows, such as if the page has multiple dropzones, ensure all global fields match exactly on all rows that reference the category. Only the Dropzone Id and Config fields should have different values in different rows.

Column NameDescriptionValid Values
Site NameThe name of the site that includes the page.A string containing any valid site name on your Kibo eCommerce tenant.
IdThe unique GUID that identifies the page in the Kibo eCommerce CMS. If you are migrating from one site to another, Kibo eCommerce recommends retaining the original GUID for simplicity.A 32 character, case-insensitive, alphanumeric string. You can specify the ID as 32 sequential characters or as groups separated by dashes in the format 8-4-4-4-12. For example: bba0a1a885e2413bb097ceacf7bac366 or bba0a1a8-85e2-413b-b097-ceacf7bac366.
NameThe name of the page. This is the slug that appears at the end of the page’s URL. Any string.
Document TypeThe fully qualified name of the document type.Any valid document type FQN. In Kibo eCommerce, the FQN is formed as follows: name@namespace

The default for single pages is web_page@mozu
Publish StateThe current publish state of the document. This value is read-only, and can be active or draft. Active documents are published and cannot be deleted. If publishing is not supported or is currently disabled, this field returns active.(Read-Only) A string matching one of the following:
  • active—The category page is currently live on your site.
  • activedraft—The category page is in draft stage, and is not visible on your live site.
TitleThe title of the page. This string appears in the <title> tags on the page and in the site tree.Any string.
Meta TitleThe title for the page in the SEO metadata.Any string.
Link TitleThe title to display for the page in a browser tab. Use this field if Title is too long to fit a standard tab size.Any string.
HiddenIndicates whether the page is hidden on your live site.A Boolean value, specified as TRUE or FALSE.
Redirect URLThe URL to which users are redirected if they land on this page.Any string.
Meta DescriptionThe description of the page in the SEO metadata.Any string.
Page Type DefinitionIndicates the type of the page. This value maps the page to the appropriate page template.Any string that is a valid template in your theme. In the Kibo theme, the most common typedefs for single pages are:
  • about-us
  • blank-page
  • blank-splash-page
  • landing-page
  • home-page
  • store-locator
Dropzone IdThe unique identifier for a dropzone on the page. If a page has multiple dropzones, each dropzone appears in a new row on this sheet.Any string that is unique among all Dropzone Ids for the current page.
ConfigConfiguration code, in JSON format, for the dropzone specified by Dropzone Id. For example, if the dropzone contains a widget, the widget code appears in this column.Any string that is validly formatted JSON. If a dropzone exists but is not configured to display anything, this field contains empty brackets: [ ]

Note: Due to cell size limitations in Microsoft Excel, Kibo eCommerce splits exported code at 32,000 characters. Additional code beyond the 32,000 character limit appears in Config2.

Sample Code
Config2Additional configuration code. This field only contains data if the code in Config exceeds 32,000 characters.Any string that is validly formatted JSON.

Navigation

Corresponding REST API Resource: NA

The Navigation sheet describes how single pages appear in the site tree.

Column NameDescriptionValid Values
Site NameThe name of the site that the navigation applies to.A string containing any valid site name on your Kibo eCommerce tenant.
NameThe name to display on the page's node.Any string.
Page IdThe name of the page as defined on the Pages sheet.Any string that is a valid name of a single page in your site.
Original CollectionThe fully-qualified name for the document list that contained the original page.Any string that contains a valid document list FQN. Typically, this value will be pages@mozu
Original Document List NameThe fully-qualified name for the document list that contained the original page.Any string that contains a valid document list FQN. Typically, this value will be pages@mozu
UrlThe slug portion of the URL for the page. By default, this is the path to the current page in the Kibo eCommerce CMS, based on the document list FQN and the document name. For example:

/cms/pages@mozu/about-us

You can use this field to simplify the page URL that a customer sees in their browser.
Any string that starts with a forward slash. For example:

/about-us
IndexThe index of the node in the site tree.Any integer.
Node TypeIndicates whether the node in the site tree is an actual page or a link to another location that is not part of your site.A string matching one of the following:
  • page
  • link
Parent IdIf the current node is a child of another node, indicates the page ID of the page associated with the parent node. If the current node does not have a parent, this value is _unlinked.A string containing one of the following:
  • A valid page ID.
  • _unlinked—If the node does not have a parent.
  • _navigation—If the node is at the top level of your site navigation. Typically, only your Home page will return this value.
IsLeafIf TRUE, indicates that the current node is not expandable.A Boolean value, specified as TRUE or FALSE.
Allow DragIndicates whether an Admin user can drag the node to a different location in the site tree.A Boolean value, specified as TRUE or FALSE.
Allow DropIndicates whether an Admin user can drop the node in a different location in the site tree.A Boolean value, specified as TRUE or FALSE.
ExpandedIndicates whether the node appears expanded by default.A Boolean value, specified as TRUE or FALSE.
Is HiddenIndicates whether the node is hidden from the site tree.A Boolean value, specified as TRUE or FALSE.
Is Home PageIndicates whether the node is the home page, meaning it as at the top level of the navigation hierarchy in the site tree.A Boolean value, specified as TRUE or FALSE.

Site Settings

Corresponding REST API Resource: NA

The Site Settings sheet describes theme settings that an Admin user can modify. Every theme that is available for the site appears on a new row in this sheet.

Importing site settings does not install or apply a specific theme. If you are importing site settings, be sure you have installed the appropriate theme to your tenant.

Column NameDescriptionValid Values
Site NameThe name of the site that the settings apply to.A string containing any valid site name on your Kibo eCommerce tenant.
NameThe document name for the theme setting. Kibo eCommerce constructs this name as:

theme_settings_~[LEGACYAPPLICATIONID]~[RELEASEPACKAGEID]
Any string. For an import operation, you must update the LEGACYAPPLICATIONID and the RELEASEPACKAGEID values to match the installed theme on the environment to which you are importing. You can find these values in the theme details in Dev Center.
Publish StateThe current publish state of the site.A string matching one of the following:
  • active—The site is currently live.
  • draft—The site is currently in draft state, and is not yet live.
PropertiesThe JSON that describes the settings that appear to the Admin user.Any string that is validly formatted JSON. Make sure the value for the theme tag matches the LEGACYAPPLICATIONID and RELEASEPACKAGEID values from the Name column.  
   
For example, if Name is theme_settings~1111~2222
   
the theme tag must be "theme" : "~1111~2222"
   
Sample Code

Migrate Content

Migrating content to a new site or environment, such as from a live site in production to a new sandbox for testing, requires a few more set-up steps than a typical import operation:

  1. In the environment that contains the original site, launch the Mozu Import/Export Tool (v. 1.0.0).
  2. Export Content.
  3. Switch to the environment where you are creating the new site. Ensure that all catalog data exists and that the catalog structure, categories, products, and facets all mirror the environment you exported from.
  4. Go to System > Structure > Sites and create the new site. Note the Site Name, and make sure you associate the new site with the correct Catalog.
  5. In Dev Center, confirm that you have installed the theme the new site will use, and note the Legacy Application ID and Release Package ID. You will need these values for Site Settings.
  6. Modify the sheets of the Content template you exported in step 2, paying attention to the following:
    • All instances of Site Name and Catalog Name are correct for the new site.
    • On sheets that reference the same content multiple times, global fields match exactly on all rows that reference the same content. For example, if one of your Page Templates has multiple dropzones, only the Dropzone and Config fields should have different values in different rows.
    • Any category codes, both in the sheets and in widget configuration content, are correct for the new site.
    • The Pages, Page Templates, and Navigation sheets are consistent.
    • All URLs are correct.
    • The Site Settings sheet references the correct theme.
    • You have followed any relevant best practices as detailed below.
  7. Launch the Mozu Import/Export Tool (v. 1.0.0) and import the updated template.

Best Practices

Set Publishing to Staged Before Importing

If you encounter problems with your site import, you can delete your imported changes if Publishing is set to Staged. If Publishing is set to Live, your import will immediately overwrite your live site. In Admin, go System > Settings > Publishing to change your publish settings.

Mirror Your Catalog Structure Exactly

Site content is complex and maps to various types of catalog, product, and category data. The best scenario for a successful import operation is to mirror your entire catalog structure on the new tenant so that you do not have to make extensive changes to the template.

Only Make Necessary Edits in the Template

Because of the complexity and quantity of site data, making extensive edits in the template can get confusing. It is generally safer to import a site that is in a good state and then make any desired tweaks afterwards.

Use Category Codes Instead of Category IDs

When adding configuration code that relies on a category – such as referencing a facet or a category page in a widget or URL - use Category Codes instead of Category IDs whenever possible. Category IDs are specific to a tenant and environment, but Category Codes do not change when you migrate content. Using Category Codes will help avoid unexpected breaks in your links.

Use the make_url Hypr Tag to Construct Image Links

Often, widget configuration code references image files that you have uploaded to the Kibo eCommerce CMS. When specifying the URL for an image, avoid using a full URL that is specific to a tenant. Use the make_url Hypr tag to generate consistent URLs that you can use across sites.

Reuse Document IDs (GUIDs) Across Sites

When referencing content, such as a page or an image file, in the Kibo eCommerce CMS, try to maintain the same document ID (GUID) across all sites. Even if you migrate the file itself from one tenant to another, you can still specify any GUID. To be valid, a document ID simply must be a 32-character alphanumeric string.

Do Not Hardcode Dynamic Content

Some configuration code includes dynamic content that references a particular value, such as a site or tenant ID. This content is indicated by curly braces: {tenant}

The Import/Export Tool will handle mappings of this content for you. Do not hardcode these values.

Sample Code

Sample Code: Dropzone and Widget

The following sample code describes a dropzone that contains an HTML widget and would be valid JSON for the Config fields in the Catalog Content, Page Templates, and Pages sheets. In the following code, the dropzone spans 12 columns on the page and contains raw HTML. The id value is the GUID for a document in the Kibo eCommerce CMS. GUIDs are fully customizable, and Kibo eCommerce recommends using the same GUIDs across sites for simplicity.

[
      {
      "columns": [
        {
        "span": 12,
        "widgets": [
            {
            "definitionId": "html",
            "isRichText": false,
            "config": {
                "body": "Check out the latest Spring styles!"
                },
            "id": "1e5675a8-e8a6-25e4-b414-e16f2a9b200a"
            }
            ]
         }
        ]
       }
    ]

Sample Code: Site Setting Properties

The following code sample sets theme setting values for a theme with a Legacy Application ID of 1111 and a Release Package ID of 2222, and would be valid JSON for the Properties field on the Site Settings sheet. This code defines settings for pageSizeOptions, defaultPageSize, primaryColor, primaryButtonColor, and primaryFont.

The actual settings available for any given theme are defined in the theme's theme.json and theme-ui.json files. Importing site settings simply sets values for existing settings, it does not create new settings in a theme.

{
        "theme": "~1111~2222",
        "tags": [
            "something"
                ],
        "data": {
        "pageSizeOptions": [
                        16,
                        32,
                        48,
                        64
                    ],
        "defaultPageSize": 16,
        "primaryColor": "rgba(66, 18, 50, 1)",
        "primaryButtonColor": "rgba(66, 18, 50, 1)",
        "primaryFont": "Lato, sans-serif"
                }
    }