Search experiences in SitecoreAI now support push sources – your step-by-step guide

Screenshot of the Sitecore AI interface showing the Content dropdown menu with 'Search Sources' highlighted and a calendar on the right side.

Context

One of the challenges with search is that not all content lives neatly inside your CMS — and not everything can be crawled. With the introduction of Push Sources in SitecoreAI Search, there is now another option. Instead of relying on a crawler to discover and index content, we can submit documents directly to SitecoreAI Search using the Ingestion Service API.

Key Highlights & Use Cases

  • External Data Integration: Index content from third-party enterprise platforms, including external product catalogs, knowledge bases, and custom applications.
  • Real-Time Index Synchronization: Keep SitecoreAI search indexes cleanly synchronized with external source-of-truth databases.
  • Indexing Beyond Crawling: Render non-crawlable content, gated assets, or internal payloads searchable within SitecoreAI.
  • API-Driven Workflows: Build automated ingestion pipelines directly integrated into your existing CI/CD or data orchestration flows.

In this blog post, I will walk you through a step-by-step guide on how to set up push sources in SitecoreAI, submit payloads using the Ingestion Service API, and seamlessly connect your external content.

A product catalog example

For this walkthrough, I’m going to use a simplfied external product catalog. Let’s imagine we have a PIM containing:

Product ID
Product Name
Description
Category
Price
Product URL

The PIM remains the source of truth.

SitecoreAI Search is simply consuming a searchable representation of that information, as shown in the following JSON exampple:

{
"id": "product-1001",
"title": "Scrunch Running Shoes",
"description": "Scrunched running shoes for everyday training",
"category": "Footwear",
"price": "79.99",
"productUrl": "https://example.com/products/product-1001"
}

Our Push Source schema, therefore, will have these fields defined as follows.

Push Source schema

FieldDescription
idProduct ID
titleProduct name
descriptionProduct description
categoryProduct category
priceProduct price
productUrlProduct URL

Example Integration Reference Architecture

Below is sample integration reference architecture. This setup empowers developers and architects to take full, granular control over search index synchronization

Diagram illustrating the data flow from an external Product Information Management (PIM) system to SitecoreAI, including integration, ingestion, and search processes.
  • External PIM / Product System represents your source of truth
  • Integration Layer: Your custom-built middleware—whether an Azure Function, bespoke API, or other service—actively listens for change events from the external system
  • Ingestion Service API: Once transformed, your integration layer makes an authenticated HTTPS call to the SitecoreAI Ingestion Service API
  • SitecoreAI Push Source: Real-Time, API-Driven Synchronization, Fine-Grained Content Control
  • SitecoreAI Search: the ultimate user-facing search experience

Step 1 – Creating the Push Source in SitecoreAI

In SitecoreAI, navigate to the Search Sources area and create a new source:

  1. On the menu bar, click Content > Search sources.
  2. On the Search Sources page, click Create Source.
  3. In the Create new search source dialog, click Push Source.
  4. In the Create new search source dialog, in the Source Name field, enter a name for your source.
  5. Optionally, enter a description of your source.
  6. Click Next step.
  7. Click the Locales drop-down list to choose the languages that this source will support, and then click Next Step.
  8. Configure the fields in your source and their behavior, and then click Next Step.
  9. Enable the advanced settings you want to use in this source and then click Save.

After the source is created, applications can ingest content by submitting authenticated requests to the Push API

Screenshot of the Sitecore AI interface displaying the 'Search Sources' section, showing a product catalog with details such as name, description, config status, source type, last index, and last updated.

Step 2 – Verify the Push Source created

Clicking on a source allows you to view and edit that source’s configurations, including fields and rules.

To view the details associated with a source:

  1. On the menu bar, click Content > Search sources.
  2. Click a source.
  3. Click any of the following tabs:
    • Fields – displays the list of fields indexed by the source, and their configurations.
    • Pinning Rules – displays a list of pinning rules active on the source. Click Add a pin to create a pin rule.
    • Boost/Bury Rules – displays a list of boost and bury rules active on the source. Click Add new rule to create a new boost or bury rule.
    • Settings – displays the source settings, such as the source name, ID, and advanced settings.
    • Preview – displays a preview of the content indexed in this source, and the number of fields that have been indexed for each item.

