---
title: Connect for Campaign
slug: cms-11/dev-docs/connect-for-campaign
docTags: 
createdAt: 2026-07-22T19:45:18.000Z
---

With this add-on, marketers can collect visitor data and pass that on to Optimizely Campaign, for usage in campaign mailings.

## Prerequisites

An Optimizely Content Management System (CMS) installation with Optimizely Forms, Optimizely Campaign, and the required [Optimizely Connect for Marketing Automation](docId\:V1RAjPIyOupABDcYTiJqi).

## Install

Install the **Connect for Campaign MA connector** through the NuGet package [EPiServer.ConnectForCampaign](http://nuget.episerver.com/package?id=EPiServer.ConnectForCampaign). See [Add-ons platform compatibility](docId\:bXYbY3IauDz9fts3sKR_c) for supported Optimizely versions.

## Configure

### Authenticate Connect for Campaign

**Prerequisites**

- The user being used for the connector must have API privileges. If your user does not have API access privileges, you must submit a Support ticket to create a user specifically for API access. Include the name of the client for whom you want the user created, and which API access is needed. In the case of the Connector, request SOAP API access. For security purposes, the user being granted access cannot be the same as a user with general access rights to the client.
- To find the Mandator ID (Client ID), access your Campaign client at the location below:
  ![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/mU_DldwSXqT2JOFMV_Cy6-20260722-194643.png "ma-connector-mandator-id.png")
  To connect CMS with Optimizely Campaign, enter your authentication details  – **Username**, **Password,** **Mandator ID** (provided with your Optimizely Campaign setup), and a unique **Connector Name**, in the CMS admin view under **CMS** > **Admin** > **Config** > **Optimizely Campaign**.
  ![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/nSUEMIkOUTAfIICQ2FMXA-20260722-194643.png "connect-for-campaign.png")

:::hint{type="info"}
**Note**
You can have multiple instances of the Campaign connector. Click **Add Connector** to add another instance.
:::

### Connect Optimizely Forms with Optimizely Campaign

When the Optimizely Forms add-on is installed on the CMS website, you must connect form fields with Optimizely Campaign to send data from the specified fields to Campaign.

### Autofill

When a website visitor submits a form, a tracking cookie is generated, which can be used to identify the visitor. If the visitor opens the form again in the same web browser (assuming it still has the cookie and it is valid), the system automatically gets the visitor's data based on the cookie. It fills in the data in the form.

This autofill feature can be  enabled and disabled in the CMS admin view, under **Config** > **Tool Settings** >  **Marketing Connectors**> **Global Settings** > **Enable Auto-fill on forms**:
![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/fmIKquvf9Ezya1r8sjW2l-20260722-194643.png "enable-autofill-on-forms.png")

### Clear the cache

Information, such as Session Token and Recipient Lists, is stored in the cache to improve performance.

Go to the **Config** tab > **Optimizely Campaign** in the CMS admin view and click **Clear cache**to clear the cache. You can also set the Cache timeout value and click **Save**.
![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/HEraOt9wUwhm-Ba0lbIEF-20260722-194643.png "clearcache.png")

### Store tracking cookie

When a website visitor submits a form, a tracking cookie is generated, which can be used to identify the visitor.

## Breaking changes – Connect for Campaign 2

`EPiServer.ConnectForCampaign` (2.0.0) depends on:

- `EPiServer.CMS.UI.Core` version >= 11.2.4 and \< 12
- `EPiServer.Marketing.Automation.Forms` version >= 2.1.0 and \< 3
- `EPiServer.ConnectForMarketingAutomation` version >= 5.2.0 and \< 6
- `EPiServer.Forms.UI` version >= 4.16 and \< 5

**Interfaces and classes removed:**

- `EPiServer.ConnectForCampaign.Core.Implementation.IRecipientListIdMapper.cs`
- `EPiServer.ConnectForCampaign.Core.Implementation.RecipientListIdMapper.cs`
- `EPiServer.ConnectForCampaign.Core.Implementation.IVisitorIdentifyProvider.cs`
- `EPiServer.ConnectForCampaign.Core.Implementation.VisitorIdentifyProvider.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services.CampaignDataSubmissionService.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services.CampaignFormValidationService.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services.CampaignMenuAssembler.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services.CampaignProviderService.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services.CampaignSettingsRepository.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services`
- `CampaignXFormMarketingAutomationInterception.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services.ListService.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services.ProfileService.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services.ProgramService.cs`
- `EPiServer.ConnectForCampaign.Implementation.Services.ScoringService.cs`
- `EPiServer.ConnectForCampaign.Implementation.CampaignProvider.cs`
- `EPiServer.ConnectForCampaign.Implementation.ProviderRepository.cs`

**Properties, methods, constants removed/changed:**

- `EPiServer.ConnectForCampaign.Core.Configuration.ICampaignConfig.CacheTimeout`
- `EPiServer.ConnectForCampaign.Implementation.Configuration.CampaignConfig.CacheTimeout`
- `EPiServer.ConnectForCampaign.Core.Models.CampaignDataList.ParentName`
- `EPiServer.ConnectForCampaign.Core.Models.CampaignDataList.FeatureSupport`
- `EPiServer.ConnectForCampaign.Implementation.Configuration.CampaignSettings.Id`
- `EPiServer.ConnectForCampaign.Implementation.Helpers.FullFormSubmissionData`
- `EPiServer.ConnectForCampaign.Implementation.Helpers.ActiveExternalFieldMappingTable`
- `EPiServer.ConnectForCampaign.Implementation.Helpers.ServiceValidationMessage`
- `EPiServer.ConnectForCampaign.Implementation.Helpers.RecipientIdentification`
- `EPiServer.ConnectForCampaign.Implementation.Helpers.RecipientListId`
- `EPiServer.ConnectForCampaign.Implementation.Helpers.OptInProcessId`
- `EPiServer.ConnectForCampaign.Services.Implementation.AuthenticationService.ctor()`
- `EPiServer.ConnectForCampaign.Services.Implementation.OptinProcessService.ctor()`
- `EPiServer.ConnectForCampaign.Services.Implementation.RecipientListService.ctor()`
- `EPiServer.ConnectForCampaign.Services.Implementation.RecipientService.ctor()`

**Other**

- Change the type of the Id property in `EPiServer.ConnectForCampaign.Core.Models.CampaignDataList.cs` from "int" to "long".
- Change return type of `EPiServer.ConnectForCampaign.Services.Implementation.GetAllRecipientLists()` to `IEnumerable<CampaignDataList>`.

## Breaking changes – Connect for Campaign 3

`EPiServer.ConnectForCampaign` (3.0.0) depends on:

- \`EPiServer.CMS.UI.Core version >= 11.2.4 and \< 12
- `Optimizely.Marketing.Automation.Forms` version >= 2.1.0 and \< 3
- `EPiServer.ConnectForMarketingAutomation` version >= 5.5.3 and \< 5.7
- `EPiServer.Forms.UI` version >= 4.20 and \< 5

**Properties, methods, constants removed/changed:**

- `EPiServer.ConnectForCampaign.Core.Configuration.ICampaignConfig.TrackingCookieTimeout`
- `EPiServer.ConnectForCampaign.Implementation.Configuration.CampaignConfig.TrackingCookieTimeout`
- `EPiServer.ConnectForCampaign.Core.Configuration. ICampaignSettings.UserName`
- `EPiServer.ConnectForCampaign.Core.Configuration.ICampaignSettings.Password`
- `EPiServer.ConnectForCampaign.Core.Configuration.ICampaignSettings.MandatorId`
- `EPiServer.ConnectForCampaign.Implementation.Configuration.CampaignSettings.UserName`
- `EPiServer.ConnectForCampaign.Implementation.Configuration.CampaignSettings.Password`
- `EPiServer.ConnectForCampaign.Implementation.Configuration.CampaignSettings.MandatorId`

## Breaking changes – Connect for Campaign 4.1.0

`EPiServer.ConnectForCampaign` (4.1.0) depends on:

- `EPiServer.CMS` version >= 12.15.0 and \< 13
- `Optimizely.Marketing.Automation.Forms` version >= 3.2.0 and \< 4

**Properties, methods, constants, classes removed/changed:**

- `EPiServer.ConnectForCampaign.Implementation.Helpers.Constants.UserNameFieldKey`
- `EPiServer.ConnectForCampaign.Implementation.Helpers.Constants.PasswordFieldKey`
- `EPiServer.ConnectForCampaign.Implementation.Helpers.Constants.MandatorIdFieldKey`
- `EPiServer.ConnectForCampaign.Services.Implementation.OptinProcessService`
- `EPiServer.ConnectForCampaign.Services.Implementation.RecipientListService`
- `EPiServer.ConnectForCampaign.Services.Implementation.RecipientService`

**Obsoleted classes and interfaces**

- `EPiServer.ConnectForCampaign.Services.Implementation.AuthenticationService.cs`
- `EPiServer.ConnectForCampaign.Services.Implementation.IAuthenticationService.cs`
- `EPiServer.ConnectForCampaign.Services.IServiceClientFactory.cs`
- `EPiServer.ConnectForCampaign.Services.ServiceClientFactory.cs`

**Other**

- Change from using campaign SOAP API service to REST API

## Breaking changes – Connect for Campaign 4.2.0

### Configure options through appsettings

`Campaign.config` was migrated to `appsettings.json`. From version 4.2.0 onward, `appsettings.json` stores the configuration.

To use the new configuration, add a `CampaignConnectorOptions` section your `appsettings.json` like the following example.

```json
"EPiServer": {
    "CampaignConnectorOptions": {
      "ForceUpdateRecipient": false
    }
  }
```

**Related blog post**: [Configuring the Episerver (Optimizely) Campaign connector through code](https://www.david-tec.com/2018/04/configuring-the-episerver-campaign-connector-through-code/) by David Knipe
