> For the complete documentation index, see [llms.txt](https://docs.exads.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.exads.com/advertisers/campaigns/creating-a-campaign/step-2-ads.md).

# Step 2 - Ads

## Creating a variation

In the **Ads** tab, once you click on the **Add Variations** button the **Select Ad Destination** box appears. Use the radio button to choose whether this will use a **Single Landing Page** or a **Landing Page Group**.

Enter the URL for the Landing Page or Landing Page Group and click **Select Files**.

<figure><img src="https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FcB1wPt69NxMzZN7m64Q1%2Fad-tab.gif?alt=media&amp;token=f4614da3-12cc-4217-a65d-18e4a56026a0" alt=""><figcaption></figcaption></figure>

### Using dynamic tokens in landing page URLs <a href="#using-dynamic-tokens-in-landing-page-urls" id="using-dynamic-tokens-in-landing-page-urls"></a>

![Step1](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FuIac8WZjZsF9wHIVdhlB%2Fdynamic-tokens-url.png?alt=media\&token=c2b266b1-2506-4060-87af-ed3c7e9ecb6e)

When entering URLs for landing pages or landing page groups, you can click **+Add Tokens** to add dynamic tokens to the URL for items such as {country}, {region}, or {day}. These tokens will then result in different URLs showing for different users. For example, the URL [http://www.testsite.com/{country}](http://www.testsite.com/%7Bcountry%7D) could result in the landing page URLs <http://www.testsite.com/france> and <http://www.testsite.com/germany>.

**Available dynamic tokens in landing page URLs**

* **{actual\_cost}**: The actual CPM / CPC paid for each impression / click.
* **{campaign\_id}**: The ID of the campaign.
* **{conversions\_tracking}**: The unique ID generated when customer clicks on the ad.
* **{category\_id}**: The ID of the category detected.
* **{cost}**: The cost of the click or impression.
* **{country}**: The 3-character country code of the visitor.
* **{currency}**: The currency of the advertiser's account.
* **{format}**: The banner size. Example: 300×250.
* **{keyword}**: The keyword that was matched in case of campaigns targeting specific keywords. This will be empty if there is no match.
* **{language}**: The language of the visitor.
* **{pricing\_model}**: The pricing model of the campaign (1 = CPC, 2 = CPM, 3 = CPA, 4 = Smart CPM, 5=CPV, 6=Dynamic CPA, 7=Smart CPC). Some networks will not use all of these.
* **{referer}**: Address of the web page from which the resource has been requested.
* **{rtb\_timeout}**: The RTB Timeout value in ms (applied only on RTB calls).
* **{site\_id}**: The ID number of the site where the ad is displayed.
* **{src\_hostname}**: The site name that the Publisher submitted for displaying ads, not including the HTTP protocol at the beginning (e.g. examplesite.com).
* **{sub}**: The Publisher's Sub ID.
* **{tags}**: The list of keywords that have been identified for that ad impression.
* **{time}**: The timestamp, which is used as a cache buster.
* **{url}**: The full URL of the site that the Publisher submitted to the Admin Panel for displaying ads, including the HTTP protocol (e.g. [https://examplesite.com](https://examplesite.com/)). **Note**: This token will not display the URL where the ad was displayed to the user; only the URL that is registered in our platform.
* **{user\_agent}**: The User Agent string of the visitor.
* **{variation\_id}**: The ID of the variation (Banner or landing page).
* **{zone\_id}**: The ID of the ad zone where the ad is displayed.
* **{gdpr}**: This will be 0 if the user is *not* under GDPR, and 1 if the user *is* under GDPR (only available on RTB).
* **{gdpr\_consent}**: This is the GDPR consent string required by the IAB standards (only available on RTB).
* **{ex\_\[key]}**: If Custom Targeting is available, all Custom Targeting tokens will be displayed using this syntax.
* **{email\_encoded}**: This token can be used to insert the emails of logged-in users into landing page URLs for all formats.

{% hint style="info" %}
This feature is available on request. Contact your account manager to enable it.
{% endhint %}

### Additional fields when creating a native ads, push notifications or video campaign <a href="#additional-fields-when-creating-a-native-a-ds-push-notifications-or-video-campaign" id="additional-fields-when-creating-a-native-a-ds-push-notifications-or-video-campaign"></a>

If you are creating a native ads, push notifications, or video campaign, you will be presented with additional fields that can be displayed on Advertiser's ad in case the Publisher chooses to display in their websites:

* For native ads, or push notifications campaigns there are 3 fields to add content to your ad variations:
  * Title - Adds title content to your Native Ad or Push Notifications. Maximum of 90 characters.
  * Description - Adds description content to your Native Ad or Push Notification. Maximum of 90 characters.
  * Brand Name - Adds brand name content to your Native Ad or Push Notification. Maximum of 30 characters.

![nativeandpush](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FFIN6xpVZQ0fkTfFnuJXv%2Fnativeandpush.png?alt=media\&token=69346484-02e9-4f8a-9024-368fe96cffa1)

* For video campaigns there is a predefined list of Call-to-Action (CTA) text that you place on your ads:
  * Automated (Default)
  * Click for More
  * Click Here
  * Play Game
  * Play Game Now
  * Play Now
  * See More
  * See Now
  * Try for Free
  * View Here
  * View More
  * Watch Free

In addition, you will have to add a friendly URL as content in your video ad, as this is mandatory. Maximum of 25 characters.

![video](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FJFlpQqptEBajdN7hsAO1%2Fvideocta.png?alt=media\&token=3bd78250-a61a-4d3a-9cbf-95eb95c588f5)

### Custom fields for banners <a href="#custom-fields-for-banners" id="custom-fields-for-banners"></a>

If you are creating a [banner ad](/general/ad-formats.md), as an Administrator, you have the flexibility to add custom fields to further enhance the capabilities of advertisers. This feature aims to provide advertisers with the ability to tailor the displayed text in banner ads.

It's possible to create up to **4 custom fields**. These fields are optional and will be enabled on your Ad Server upon request.

You can render ads on the publishing side through the utilization of the [Ad Placement API](/api/ad-placement-api/ad-plac-response.md). After enabling the fields, they will be displayed in step 2 as shown in the example below:

![custom-fields](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2F3g9tUBMGOzsa8q5CeBH4%2Fbanner-custom-fields.png?alt=media\&token=c7f4ad63-2865-4cb9-a0c0-ef96d45557c3)

{% hint style="info" %}
Custom fields accept string values only. Each value supports up to 255 characters.
{% endhint %}

### Using dynamic tokens in native ads and push notifications <a href="#using-dynamic-tokens-in-native-a-ds-and-push-notifications" id="using-dynamic-tokens-in-native-a-ds-and-push-notifications"></a>

If you are creating a campaign using [native ads](/general/ad-formats.md) or [push notifications](/general/ad-formats.md) in Step 2, you can add dynamic tokens for items such as {country}, {region} or {day} in the titles and descriptions . These tokens will then display localized text to the visitor based on their information, allowing you to target your ads more effectively.

For example, if you create a native ad with the title "Meet girls in {region} tonight!", a visitor from Barcelona would see: "Meet girls in Cataluña tonight!".

<figure><img src="https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FvrTxL9up827sOD2YPVC4%2F1070dynamictokens_1.gif?alt=media&amp;token=23b69ff9-d01b-4b35-8b81-1ce4158c3481" alt=""><figcaption></figcaption></figure>

To use dynamic tokens:

1. First create or edit a native ad or push notification by going to the **Campaigns List** and clicking **New Campaign**, or clicking edit on an existing campaign.
2. If you are creating a new ad, in Step 1: **General Details**, select **Native Ad** or **Push Notification - 720 x 480** from the **Ad Format** drop-down.
3. In Step 2: **Ads** click **+ Ad Variations**.
4. In the **Select Ad Destination** dialog, you can use dynamic tokens in the **Title** and **Description** fields by clicking the **+ADD TOKEN** button beneath them. The list of available tokens will appear below the **Title** and **Description** fields.
5. Use the radio button to select how the token will be capitalized, and then choose the token which you wish to use.

**Capitalized** (default): The token will display with an initial capital: e.g. Cataluña.

**Uppercase**: The token will display in all uppercase letters: e.g. CATALUÑA.

**Lowercase**: The token will display in all lowercase letters: e.g. cataluña.

**Available dynamic tokens for native ads and push notifications**

* {country\_name}: The localized country name of the visitor. e.g. España.
* {region}: The localized region name of the visitor: e.g. Cataluña.
* {city}: The localized city name of the visitor: e.g. Barcelona.
* {language\_name}: The localized language of the visitor. e.g. Español
* {day}: The localized day that the visitor is visiting the site on: e.g. Lunes, Martes, Miércoles.
* {operating\_system}: The operating system of the visitor: e.g. Windows 10.
* {device}: The device that the visitor is using: e.g. iPhone.
* {carrier}: The carrier that the visitor is using to access the site: e.g. Vodafone.
* {browser}: The browser that the visitor is using.

**Setting the language for the tokens**

![Tokens Language](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FbbaF6d3raMuYAyQOYFsX%2Ftokens-language-new-flow.png?alt=media\&token=00df306e-3fd9-4c97-b9b5-819cfbc3b744)

The dynamic tokens will display in the language that you set for the campaign. The language is set in the top right of the **Variations** list in Step 1: **General Details** of creating/editing a campaign. Choose the language for the tokens from the **Ad Text Language** drop-down. The default language is English.

{% hint style="info" %}
Each campaign supports one language across all variations. Create separate campaigns for ads in different languages.
{% endhint %}

**Example:**

To create a native ad like this:

Ad Title: Meet girls in CATALUÑA tonight!

Ad Description: Barcelona girls want to meet you!

![screenshot](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2F8ZI39XvYgeyBuOOCb1pI%2Fdynamic-tokens-example.png?alt=media\&token=20336bdc-e12a-409b-bc34-874ff1abf6aa)

In the **Title** field, select the **Uppercase** radio button, and choose {region}.\
In the **Description** field, leave the **Capitalized** radio button selected and choose {city}.

To ensure that the tokens display in the correct language, select **Spanish** from the drop-down at the top of the **Variations** list.

![screenshot](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FNFU3t3wj3x6WSVw8dWXE%2Fvariations-spanish.png?alt=media\&token=8a47fc40-69b9-4eaa-ba81-e06cc7fdabbf)

## Adding assets to the variation <a href="#adding-assets-to-the-variation" id="adding-assets-to-the-variation"></a>

Once you have clicked **Select Files**, you should select the assets for the campaign in the **Select Ad Assets** dialog.

![Step1](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FzdBepemEInrZFWE5qzlV%2Fselect-ad-assets.png?alt=media\&token=b5ecd2e3-8fe8-44fe-87bf-985d73913a6b)

Tick the checkbox beside the image(s) or video(s) that you wish to use. Selecting multiple images or videos will create multiple variations.

* In the **Select Ad Assets** screen you will only see images with the correct dimensions for the ad format you have chosen.
* The same applies to videos, though videos can be +/- pixel different from the standard dimension.
* If you have chosen to create a video campaign, videos with non-standard dimensions will show also.
* If you choose to create a Native Ad, you will also have the option to add next to the image a video thumb (a video preview of the ad available when hovering over the ad). The Anchor Point selected for the image will also be applied to the video thumb — you do not select a separate anchor point for the video.

The crop position selected for the variation is displayed in the variations list, and applies to both the image and the video thumb.

{% hint style="success" %}
For a seamless hover effect, use the video's first frame as its thumbnail. Match the thumbnail's aspect ratio to the video.
{% endhint %}

Once you click on **Ad X Variation(s)** the variation(s) you have created will now be visible in the **Ad** tab.

### Actions in the variations list <a href="#actions-in-the-variations-list" id="actions-in-the-variations-list"></a>

![Step1](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2Ftip0NSzHvsJbjYmLfFRL%2Fvariations-actions.png?alt=media\&token=b0e09d87-00fd-416b-8acd-7553fb218e22)

Using the icon to the left of each variation, you can perform various actions:

* **Edit**: Edit the variation.
* **Test Variation**: This tests the variation by simulating what happens when an ad is clicked on.
  * For standard campaigns, this will redirect you to your landing page.
  * For RTB campaigns, this simulates what happens when when the ad server requests an ad, including the bid request and return.
* **Pause Variation**: Pause the variation.
* **Archive Variation**: This will archive the variation. To see archived variations, click the **Show Archived** checkbox at the top of the tab.

### Custom Tracking URLs for Video Campaigns <a href="#custom-tracking-urls-for-video-campaigns" id="custom-tracking-urls-for-video-campaigns"></a>

* The [Custom Tracking URLs](/publishers/vast/custom-tracking-urls.md) are available only for Video Campaigns.
* The Wrapper Ad may include any number of Custom Tracking Events
* You can add [dynamic tokens](#using-dynamic-tokens-in-landing-page-urls) to custom tracking URLs.

**Managing custom tracking events**

Custom tracking events can be added, edited and deleted in the **Variations** or **VAST tag** popup.

**Adding custom tracking events to video variation**

![Add custom tracking events](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FPO0genDymqYfTdQwxhM9%2Fadd-custom-tracking-events.gif?alt=media\&token=ede649fe-9f95-4465-ba1e-ed2ba307ad76)

![Add custom tracking events](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FkXxRxBCeueZYOT41rjpz%2Fdelete-custom-tracking-events.gif?alt=media\&token=8c9b3e89-f6e4-43dc-89f9-cdd4c0594929)

**Adding custom tracking events to VAST wrapper**

VAST Campaign Settings should be enabled for your account.

![Add VAST wrapper custom tracking events](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2F70JecG37p6WUSXQPwvRo%2Fadd-vast-wrapper-custom-tracking-events.gif?alt=media\&token=42c3f376-915e-4461-b9a3-6592c2da5a25)

## Selecting a distribution algorithm <a href="#selecting-a-distribution-algorithm" id="selecting-a-distribution-algorithm"></a>

![Step1](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FMulsHNhl1jtcdH8h22rJ%2Fdistribution-algorithm-new-flow.png?alt=media\&token=78a35df7-3315-4a98-8157-7f64e0c4d84d)

When you have created more than one variation, you will be able to determine how traffic will be distributed between them. If you are using [CPM](/general/glossary.md#cost-per-mille-cpm) or [Smart CPM](/general/glossary.md#smart-cpm), you will see a **Distribution Algorithm** drop-down to the top right of the variations list. There are four algorithms that you can choose from:

* **Even**: Variations that have the same CPM will have traffic evenly distributed between them.
* **Fixed**: Traffic will be distributed between the variations based on the individual `share` percentage on them.
* **Automatic CTR** (Default): Traffic will be distributed between the variations based on their CTR.
* **Automatic on Conversion Rate**: The Advertiser chooses a conversion tracking goal. The variation with the highest conversion rate for that goal will get more traffic.

### Fixed Distribution Algorithm <a href="#fixed-distribution-algorithm" id="fixed-distribution-algorithm"></a>

When the fixed distribution algorithm is used, the Advertiser can specify the share percentage of traffic for each of the variations:

* It must be a numeric value between 0% and 100%, allowing two decimal places.
* Optional for each of the variations if the sum of all shares is > 0.
* Share can be set only for active variations (not archived nor paused).
* The `Effective Share` value is based on the sum of the given shares and is updated while changing any of them.
  * Effective Share = Share / (sum of all the active variation' shares)

![Fixed Distribution Algorithm](https://2122107279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FualFKt6C8xdYfe2WEYpJ%2Fuploads%2FwpKgPseJB9uzh9gLGpky%2Ffixed-algorithm.png?alt=media\&token=11885351-c02b-460f-bcf9-dcbfca617600)

### Traffic distribution for automatic optimization <a href="#traffic-distribution-for-automatic-optimization" id="traffic-distribution-for-automatic-optimization"></a>

When either type of automatic optimization is used, traffic is distributed using an 80-20 breakdown:

* If there are only normal variations in the campaign, the winning variation will get 80%, and the remaining 20% will be distributed among the other variations using the 80-20 breakdown: The second best variation will get 80%, and the remaining traffic will get 20%, and so on.
* If there are variations to be tested, the winning variation will get 80%, and the remaining 20% will be broken down into 10% for normal variations and 10% for variations being tested.

## Third-party ad serving <a href="#third-party-a-d-serving" id="third-party-a-d-serving"></a>

If enabled for your account, you can create HTML Campaigns, which use an iFrame / HTML5 or a script for their content instead of an image.

If HTML Campaigns are enabled for your account, in Step 2: **Variations** of creating a campaign, you can choose **Tags** to paste the ad tag to use in the campaign.

## Click URL <a href="#click-url" id="click-url"></a>

Because HTML Campaigns are served through a third party server, they need to use an extra parameter named {click\_url} to register conversions and clicks. This parameter needs to be implemented in two places in order to work: In the Ad tag itself and in the PHP (or other language) page that host or generates the HTML banner.

### Step 1: Ad tag <a href="#step-1-a-d-tag" id="step-1-a-d-tag"></a>

Add the {click\_url} to the ad tag as in this example:

```json
<body style="margin: 0px"><iframe id='a628d52a' name='a628d52a' src='http://ad.third-party-server.com/delivery/afr.php?zoneid=430&saletrack={conversions_tracking}&click_url={click_url}' frameborder='0' scrolling='no' width='300' height='250'></iframe></body>
```

### Step 2: On the host page <a href="#step-2-on-the-host-page" id="step-2-on-the-host-page"></a>

On the host page (whether it uses PHP or any other programming language), you need to add 2 things:

* The click\_url:
* The tracker for server to server tracking

**A: PHP example Top of page**

GET the variables from the iFrame (HTML):

```php
<?php
$exotracker= isset($_GET['exotracker']) ? $_GET['exotracker'] : '';
$click_url = isset($_GET['click_url']) ? $_GET['click_url'] : '';
?>
```

**B: Link Code**

Add the click\_url and tracker to the link code that wraps the HTML banner:

```
<a target="_blank" href='<?php echo $click_url ?>http://ad.third-party-server-ad.com/en/?utm_source=248418&utm_medium=affiliate&utm_campaign=TS_MBA_RON_300X250_66075_NP_SWF&exotracker=<?php echo $exotracker ?>' >
```

### Step 3: Final Result <a href="#step-3-final-result" id="step-3-final-result"></a>

The final result of the link should be:

```
{click_url}http://ad.third-party-server-ad.com/en/? utm_source=248418&utm_medium=affiliate&utm_campaign=TS_MBA_RON_300X250_66075_NP_SWF&exotracker={conversions_tracking}
```

The ad server then automatically removes the {click\_URL} value and redirect the visitor to the page.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.exads.com/advertisers/campaigns/creating-a-campaign/step-2-ads.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
