HomeDev GuideRecipesAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Get started with Optimizely Graph for CMS 13

Learn how to set up and use Optimizely Graph with CMS 13, including SDK configuration, search modes, and modern search capabilities for migration scenarios.

Learn how to set up and use Optimizely Graph with CMS 13, including enabling the .NET SDK, selecting the appropriate search mode, and implementing modern search capabilities to support migration from Optimizely Search & Navigation.

📘

Note

If you are already live with Optimizely Graph on Optimizely Content Management System (CMS 12), see Project migration for CMS 12 with Optimizely Graph.

Prerequisites

Ensure that you have:

Request a developer instance

🚧

Important

Developer instances last only 30 days. You should wait until you need it to request one.

To request a developer account, any customers or partner can open a support ticket and include the following information:

  • First name
  • Last name
  • Email address
  • Organization name
  • Region (APAC, EMEA, UAE, or US)

The Engineering team creates the account and provides the credentials through the support ticket. The index is automatically removed after 30 days. After expiration, you must request a new account to continue access.


Enable Optimizely Graph

Add the following to your startup configuration to activate the integration:

// using Optimizely.Graph.DependencyInjection;

services.AddContentGraph();

Understand the SDK purpose

The .NET (C#) SDK supports developers who are migrating from Optimizely Search & Navigation to Optimizely Graph. It provides patterns to implement search and content retrieval using a Graph-based approach.

Learn more about the .Net (C#) SDK.

Choose a content search mode

Optimizely Graph supports multiple search modes. Select the one that fits your use case.

Content search

Use this mode when you need CMS-integrated results

  • Provides compile-time type safety for filters.
  • Loads data using IContentLoader.
  • Returns IContent instances.
  • Honors content permissions and URLs.

Typed search

Use this mode for structured external or global search scenarios.

  • Deserializes responses into defined contracts.
  • Provides compile-time type safety for filters.
  • Suitable for global search pages and advanced listings.

Untyped search

Use this mode for maximum flexibility.

  • Accepts types and fragments as strings.
  • Returns raw JsonElement results.
  • Does not provide compile-time type safety.

Implement search functionality

Optimizely Graph enables advanced search capabilities across all modes:

  • Full-text search with highlighted terms.
  • Filters, operators, and logical connectors.
  • Fuzzy matching.
  • Extension methods for defining filters.
  • Locale and ID-based queries.
  • Sorting, including semantic sorting.
  • Cursor-based pagination.
  • Autocomplete and query suggestions.
  • Variations, facets, and boosting.
  • Pinned results.

Configure security and performance

Security

  • Integrated tracking that respects "Do Not Track" settings.
  • Authentication using a single API key by default.
  • Optional HMAC authentication.
  • Authorization with FilterForVisitor, using IPrincipal and locale.
  • Option to include deleted documents

Performance and observability

  • Built-in metrics for HttpClient
  • Observability and query categorization
  • Optional caching support

Understand SDK limitations

The SDK does not fully replicate all features from Search & Navigation.

Not supported:

  • Full Language Integrated Query (LINQ) provider
  • Direct link support
  • Use IContentLoader.GetAncestors()
  • Recursive directives
    • Use IContentLoader.Get()
  • Routing
    • Use IUrlResolver.Route() and ContentLoader.Get()
  • Single document retrieval by ID
  • Filtering on the current site
  • Multi-search

Next steps