# Targeting



# Targeting

*Targeting* makes it possible to optimise the performance of a campaign by tailoring the delivery of a campaign to a visitor's profile - where relevance is key - or to other relevant parameters. Adhese enables targeting based on both standard and adjusted parameters. You can use each request parameter as a targeting variable. Multiple targeting variables can be used in combination.

During the implementation process of your Adhese account, you will need to consider which variables or parameters you would like to use for targeting purposes. You can add additional parameters to your account at any time.

A request can have targeting parameters at three different levels:

1. as a parameter in the request itself,
2. as a value in the cookie, or
3. as a value at the server (identification will happen through a unique key or session).

A request can combine the above three methods.

<p class="callout danger">**GDPR:** Remember that the unique identification of visitors and storing personal and other data is subject to national, European and international legislation. It is the **exclusive responsibility** of the publisher to comply with the law and adequately notify the user of its rights. Adhese can help and advise publishers herein. More on user privacy is available in [the GDPR section](https://documentation.adhese.org/books/adhese-setup-and-implementation/page/user-privacy-and-gdpr#bkmrk-gdpr) of the documentation.</p>

<p class="callout info">**Relationship between targets:** Targets values from different target types have an AND relation, while values within the same type have an OR relationship. To create an AND relationship between targets of the same type, make an additional target value in the admin screen that includes both target codes (first\_target&amp;second\_target). The same can be done for negative targets (!first\_target&amp;!second\_target).</p>

<p class="callout danger">**New targets &amp; forecasting:** New targets lack forecast data and are therefore best used in combination with the SOV setting. When used with the auto setting, the system will try to calculate an estimated share. With many competing bookings on that same target, however, it is likely that only some bookings will receive a share. The other bookings will only start delivering once forecast data is available, which can take up to two weeks.</p>

## Managing Targets

{{@256}}

### Target Tags

{{@274}}

### Negative targeting

As explained in the introduction on this page, you can use a request parameter as a targeting variable. You can also reverse this logic by using a parameter to exclude bookings targeted by it. For instance, a negative target could be 'all countries except Belgium'.

### Joining targets and negative targets

You can join two targets values in an AND relation by creating a combined target with '&amp;'. To do so, follow these steps:

1. Make sure both target values already exist within the relevant target type (ex. "code1" and "code2")
2. Create a new target value, give it a name and join the two target codes with &amp; (ex. "code1&amp;code2")
3. You can now select the combined target in the target type in the booking header screen. When selecting the combined target, both values (code1 AND code2) will need to be present for the booking to be delivered

You can also exclude delivery when a certain value is present by creating a negative target value with '!'. To do so, follow these steps:

1. Make sure a positive target value already exists within the relevant target value (ex. "code1")
2. Create a new target value, give it a name (ex. Not Code1) and exclude the value with ! (ex."!code1")
3. You can now select the negative target value within the target type in the booking header screen. When selecting the negative target value, the booking will not be delivered if the excluded value is present

Combined targets and negative targets can also be combined. If you want to deliver on a broad target within a target type, but you want to make sure you exclude a certain value, you can join the positive target value with a negative one:

- For example: You want to deliver on code, which includes code1, code2 and code3, but you want to exclude code 2. You can join the targets like this: '!code2&amp;code'[![Schermafdruk van 2024-10-01 17-01-11.png](https://documentation.adhese.org/uploads/images/gallery/2024-10/scaled-1680-/qQbwusc8AnoUhOPd-schermafdruk-van-2024-10-01-17-01-11.png)](https://documentation.adhese.org/uploads/images/gallery/2024-10/qQbwusc8AnoUhOPd-schermafdruk-van-2024-10-01-17-01-11.png)

<p class="callout info">Note that when combining a negative with a positive target value, '!' must be the first character.</p>

## Targeting options

#### Contextual targeting

Contextual targeting ensures that a booking is relevant to the content of the website. The text of a website is scanned for **content keywords**, **article tags**, or **topics**. Bookings targeted on those keywords are subsequently returned to the website. For example, if a visitor is reading a movie review, Adhese can show a booking from a nearby movie theatre that is playing the same movie. This targeting method is custom-implemented per client.

#### External data sources

Adhese can also take **external data** sources into account when targeting. Variables such as stock indexes, product inventory, and weather can be used. Imagine an advertiser who sells tyres. They could change the content of the creative based on a weather forecast for the visitor's location. This targeting method is custom-implemented per client.

#### Competitive exclusions

Campaign variables can be used to ensure that certain bookings are not served together simultaneously. This feature is similar to our delivery multiples solution, but it is relevant to the campaign level.

For instance, you can opt not to deliver bookings from the same client or two competitor companies, such as car manufacturers, at the same time. If you are interested in this custom feature, please [contact us](https://documentation.adhese.org/books/introduction/page/adhese-support).

#### More targeting options

To learn more about the various targeting options in Adhese, consult the following pages:

- [Brand Targeting](https://documentation.adhese.org/books/inventory-management/page/user-agent-targeting)
- [Behavioural Targeting](https://documentation.adhese.org/books/inventory-management/page/behavioural-targeting)
- [Retargeting](https://documentation.adhese.org/books/inventory-management/page/retargeting)
- [Hierarchical Targeting](https://documentation.adhese.org/books/inventory-management/page/hierarchical-targeting)
- [Advanced Targeting](https://documentation.adhese.org/books/inventory-management/page/advanced-targeting)

# User Agent targeting

<p class="callout info">UA Targeting is a custom feature. Please [contact](https://documentation.adhese.org/books/introduction/page/adhese-support) support if you are interested in implementing one or more user agent targeting variables.</p>

<p class="callout info">UA Targeting in older accounts will still be called *Brand* targeting.</p>

User agent targeting enables you to target your audience by technical aspects, for example:

- Internet service providers, such as Telenet, Proximus, VodafoneZiggo or KPN;
- Browser, like Chrome, Safari, or Firefox;
- Brands like Apple or Samsung;
- Device, for example, a tablet, smartphone, or desktop;
- Operating systems, for instance, iOS, Android, Windows, Linux or macOS.

You can use UA Targeting to focus ad delivery on specific device types, but only when this information is available. For example, if you only want to deliver to computers and tablets, but not smartphones, tick the *Device - Desktop* and *Device - Tablet* boxes, but do **not** tick the *Device - Phone* box. See the screenshot below.

[![targeting2.png](https://documentation.adhese.org/uploads/images/gallery/2024-06/scaled-1680-/mevzLB3xn7bpYmBe-targeting2.png)](https://documentation.adhese.org/uploads/images/gallery/2024-06/mevzLB3xn7bpYmBe-targeting2.png)

# Behavioural Targeting

<p class="callout info">Behavioural targeting has become less relevant since the introduction of GDPR. This page is for reference only.</p>

**Behavioural targeting** allows a publisher to target ads to visitors who show a higher level of interest in a particular section of a publication (for example, sports or lifestyle).

Adhese tracks visitors' surfing behaviour to determine their interests. If a visitor shows interest in the sports section of an online newspaper, Adhese stores a 'sports' cookie in the visitor's browser. From then on, Adhese recognises this visitor as someone interested in sports. The visitor can then be targeted throughout your entire network with ads or content related to sports. The behavioural cookie expires after 30 days. This targeting method is custom-implemented per client.

The *Behavioural targets* screen shows the ID and the name of the behavioural target.

[![Schermafdruk van 2024-10-29 09-40-35.png](https://documentation.adhese.org/uploads/images/gallery/2024-10/scaled-1680-/DBSOiOAzYgU4dvc0-schermafdruk-van-2024-10-29-09-40-35.png)](https://documentation.adhese.org/uploads/images/gallery/2024-10/DBSOiOAzYgU4dvc0-schermafdruk-van-2024-10-29-09-40-35.png)

First, set up a new behavioural target:

1. Go to the *Administration* screen. Click *Admin* in the left navigation menu.
2. Click *Behavioural targets*.
3. Click the *Add new behavioural* button to add a new behavioural target. This opens the *Edit behavioural target* screen.
4. Enter a name in the **Name** field.
5. Enter **adttr** in the **Code** field. Follow adttr by the name of your choice, but choose a name that represents the behavioural target, for example, **adttrsport**.

<p class="callout danger">Do not use any punctuation.</p>

<p class="callout info">The use of **adttr** is obligatory. We ask this to maintain uniqueness and facilitate debugging.</p>

6. Select the new behavioural target locations from the *Available publications and locations* list by ticking the boxes. If you tick a box, the location appears in the adjacent list of *Locations in this behavioural target*.
7. Click the *Save behavioural targets* button to save the behavioural target.
8. Adhese will now add a cookie to all visitors to the selected locations. After a few weeks, there will be enough data to forecast the volume of the behavioural target.
9. The new target will be automatically available in the [Targets - Manage Targets section](https://documentation.adhese.org/books/adhese-ui/page/the-administration-screen#bkmrk-targets---manage-tar).

# Hierarchical Targeting

With **hierarchical targeting**, each different targeting group is given a priority, which allows a targeting group with the lowest volume to be given priority over other targeting groups.

<p class="callout warning">Hierarchical targeting is not compatible with channels. Bookings with hierarchical targets must be booked on individual positions.</p>

<p class="callout info">Hierarchical targeting is an option that is not included in the default Adhese set-ups. If you want to add this option, please contact [support](https://documentation.adhese.org/books/introduction/page/adhese-support).</p>

An example:

[![hierarchical_targeting1.png](https://documentation.adhese.org/uploads/images/gallery/2024-06/scaled-1680-/VNYeAd7KXwIfKXwU-hierarchical-targeting1.png)](https://documentation.adhese.org/uploads/images/gallery/2024-06/VNYeAd7KXwIfKXwU-hierarchical-targeting1.png)

There are three different target groups:

- Main category (for example, Electronics - green)
- Product group (for example, Computers - yellow)
- Super category (for instance, Laptops or Tablets or Monitors - red)

In the example above, bookings targeted at the **Super category** (red) take priority over bookings targeted at the **Product group** (yellow). Bookings targeted at the **Product group** (yellow) take priority over bookings targeted at the **Main category** (green).

It is possible to target both the **Product group** and **Super category** when making a booking. For example, if you target the **Super Categories** *Laptop* and *Tablets* and the **Product group** *Computers*, the *Laptop* and *Tablets* targets will receive the highest priority. All other targets under the **Super category** (such as *Monitors*) will also show the booking because they fall under the **Product group** *Computers*, but only if there is no competing booking targeted on that particular **Super category**.

When booking with the target **Main category** (*Electronics*), each **Product Group** (*Sound &amp; Vision, Mobile and Computers*) and all underlying **Super Category** sections can display the booking, but only if there is no competing booking targeted at a particular **Product Group** or **Super Category**.

# Advanced Targeting

<p class="callout info">Advanced Targeting is a feature that must be enabled and requires additional setup. Please <a href="(https://documentation.adhese.org/books/support/page/adhese-support">contact Support</a> if you would like to make use of this feature.</p>

<p class="callout warning">Targets that fall under advanced targeting do not contain forecast data. They are best used in combination with SOV delivery.</p>

## Introduction

Advanced targeting allows the Adhese instance admins to create complex targeting rules and save them with a label. Sales and Operations can select these targets when booking a campaign.

## Creating and Editing

To manage Advanced Targeting in Adhese, click on the *Advanced Targeting* link in the Administration screen. The following screen will appear:

[![advanced_targeting1.png](https://documentation.adhese.org/uploads/images/gallery/2024-06/scaled-1680-/kVO50XTewTk1c1Ia-advanced-targeting1.png)](https://documentation.adhese.org/uploads/images/gallery/2024-06/kVO50XTewTk1c1Ia-advanced-targeting1.png)

The screen is divided into two parts:

- Add new advanced target
- Advanced target table

Click **Add new advanced target** to add a new one. To add a new target, enter a label, give it a value and click the *Add Advanced Target* button. The code must be unique for the application to accept it.

The **Advanced Targets table** lists the advanced targets that have been created.

## Creating a new Targeting Expression

Targeting expressions contain target identifiers and functions. The identifiers allow you to tell the system which targets you want to check, modify, etc.… With the functions, you can express what you want to do with the values.

By 'target values' we mean the incoming values of an ad request, regardless of how they were injected into the request. So, this could be a value sent by the browser or app, a segment picked up by a server-side mapping, or a combination of both.

### Defining which targets to use

Targets are referred to by their two-letter prefix code: “dt”, “co”, etc... just like in the POST body of an ad request. The exact values available for your Adhese instance can be found in the documentation of your account.

The values of each target are always considered to be multi-valued. Their type is List&lt;String&gt;, a list of alphanumeric characters.

If you know that a target is single-valued (as can be set in the 'definitions' of your instance), you can use last() to change the type to String (or Void if an empty list).

### Functions to express what to do with a target value

Each function acts on the values sent by the request and is identified by the given 2-character target code. For example, given a request like the one below and using the target code 'sg', which is often used for 'segments':

https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgfamily;sports**/ag45/dtdesktop/II456d676e8d6878s687/

We can identify the target by its two-letter code, ‘sg,’ and see two values: ‘**family**’ and '**sports**'.

## List of all functions

### 1. Check the presence of the target

```
defined(target_code)
```

Checks if a target is present, even if it has an empty string value.

##### Example

```
defined(sg)
```

will match the following requests

[https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgfamily;sports**/ag45/dtdesktop/II456d676e8d6878s687/](https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgfamily;sports/ag45/dtdesktop/II456d676e8d6878s687/)  
https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sg**/ag45/dtdesktop/II456d676e8d6878s687/

but not match this one

https://ads-myadheseinstance.adhese.com/json/sl123/tlall/ag45/dtdesktop/II456d676e8d6878s687/

### 2. Count number of target values

```
size(target_code)
```

Counts the number of values for a given target code.

##### Example

```
size(sg) > 1
```

will match

[https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgfamily;sports**/ag45/dtdesktop/II456d676e8d6878s687/](https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgfamily;sports/ag45/dtdesktop/II456d676e8d6878s687/)  
https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgfamily**/ag45/**sggourmet**/dtdesktop/II456d676e8d6878s687/

but will not match this one

https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgfamily**/ag45/dtdesktop/II456d676e8d6878s687/

###  3. Check the presence of value

```
target_code intersects {'value'}
```

Returns true if ‘value’ is part of the values for the given target_code

##### Example

```
sg intersects {'sports'}
```

will match

[https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgfamily;sports**/ag45/dtdesktop/II456d676e8d6878s687/](https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgfamily;sports/ag45/dtdesktop/II456d676e8d6878s687/)  
https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgsports**/ag45/**sggourmet**/dtdesktop/II456d676e8d6878s687/

but will not match

https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgfamily**/ag45/dtdesktop/II456d676e8d6878s687/

### 4. Logical operators

```
(condition1 && condition2) || (condition3 && condition4)
```

**&amp;&amp;** expresses ‘and’,   
**||** expresses ‘or’,   
**( )** round brackets can be used for grouping expressions

##### Example

```
sg intersects {'family'} || (sg intersects {'sports'} && dt intersects {'desktop'})
```

will match

[https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgfamily;sports**/ag45/dtdesktop/II456d676e8d6878s687/](https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgfamily;sports/ag45/dtdesktop/II456d676e8d6878s687/)  
https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgsports**/ag45/sggourmet/**dtdesktop**/II456d676e8d6878s687/

but will not match

https://ads-myadheseinstance.adhese.com/json/sl123/tlall/**sgsports**/ag45/**dtmobile**/II456d676e8d6878s687/

### 5. Numerical comparison operators

```
atoi(last(target_code)) operator integer 
```

Compares the value of a target_code (converted from a string to an integer) with a fixed integer.

##### Available operators

- &lt; : less than
- &lt;= : less than or equal
- &gt; : greater than
- &gt;= : greater than or equal
- &lt;&gt; : not equal
- = : equal

##### Example

```
atoi(last(ag)) > 35 && atoi(last(ag)) <= 65
```

will match

[https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgfamily;sports/**ag45**/dtdesktop/II456d676e8d6878s687/](https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgfamily;sports/ag45/dtdesktop/II456d676e8d6878s687/)  
https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgsports/**ag65**/sggourmet/dtdesktop/II456d676e8d6878s687/

but will not match

https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgsports/**ag25**/dtmobile/II456d676e8d6878s687/

### 6. Decode urls and split

```
last(split(decode64(last(target_code))),'/') = string
```

Converts the last value of the given target_code from base64 encoded to a string, splits it by slash and compares the last item with a string

##### Example

```
last(split(decode64(last(br)),'/')) = 'index.html'
```

will match

https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgsport/ag25/dtmobile/II456d676e8d6878s687/**rfL2Zvby9iYXIvaW5kZXguaHRtbA==**/

but will not match

https://ads-myadheseinstance.adhese.com/json/sl123/tlall/sgsport/ag25/dtmobile/II456d676e8d6878s687/**rfL2Zvby9iYXIvb3ZlcnZpZXc=**/

# Managing Targets

**Important rules to keep in mind when working with targets:**

<p class="callout danger">1. The code cannot contain any punctuation. The only exceptions allowed are an underscore (**\_**), an ampersand (**&amp;**) (to add two or more codes in one target), and an exclamation mark (**!**) (for negative targets).   
  
2. Using a '-' will cause problems in the backend (rotation file) once the target is used in a booking  
  
3. Targets have a character limit of 40. If a single target would exceed 40 characters, consider using [advanced targeting](https://documentation.adhese.org/books/inventory-management/page/advanced-targeting)).</p>

To manage targets in Adhese, click the *Targets - Manage targets* link in the administration screen. The following screen is then displayed:

[![Schermafdruk van 2024-10-29 09-37-48.png](https://documentation.adhese.org/uploads/images/gallery/2024-10/scaled-1680-/WwkoSDxuOLhUskJM-schermafdruk-van-2024-10-29-09-37-48.png)](https://documentation.adhese.org/uploads/images/gallery/2024-10/WwkoSDxuOLhUskJM-schermafdruk-van-2024-10-29-09-37-48.png)

The screen is divided into two parts:

- Select target types on the left side
- Add new target values on the right side

The **Select target types** part shows all the available target types and indicates whether they are editable or not. Ticked boxes are editable. Empty boxes are not editable. When you select a target type, the colour changes from yellow to orange, and your selection is displayed in the *Add new target/target values* part of the screen.

Click **Add new target** if you want to add a new target value. To add a new target, fill in a name, give it a code and hit the *Add Target* button.

The code has to be unique to be accepted by the application.

- a search box
- a back and next button showing the number of pages for this particular target
- a checkbox to hide or show inactive entries.

The list can be sorted by clicking the *\#*, *name* or *code*.

You can edit the name of each target. After editing, you can save your changes by clicking the *save* button.

To deactivate a target, simply click on the *deactivate* button. Once deactivated, the button's label will change to *activate*.

To find out more about how targeting can be used within a booking, see the [Targeting](https://documentation.adhese.org/books/campaign-management/page/bookings#bkmrk-targeting) section of the **Bookings** page

# Creating targets for use with ADvendio

<p class="callout info">This page assumes that the necessary connection between an Adhese instance and an ADvendio instance has been established.</p>

<p class="callout success">For a more general explanation of Targeting in Adhese, please see [this page](https://documentation.adhese.org/books/inventory-management/page/targeting).</p>

### Creating a target in Adhese

{{@256}}

### Creating a target in ADvendio

Now we can switch to ADvendio and create a target corresponding to the one we just made in Adhese.

1. First, log in to ADvendio. [![Schermafdruk van 2025-07-23 11-00-10.png](https://documentation.adhese.org/uploads/images/gallery/2025-07/scaled-1680-/3W5y5tOhIcUcxzyz-schermafdruk-van-2025-07-23-11-00-10.png)](https://documentation.adhese.org/uploads/images/gallery/2025-07/3W5y5tOhIcUcxzyz-schermafdruk-van-2025-07-23-11-00-10.png)
2. After logging in, navigate to *Connection IDs* and select *New* from the top right corner of the *Connection IDs* screen. [![Schermafdruk van 2025-07-23 11-04-59.png](https://documentation.adhese.org/uploads/images/gallery/2025-07/scaled-1680-/hqHYbQsvN5DquTtA-schermafdruk-van-2025-07-23-11-04-59.png)](https://documentation.adhese.org/uploads/images/gallery/2025-07/hqHYbQsvN5DquTtA-schermafdruk-van-2025-07-23-11-04-59.png)
3. Select *Custom* as the record type for the new Connection ID.
    
    [![Schermafdruk van 2025-07-23 11-09-33.png](https://documentation.adhese.org/uploads/images/gallery/2025-07/scaled-1680-/Y3B55OY42eVdZqps-schermafdruk-van-2025-07-23-11-09-33.png)](https://documentation.adhese.org/uploads/images/gallery/2025-07/Y3B55OY42eVdZqps-schermafdruk-van-2025-07-23-11-09-33.png)
4. Fill in the necessary information in the Connection ID screen. [![Schermafdruk van 2025-07-23 11-16-52.png](https://documentation.adhese.org/uploads/images/gallery/2025-07/scaled-1680-/1gTrvBMaLm8oehQN-schermafdruk-van-2025-07-23-11-16-52.png)](https://documentation.adhese.org/uploads/images/gallery/2025-07/1gTrvBMaLm8oehQN-schermafdruk-van-2025-07-23-11-16-52.png)
    
    
    1. As *Parent ID*, type in the name of the target category in Adhese
    2. As *Connection ID Name*, type in the name of the target in Adhese
    3. *Connection* is always *ASL-002*
    4. For *Technical Name*, enter the target code from Adhese
    5. *Type* is always *Value*
    6. *Category* is always *Key-values*

*Save* the new target. It will appear among the Connection IDs and be ready to use in campaigns.

[![Schermafdruk van 2025-07-23 11-23-54.png](https://documentation.adhese.org/uploads/images/gallery/2025-07/scaled-1680-/uZlbXvtnJoiied43-schermafdruk-van-2025-07-23-11-23-54.png)](https://documentation.adhese.org/uploads/images/gallery/2025-07/uZlbXvtnJoiied43-schermafdruk-van-2025-07-23-11-23-54.png)