Native Ads Performance Advanced Tracking

Ad tracking technology tutorials. How to set up an ad tracking campaign, landing page, conversion event postbacks and how to compare performance reports.

Ads Tracking
Native Ads Performance Advanced Tracking

Voluum Tracking Campaign Setup

In this tutorial, we will create a tracking campaign based on Voluum TDS. There's a lot of such traffic distribution systems on a market, like Keitaro, Binom, RedTrack, etc. Each of them performs the same function of traffic distribution, but at the same time, has its own characteristics, options and specific settings. For example, Keitaro and Binom is selfhosted platforms.

More about: Voluum Tracking, Conversion Tracking Tutorials

Traffic Source

Voluum has a lot of traffic source templates, like Taboola(Realize), Outbrain, MGID, Revcontent, NewsBreak, MediaGo. In most cases you need to create it from existing template and set only conversion postbacks for required source, without setting namings for parameters and tokens. And this postbacks depends of your conversion events names and S2S request formats for each of advertising platforms.

More about: Custom Traffic Sources.

Offer Page

What is an Offer Page in case of tracking? Offer URL is a final "user journey" destination page. It can be the shopping cart, the checkout form on CheckoutChamp, sale page on Funnelish, Shopify product page, the app store download page, etc. You need to request the offer page URL from the client and setup conversion postbacks with a client platform.

Before creating a new offer page URL in Voluum, you need to understand URL structure to be able to append tracking parameters to the link correctly. You need to know the meaning of the ?, &, # symbols in the URL, otherwise you can "break" the link.

Tracking params example:
?utm_source={trafficsource.name}&utm_medium=xo&utm_term={clickid}

More about: Tracking, Parameters.

Lander

If you're going to use "Redirect method"(which you probably will) for transitioning between ad and campaign funnel, so in general it's required and enough to set https://your-voluum.domain/click URL for all of your land CTA links.

And it's good practice to add a JavaScript tracking code to the landing page html head tag, to be able to redirect and track organic traffic and avoid Error 400 Bad Request. You can get this code on the campaign creation step. It's important to know, that "organic tracking script", it's not the same as "direct tracking script".

The main thing you need to know about choosing a correct domain for your landings+scripts and campaigns, that you need to use same domain throughout the entire tracking funnel. Which means, if you set https://your-voluum.domain/click url for landing CTA's, so you need to use same your-voluum.domain for your tracking script and same your-voluum.domain for your tracking campaign link.

More about: How to Add Click URLs to Lander

Tracking Campaign

To create a simple campaign, it's enough a Traffic Source and Offer Page. You can add a Landing Page after full tracking campaign setup. This is useful, for example, when you need to provide a tracking link to run some integration tests or make a test conversion event to make sure, that the client's S2S postbacks are correct.

Tests

Measure Test twice, cut once.

Despite the fact that technical tracking settings are performed by technical specialists, it's good to make a test with a tracking link, before making ad campaign live with this link. Just to be sure, that the final offer page is available to the users and redirects from landing pages are correct.

We work in a field where sometimes one extra character can lead to a big loss of traffic and money.
So Test Test Test! Before you're going live with ad campaign. After you're making changes. If you're not sure of don't remember. Just make a test.

It's good to have a separate web browser with default settings and without any 3-d party extensions for testing purposes. Clear browsing data(cookies, cache and other sites data) before each test.

It is much more effective to detect and fix an error before it causes damage than to look for those responsible for that damage later. 😉


Conversion Events Settings

The main purpose of setting up conversion events is to send the ad click ID from Traffic Source to your TDS, then send a user click ID from TDS to the customer product platform and receive it back from the customer when a user conversion occurs. It can be sale, initial checkout, add to cart events, etc.

How Conversion Events Works. Scheme

As a media buyer, you need to understand the fundamental principles behind conversion events. This can save you a lot of time, and for senior media buyers, this basic knowledge is essential.

Also, sending conversion events is possible via JavaScript Pixel codes(or even an image pixel) with each of advertising platforms, but it's not covered in this tutorial because this is about advanced tracking and S2S postbacks.

Ad Campaign Setup

On this stage, you need to setup additional parameters for your campaign tracking link(like ad click id, cost per click, ad campaign name, etc.) and a traffic source conversion events with their namings.

It's good practice to separate your ad link from tracking parameters. So you can change tracking parameters without your campaign ads re-moderation and tracking params will be added to all of your ad links.

Make sure your ad campaign tracking link contains the ad click ID token, otherwise you will not be able to send S2S conversion events postbacks to optimize your ad campaign.

More about: Taboola Campaign URL Parameters for Tracking, Defining Taboola Conversions

Events Postbacks

It's possible to send conversion events postbacks with 2 ways:
  • Server-To-Server(S2S): requests are made on the back-end between servers. For example, via affiliate marketing software(Affise, Everflow, Impact, iRev, Swarm) to TDS(Voluum, Keitaro, Binom, RedTrack) or from TDS to Traffic Source(Meta, Taboola, Outbrain, etc).
  • Client-To-Server: requests are sends from the user browser to server. For example, via JavaScript code, image or iframe "pixels", or any 3-d party asset on the html page, like CSS styles. This method is less reliable than S2S, since postbacks are sent from the client's browser.

Server-To-Server postbacks are more reliable, but you can combine this ways, for example send add to cart via JavaScript "pixel" and purchase via S2S. Remember, that it's bad practice to send same event twice, simultaneously via S2S and via client side, because it will duplicate same event twice in your traffic source and you will have a complete mess in your reports. Most of traffic source platforms has deduplication parameters for this issue, but it's another story.

