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.
Access the Tools
With the Mozu Import-Export Application installed and enabled, go to Main > Content > Import/Export in Kibo eCommerce Admin.
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 Resource | Every 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 Name | The name of the column in the sheet. |
Description | A description of the data a column contains. |
Valid Values | Lists 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 Name | Description | Valid Values |
---|---|---|
Catalog Name | The name of the catalog that contains the category to which the facet applies. | A string matching any valid catalog name. |
Category Code | The 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 Id | The 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 Type | The type of the facet. | A string matching one of the following:
|
Source Id | The 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:
|
Source Name | The name of the facet source as it appears in Kibo eCommerce Admin. | A string matching one of the following:
|
Source Type | The source type of the facet. | A string matching one of the following:
|
Data Type | The data type of the source property for the facet. | A string matching one of the following:
|
Allow Range Query | Indicates 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 Hidden | Indicates 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 . |
Order | The 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 Id | If 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 Type | Indicates 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:
|
Range Queries | For 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 Name | Description | Valid Values |
---|---|---|
Site Name | The name of the site that is displaying the category. | A string containing any valid site name on your Kibo eCommerce tenant. |
Name | The 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 Code | The 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 Type | The 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 State | The 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:
|
Page Type Definition | Indicates 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:
|
Dropzone Id | The 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. |
Config | Configuration 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 Name | Description | Valid Values |
---|---|---|
Site Name | The name of the site that includes the page template. | A string containing any valid site name on your Kibo eCommerce tenant. |
Name | The 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 Type | The 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 State | The 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:
|
Dropzone Id | The 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. |
Config | Configuration 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 |
Config2 | Additional 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 Name | Description | Valid Values |
---|---|---|
Site Name | The name of the site that includes the page. | A string containing any valid site name on your Kibo eCommerce tenant. |
Id | The 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 . |
Name | The name of the page. This is the slug that appears at the end of the page’s URL. | Any string. |
Document Type | The 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 State | The 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:
|
Title | The title of the page. This string appears in the <title> tags on the page and in the site tree. | Any string. |
Meta Title | The title for the page in the SEO metadata. | Any string. |
Link Title | The 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. |
Hidden | Indicates whether the page is hidden on your live site. | A Boolean value, specified as TRUE or FALSE . |
Redirect URL | The URL to which users are redirected if they land on this page. | Any string. |
Meta Description | The description of the page in the SEO metadata. | Any string. |
Page Type Definition | Indicates 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:
|
Dropzone Id | The 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. |
Config | Configuration 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 |
Config2 | Additional 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 Name | Description | Valid Values |
---|---|---|
Site Name | The name of the site that the navigation applies to. | A string containing any valid site name on your Kibo eCommerce tenant. |
Name | The name to display on the page's node. | Any string. |
Page Id | The 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 Collection | The 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 Name | The 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 |
Url | The 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 |
Index | The index of the node in the site tree. | Any integer. |
Node Type | Indicates 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:
|
Parent Id | If 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:
|
IsLeaf | If TRUE , indicates that the current node is not expandable. | A Boolean value, specified as TRUE or FALSE . |
Allow Drag | Indicates 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 Drop | Indicates whether an Admin user can drop the node in a different location in the site tree. | A Boolean value, specified as TRUE or FALSE . |
Expanded | Indicates whether the node appears expanded by default. | A Boolean value, specified as TRUE or FALSE . |
Is Hidden | Indicates whether the node is hidden from the site tree. | A Boolean value, specified as TRUE or FALSE . |
Is Home Page | Indicates 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 Name | Description | Valid Values |
---|---|---|
Site Name | The name of the site that the settings apply to. | A string containing any valid site name on your Kibo eCommerce tenant. |
Name | The 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 State | The current publish state of the site. | A string matching one of the following:
|
Properties | The 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:
- In the environment that contains the original site, launch the Mozu Import/Export Tool (v. 1.0.0).
- Export Content.
- 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.
- 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.
- 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.
- 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.
- 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" } }