---
title: Connect for Campaign
slug: cms-12/docs/connect-for-campaign
docTags: 
createdAt: 2026-08-10T15:55:58.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\:ts_gDosy9QODH5DQ8lldE).

## Install

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

## Configure

### Authenticate Connect for Campaign

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 create a connector for Optimizely Campaign, go to **Addons** > **Connectors**, and click **Create**.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/L97jcG2-hNCH98WtKWRKF_d51afd8982002587df94af12f2b3b6152326eff2a3587781d709bef4e61a64f8-image.png)

To connect CMS with Optimizely Campaign, enter your authentication details.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/8tyIxcQ_svFanoXB95oN5_f04a3f7915adef2b335e7d06636dc92d7631b2263a27a6e97d91b91565b58629-image.png)

- **Connector Type** – Required. This is a dropdown menu where you can select the type of connector you want to add, in this case, "Episerver Campaign".
- **Connector Name** – Required. Enter a name for the connector.
- **Username** – Required. Enter the username necessary for connecting to the Episerver Campaign.
- **Password** – Required. Enter the password associated with the username for the Episerver Campaign connection.
- **Mandator ID** – Required. Enter the Mandator ID (this is your Campaign client ID), which is a unique identifier or account number needed for the connection.

:::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.

Enable or disable the autofill feature in the CMS admin view, under **Addons** > **Global Settings** > **Enable Auto-fill on forms**:

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/TYpxFalnawuKdxSBNpP8m_9789fbfa3f89dccf0878a07c09005822560abf71e5ab1b7a7384581cb9a493b4-image.png)

- **Enable Auto-fill on forms** – Select to automatically populate form fields with saved data, which can help speed up the process of filling out forms.
- **Hide form submission error** – Select to hide error messages that would normally appear when there is an issue with form submission. This might be used to prevent users from seeing certain error details.

### Clear the cache

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

Go to **Addons** > **Cache Setting**  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/WUBnV7kj5QrmmmsyoS7Am_68a510ea663b95c002c7f9395ae321f11c860a8aee9e3686b2c265bd7010ee45-image.png)

### Store tracking cookie

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

## Encrypt credentials

Credentials are encrypted and saved based on one of the following options:

- `MAICryptoKey` – AES encryption with an SHA256-computer hash, based on the value of the key.
  This key should be specified at the root level of the `appsettings.json` file with any string as its value.
- `machineKey` of the server.
  The `machineKey` encryption is used ONLY if `MAICryptoKey` is not specified. If you neglect to specify an `MAICryptoKey` in `appsettings.json`, the credentials are removed when the DXP instance is restarted
  because the `machineKey` is different and will fail to decrypt the credentials, so you must save credentials again through the configuration screen.

If the credentials are already encrypted using `machineKey` in an existing site, and the `MAICryptoKey` setting is added, then the credentials are deleted and must be re-entered.

:::hint{type="info"}
**Note**
The `MAICryptoKey` must be specified with the same value in ALL the DXP instances that are connected to the same database. If it is missing or the value is different in any of the instances, the credentials will be deleted and must be re-entered.
:::

## 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
