---
title: Product synchronization & Sitecore Search
slug: product-sync-sitecore-search
abstract: OrderCloud enables catalog content synchronization with external systems using pre-defined delivery mechanisms
content_type: how-to
audience: \[developer, architect]
---
# Product synchronization & Sitecore Search

## Overview

OrderCloud enables [catalog content synchronization](https://doc.sitecore.com/ordercloud/en/developers/platform/productsync.html) 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](https://doc.sitecore.com/ordercloud/en/developers/platform/delivery-configuration.html) 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](https://api-docs.sitecore.com/ordercloud/product-synchronization/productsyncs.save) 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](https://doc.sitecore.com/ordercloud/en/developers/platform/productsync.html#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

| Search Proxy Endpoints | Region |
| ---------------------- | --------- |
| [POST https://uswest-integrations.ordercloud.io/api/v1/search/{domain}](https://uswest-integrations.ordercloud.io/) | US West |
| [POST https://westeurope-integrations.ordercloud.io/api/v1/search/{domain}](https://uswest-integrations.ordercloud.io/) | Europe West |
| [POST https://useast-integrations.ordercloud.io/api/v1/search/{domain}](https://uswest-integrations.ordercloud.io/) | US East |
| [POST https://japaneast-integrations.ordercloud.io/api/v1/search/{domain}](https://uswest-integrations.ordercloud.io/) | Japan East |
| [POST https://australiaeast-integrations.ordercloud.io/api/v1/search/{domain}](https://uswest-integrations.ordercloud.io/) | Australia East |

### 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.

## Related reading

- [Product synchronization](https://doc.sitecore.com/ordercloud/en/developers/platform/productsync.html)
- [Order synchronization](https://doc.sitecore.com/ordercloud/en/developers/platform/ordersync.html)
- [Entity synchronization](https://doc.sitecore.com/ordercloud/en/developers/platform/entity-synchronization.html)
