What is product information management

By Max Beppe Karlsson

Guide to product information management (PIM)

You don't need me to tell you that online shopping saw explosive growth in 2020. It will likely continue to grow and become the norm for how consumers purchase products. And as more stores move online, they find that modern-day e-commerce means a lot more than merely to create a website and sell products online. There's a whole new world out there of omnichannel presence. You're no longer selling only on your website; you also sell on Amazon, eBay, Facebook, Instagram, and other channels. On top of that, going online opens up new markets for your products across regions you couldn't reach previously.

How to manage the increased complexity

These added possibilities and requirements increase the complexity of e-commerce. Maintaining a coherent strategy across multiple channels and regions is no small task. Imagine the time you'd spend if you needed to update product images across numerous systems or add a new regionalized description to increase sales in secondary markets.

That's where product information management (PIM) comes in. A PIM system allows you to centralize all your product information data in one place. Examples of data a PIM system can handle are:

  • digital assets such as images, videos, documents
  • marketing data such as keywords and SEO
  • product details such as name, description, size, weight, SKU, and price
  • sales information such as reviews and testimonials

You can then use the data for marketing, translations, and integrations with multiple sales channels. You change the images in one place and automatically sync them to your sales and marketing channels. You have a single centralized source of truth that manages the complexity and helps teams of content creators, marketers, and e-commerce managers work together on the same data.

How Sanity can work as your product information management system

Of course, you're here on Sanity.io reading an article about PIM. But Sanity is a headless CMS, so what does that have to do with PIM? I understand that question; it's entirely valid. However, Sanity is a lot more than a CMS; it's a flexible system to manage content – any content – as data. As you read before, product information is data.

You can use Sanity as a product information management system on its own with a custom checkout solution like Stripe, Square or similar. Or you can integrate it with external e-commerce platforms such as Shopify, BigCommerce, or any of the headless e-commerce platforms on the market.

Sanity can enrich product information and product pages with additional data the e-commerce platform may not support (without metadata gymnastics). It allows you to use direct references to products and categories in marketing copy across the site, social media, and email campaigns.

Localization is another area Sanity can shine. Sanity's flexibility allows you to set localization fields on virtually anything. Do you need a separate title for US and UK customers? No problem. Different product videos for Germany and Australia? No worries!

Using Sanity as a PIM

I can talk your ears (eyes?) off about how you can use Sanity for almost anything. Still, you probably came here to see something you can work with, something concrete. Let's dive in and look at how you can use Sanity to translate product information to any locale you want.

Since you define the schemas for Sanity Studio in code, you need some basic knowledge about JavaScript to follow this part of the article, and it requires that you have node and npm installed on your machine.

Initialize a Sanity Studio

You can use the Sanity CLI to initialize a new project. Head on over to your terminal and type in sanity init. If you don't have the CLI installed globally, you can use npx sanity init. If you haven't logged in to Sanity via the CLI before, the CLI will prompt you to do so first.

The first thing the CLI prompts is the project you want to use. Create a new project for this walkthrough and call it whatever you want. I went with "pim".

Use the default dataset configuration and select where you want the files to go in the project output path step.

The Sanity CLI offers you a few templates to get started with schema building. Select the e-commerce schema and let Sanity pre-populate the dataset with some sample products and categories (hit enter).

Alright, Sanity will do some magic now for a few seconds as it scaffolds the code and pre-populate the dataset. You can sit back, sip your coffee, tea, or whatever you prefer, but don't check Twitter, or else you'll forget what you were doing.

Open the project in your editor and look around. You should see 4 folders (plus node_modules) and some config files. Head over to the "schemas" folder and open "product.js". This file contains the schema definition for products. You can add or remove fields as needed to fit your use case.

If you scroll down to the body field, you'll see that it uses the custom type localeBlockContent. It's a custom schema object that lets you localize the product description. Check out the definition in "./schemas/locale/BlockContent.js"; this file extends the blockContent object type with supported languages.

If you open "./schemas/locale/supportedLanguages.js", you'll see a list of locales.

export default [
  {id: 'en', title: 'English', isDefault: true},
  {id: 'es', title: 'Spanish'},
  {id: 'nb', title: 'Norwegian'},
]

Each option has two required fields (id, and title) and one optional (isDefault). Follow the same pattern to add or remove locale options in the list. This list defines the translation options for both localeBlockContent and localeString.

Now that the schema is defined, you can fire up the Studio with sanity start. Sanity will compile the schema files and serve up the Studio on http://localhost:3333. Navigate to that URL in the browser and log in. You should see an interface similar to the screenshot below.

Take a few moments to explore the pre-populated data and learn some Norwegian. When you feel ready to go to Oslo and buy candy from the store, you can click the "Create new document" button in the top bar and select "Product" from the list. Fill out the product's information, adding a description for the new product in all your supported languages, and add as many images and variants as you need.

As you can see, the fields match the schema you checked out earlier, localeBlockContent creates a block content field with all the translations you’ve enabled. It should look something like this:

Since you define all the data fields with code, Sanity offers what might be the most flexible product information management out there. It can be adapted to fit virtually any catalog and allows integration via API. As a result, you can use Sanity to manage your product information as well as marketing content. It makes for a powerful combination that can foster collaboration across your teams and enable your organization to tackle modern E-commerce requirements.

Where to go from here

What you just built is only the start of the benefits of using Sanity as a PIM system. By keeping your content and catalog data in the same system, you open up new possibilities for how you can use your data. A few other examples of what you can do are:

  • marketing emails with direct connections to products and their reviews
  • translated product titles and descriptions automatically picked up in marketing copy, based on locale
  • enable sales channels per product
  • keep your catalog synchronized across all your sales channels
  • add metadata for SEO and social media
  • localized images and videos to appeal to customers in all regions

Since Sanity is a headless system, there are no expectations on how to present the data. As a result, you can create a flexible PIM system that meets your requirements rather than adapting to the platform's limitations.

Sanity.io: Get the most out of your content

Sanity.io is a platform to build websites and applications. It comes with great APIs that let you treat content like data. Give your team exactly what they need to edit and publish their content with the customizable Sanity Studio. Get real-time collaboration out of the box. Sanity.io comes with a hosted datastore for JSON documents, query languages like GROQ and GraphQL, CDNs, on-demand asset transformations, presentation agnostic rich text, plugins, and much more.

Don't compromise on developer experience. Join thousands of developers and trusted companies and power your content with Sanity.io. Free to get started, pay-as-you-go on all plans.