Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

Add parameter to every link in delivery from variables

Sebastian_Rockw
Level 2
Level 2

Hi all,

I'm quite new to ACC, so I hope I'm not doing a mistake here which it to obvious...

 

We have a requirement to add a URL parameter to every link within an email delivery. The parameter is called "campaignId" and it's value should be set on each delivery and then appended to all links in the delivery (with the same value for all links).

So what I tried was the following:

  • Set the parameter value as variable "campaignId" in each campaign
  • Add the following typology rule:
    • Rule type: control
    • Phase: After targeting
    • Execution order: 50
    • Code:

var campaignId = delivery.variables._var[0].stringValue;

if(campaignId !== 'undefined' && campaignId.length > 0){
   var deliveryUrlsLength = delivery.content.html.urlConfig.url.length;

   // Loop through all URLs
   for (var i = 0; i < deliveryUrlsLength; i++){
      var urlSource = delivery.content.html.urlConfig.url[i].source;
      if(urlSource !== 'undefined' && urlSource.length > 0){
         var appendChar = "?";
         // Check if the URL Source already contains at least one parameter
         if(urlSource.indexOf("?") > 0){
            appendChar = "&";
         }
         //Add the campaignId to the urlSource
         delivery.content.html.urlConfig.url[i].source = urlSource + appendChar + "campaignId=" + campaignId;
         delivery.content.html.urlConfig.url[i].withParams = true;
         delivery.content.html.urlConfig.url[i].modified = true;
         logInfo("Appended campaignId to link: " + delivery.content.html.urlConfig.url[i].source);
      }
   }
}

return true;

 

Analyze runs fine and the logInfo messages look fine as well. When sending the mails, links are rewritten for targeting, but when clicking the links, the campaignId parameter is not appended.

Any hints on what I'm doing wrong? Is this the correct approach at all?

 

Thanks for your input!

 

BR

Sebastian

 

1 Accepted Solution
xavierv6303633
Correct answer by
Level 3
Level 3

Hi @Sebastian_Rockw 

 

David's option might be cleaner, but this is how we did it : We created a 'web analytics' external account and added our custom url parameters in the tracked URL calculation as shown below. We have also integrated our Analytics account to Campaign with the option below that, but I think you can just skip that if you don't need it?

 

xavierv6303633_0-1606762234538.png

You will then be able to select this external account in the 'web analytics' tab of your deliveries. Every delivery with this account linked will change all tracked URLs as defined in that external account. 

xavierv6303633_1-1606762667032.png

Again, you can ignore the fields below the account selection. I would also reccommend adding a field in the campaign's input form to add your campaignId instead of using variables, which will make it easier to fetch in the script.

 

Kr,

Xavier

View solution in original post

4 Replies
DavidKangni
Community Advisor
Community Advisor

Hi Sebastian,

 

Add a logInfo(campaignId) to see if your variable is set up correctly.

Another way ( i think easier to achieve this) is to update NmsTracking_ClickFormula option.

 

Thanks,

David

Sebastian_Rockw
Level 2
Level 2
Thank you David. Modifing the tracking click formula did the trick!
xavierv6303633
Correct answer by
Level 3
Level 3

Hi @Sebastian_Rockw 

 

David's option might be cleaner, but this is how we did it : We created a 'web analytics' external account and added our custom url parameters in the tracked URL calculation as shown below. We have also integrated our Analytics account to Campaign with the option below that, but I think you can just skip that if you don't need it?

 

xavierv6303633_0-1606762234538.png

You will then be able to select this external account in the 'web analytics' tab of your deliveries. Every delivery with this account linked will change all tracked URLs as defined in that external account. 

xavierv6303633_1-1606762667032.png

Again, you can ignore the fields below the account selection. I would also reccommend adding a field in the campaign's input form to add your campaignId instead of using variables, which will make it easier to fetch in the script.

 

Kr,

Xavier

View solution in original post

Sebastian_Rockw
Level 2
Level 2
Thank you Xavier. Followed your detailed description and not it works fine