Skip to main content
Multifeed compositions let you return several independently ranked result feeds from a single API request. They’re the foundation for federated search, displaying results from different product categories, brands, content types, or geographies in a unified result set. This guide walks through assembling a multifeed composition for a football-themed product listing page (PLP), starting from a single index and then extending to multiple indices and Smart Groups. For the underlying concept, see Multifeed compositions. Before you begin, review the Composition API requirements.
Use case: “I want to build a PLP that surfaces new arrivals in carousels by product tier: Tier A for top clubs, Tier B for mid-tier, and Tier C for the rest. This replaces static manual processes site-wide.”
This example builds a federated PLP with carousels for brands, latest items, and trending items.

Entry points

This composition supports two entry points: a search query for football on the browse PLP, and the category page route /football.
{
  "params": {
    "query": "",
    "filters": "categoryPageId:football"
  }
}

Configure with the API

Create the composition with the Update and insert composition endpoint, then apply the behavior defined below. To scope the behavior to a specific search query, category, or context, send the same behavior inside a composition rule’s consequence.behavior with the Update and insert composition rule endpoint.
1

Add the brand feed

JSON
{
  "behavior": {
    "multifeed": {
      "feeds": {
        "football-brands": {
          "injection": {
            "main": {
              "source": {
                "search": {
                  "index": "products",
                  "params": {
                    "filters": "category:football"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
2

Add the trending feed

JSON
{
  "behavior": {
    "multifeed": {
      "feeds": {
        "football-brands": {
          "injection": {
            "main": {
              "source": {
                "search": {
                  "index": "products",
                  "params": {
                    "filters": "category:football"
                  }
                }
              }
            }
          }
        },
        "football-trending": {
          "injection": {
            "main": {
              "source": {
                "recommend": {
                  "indexName": "products",
                  "model": "trending-items",
                  "threshold": 3,
                  "queryParameters": {
                    "filters": "category:football"
                  }
                }
              }
            }
          }
        }
      },
      "feedsOrder": [
        "football-brands",
        "football-trending"
      ]
    }
  }
}
3

Add the latest-in-football feed

JSON
{
  "behavior": {
    "multifeed": {
      "feeds": {
        "football-brands": {
          "injection": {
            "main": {
              "source": {
                "search": {
                  "index": "products",
                  "params": {
                    "filters": "category:football"
                  }
                }
              }
            }
          }
        },
        "football-latest": {
          "injection": {
            "main": {
              "source": {
                "search": {
                  "index": "products",
                  "params": {
                    "filters": "category:football AND new:true"
                  }
                }
              }
            }
          }
        },
        "football-trending": {
          "injection": {
            "main": {
              "source": {
                "recommend": {
                  "indexName": "products",
                  "model": "trending-items",
                  "threshold": 3,
                  "queryParameters": {
                    "filters": "category:football"
                  }
                }
              }
            }
          }
        }
      },
      "feedsOrder": [
        "football-brands",
        "football-latest",
        "football-trending"
      ]
    }
  }
}

Enhance your feeds

Add a Recommend to power a trending-items carousel. This example pulls trending items from the uk-products index, filtered to the football category.
JSON
{
  "behavior": {
    "multifeed": {
      "feeds": {
        "football-brands": {
          "injection": {
            "main": {
              "source": {
                "search": {
                  "index": "product-brands",
                  "params": {
                    "filters": "category:football"
                  }
                }
              }
            }
          }
        },
        "football-trending-uk": {
          "injection": {
            "main": {
              "source": {
                "recommend": {
                  "indexName": "uk-products",
                  "model": "trending-items",
                  "threshold": 3,
                  "queryParameters": {
                    "filters": "category:football"
                  }
                }
              }
            }
          }
        }
      },
      "feedsOrder": [
        "football-brands",
        "football-trending-uk"
      ]
    }
  }
}

Inject an external source Smart Group

Inject an external source Smart Group into one of your feeds to surface sponsored items selected at query time by your retail-media platform or bidding system. The object IDs are passed in the request body when querying the composition (see External source groups).
JSON
{
  "behavior": {
    "multifeed": {
      "feeds": {
        "football-brands": {
          "injection": {
            "main": {
              "source": {
                "search": {
                  "index": "product-brands",
                  "params": {
                    "filters": "category:football"
                  }
                }
              }
            },
            "injectedItems": [
              {
                "key": "sponsored-football",
                "source": {
                  "external": {
                    "index": "products",
                    "ordering": "userDefined"
                  }
                },
                "position": 0,
                "length": 3
              }
            ]
          }
        }
      },
      "feedsOrder": [
        "football-brands"
      ]
    }
  }
}

Hide feeds

You can hide or reorder feeds with the feedsOrder field. Set it on the composition itself, on a composition rule, or pass it at query time. Omitting a feed from feedsOrder hides it for that scope. Reordering changes the order of feeds in the response.
Update feedsOrder on the composition to change the default order or hide a feed across all queries (here, football-popular-uk is omitted to hide it).
JSON
{
  "behavior": {
    "multifeed": {
      "feedsOrder": [
        "football-brands",
        "football-trending"
      ]
    }
  }
}

See also

Last modified on June 2, 2026