Store customer-specific fields

In this section, you learn how to store customer-specific fields for individual clients or groups in MYOC.

General

MYOC offers you the possibility to store customer-specific fields for a client or a group. This means that text fields, date fields, dropdown elements and also calculated fields can be output exclusively for one client or one group. When you create a new campaign, these customer-specific fields are automatically displayed. Customer-specific fields can be stored at variant-, media plan groups-, placement- and advertising media level.

Groups and clients are located in the mask "Clients" and are differentiated exclusively by type.

Important: If you make a change in the customer-specific fields for a client or group, this is only transferred to newly created campaigns. In old campaigns, even if new variants or placements are created, the old customer-specific fields remain.

Important: To ensure that the fields always contain up-to-date calculated values, elements in drop-down menus etc., the contents of customer-specific fields are always emptied when importing a variant or version into a new campaign.

Create customer-specific fields

To open the mask "Clients", search for "Clients" via the search element in the left navigation bar.

Tip: You can fix the mask in your home menu using the pin at the upper right edge, so that you don't have to search for it when you call it up again, but it will be displayed in the home menu by default.

In the displayed mask you can see all agency groups, agencies, groups and customers which you have the authorization for. By means of the type, you can see which element is involved.

HAGT = agency group
AGT = agency
KONZ = group
WT = client

Using the search window, you can search for the desired entry for which customer-specific fields are to be stored.

Important: Please always pay attention to the corresponding type of the element.

Click on the line to open the mask for the desired element.

First switch to the tab "Customer-specific-fields". Then click on "Create specific field" in the lower menu bar.

Important: Do not click on the "New" button. No customer-specific fields can be created using this button!

In the pop-up window that opens, you can now store a customer-specific field, that will later be automatically available to the planner.

The following elements must be added as mandatory fields:

  • Name - Define the name for the field, which should be displayed in front of the field as a label.
  • Identifier - Specify a technical name for the field. This name is not displayed in the interface, but can be used for evaluations. The identifier is also used for field identification within calculations. Please note that the identifier must always be explicit. If the identifier is not entered, it is automatically created based on the name.
  • TypeID - Specify which field type you want to use:
    String  It should be a text field
    Template  It should be a name template    
    Integer  It should be a number field
    Prozent  It should be a number field in percent
    Date  It should be a date field
    Combobox  It should be a selection field with fixed entries
    Berechnung  It should be a calculated field
    Währung  It should be a currency field
  • usageFor - Specify whether the field is to be displayed at variant-, media planning group-, placement- or ad media level.
  • AllowedValues - You must fill this field if you have selected "Combobox" as typeID. Here you can specify the individual entries within the selection field. Please separate the individual entries with a vertical line ("|").
  • CalculationFormula - You must fill in this field if you have selected "Calculation" as typeID. The formula for the calculation is then inserted here accordingly. To create formula, see 1.3.3.
  • Mandatory -  Specify whether the field should be marked as mandatory.
  • Visible - Specify whether the field should be visible to the user. If it is not visible, it can still be used as an auxiliary field, for example, for interim invoices..

Afterwards please save the entry using the orange "Save" button at the bottom right and close the window.

Note: The entry on the overview page only becomes visible after switching between 2 tabs!

You now have the option of creating further customer-specific fields in the same way.

If you have created several customer-specific fields in one area, you can determine the order in which the fields are to be displayed later in the overview page. To do this, simply drag the individual rows of the customer-specific fields via Drag&Drop into the correct order.

Important: If calculated customer-specific fields use other customer-specific fields, it is necessary that these are located prior to the calculated field in the SortOrder. The SortOrder sets itself automatically when you drag the fields into the correct order using Drag&Drop.

Create calculated customer-specific fields

MYOC offers the possibility to automatically calculate contents in customer-specific fields using the field type "Calculation". The calculation can consist of a mathematical formula, a logical condition, a string concatenation or a mapping. This is explained below.

Mathematical formulas

Mathematical formulas within calculated customer-specific fields can contain integer or float numbers and support all standard operators:

  • Addition +
  • Subtraction -
  • Division /
  • Multiplication *
  • Modulus %

Examples of mathematical formulas:

  • #{placement.clientCost} * #{faktor} multiplies the customer costs by a customer-specific field with the identifier "factor"
  • #{varFaktor}+#{variant.clientNet} adds a value from a customer-specific field with the identification "varFaktor" to the customer net summed up on variant level.

Logical conditions

Logical conditions can be implemented using the function ifElse. This function contains 3 elements each: A condition to be checked, a result in the positive case and a result in the negative case.

With logical conditions, the condition to be checked is entered first, followed by the positive and negative result. Make sure that a comma follows the condition and the positive result each.

