Personalization blocks are one of the mode to provide personalized experiences over message deliveries as well as web applications in Adobe Campaign. They become even more preferable way of personalization where same block or snippet is redundant on multiple places with same deign and look and feel. Brand headers and footers are typical example here and think of a scenario where we have to make a change across all places; it could be change in brand logo or URLs in header and footer links. We can opt for making an changes across all deliveries and web application but the smarter way here is to create Personalization Blocks.
Now next question down the line is how can we make the content more dynamic (i.e. beyond merely using personalized fields). Lets consider below problem area.

Problem: We have created a personalization block for header and footer that contains redirect links (hyperlinks) to various pages within your brand website like privacy policy, terms of use, locations, work section and so on. Since its a critical personalization block for your brand, you are using it for all your deliveries and web applications hosted on Adobe Campaign.
<footer> <ul> <li><a href="https://mywebsite.com/privacy-policy/?utm_source=newsletter&utm_medium=email&utm_campaign=cmp1" target="_blank">Privacy Policy</a></li> <li><a href="https://mywebsite.com/?utm_source=newsletter&utm_medium=email&utm_campaign=cmp1" target="_blank">Mywebsite Home</a></li> </ul> </footer>
How can we track each referrer campaign or delivery (say, through Google UTM parameters) separately? For example, each campaign has different “utm_campaign” value.
Approach: We need a way to customize the utm parameters of footer links on the Personalization block for each delivery/web application. The values of the utm parameters would be provide by the parent delivery/web application that includes the personalization block.
Solution: The solution to this problem bears two steps:
- Customize the personalization block though javascript variablesAdd script on personalization block and use <%= VariableName %> to further customize the delivery.
<% var isEmpty = function(val){ return (val === undefined || val == null || val.length <= 0) ? true : false; } utmParameters = ''; if(!(isEmpty(utm_source))) { utmParameters = 'utm_source='+utm_source+'&utm_medium='+utm_medium+'&utm_campaign='+utm_campaign; } %> <footer> <ul> <li><a href="https://mywebsite.com/privacy-policy/?<%= utmParameters %>" target="_blank">Privacy Policy</a></li> <li><a href="https://mywebsite.com/?<%= utmParameters %>" target="_blank">Mywebsite Home</a></li> </ul> </footer>
- Set the javascript variables in the main delivery/web applicationAdd script on the html <head> tag to initialize the javascript variables that you are using in personalization block. Now, since the variable are set at delivery/web app level directly, you can
(i) Manage them on each delivery/web app separately and hence their referrer tracking
(ii) Need not to create redundant personalization blocks with similar structure and behavior.<% var utm_source = 'newsletter'; var utm_medium = 'email'; var utm_campaign = 'cmp1' %>
Now you can track the referrals to your brands from emailer or email separately, provides they there their own set of utm parameter well defined.
References: https://docs.campaign.adobe.com/doc/AC/en/DLV_Personalizing_deliveries_Personalization_blocks.html