- 10 Jan 2025
- DarkLight
Implementing Awin Consent
- Updated on 10 Jan 2025
- DarkLight
Overview
Our Consent Signal Framework contains a key property for the AWIN.Tracking
object: AdvertiserConsent
.
When set, the MasterTag will read its value and, based on this value, decide whether or not to set a cookie (on the landing page) and, furthermore, to read the value of the cookies on your order confirmation page.
Depending on your site infrastructure, please choose the most applicable method for implementation. If you’re unsure or have any questions, please reach out to your Awin point-of-contact.
Direct Implementation
The following examples serve to illustrate code function and best practice for handling our consent model. The necessary code and/or variables in use on your site may differ.
Mirroring the applicable information across the client and server sides of this process is vital to ensuring that data integrity is maintained across multiple tracking methods.
On the Landing Page
If the consumer navigated through an affiliate link, an affiliate click identifier will be present in the URL and the MasterTag will attempt to set a first-party affiliate cookie.
If consent has not been obtained (a consent window is yet to be presented to the consumer), you can inform the MasterTag to delay the settings of the first party cookie by adding:
var AWIN = AWIN || {};
AWIN.Tracking = AWIN.Tracking || {};
AWIN.Tracking.AdvertiserConsent = false;
<script src="https://www.dwin1.com/{{advertiserId}}.js" defer="defer"></script>
This should be added before the MasterTag is loaded.
After initializing the above variable, based on the choice of the consumer, you can send a consent update event to the MasterTag by calling:
AWIN.Tracking.Consent.setAdvertiserConsentStatus(true); //cookie consent was obtained for Awin
AWIN.Tracking.Consent.setAdvertiserConsentStatus(false); //cookie consent was not obtained for Awin
We accept values of 1
and 0
as true
and false
, respectively.
Please ensure that the URL query parameters, especially Awin parameters (&awc
= and &sn=
) appended by Awin to the landing page URL, are still available when the consent update is sent.
If the consume has visited your site before, a consent banner may not be presented to them again. This means that you (or your CMP) have stored the consumer’s consent status on your end. In this case, we recommend loading the following snippet on all pages of your site:
var AWIN = AWIN || {};
AWIN.Tracking = AWIN.Tracking || {};
AWIN.Tracking.AdvertiserConsent = {{consentForAwinStatus}};
<script src="https://www.dwin1.com/{{advertiserId}}.js" defer="defer"></script>
The {{consentForAwinStatus}}
should be populated by the variable that you’re using to store the consent status.
On the Confirmation Page
On your order confirmation page, the MasterTag reads the value of the AdvertiserConsent property and decides whether or not to read Awin’s first-party cookies. Therefore, the AdvertiserConsent property should be initialized as a part of the Conversion Tag.
On this page, it is also necessary to append the cons parameter to the Conversion Pixel and populate it with the value of the {{consentForAwinStatus}} variable.
<img border="0" height="0" src="https://www.awin1.com/sread.img?tt=ns&tv=2&merchant={{advertiserId}}
&amount={{totalAmount}}&ch={{channel}}&cr={{currencyCode}}&p1={{customParameter1}}
&p2={{customParameter2}}&parts=DEFAULT:{{totalAmount}}&ref={{orderReference}}
&testmode={{isTest}}&vc={{voucherCode}}&cons={{consentForAwinStatus}}" style="display:none;" width="0">
<script type="text/javascript">
//<![CDATA[
/*** Do not change ***/
var AWIN = AWIN || {};
AWIN.Tracking = AWIN.Tracking || {};
AWIN.Tracking.Sale = {};
/*** Set your transaction parameters ***/
AWIN.Tracking.Sale.amount = "{{totalAmount}}";
AWIN.Tracking.Sale.channel = "{{channel}}";
AWIN.Tracking.Sale.currency = "{{currencyCode}}";
AWIN.Tracking.Sale.custom = ["{{customParameter1}}", "{{customParameter2}}"];
AWIN.Tracking.Sale.orderRef = "{{orderReference}}";
AWIN.Tracking.Sale.parts = "DEFAULT:{{totalAmount}}";
AWIN.Tracking.Sale.test = "{{isTest}}";
AWIN.Tracking.Sale.voucher = "{{voucherCode}}";
AWIN.Tracking.AdvertiserConsent = {{consentForAwinStatus}};
//]]>
</script>
<script defer="defer" src="https://www.dwin1.com/{{advertiserId}}.js" type="text/javascript"></script>
On the Landing Page
As with the client-side portion, you should create Awin cookies based on the consent status, ensuring that the “strictly necessary cookie” scenario is covered.
If the “sn=
” parameter is in the URL of the landing page, the script should then create the strictly necessary awc_sn
cookie, otherwise, it will try to create a regular cookie based on the consent status.
Below is a reference snippet where the $consent
variable is used to determine the consumer’s consent status.
If your infrastructure is not PHP-controlled, use these scripts as reference for the applicable language.
<?php
function setAwc() {
if ($_GET['awc']) {
if ($_GET['sn']){
//set strinctly necessary cookie
setcookie("awc_sn",$_GET['awc'],time()+ 60 * 60 * 24 * 365,"/",
"example.com", true, true );
} elseif ($consent == True) {
//set normal cookie
setcookie("awc",$_GET['awc'],time()+ 60 * 60 * 24 * 365,"/",
"example.com", true, true );
}
}
}
On the Confirmation Page
You should ensure that normal cookies are not passed to the S2S Pixel when consent is not given.
The strictly necessary cookie (awc_sn
) should be passed to the S2S Pixel unconditional of consent. If multiple cookies are found in the browser and are a part of the same user journey then all of them should be read (concatenated into a string and separated by an HTML-encoded comma (e.g. %2C
).
Below is a reference snippet where the $consent
variable is used to determine the consumer’s consent status. The script also uses a $cookies
variable to store the cookie values, concatenated with a comma.
<?php
$url = "https://www.awin1.com/sread.php?tt=ss&tv=2&merchant=18311";
$url .= "&amount=" . $orderSubtotal;
$url .="&ch=" . $channel;
$url .="&cr=" . $currencyCode;
$url .="&ref=" . $orderRef;
$url .="&parts=" . $commissionGroup .":" . $saleAmount;
$url .= "&vc=" . $voucherCode;
$url .="&customeracquisition=" . $customerAcquisition;
$cookies ="";
//read normal cookie
if ($consent == True) {
if (isset($awc)) {
$cookies .= $awc;
}
}
//read sn cookie
if (isset($awc_sn)) {
if (empty($cookies)){
$cookies .= $awc_sn;
} else {
$cookies .= "%2C" . $awc_sn;
}
}
$url .= "&cks=" . $cookies; // Populate the affiliate click
$c = curl_init();
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_URL, $url);
curl_exec($c);
curl_close($c);
?>