The availability of features may depend on your plan type. Contact your Customer Success Manager if you have any questions.
Dev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubDev CommunityOptimizely AcademySubmit a ticketLog In
API Reference

DCP

Describes Dynamic Customer Profile (DCP) API functions

You can use the dcp APIs if both of the following conditions are true:

If either of the previous do not apply, then window.optimizely.get('dcp') returns undefined.

Syntax

dcp = window["optimizely"].get("dcp");

Parameters

Parameter and typeChild attributeDescription
dcp
string
N/ARequired.

Return value

Parameter and typeChild AttributeDescription
DCPObjectN/AN/A
getAttributeValue
function[getAttributeValue]
Child attribute of type DCPObject.This API function returns the visitor's value for a content-enabled profile attribute.
waitForAttributeValue
function[waitForAttributeValue]
Child attribute of type DCPObject.This API function returns a Promise that is resolved as soon as Web Experimentation receives the visitor's value for a content-enabled profile attribute.

Example call

dcp = window["optimizely"].get("dcp");

Example return value

dcp.getAttributeValue(attribute);
dcp.waitForAttributeValue(attribute);

getAttributeValue()

This API function returns the visitor's value for a content-enabled profile attribute.

Syntax

dcp.getAttributeValue(datasourceId, attributeId, attributeName);

Parameters

Parameter and typeChild attributeDescription
datasourceId
integer
N/ARequired.
attributeId
integer
N/ARequired if attributeName is not provided.
attributeName
string
N/ARequired if attributeId is not provided. Does not work if descriptive names are masked in the Web Experimentation snippet.

Return value

Parameter and typeChild attributeDescription
number or Boolean or string or ErrorN/AThe uploaded attribute value, or undefined if any of the following are true:
  • A customer profile still needs to be uploaded for the current user.
  • A profile has been uploaded but does not include the desired attribute.
  • The Web Experimentation snippet is waiting for fresh data from the DCP service.
This function throws an error if any of the following are true:
  • The specified attribute does not exist.
  • The attribute is not content-enabled.
  • The attribute is specified by name even though names are masked in the Web Experimentation snippet.

Example call

dcp.getAttributeValue(datasourceId, attributeId, attributeName);

Examples

Specify an attribute by ID

Get the value for a customer profile attribute.

var dcp = window.optimizely.get('dcp');
var attributeValue = dcp.getAttributeValue({
  datasourceId: 123,
  attributeId: 456
});

Specify an attribute by name

Get the value for a customer profile attribute.

var dcp = window.optimizely.get('dcp');
var attributeValue = dcp.getAttributeValue({
  datasourceId: 123,
  attributeName: 'Preferred Locale'
});

waitForAttributeValue()

This API function returns a Promise that is resolved as soon as Optimizely Web Experimentation receives the visitor's value for a content-enabled profile attribute.

Syntax

dcp.waitForAttributeValue(datasourceId, attributeId, attributeName);

Parameters

Parameter and typeChild attributeDescription
datasourceId
integer
N/ARequired.
attributeId
string
N/ARequired if attributeName is not provided.
attributeName
string
N/ARequired if attributeId is not provided. Does not work if descriptive names are masked in the Web Experimentation snippet.

Return value

Parameter and typeChild attributeDescription
Promise or ErrorN/AAn ES6-style Promise that is resolved with the uploaded attribute value, or with undefined if any of the following are true:
  • A customer profile still needs to be uploaded for the current user.
  • A profile has been uploaded, but it does not include the desired attribute.
If your campaign does not target a DCP Audience, then it is possible that profile data will not be fetched and the Promise will not be resolved.This function throws an error if any of the following are true:
  • The specified attribute does not exist.
  • The attribute is not content-enabled.
  • The attribute is specified by name even though names are masked in the Optimizely Web Experimentation snippet.

Example call

dcp.waitForAttributeValue(datasourceId, attributeId, attributeName);

Examples

Specify an attribute by ID

Receive the value for a customer profile attribute once it has been fetched from the DCP server.

var dcp = window.optimizely.get('dcp');
dcp.waitForAttributeValue({
  datasourceId: 123,
  attributeId: 456
}).then(
  function(attributeValue) {
    ...
  }
);

Specify an attribute by name

Receive the value for a customer profile attribute once it has been fetched from the DCP server.

var dcp = window.optimizely.get('dcp');
dcp.waitForAttributeValue({
  datasourceId: 123,
  attributeName: 'Preferred Locale'
}).then(
  function(attributeValue) {
    ...
  }
);