The way postbacks are sent depends on the offer product platform, so it may differ from platform to platform and have different implementation even within the same platform, like for some Shopify stores, the integration way can vary depending on the store's frontend. We won't go deep into details because that's what "tech guys" do.

In general, there's 2 types of postbacks:

  • Incoming - from Offer Page Platform to your TDS.

    Example of default conversion event postback for Voluum.
    https://your-voluum.domain/postback?cid={clickid}
    Example of custom purchase event postback for Voluum.
    https://your-voluum.domain/postback?cid={clickid}&et=purchase&payout={product_price}&txid={order_id}
    Where:
    • cid={clickid} - tracker click ID, required;
    • et=purchase - custom event name;
    • payout={product_price} - revenue amount per conversion;
    • txid={order_id} - unique transaction ID(for events deduplication);

    More about: Voluum Postback Parameters

    An example message on how to request event postbacks integration from a client(offer).

    *postbacks*
    We will mark our traffic with GET params in a such way `?utm_medium=xo&utm_term={clickid}`
    like: https://your-site.url/offer-product?utm_medium=xo&utm_term={clickid}&...
    Where:
    `utm_medium=xo` means that user came from our ad campaigns,
    `utm_term={clickid}` contains user clickID, and you need to send this clickID back to our server via S2S or Client-To-Server postback, like `cid={clickid}` along with a `et={event_type}` GET param and optional `payout={usd_product_price}`
    Our postback url format is `https://your-voluum.domain/postback?cid={clickid}&et={event_type}&payout={usd_product_price}`
    So we need this postbacks by events:
    `https://your-voluum.domain/postback?cid={clickid}&et=purchase&payout={usd_product_price}&txid={order_id}` - buy|purchase|sale product evt.
    `https://your-voluum.domain/postback?cid={clickid}&et=begin_checkout` - initial purchase(Begin Checkout) evt.
    `https://your-voluum.domain/postback?cid={clickid}&et=add_to_cart` - add to cart evt.
    And it would be great to see a full list of events that you can send us throughout the user conversion journey flow. If it's impossible to send exact `purchase`|`add_to_cart`|`begin_checkout` param names, just provide your namings to us.

    If you want to optimize your ad campaign, make sure, that your offer platform sends conversion events postbacks to your tracker. And keep in mind, if you have a problem with conversion events in your ad campaign, this is the first place you need to check.

  • Outcoming - from your TDS to Traffic Source Platform.

    Examples of purchase event S2S postback by platforms:

    Taboola:
    https://trc.taboola.com/actions-handler/log/3/s2s-action?click-id={externalid}&name=Purchase&revenue={payout}&currency=USD
    Outbrain:
    https://tr.outbrain.com/pixel?ob_click_id={externalid}&name=Purchase&orderValue={payout}&currency=EUR
    Revcontent:
    https://trends.revcontent.com/api/v1/conversion.php?api_key=[ACCOUNT_API_KEY]&uuid={externalid}&amount={payout}&user_ip={ip}&user_agent={useragent}
    NewsBreak:
    https://business.newsbreak.com/tracking/attribute?callback={externalid}&nb_value={payout}&event_type=complete_payment
    MGID:
    https://a.mgid.com/postback/[ACCOUNT_ID]?c={externalid}&r={payout}&e=Purchase

    Keep in mind that it takes some time (usually a few hours, but sometimes a day) from the time a conversion occurs until it shows up in your traffic source reports.

    One more thing you need to know: you cannot do a test S2S postback to show up in some traffic sources reports before your ad campaign is going live.


Performance Reports

There's 2 options, that you need to know, when you're viewing a reports: timezones and events attribution. If you do not consider about these options when comparing performance reports with reports from other sources(like traffic source platform or offer product platform), you will most likely have discrepancies in the metrics.

Reports Timezones

Timezones in performance reports define when clicks, impressions and conversions are counted. Each TDS including Voluum has options to set a timezone for analytics reports. So when comparing reports, you need to ask the client what time zone they are using in their sales reports and what time zone is specified in the advertising platform account.

Timezones control how daily numbers line up, so for accurate analysis, always check if your tracker, ad platform and offer sales reports are in sync.

Reports Events Attribution

The client send a conversions report and it has discrepancies with your traffic source(ad platform) numbers?
Did you ask the client, which attribution they are using in their reports?
Do you know what is this?)

Attribution is the rule that decides which date assign to the conversion event in your reports.

Two main models:
  • Click Time Attribution (Click Date) - the conversion (purchase, signup, etc.) is reported on the date when the ad click happened. Example: User clicks an ad on Aug 10, buys on Aug 13. In the report, the order shows under Aug 10. Used primarily by traffic source platforms.
  • Conversion/Postback Time Attribution (Event Date) - the conversion is reported on the date when the event actually happened (when the user bought, installed or triggered the postback). Example: User clicks on Aug 10, buys on Aug 13. In the report, the order shows under Aug 13. Used primarily by a client's offer platforms(Shopify, CheckoutChamp, Funnelish, different CRMs, etc.)

When comparing reports with a client, align attribution settings, otherwise numbers won't match.

All popular TDS have the option to choose between "Click Date" and "Event Date" for any type of analytical reports.

In Voluum TDS you can change it in settings.

Settings → General settings → Conversion registration time reporting → Visit/Postback timestamp