Item Configuration Setting
The setup of the Campaign Builder is currently not covered by a UI. We are working on this. Please take not that the setup might require some technical understanding and the use of a json formatter, such as this one: JSON Formatter & Validator
The object “Item Configuration Settings” keeps all configurations needed to run the Campaign Builder and is also allowing to define certain fields and their state to be shown based on conditions.
Please take note that the setting will need to be created manually if there is no record existing in your org yet.
App Launcher > Item Configuration Settings > New record
Tabs and Columns: [{"name":"Period","columns":[{"fieldpath":"ADvendio__from_Date__c"},{"fieldpath":"ADvendio__until_Date__c"},{"fieldpath":"ADvendio__LineDescription__c"}]},{"name":"Pricing","columns":[{"fieldpath":"ADvendio__Quantity__c"},{"fieldpath":"ADvendio__Frequency__c"},{"fieldpath":"ADvendio__Sales_Price__c"},{"fieldpath":"ADvendio__SurchargeSalesPrice__c"},{"fieldpath":"ADvendio__SurchargeSalesPricePct__c"},{"fieldpath":"ADvendio__Amount_B3__c"}]},{"name":"Surcharges","columns":[{"fieldpath":"advendio__amount_b3__c"},{"fieldpath":"advendio__surchargeb3__c"},{"fieldpath":"advendio__surchargeb3abs__c"},{"fieldpath":"advendio__amount_b2__c"},{"fieldpath":"advendio__surchargeb2__c"},{"fieldpath":"advendio__surchargeb2abs__c"},{"fieldpath":"advendio__amount__c"}]},{"name":"Discounts","columns":[{"fieldpath":"ADvendio__Quantity_Discount_custom__c"},{"fieldpath":"ADvendio__RateDiscount1AbsCustom__c"},{"fieldpath":"advendio__rate_discount_2_custom__c"},{"fieldpath":"advendio__ratediscount2abscustom__c"},{"fieldpath":"advendio__rate_discount_3_custom__c"},{"fieldpath":"advendio__ratediscount3abscustom__c"},{"fieldpath":"advendio__rate_discount_4_name__c"},{"fieldpath":"advendio__rate_discount_4__c"},{"fieldpath":"advendio__ratediscount4abscustom__c"},{"fieldpath":"advendio__amount_net__c"}]},{ "name":"Targeting", "columns":[ { "fieldpath":"targeting" } ] },{ "name":"Price Rules", "columns":[ { "fieldpath":"price_rules" } ] }]
Static Columns: ["name","advendio__billing_category__c","availability"]
Tab Rules: [{"readonlyFields":["advendio__sales_price__c"],"name":"Make Sales Price read only","logicalConnector":"AND","conditions":[{"value":"true","operator":"==","fieldpath":"user.isactive"}]},{"name":"Print products hide fields","logicalConnector":"AND","hiddenFields":["targeting"],"conditions":[{"value":"Print","operator":"==","fieldpath":"ADvendio__Ad_Price__r.ADvendio__Ad_Spec__r.ADvendio__Ad_Type__r.RecordType.DeveloperName"},{"value":"ADvendio","operator":"==","fieldpath":"ADvendio__Ad_Price__r.ADvendio__Ad_Spec__r.ADvendio__Ad_Type__r.RecordType.NamespacePrefix"}]},{"name":"Make targeting hidden in package headers","logicalConnector":"AND","hiddenFields":["targeting"],"conditions":[{"value":"Packet","operator":"==","fieldpath":"ADvendio__Ad_Price__r.ADvendio__Ad_Spec__r.RecordType.DeveloperName"},{"value":"ADvendio","operator":"==","fieldpath":"ADvendio__Ad_Price__r.ADvendio__Ad_Spec__r.ADvendio__Ad_Type__r.RecordType.NamespacePrefix"}]}]
Page Size: 40
The following information can be set in the Item Configuration Settings:
Tabs and Columns: set up which tabs and which fields per tab will be shown.
Static Columns: to define which fields should be shown as a part of every tab in the beginning.
Tab Rules: to define certain fields and their state to be shown based on conditions.
Page Size: to define pagination being used to handle big campaigns with a better overview. The number defines how many items will be shown per page (packages count as 1 item).
Adding special features
There are a few special fields which are needed to be added to enable certain Campaign builder features. For each of those, you need to add the code below in your Configuration settings. For example:
To add our Targeting component to the setup, you can simply enter the name “targeting” behind the fieldpath.
To add our Price Rule component to the setup, you can simply enter the name “price_rules” behind the fieldpath and so on.
Feature | Fieldpath |
---|---|
Targeting and Content | {"fieldpath":"targeting"} |
Availability check | {"fieldpath":"availability"} |
Price Rules | {"fieldpath":"price_rules"} |
Publication dates | {"fieldpath":"publication_dates" } |
Dates Range | {"fieldpath":"from_until" } |
Tabs and Columns
The code block below shows a short example of a possible tab and column setup value. The names define the tab names and the columns contain the field names of the relevant fields you would like to show. Please make sure to add the "fieldpath"
in front of every field you would like to add and take also note that the API name needs to be added for the fields.
[ { "name":"Tab 1", "columns":[ { "fieldpath":"ADvendio__from_Date__c" }, { "fieldpath":"ADvendio__until_Date__c" }, { "fieldpath":"ADvendio__Quantity__c" } ] }, { "name":"Tab 2", "columns":[ { "fieldpath":"targeting" } ] } ]
Static Columns
These define which static columns you would like to show as a part of every tab in the beginning.
The block below shows a short example of a possible static column value. You can add more fields by adding a comma after the last field and setting the API name framed in quotes.
["Name","ADvendio__Billing_Category__c"]
Page Size
Defines the number of records to be shown on a page. Package Items are considered as one record, regardless of the number of components. Please enter a number depending on your needs.
Tab Rules
The Tab Rules define if certain fields should be hidden under conditions or if certain fields should be shown as read-only or required under certain conditions.
The conditions will be connected with the logical Connector AND or OR.
Tab Rules Information
What information Tab Rule is containing:
Basis
name
conditions
subConditions
logicalConnector
subLogicalConnector
Field settings
readonlyFields
hiddenFields
requiredFields
allFieldsReadonly
applyRuleInChildItem
Action settings
hiddenActions
Tab Rules Fields
In which fields Tab Rule contains information:
Field | Required | Description | Example |
---|---|---|---|
| Yes | Field to evaluate | If it is a field from Campaign Item
If it is a field from current User, add the user. prefix
|
| Yes | The following operators are supported:
| equal: “ not equal: “ contains: “ does not contain: “ |
| Yes | Value to match |
|
| No | Reserved or internal use |
|
Currently the Campaign Builder manages some Tab Rules fixed in background, not available to be edited by the user to cover logic for linear packages.
Tab Rules Example
In the following example, we have one rule:
Hide Sales Price
with logicalConnector AND:
when the condition is met:
user.isactive
==
true
hide the following field:
advendio__sales_price__c
[ { "name": "Hide Sales Price", "logicalConnector": "AND", "conditions": [ { "fieldpath": "user.isactive", "operator": "==", "value": "true" } ], "hiddenFields": [ "advendio__sales_price__c" ] } ]
You can start the field path for the conditions either from the user object as in the example above or from the campaign item with the first relevant field, e.g. "advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c
Additional settings for Price Rules
Please take note that two new checkboxes were added to change settings for Price Rules:
The checkbox “Hide Apply Price Rules modal“ can be set to hide the modal which will be shown as a reminder that Price Rules will be applied while saving.
The checkbox “Display Apply Price Rules button“ is needed to be set to enable the Apply Price Rules button to be shown in the Campaign Builder.
Targeting Settings
If you want to hide specific targeting settings on the campaign builder, you need to modify the field: Targeting Settings, from the item configuration setting record (ICS*).
The Targeting Settings field will be used to hide the specified targetings on the campaign builder based on the defined conditions and logical connectors.
The Targeting Settings field input expects a JSON array (will be checked before saving).
Each element of the JSON string should use a structure similar to the one in the following example:
[{"name":"Make geo hidden", "logicalConnector":"AND", "targetings":["Geography"], "conditions":[{"value":"true","operator":"==","fieldpath":"user.isactive"}]}]
name: can be any text, used to describe and differentiate each targeting setting.
logicalConnector: can be only one of the following values: “AND“ or “OR“, this attribute is used to decide if each condition should be connected by an “AND“ or “OR” operator when evaluating.
targetings: a list of text values. It should contain the names of the targetings that you want to hide when the result of the evaluation of the conditions is true
The targetings names added to the targetings array should use the following names:
Connection
Content
Devices
AdServerExclusions
FrequencyCapping
PostalCodeTargeting
Geography
Inventory
DayTimeTargeting
VideoContent
VideoPositions
Industry
KeyValue
AudienceSegments
SelectedTargetingSet
SelectedTargetingGroup
AdvertisedBrands
Blackouts
conditions: an array of conditions, each element (condition) should have the following structure (currently there is no proper setting for hiding certain targetings by default, instead you will need to use a generic condition like the one on the example):
{"value":"true", "operator":"==", "fieldpath":"user.isactive"}
value: string, is the expected value that will be compared to the value of the field defined on fieldpath using the operator defined on operator.
operator: string, operator that will be used to compare the expected value (value) with the actual value (fieldpath). Possible operators:
Equals:
'=='
Not equals:
'!='
Contains:
'CONTAINS'
Not contains:
'NOTCONTAINS'
fieldpath: string with the fieldpath (starting from campaign item) of the field that needs to be compared to the expected value (value), will be used to retrieve the value of the field from each campaign item.
Error Handling in Item Configuration Setting
When there is an error in one of the field values due to a wrong JSON you will get an error while saving. Errors are shown with the message: “Please check the json structure.”. If this is happening please check if the values you entered are valid following an online JSON formatter as mentioned above.