Chord OMS
Content Management (CMS)
Content Models
38 min
overview our autonomy starters use existing content models that have been provisioned by the team at chord commerce when we bootstrapped your cms environment you can use the (simplified) diagram below to learn more about how core models are interconnected e commerce content models when starting with chord autonomy, your initial cms space will come with more cms types than what are listed here you are free to remove/edit content types that are not listed here the content types listed here are all required for chord's oms and its sync service to function properly with that said, you are free to add whatever fields you would like to the following content types, so long as they do not clash with the fields explicitly listed common required fields most of chord's content types have a set of required fields across them that are required for chord to properly function these fields are frequently used so that our sync service can sync changes between the cms and the oms you should not remove these fields from content types as it will break syncing from the cms to oms name the name for an item that may or may not be displayed to your customers in the storefront's ui in chord's autonomy starters we note cases where the name is displayed to customers in specific content types in this document it will be shown in the cms as the title for a given entry and it may be synced to chord's oms, in the case of content types like content models docid\ gojr a1zivmf6eysr m4c and content models docid\ gojr a1zivmf6eysr m4c generally, the name for an item should make sense from an operational standpoint and not a marketing standpoint it is a required field and should not be removed from a content type if it's provided to you as a part of your initial cms space some examples of the name format are the plant store colorado blue spruce poplar tree it is recommended that you add a name field to all custom content types that you end up creating, even if you do not display the name to a customer slug the slug field is a slugified https //en wikipedia org/wiki/clean url#slug string that is unique to that content type and is the human readable identifier for a given item this field can be used in urls to route to the item some examples of the slug format are the plant store colorado blue spruce poplar tree if this field is present in a content type provided to you in our initial cms space, you should not remove it from the content type , as that will break elements of our sync service from the cms to the oms it is recommended that you add a slug field (or something like it) to each custom content type that you end up creating in the cms, even if you don't plan to route to it initially having a unique, stable, human readable identifier can be very helpful when querying for a single record we do not recommend changing the slug after it has been set this can lead to some syncing issues with the oms for content types changing the slug after it has been set can lead to some syncing issues with the oms for content types when changing it for types like content models docid\ gojr a1zivmf6eysr m4c or content models docid\ gojr a1zivmf6eysr m4c , you should check the oms afterwards to see if duplicate items were created use case to illustrate the content models used by chord autonomy, we are going to imagine a store that sells a variety of plants called "the plant store" the plant store is an established business that sells houseplants, shrubs, flowers, trees, and plant supplies, like soil and plant food the plant store currently has a single storefront located at https //theplantstore com catalog the catalog is the top level taxonomy for the items in a store for chord customers with a single storefront, you will frequently have one catalog that you use for your whole site chord customers with multiple storefronts should have multiple catalogs in their cms, one for each storefront required fields field name field description the name for an item that may be displayed to your customers a string that is unique to that content type and is the human readable identifier for a given item collections a many to many reference of in this catalog use cases to illustrate some of the finer points of the catalog content type, let's consider what we would do if the plant store wanted a single storefront at theplantstore com versus multiple storefronts corresponding to their verticals (ex theplantstore com , theshrubbery com , flowers4u co , etc ) single storefront the plant store is coming to chord with an existing site where all their products are listed and they would like to keep it that way if the plant store wanted a single storefront, they would create multiple content models docid\ gojr a1zivmf6eysr m4c corresponding to their verticals ( houseplants , shrubs , flowers , etc ) and associate them with the singular catalog record with the slug of catalog multiple storefronts the plant store would like to diversify itself into multiple storefronts corresponding to its verticals (all flowers on flowers4u co , all shrubs on theshrubbery com , and all houseplants on theplantstore com ) if the plant store wanted multiple storefronts, they would create a catalog entry for each site ( flowers 4 u , the shrubbery and the plant store ) and then either create a single content models docid\ fktswp0yyjuvym0gppkte for all products in the store (ex flowers4u co has all flowers in a single collection) create multiple that highlight distinctions in groupings of items (ex flowers4u co has the following collections tulips , roses , orchids , and accessories ) collection a collection is a grouping of items for sale in a storefront in the autonomy default content model, a collection is a grouping of and it should be noted that products and kits can exist in multiple collections required fields all of these fields are required for chord's oms and its sync service do not remove them from the collection content type field name field description the name of the collection by default, in our starters, this is not shown to the customer and is used as an internal identifier the identifier of the collection products a many to many reference to the content type that represents all the products in this collection kits a many to many reference to the content type that represents the kits in this collection use case the plant store sells many plant accessories, such as soil, pots, vases, plant food, and everything in between they would like to have all these accessories in an "accessories" collection on the site, and they would also like some of their vases to show up with their flowers in order for the plant store to do this, they would create their "accessories" collection along with their other plant focused collections , like "flowers " add all their accessory to the "accessories" collection add some of the vases to the "flowers" collection product a product is an item for sale in a storefront it contains information about the product, like the name, description, ingredients, and other metadata all product management lives in the cms and is synced to chord's oms via our sync service an important fact to know is that the product content type itself does not have information like the price, sku https //en wikipedia org/wiki/stock keeping unit , weight, and other pricing/shipping information, nor should it contain this information this information will be set in one or more of the product's required fields all of these fields are used by the chord oms sync service and should not be removed from the product content type field name field description the name of the product in our starters, by default, this name is shown to customers, both in the store's ui and in the \<title> tag of the document the identifier of the product in our starters, by default, this is used in the path portion of the url to route to the product display page main image the primary image to be shown for this product it is used not only on your website, but also in the google search results for this product (through the ) and other metadata about this product it is also synced to the chord oms through our sync service and will show up in that ui option types are modifiers for a product if you were to sell a t shirt, the size of the shirt for sale would an option type and the sizes (small, medium, large) would be variants a product is required to have at least one which represents a sku, which is an item type in your warehouse there must be a variant for each combination of the product's the variant contains data for the product for pricing, shipping, discounts, and more subscription the subscription field allows this product to be purchased by customer on a recurring basis by adding a reference to an instance of the content type use cases to help illustrate some of the finer points of the product content type, consider the following use case the plant store sells red, yellow and purple tulips the customer can purchase these tulips in a size of small (5 tulips), medium (10 tulips), or large (30 tulips) in this use case, we are going to model the plant store's content to work with chord's autonomy starters, which have product display pages with select menus for all possible for the product there is nothing stopping you from having variant display pages where customers can buy specific variants there are two ways that the plant store could model their products and variants all tulips on a single page in this use case, the plant store would like all tulips for sale on a page with the url of https //theplantstore com/products/tulips in order to do this with chord's autonomy starters, they do the following create a product named "tulips" create the for the "size" and "color" create the for the "size" option type ("small, "medium", "large") and "color" option type ("red", "yellow", "purple") add a for each combination of of the option types/values with names like "red small tulips", "purple medium tulips", "yellow large tulips" and so on (there will be 9 variants attached to the "tulips" product) the biggest advantage to this approach is that you get a single logical product to manage all the skus in the cms each color of tulip has its own page in this use case, the plant store would like for each color of tulip to have its own page to do this, they would create a product for "red tulips", "yellow tulips" and "purple tulips" on each product , they add an for the size of the order and create three variants on each tulip product corresponding to the size ( small , medium and large ) the advantages of this solution include better search engine optimization, in the default product display page setup in our starters, as it's more likely to catch specific queries like "red tulips" with this approach easier top level product management in the cms, as the individual colors are easier to view at a product level than they are at a level kit the kit content type represents a grouping of that can be sold at a set price a kit is great when you would like to bundle for sale together at a discount it should be noted that, from a chord oms perspective, that a kit generates a distinct sku https //en wikipedia org/wiki/stock keeping unit in the oms this product in the oms will have variants for every possible combination of the included product's variants the sku https //en wikipedia org/wiki/stock keeping unit will be an alphabetized pipe joined list of the in the sku which looks like the following variant sku 1|variant sku 2|variant sku 3 required fields field name field description the name of this kit this name is synced to the chord oms and is displayed to your customer by default in the autonomy staters the slugified identifier for this kit by default, in the autonomy starters, this fields is used in the path portion of the url for the kit display page it is also used by the oms sync service to sync the kit to the oms products the to be bundled together in this kit price the amount of money to charge the customer for buying all these items together in this kit regular price if you would like to emphasize that buying these products together in a kit would save the customer money, you can enter the regular price here if it is not on sale, set it to what the price is use case the plant store would like to sell red roses with a glass vase and a box of chocolates for valentines day for $100 with a name of "nothing too sweet for my honey" in order for the plant store to offer such a bundle, they would create a kit with the name of "nothing too sweet for my honey" and set the price to $100 add the (red roses, glass vase, box of chocolates) to the kit created in step 1 when the kit is synced to the chord oms, there will be a new sku with the identifier chocolates|glass vase|red roses variant the variant content type corresponds to a type of item in your warehouse and contains all the pricing, discounting, shipping, and warehouse metadata for a all products must have one variant per combination of attached to it if there are no option types on the product , the product must still have one variant record that represents its only variation to reuse an analogy from the section, if you are selling a "t shirt with the chord logo," a variant of it would be a "medium t shirt with the chord logo " if your customer is on a page, they can be presented multiple variants of that product the customer is able to select that variant by making selections of that product's which will map to placed upon the variant if you were selling a "medium t shirt with the chord logo," you would create a named "chord t shirt" add a variants to that named "small medium chord t shirt," "medium chord t shirt," and "large chord t shirt" add an named "t shirt size" to the "chord t shirt" product add to the "t shirt size" option type named "small," "medium," and "large" add the to the variants ("medium" to "medium chord t shirt" variant , repeat for the "small" and "large" option types) the starters provided by chord have product pages and checkouts already set up to work perfectly with this product/variant/option type/option value setup required fields all fields listed here are required and should not be removed from the variant content type field name field description name the name of the variant in the autonomy starters, this name is displayed to the customer when the variant of a product is selected price the price of this variant of the in the currency defined in the chord oms for this storefront if you are thinking about setting up your storefront for multiple currencies, reach out to the chord team for further discussions regular price if the product is on sale (or you want it to appear as if it's on sale), this is where you would set the regular price of the variant if it is not on sale, this field should equal the value in the price field weight & total packaging weight this is the weight of the product variant without packaging and with packaging these fields can be used to calculate how much shipping might be for some shipping services in the chord oms sku the internal identifier for this product variant it is used by chord's oms sync service to sync pricing and shipping information to the oms, so the sku shouldn't change and should be considered stable this field can functionally serve the same purpose as the on other content types global trade item number the /barcode for this product variant option values a many to many reference to the content type it is used to match the variant to what the user wants to purchase on a page use case the plant store sells sunflowers they sell them in bunches of 6 (small, $20), 12 (medium, $40), and 20 (large, $65) sunflowers are in season right now and they have a surplus of them in stock and have to move them quickly to do so, they are going to offer a discounted price when customers purchase larger sizes, discounting a medium order of sunflowers to $30 and a large order to $50 in order for the plant store to offer sunflowers in such a fashion, they would create a named "sunflowers " create an named "size " create that reference the "size," named "small", "medium," and "large " create variants for the "sunflowers" named "small sunflowers," "medium sunflowers," and "large sunflowers " set the on the variants to match their size through the "size" set the prices and regular prices on the variants to match the one described in the use case option type the option type content type represents an option for the customer to pick when adding a product to their cart imagine the option type as a dropdown in a form and the values in the dropdown would be if you were selling t shirts, the size of the shirt would be an option type with for "small," "medium," and "large " option types are part of the glue that binds a to a to make an analogy to html (and how it might show up in the chord ui), the option type is a \<select> element and the option value is the \<option> element for that \<select> it is encouraged that you reuse option types (where it makes sense) across your required fields all of these fields are required for chord oms and its sync service to work properly do not remove them from the option type content type field name field description the name of the option type this is primarily used as an internal identifier in the cms interface to describe the option type and is not displayed to customers in the chord autonomy starters by default the identifier of this option type to continue the html \<select> analogy from above, this field maps to the name attribute on the \<select> element option values a many to many reference to the content type presentation the human readable description of this option type to continue the html \<select> element analogy from above, this would be the \<label> for the \<select> use case for a detailed use case of how to use option types , please refer to the variant's use case option value the option value content type represents an option for an if you were selling t shirts, the size of the shirt would be an and "medium" or "large" would be an option value option values are part of the glue that binds a to a through to make an analogy to html (and how it might show up in the chord ui), the option value is an \<option> element to a \<select> represented by the content type required fields all of these fields are required for chord oms and its sync service to work properly do not remove them from the option value content type field name field description the name of the option value this is primarily used as an internal identifier in the cms interface to describe the option value and is not displayed to customers in the chord autonomy starters by default the identifier for this option value to continue the html analogy from above, this would be the value attribute for the \<option> element presentation the human readable description of this option value to continue the html analogy from above, this would be the text inside of an \<option> tag use case for a detailed use case of how to use option values , please refer to the variant's use case subscription the subscription content type allows you to define recurring purchases of or for your customers at a custom interval defined by the content type chord autonomy's subscription model allows you to give your customer a discount on their recurring order based upon a percentage discount a single subscription can be associated with multiple products by adding an instance of the subscription to the desired products chord's oms handles all of the recurring billing and order management around subscription orders required fields these fields are required by the chord oms sync service and should not be removed from the subscription content type field name field description the name for this subscription type in the chord autonomy starters, this name is not displayed to the customer it is used by chord's oms sync service and should serve as an internal name for this subscription type the internal identifier for this subscription type this is used in chord's oms sync service to sync subscription to the oms it is also used in chord's autonomy starters in the subscription selection dropdown discount percentage the percent of money to take off of the subscription product's price set it to 0 if the subscription should not be discounted intervals a many to many reference of the content type, defining the acceptable intervals for the subscription to reoccur for the customer use case the plant store offers their customers the ability to send roses or violets to a loved one on a weekly and monthly basis at a 10% discount they want to promote it with the name of "'always thinking about you' subscription " in order for the the plant store to offer such a subscription, assuming they had already created the roses and violets , they would create a new subscription named "always thinking about you" with a 10% discount add new set to repeat every 1 week and every 1 month to the subscription add the subscription to the "roses" and "violets" subscription interval the subscription interval content type represents a reusable unit to define how often a subscription purchase should reoccur required fields these fields are required for the chord oms sync service to work properly so do not remove them from the subscription interval content type field name field description the name of this subscription interval in chord's autonomy starters, by default, this field is shown to your customer in the subscription selection dropdown the identifier for this subscription interval it is used by chord's oms sync service to sync subscription intervals to the oms it is also used in the subscription selection dropdown in chord's aut onomy starters presentation the customer facing name of this subscription interval unit the measurement for the interval these can be either days, weeks, months, or years length the number of the subscription should reoccur upon use case refer to the use case for for an in depth description of how subscription intervals function