Screenshot of a product catalog management interface displaying the 'Pinning Rules' tab with a message indicating no rules have been added yet.

Step 3 – Generate API Credential

All Ingestion Service API requests require a static API key in the Authorization header:

Authorization: ApiKey <your-api-key>

To create an API key:

  1. In SitecoreAI, click Content > Search Sources > Settings.
  2. Click Create credential.
  3. Enter a name for the credential and an optional description.
  4. Click Create, then copy the API key. The key is displayed only one time and cannot be retrieved after you close the dialog.

Step 4 – Understanding the API Endpoint

The Ingestion Service API endpoint follows this pattern:

POST {base_url}/v1/index/{config_id}/push

This endpoint submits document operations to create, update, or remove documents from a search source.

There are two values here that you’ll need from your SitecoreAI configuration:

base_url - API Endpoint value for the source, as shown is screenshot below
config_id - The identifier of the search source configuration.
Sitecore AI Push API configuration interface displaying the API endpoint and related credentials.

Below is a sampe Authenticated API request

POST https://.../v1/index/abc123/push
Authorization: ApiKey xxxxxxxxx
Content-Type: application/json
{
...
Request Body
....
}

Step 5 – Build Sample First Payload

Now let’s create our first document.

Here’s our product:

{
“id”: “product-1001”,
“title”: “Scrunch Running Shoes”,
“description”: “Lightweight cushioned running shoes designed for everyday training and comfortable road runs.”,
“category”: “Footwear”,
“price”: “74.99”,
“productUrl”: “https://example.com/products/product-1001“
}

We then wrap the document in an ingestion operation.

Conceptually:

Request
|
+-- operations
|
+-- document

Testing with Postman – showing sample first payload

JSON request example for pushing product data, including title, description, price, category, and product URL.

Step 6 – Handling updates and deletes

An update from the PIM system will be propagated into SitecoreAI, conceptually:

  • The PIM raises an event.
  • Our integration receives it.
  • We transform the product.
  • Then send the updated representation to SitecoreAI.
Logical flowchart illustrating integration design, showing event triggers for created, updated, and deleted events with corresponding actions.

When a product is removed from PIM, we will also need to delete it in SitecoreAI. So the integration should also understand:

  • CREATE
  • UPDATE
  • DELETE

Step 7 – Troubleshooting

When the API doesn’t work, I recommend working through the problem systematically.

a) 401 / authentication errors

Check the following:

API key
Authorization header
Environment
Source credentials

Make sure the header is:

Authorization: ApiKey ...

rather than assuming a bearer token is required.

Configuration error

Check the following:

config_id
Source exists
Source is published
Correct SitecoreAI environment

Schema / Data type errors

If SitecoreAI complains about a field, compare your payload with the source schema. Ensure the correct data types for field types.

Don’t assume that because a value looks like a number or date in your source system, the API expects exactly the same representation.

Final Thoughts

Push Sources are an interesting addition to SitecoreAI Search because they solve a very practical problem:

What do you do when the content you want to search doesn’t naturally live in Sitecore — or can’t be crawled?

Instead of trying to force everything through a crawler, we can explicitly push the content we want into the search index. For developers and architects, that opens up several possibilities:

  • External PIM integration
  • Product catalog search
  • Knowledge-base integration
  • Custom application data
  • Event-driven search updates
  • Non-crawlable content

And perhaps more importantly, it gives us control over the integration. We decide what gets indexed. We decide when it gets updated. And we decide how the external data is transformed before it reaches SitecoreAI Search.

For me, that’s where Push Sources become particularly interesting — not simply as another SitecoreAI feature, but as another integration pattern for building modern, composable search experiences.

Next steps

In this blog post, we looked at a step-by-step guide for setting up SitecoreAI Search Push Sources. We also looked at how to authenticate with the Ingestion Service API, prepare the payload, push external content into the search index, and troubleshoot some of the common issues you may encounter.

Push Sources provide a useful way to bring externally managed or non-crawlable content into SitecoreAI Search. They can also be a great fit for event-driven integrations where search content needs to be kept in sync with an external system.

Be sure to check out the SitecoreAI documentation and the Ingestion Service API documentation for further guidance and details on working with Push Sources.

Stay tuned for future posts, and feel free to leave us your comments and feedback as well.