1. Product catalogs

Product synchronization & Sitecore Search

Overview

OrderCloud enables catalog content synchronization with external systems using pre-defined delivery mechanisms. This guide explains the SearchIngestion Delivery Configuration, content merging functionality, and Search Proxy implementation.

Connection to OrderCloud

Initial setup

Create a DeliveryConfiguration in your production marketplace:

  1. Configure SearchIngestion as a delivery target
  2. Use POST v1/integrations/deliveryconfig
  3. Provide the following configuration:
json
{
  "ID": "",
  "Name": "",
  "Enabled": true,
  "DeliveryTargets": {
    "SearchIngestion": {
      "Domain": "",
      "Source": "",
      "Endpoint": "",
      "Entity": "",
      "ApiKey": ""
    }
  }
}

Product sync configuration

Create a Product Sync with these settings:

json
{
  "DeliveryConfigID": "", // pass the ID of the config created in the step above
  "SyncProductChanged": true,
  "SyncProductDeleted": true
}

The configuration accepts an optional ConfigData object. After setup, product changes and deletions in OrderCloud will automatically sync to Search.

Content merging

Purpose

Sitecore Search supports locale-specific information:

  • Unique category names
  • Product descriptions
  • User locale-based search results

This feature bridges content between external CMS systems and OrderCloud data. It supports:

  • Multiple locale configurations
  • Product attribute management
  • Single locale implementations

Configuration

Update your DeliveryConfig using PATCH v1/integrations/deliveryconfig/{deliveryConfigID}:

json
{
  "DeliveryTargets": {
    "SearchIngestion": {
      "Content": {
        "Locales": [
          "",
          ""
        ],
        "Http": {
          "Endpoint": "",
          "CustomAuthHeaderName": "",
          "CustomAuthHeaderValue": ""
        }
      }
    }
  }
}

Implementation details

  • Locale format: Underscore-separated (e.g., "en_us", "fr_ca", "en_au")
  • URL structure: GET <endpoint>/{entity}/{ID}
  • Entity example: product with Product.ID
  • Authentication: Optional custom headers
  • Response format requirements:
json
{
  "DocumentID": "P01",
  "EntityType": "product",
  "Data": [
    {
      "locale": "en_us",
      "fields": {
        "name": "Name of the product.",
        "description": "Description of the product."
      }
    },
    {
      "locale": "fr_ca",
      "fields": {
        "name": "Le nom du produit.",
        "description": "La description du produit."
      }
    }
  ]
}

Reserved attributes

The following attributes are reserved and will be ignored in responses:

  • active
  • allsupplierscansell
  • autoforward
  • buyers
  • catalogs
  • categories
  • category_names
  • ccids
  • defaultpriceschedule
  • defaultpricescheduleid
  • defaultsupplierid
  • quantitymultiplier
  • inventory
  • inventoryrecords
  • isparent
  • marketplace
  • ownerid
  • party_price
  • partypriceschedules
  • returnable
  • sellerdefaultpriceschedules
  • shipfromaddressid
  • shipheight
  • shiplength
  • shipweight
  • shipwidth
  • speccount
  • suppliers
  • supplier_inventory
  • specs
  • usergroups
  • variantcount

For CMS updates that don't trigger OrderCloud changes, use the Sync Endpoint to update Search.

Sitecore Search Proxy

Purpose

Use the Search Proxy when you need:

  • OrderCloud product visibility rules
  • OrderCloud pricing rules
  • Integrated search results

Authentication

  • Uses userinfo bearer token
  • Obtained via OrderCloud's oauth/userinfo route
  • Provides context for proxy operations

Implementation

The proxy:

  • Accepts standard Sitecore Search payloads
  • Returns standard Sitecore Search responses
  • Appends user visibility rules to filters
  • Applies appropriate pricing
  • Supports all Sitecore Search features

Sample request

json
{
  "entity": "product",
  "rfk_id": "rfkid_7",
  "search": {
    "content": {},
    "filter": {
      "type": "or",
      "filters": [
        {
          "name": "id",
          "type": "eq",
          "value": "BoulderXMid"
        },
        {
          "name": "allsupplierscansell",
          "type": "eq",
          "value": false
        }
      ]
    }
  },
  "context": {
    "page": {
      "uri": "/search"
    }
  },
  "widget": {
    "items": [
      {
        "entity": "product",
        "rfk_id": "rfkid_7",
        "search": {
          "content": {},
          "filter": {
            "type": "or",
            "filters": [
              {
                "name": "id",
                "type": "eq",
                "value": "BoulderXMid"
              },
              {
                "name": "allsupplierscansell",
                "type": "eq",
                "value": false
              }
            ]
          }
        }
      }
    ]
  }
}

Inventory location support

  • RequiredInventoryLocations supports wildcards
  • Format example: <productId>_<addressId>
  • Wildcard usage: *-<addressId> returns all matching records

Regional endpoints

Setup process

Currently requires OrderCloud team assistance:

  1. Contact support or use Slack
  2. Request proxy setup
  3. Provide necessary configuration details

Self-service configuration will be available in future releases.

If you have suggestions for improving this article, let us know!