You are viewing the v1 Nacelle Docs for existing merchants.New merchants can find the V2 docs here: nacelle.com/docs.

# Content Data

The Data Ingestion API gives developers the option to send content data to Nacelle from a custom data source or product information management system.

To begin exploring this API, please view our Custom Quick Start Guide and our Data Ingestion Reference Docs.

# Viewing the Data Ingestion Product Docs

Please follow the instructions in the Data Ingestion Reference Docs. Once the proper headers are added to your API Client, you will be able to use GraphQL introspection to browse the Content object. Furthermore, you will find the requirements for the indexContent and deleteContent mutations. The indexContent mutation is similar to a "create or update" function and is keyed on handle.

# Important Reminders

All the Data Ingestion Engine API calls are asynchronous in nature, and successful responses from the mutations sent do not guarantee successful indexing of the objects.

Content mutations require cms object. The content management system (CMS) is the source of truth for your storefront's content. Cms objects follow this structure:

cms: {
  syncSource: "wordpress"
  syncSourceDomain: "<put your pim domain here>"
  defaultLocale: "en-us"
}

Note: be sure to replace the "put your cms domain here" with your cms domain

# Content Modeling

In the world of the headless CMS, much care must be given to your content models. At Nacelle, we have found that this process of content modeling will make or break your implementation. Work closely with an expert before committing to a content model. If you don't have an expert in house, Nacelle will help you find one during the implementation kick off stage.

# Required Fields

In order for Nacelle to index your content data, all Content data sent to Nacelle must have the following attributes:

  • handle: a handle (or slug) which is unique
  • locale: the locale in which this content belongs to
  • type: the content type. Examples include "page" or "post"

# Example Mutations

This will create a Content with the handle captains-log-2268. If a Content with the handle captains-log-2268 already exists, Nacelle will update the index with the data provided. This mutation can be run in bulk and, if multiple Content object events are sent to this mutation, Nacelle will index each one.

mutation IndexContent {
  indexContent(
    input: {
      cms: {
        syncSource: "custom"
        syncSourceDomain: "<put your cms domain here>"
        defaultLocale: "en-us"
      }
      content: [
        {
          id: "abc123"
          handle: "captains-log-2268"
          title: "Captain's Log 2268"
          locale: "en-us"
          type: "post"
          author: { firstName: "Jean-Luc", lastName: "Picard" }
          description: "An encounter with deep space station k-7"
          fields: "{<p>Captain's log, Stardate 4523.3. Deep Space Station K-7 has issued a priority one call. More than an emergency, it signals near or total disaster. We can only assume the Klingons have attacked the station. We're going in armed for battle.</p>}"
          tags: ["k-7", "tribble"]
        }
      ]
    }
  ) {
    count
    ids
  }
}

If a Content object is deleted, send the following mutation to the Data Ingestion API:

mutation DeleteContent {
  deleteContent(
    input: {
      cms: {
        syncSource: "custom"
        syncSourceDomain: "<your cms source domain>"
        defaultLocale: "en-us"
      }
      id: "<your cms source domain>::demo-collection::en-us"
    }
  )
}