HomeBlogAbout MeContact

Integrating Searchspring with Optimizely – Part 1: Architecture & Setup

Published in Optimizely
March 17, 2026
1 min read
Integrating Searchspring with Optimizely – Part 1: Architecture & Setup

Integrating Searchspring with Optimizely – Part 1: Architecture & Setup

Introduction

Modern e-commerce platforms demand fast, relevant, and intelligent search experiences. While Optimizely (Episerver) provides robust CMS and Commerce capabilities, scaling search for large product catalogs often requires a more specialised solution.

This is where Searchspring comes in.

In this two-part series, we’ll explore how to integrate Searchspring with Optimizely. In this first part, we’ll focus on the architecture, data flow, and setup.


Why Searchspring with Optimizely?

Optimizely Search & Navigation (Find) is powerful, but in complex commerce scenarios, businesses often need:

  • Advanced faceting and filtering
  • Merchandising controls for business users
  • AI-driven product ranking
  • Real-time autocomplete
  • High-performance search for large catalogs

Searchspring complements Optimizely by handling search and merchandising, while Optimizely continues to manage content and commerce logic.


High-Level Architecture

A typical Searchspring + Optimizely integration follows this flow:

  1. Product data is sourced from Optimizely Commerce (or PIM)
  2. A feed is generated and sent to Searchspring
  3. Searchspring indexes and processes the data
  4. Frontend applications call Searchspring APIs
  5. Optimizely renders the UI using API responses

Key idea:

Search is externalised, but experience stays within Optimizely


Product Feed Synchronisation

The foundation of this integration is the product feed.

You’ll need to push structured product data into Searchspring regularly.

Common approaches

  • Scheduled jobs in Optimizely
  • Middleware service
  • Direct PIM integration

Example: Scheduled Job in Optimizely

public class SearchspringFeedJob : ScheduledJobBase
{
public override string Execute()
{
var products = _productService.GetAllProducts();
var feed = products.Select(p => new {
id = p.Code,
name = p.DisplayName,
price = p.Price,
brand = p.Brand
});
_searchspringService.PushFeed(feed);
return "Feed synced successfully";
}
}

Tip: Always validate and transform data before sending—especially brand names and categories.


Searchspring API Basics

Once data is indexed, Searchspring exposes APIs for:

  • Search results
  • Category pages
  • Autocomplete

Example API Call

fetch(`https://api.searchspring.net/api/search/search.json?siteId=YOUR_SITE_ID&q=fridge`)
.then(res => res.json())
.then(data => {
console.log(data.results);
});

These APIs become the primary data source for your product listings.


Key Design Considerations

Before moving to implementation, keep these in mind:

  • Keep Searchspring responsible only for search and merchandising
  • Avoid mixing business logic into feed generation
  • Ensure consistent data mapping (especially brands, categories)
  • Plan for pagination and large datasets early

Wrapping Up

At this stage, you now have:

  • A clear architecture
  • Product feed flowing into Searchspring
  • APIs ready to consume

Coming in Part 2:

  • Frontend integration
  • Inline banners and merchandising
  • Real-world challenges (pagination, caching, data mismatches)

Tags

SearchspringOptimizelyEpiserverEcommerceSite SearchProduct Search

Share

Previous Article
Introducing the Opal Accessibility Assistant: Making Digital Experiences Inclusive

Quick Links

BlogAbout MeContact MeRSS Feed

Social Media