Important: The second and third element can contain numbers as well as other expressions of any kind. However, they must not contain commas!

The following operators are possible for logical conditions:

  • Equal ==
  • Unequal !=
  • Less <
  • Less or equal <=
  • Greater >
  • Greater or equal >=

Additionally, several expressions can be combined by using the logical operators

  • And    &&
  • Or ||
  • Not     !

Examples for logical conditions:

  • ifElse(1>2, 1, 0) would return 0
  • ifElse(1==1, ‘true‘, ‘false‘) would return true as string
  • ifElse(#{IntVariable} == 1, 2+2, 1+1) would return 4 (the result of 2+2) if the value of #{IntVariable} is 1, and 2 (the result of 1+1) if #{IntVariable} is unequal 1.

IMPORTANT: The JEval Library was implemented to convert the calculated customer-specific fields. JEval works case sensitive (upper and lower case is important). The user must therefore carefully pay attention to the correct spelling of the expressions. "ifelse", "Ifelse" etc. are not accepted by JEval as valid function names. Only "ifElse" works.

If the matching of strings is to be tested, the variables must be set in inverted commas.

Example:

ifElse(‘#{StringVariable}’ == ‘something’, ‘yes’, ‘no’) will work

ifElse(#{StringVariable} == ‘something’, ‘yes’, ‘no’) will not work

For simplicity, the function uses the Price Type ID label for conditions based on the pricing model. This means:

„tkp“ = TKP, Low TKP und vTKP

„fixedprice“ = All fixed-price price models

„cpc“ = CPC und vCPC

„cpx“ = CPA

„cpl“ = CPL

„cpv“ = CPV und CPCV

„cpe“ = CPE

„cpo“ = CPO

String chaining

In the context of string chaining, several strings can be connected by using the +- operators. Both fixed terms and elements from MYOC (see > Available fields) as well as customer-specific fields can be used as strings.

Strings must be output with individual apostrophes such as 'Example'. The same applies to variable contents from customer-specific fields.

‘#{ StringVariable }‘ will work

#{ StringVariable } will not work

Examples:

  • ‚String1‘+‘String2‘+‘String3‘ would result String1String2String3.
  • #{ StringVariable }‘ + ‘2’ + ‘#{ IntVariable }’ would result string21 in case the element StringVariable returns string and the value of IntVariable is 1.

Mapping

To map one or more values of a field or condition to another value, the function "map" has been implemented. The function can be used with a variable number of conditions, but at least 2 conditions are required.

Example:

map(‘#{string_field}’, ‘value1=result1’, ‘value2 or value3=result2’)

In this case the function will return result1 if the value of the field "string_field" is value1 or result 2 in case the value is either value1 or value2.

Use the notation with inverted commas if the field that makes up the first argument is a string. If it is a number, the inverted commas can also be omitted.

Example:

map(#{int_field}, ‘value1=result1’, ‘value2 or value3=result2’)

In this case int_field is a customer-specific field with a number as value.

If there is no value for the mapping, the function returns an error.

Further examples:

  • map('#{camp_location}', 'East=E', 'Nord=N', 'South=S', 'West=W')  
  • map(#{int_value} + 2, '24=WINN', '25=N', '26=S')
  • The value from the first argument is calculated and compared to the corresponding conditions. If the value in the int_value field is 22, the function returns WINN, etc.
  • map('#{camp_location}', 'East or Sud or South=SES', 'West or Nord=WN') Maps various values from the camp_location field to one value. Thus, regardless of whether camp_location contains west or north, WN is returned.  

Date calculations

With the function "dateAdd", calculations can be calculated depending on date values. The basic operators for addition and subtraction can be used for this. The function contains 2 arguments each, which can be a date or a number.

Example of usage:

  • dateAdd(’09.09.2016’, 3) means 3 days are to be added to September 9, so that September 12 is issued.
  • Subtraction is used by using negative numbers. dateAdd('09.09.2016', -5) would return September 4th as the result.

Use of values from Performance Steps

For calculations in formulas and/or logical conditions the volume as well as the average client price can also be used. To use the elements, please use the following tag:

<level>.step[<funnelTypeName>].<fieldname>

  • Level:
    Variant level  = „variant“
    Placement level = „placement“.
  • Funnel Type name:
    Type of the corresponding funnel step (available types: "impressions", "clicks", "views", "leads", "engagements", "order")
  • Fieldname:
    Volume = „volume“
    Average client price = „averagePrice“

Examples:

  • Volume from the impression step on the placement:
    #{placement.step[impressions].volume}
  • Average customer price on the clicks-step on the placement:
    #{placement.step[clicks]. averagePrice}
  • Volume of the impression step on the variant:
    #{variant.step[impressions]. volume}

Available inventory fields from MYOC

On the 4 different levels, different fields are available for use in formulas. Please use the given tag for each field in your formula.

Important: Elements that contain text must always be output in inverted commas. The inverted commas are output with the specified tags and must be included in the formula accordingly.  No further inverted commas may be used here.

Variant level

Field Tag
Campaign name '#{campaign.name}'
Campaign number '#{campaign.number}'
Client '#{campaign.client}'
Product '#{campaign.product}'
Standard ad server
'#{campaign.adServer}'
Currency (ISO Code)
'#{campaign.currencyISOCode}'
Standard landing page 
'#{campaign.standardLandingPage}'
Variant name
'#{variant.name}'
Start date variant
'#{variant.durationFrom}'
End date variant
'#{variant.durationUntil}'
Total volume (of all placements)
#{variant.volume}
Client budget #{variant.clientBudget}
Gross (client) total
#{variant.clientGross}
Net (client) total  #{variant.clientNet}
Net/Net (client) total
#{variant.clientNet2}
Net/Net/Net (client) total
#{variant.clientNet3}
Client costs total #{variant.clientRate}

Media plan group level

Field Tag
Campaign name '#{campaign.name}'
Campaign number '#{campaign.number}'
Client '#{campaign.client}'
Product '#{campaign.product}'
Standard ad server '#{campaign.adServer}'
Currency (ISO Code)
'#{campaign.currencyISOCode}'
Standard landing page
'#{campaign.standardLandingPage}'
Variant name '#{variant.name}'
Start date variant
'#{variant.durationFrom}'
End date variant '#{variant.durationUntil}'
Total volume (all placements of MPL-group)
#{mpg.volume}
Client budget #{variant.clientBudget}
Gross (client) total (all placements of MPL-group)
#{mpg.clientGross}
Net (client) total (all placements of MPL-group)
#{mpg.clientNet}
Net/Net (client) total (all placements of MPL-group)
#{mpg.clientNet2}
Net/Net/Net (client) total (all placements of MPL-group)
#{mpg.clientNet3}
Client costs total (all placements of MPL-group)
#{mpg.clientRate}
Total volume of variant #{variant.volume}
Gross (client) of variant #{variant.clientGross}
Net (client) of variant
#{variant.clientNet}
Net/Net (client) of variant
#{variant.clientNet2}
Net/Net/Net (client) of variant
#{variant.clientNet3}
Client costs of variant #{variant.clientRate}

Placement level

Field Tag
Volume #{placement.volume}
Gross (client) #{placement.grossClientSumOverall}
Net (client) #{placement.clientNettoCost}
Net/Net (client)
#{placement.client2NettoCost}
Net/Net/Net (client)
#{placement.client3NettoCost}
Clients costs #{placement.clientCost}
Start date placement
'#{placement.validFrom}'
End date placement '#{placement.validUntil}'
Price per unit (tariff)
#{placement.tariffPricePerUnit}
Targeting price (tariff)
#{placement.tariffTargetingPrice}
FC price (tariff)
#{placement.tariffFCPrice}
Price per unit (client)
#{placement.clientPricePerUnit}
Targeting price (client)
#{placement.clientTargetingPrice}
FC price (client)
#{placement.clientFCPrice}
Agency fee (%)
#{placement.agencyFee}
Agency fee (value)
#{placement.agencyFeeVal}
Special fee (%)
#{placement.specialFee}
Special fee (value)
#{placement.specialFeeVal}
Price type
'#{placement.priceType}'
Campaign name '#{placement.campaignName}'
Campaign number '#{placement.campaignNumber}'
Client '#{placement.client}'
Product '#{placement.product}'
Standard ad server
'#{placement.adserver}'
Currency (ISO Code)
'#{placement.currency}'
Standard landing page
'#{placement.landingPage}'
Variant name
'#{placement.variantName}'
Start date variant
'#{placement.variantFrom}'
End date variant
'#{placement.variantUntil}'
Type '#{placement.mediaType}'
Order type '#{placement.orderType}'
Order designation '#{placement.orderSubType}'
Media plan group
'#{placement.mediaPlanGroup}'
Publisher '#{placement.publisher}'
Advertising medium '#{placement.site}'
Booking unit '#{placement.channel}'
File type (HTML/Flash)
'#{placement.fileType}'
Advertising material (for combined advertising of the mother)
'#{placement.adFormat}'
Targeting(s)
'#{placement.targeting}'

    Advertising level

Field Tag
Campaign name
'#{campaign.name}'
Campaign number '#{campaign.number}'
Client '#{campaign.client}'
Product '#{campaign.product}'
Standard ad server
'#{campaign.adServer}'
Currency (ISO Code)
'#{campaign.currencyISOCode}'
Standard landing page
'#{campaign.standardLandingPage}'
Variant name '#{ variant.name}'
Start date variant
'#{ variant.durationFrom}'
End date variant '#{ variant.durationUntil}'
Total volume (all placements of MPL-group)
#{mpg.volume}
Client budget #{variant.clientBudget}
Gross (client) total (all placements of MPL-group)
#{mpg.clientGross}
Net (client) total (all placements of MPL-group)
#{mpg.clientNet}
Net/Net (client) total (all placements of MPL-group)
#{mpg.clientNet2}
Net/Net/Net (client) total (all placements of MPL-group)
#{mpg.clientNet3}
Total client costs (all placements of MPL-group)
#{mpg.clientRate}
Total volume of variant #{variant.volume}
Gross (client) total of variant
#{variant.clientGross}
Net (client) total of variant
#{variant.clientNet}
Net/Net (client) total of variant
#{variant.clientNet2}
Net/Net/Net (client) total of variant
#{variant.clientNet3}
Total client costs of variant #{variant.clientRate}
Volume #{placement.volume}
Gross (client) #{placement.grossClientSumOverall}
Net (client) #{placement.clientNettoCost}
Net/Net (client)
#{placement.client2NettoCost}
Net/Net/Net (client)
#{placement.client3NettoCost}
Client costs #{placement.clientCost}
Start date placement
'#{placement.validFrom}'
End date placement '#{placement.validUntil}'
Price per unit (tariff)
#{placement.tariffPricePerUnit}
Targeting price (tariff)
#{placement.tariffTargetingPrice}
FC price (tariff)
#{placement.tariffFCPrice}
Price per unit (client)
#{placement.clientPricePerUnit}
Targeting price (client)
#{placement.clientTargetingPrice}
FC price (client)
#{placement.clientFCPrice}
Agency fee (%)
#{placement.agencyFee}
Agency fee (value)
#{placement.agencyFeeVal}
Specal fee (%)
#{placement.specialFee}
Special fee (value)
#{placement.specialFeeVal}
Price type '#{placement.priceType}'
Type '#{placement.mediaType}'
Order type '#{placement.orderType}'
Order designation '#{placement.orderSubType}'
Media plan group
'#{placement.mediaPlanGroup}'
Publisher '#{placement.publisher}'
Advertising medium '#{placement.site}'
Booking unit '#{placement.channel}'
File type (HTML/Flash)
'#{placement.fileType}'
Advertising media (for combined advertising media of the mother)
'#{placement.adFormat}'
Targeting(s)
'#{placement.targeting}'

Use of customer-specific fields  

In addition to the standard fields available in MYOC, customer-specific fields can also be used in formulas or logical conditions.

Customer-specific fields in formulas or logical conditions are specified as following: #{identifier}. All customer-specific fields can be used at variant-, media planning group-, placement- and ad media level. However, there are some rules to be paid attention to:

  1. All customer-specific fields of variant-, media plan groups- and placement level are available in calculated customer-specific fields (Dyn. KPIs) on placement level. If the calculated customer-specific field is at media planning group level, all fields at variant- and media planning group level are available. For fields at variant level, only fields at variant level are available. At ad media level, all customer-specific fields from all levels can be used.
  2. If there are customer-specific fields with the same identifier at several levels, the field at the lowest level is used for calculation.
  3. Customer-specific fields to be used in formulas must not contain the following characters: None of the possible operators (+, -, /, *, %, =,!,<,>,&,|), periods, brackets of any kind, #, ~, ^.

For customer-specific fields that consist purely of numbers (integer, number, currency, possibly calculation) at placement level, there is also the option of displaying them in summarized form at variant or media planning group level. For this purpose, add identifier [mpg] at media plan group level and identifier [var] at variant level.

Example:

There is a customer-specific field "plcmField" at placement level, which is to be multiplied by the customer budget as a total at variant level. The formula for this would be as below:
#{plcmField[var]}* #{variant.clientBudget}

 

Editing Entries

If you want to edit an entry, open the entry by double-clicking on the corresponding table line. You can now make the changes you want in the entry itself. Then save the changed entry by clicking the "Save" button at the bottom right.

Deleting Entries

If an entry has been made incorrectly, it is possible to delete it.

To do this, open the entry by double-clicking on the table line. In the entry itself, open the context menu by clicking on the right button of your mouse. Then select "Delete record". You will then receive a confirmation of the deletion process.