Click Tracking
The simplest way to start tracking clicks is to generate a click using the following code :
EF.click({
offer_id: 1, // Required. The offer id
affiliate_id: 1, //Required. The affiliate id
});
You may wish to add additional data that will be passed along with the click :
EF.click({
offer_id: 1, // Required. The offer id
affiliate_id: 1, //Required. The affiliate id
uid: 5, // Optional : Offer URL Id
creative_id: 14, // Optional : Offer Creative ID
// Optional. Sub placement values.
sub1: '',
sub2: '',
sub3: '',
sub4: '',
sub5: '',
source_id: '',
coupon_code: '...', // Optional Coupon Code at the click level
fbclid: '...', // Facebook unique click ID
gclid: '...', // Google unique click ID
ttclid: '...', // TikTok unique click ID
});
Extracting data from the URL
When working with direct linking, the affiliate id involved in the click will most likely be dynamic and the value will be passed in the query string of the URL.
The Everflow SDK provides a method to extract any value from the URL. In the following example, the script executes on a landing page where the affiliate id is passed using the affid
url parameter : https://destination-url.com?affid=5
EF.click({
offer_id: 1, // Required. The offer id
affiliate_id: EF.urlParameter('affid'), //Required. The affiliate id
});
The EF.urlParameter
can be used to extract any query string parameter from the URL. For example if the destination URL was instead : https://destination-url.com?oid=3&affid=5&src=facebook&app=mobile
, you could use the following code :
EF.click({
offer_id: EF.urlParameter('oid'), // Required. The offer id
affiliate_id: EF.urlParameter('affid'), //Required. The affiliate id
sub3: EF.urlParameter('src'), // Optional : "facebook" would be passed as the sub3 in this example
sub4: EF.urlParameter('app'), // Optional : "mobile" would be passed as the sub4 in this example
sub5: EF.urlParameter('ref'), // The "ref" query string parameter is missing from the URL. Nothing would be passed as the sub5
});
ITP Workaround And First-Party Cookie Tracking
You can use the Everflow SDK to enhance traditional tracking when you own landing pages. In other words, you can use the Everflow SDK even if you use traditionnal redirect links, which will have the benefit of setting a first-party cookie.
In order to do so, fill the transaction_id
parameter when using EF.click
. Normally, you would configure your destination url to include the transaction_id
, offer_id
and affiliate_id
macros. Given the following destination url: https://destination-url.com?transaction_id=af189e77650e4e908af797b61b03ac0b&oid=1&affid=5
EF.click({
offer_id: EF.urlParameter('oid'),
affiliate_id: EF.urlParameter('affid'),
transaction_id: EF.urlParameter('transaction_id')
});
Custom Parameters
It’s also possible to add free form parameters to the click. This is effectively equivalent to adding additional query string parameters to the tracking link URL.
EF.click({
offer_id: EF.urlParameter('oid'), // Required. The offer id
affiliate_id: EF.urlParameter('affid'), //Required. The affiliate id
//Optional. Free form parameters to be appended to the click URL
parameters: {
"param1" : "customValue1",
"param2" : "customValue2"
}
})
Attribution in Multi-Tenant Scenarios
While the Everflow SDK does support multiple accounts generating clicks on the same page, it’s important to understand that it does present its own set of challenges. The SDK relies on browser features like cookies to store the transaction IDs necessary for attribution.
The SDK was built with single-tenant usage in mind and may require a little custom work in order to attribute conversions to the right click, especially in scenarios where both networks use the same offer ID.
Please read the Domains Configuration page for more details on how to configure the SDK in such scenarios.
The following sections (“Fetching The Transaction ID” and “Extracting The Transaction ID”) should give you enough information to come up with an attribution strategy that works for your multi-tenant scenario.
Advanced Use
Fetching The Transaction ID
Clicks are identified by unique transaction IDs in Everflow. There are scenarios in which it can be useful to make use of that transaction ID immediately after generating a click.
The EF.click
method returns a Promise which, when resolved, will give the transaction ID :
EF.click({
offer_id: EF.urlParameter('oid'),
affiliate_id: EF.urlParameter('affid'),
})
.then((transactionId) => {
// transactionId containts the unique Everflow transaction ID
console.log(transactionId)
});
Extracting The Transaction ID
It’s also possible to extract the transaction ID of the last click that was generated using EF.click
for a given user. This can be useful in scenarios where, for example, the user initially lands on the following URL : https://destination-url.com/page-A?oid=3&affid=5
. The click is generated using
EF.click({
offer_id: EF.urlParameter('oid'),
affiliate_id: EF.urlParameter('affid'),
});
If the user later navigates to https://destination-url.com/page-B
, you can access the transaction ID by executing
var offerId = 3;
var efTid = EF.getTransactionId(offerId);
The EF.getTransactionId
method will return the latest transaction ID found. It will return an empty string if no transaction ID is found.
You can also access the latest transaction id for a specific advertiser ID, regardless of the offer ID.
var advertiserId = 1;
var efTid = EF.getAdvertiserTransactionId(advertiserId)
Conditional Clicks and Parameters
Of course, being able to extract the transaction ID means that you can add some conditional logic around the way your generate your clicks. For example, if you wish to generate a click only when there are no other transaction IDs stored in the user’s browser, you could add the following logic :
var offerId = 3;
var previousTransactionId = EF.getTransactionId(offerId);
if (!previousTransactionId) {
EF.click({
offer_id: offerId,
affiliate_id: EF.urlParameter('affid'),
});
} else {
// The user has already been on this page and already has the previousTransactionId
// stored in the browser
}
Similarly, there may be situations in which you wish to attribute a click to “default values” if, for example, no offer id or affiliate id is supplied in the URL
var DEFAULT_OFFER_ID = 1;
var DEFAULT_AFFILIATE_ID = 10;
var offerId = EF.urlParameter('oid'); //Try and extract `oid` from the URL
if (!offerId) {
offerId = DEFAULT_OFFER_ID; //Default to offer ID 1 if nothing was supplied in the URL
}
var affiliateId = EF.urlParameter('affid'); //Try and extract `affid` from the URL
if (!affiliateId) {
affiliateId = DEFAULT_AFFILIATE_ID; //Default to affiliate ID 10 if nothing was supplied in the URL
}
EF.click({
offer_id: offerId,
affiliate_id: affiliateId,
});