> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://contentful.com/developers/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://contentful.com/developers/docs/_mcp/server.

# Delivery

> Send the right events and conduct performance analysis with precision.

Contentful Personalization provides three delivery paths, each suited to different integration needs. Choose the one that matches your architecture, or combine them for hybrid setups.

For help deciding which path fits your project, see the [Choose your setup](/personalization/choose-your-setup) guide.

## Experience SDK (recommended)

The [Experience SDK](/personalization/experience-sdk) is the fastest way to integrate personalization into JavaScript-based front-end applications. It provides React components, hooks, and utilities that handle Experience API communication, profile caching, variant resolution, and event tracking automatically.

**When to use**: If you are building with React, Next.js, or Gatsby, and want the most complete integration with the least code.

The SDK's [plugin system](/personalization/plugins) extends its capabilities with analytics tracking, preview tooling, privacy controls, and integrations with Google Tag Manager, Segment, and Contentsquare.

## Experience API

The [Experience API](/personalization/experience-api) is the core REST API that powers all personalization. It manages visitor profiles, evaluates audiences, selects experience variants, and processes events. You can call it directly from any language or runtime.

**When to use**: If you need personalization outside of a JavaScript front-end. For example, in a mobile app, a server-side rendering pipeline, email personalization, or a custom backend integration.

## Node.js SDK

The [Node.js SDK](/personalization/node-sdk) provides helper functions for sending events to the Experience API from server-side code. It simplifies event formatting and batch operations.

**When to use**: If you need to send `track` or `identify` events from server-side processes such as webhooks, background jobs, or serverless functions, not for rendering personalized content.