You can use the dcp
APIs if both of these conditions are true:
- Dynamic Customer Profiles is enabled for your account.
- One of your active and published experiments or campaigns includes an External Attribute audience condition.
If either of the above doesn't apply, then window.optimizely.get('dcp')
will return undefined
.
Syntax
dcp = window["optimizely"].get("dcp");
Parameters
Parameter and Type | Child Attribute | Description |
---|---|---|
dcp | Required. |
Return value
Parameter and Type | Child Attribute | Description |
---|---|---|
DCPObject | ||
getAttributeValue | Child attribute of type DCPObject | This API function returns the visitor's value for a content-enabled profile attribute. |
waitForAttributeValue | Child attribute of type DCPObject | This API function returns a Promise that will be resolved as soon as Optimizely 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 Type | Child Attribute | Description |
---|---|---|
datasourceId | Required. | |
attributeId | Required if | |
attributeName | Required if |
Return value
Parameter and Type | Child Attribute | Description |
---|---|---|
number or Boolean or string or Error | The uploaded attribute value, or Note that this function throws an error if any of the following are true: |
Example Call
dcp.getAttributeValue(datasourceId, attributeId, attributeName);
Examples
Specifying an attribute by ID
Get the value for a customer profile attribute.
Example code for specifying an attribute by ID
var dcp = window.optimizely.get('dcp');
var attributeValue = dcp.getAttributeValue({
datasourceId: 123,
attributeId: 456
});
Specifying an attribute by name
Get the value for a customer profile attribute.
Example code for specifying an attribute by name
var dcp = window.optimizely.get('dcp');
var attributeValue = dcp.getAttributeValue({
datasourceId: 123,
attributeName: 'Preferred Locale'
});
waitForAttributeValue()
This API function returns a Promise
that will be resolved as soon as Optimizely receives the visitor's value for a content-enabled profile attribute.
Syntax
dcp.waitForAttributeValue(datasourceId, attributeId, attributeName);
Parameters
Parameter and Type | Child Attribute | Description |
---|---|---|
datasourceId | Required. | |
attributeId | Required if | |
attributeName | Required if |
Return value
Parameter and Type | Child Attribute | Description |
---|---|---|
Promise or Error | An ES6-style Promise that will be resolved with the uploaded attribute value, or with If your campaign does not target a DCP Audience, then it's possible that profile data won't be fetched and the Promise will not be resolved. Note that this function throws an error if any of the following are true: |
Example Call
dcp.waitForAttributeValue(datasourceId, attributeId, attributeName);
Examples
Specifying an attribute by ID
Receive the value for a customer profile attribute once it has been fetched from the DCP server.
Example code for specifying an attribute by ID
var dcp = window.optimizely.get('dcp');
dcp.waitForAttributeValue({
datasourceId: 123,
attributeId: 456
}).then(
function(attributeValue) {
...
}
);
Specifying an attribute by name
Receive the value for a customer profile attribute once it has been fetched from the DCP server.
Example code for specifying an attribute by name
var dcp = window.optimizely.get('dcp');
dcp.waitForAttributeValue({
datasourceId: 123,
attributeName: 'Preferred Locale'
}).then(
function(attributeValue) {
...
}
);
Updated about 3 years ago