Impression Tracking in Marketing Cloud

Have you ever created an email where you have tens of different offers in separate dynamic content blocks and wondered how you would report back the click data from the blocks? Are you using Ampscript to present highly individualised emails, and lost track of your click rates for those particular offers? Then Impression Region tracking is the right solution to stay on top of your engagement data.

Bring more clarity on how your personalised emails are performing

Why should I use impression tracking?

One should use Impression Regions for keeping track on dynamic content in highly data driven emails. When either using dynamic content block or coding your own sophisticated logic directly in Ampscript, it is essential to know what content was actually included in the email and whether it was engaged with. This is what Impression Region is for.

A use case could be an area in your email, which is shown conditionally based on the age and loyalty tier of your recipient, potentially resulting in 20+ possible combination. Especially is multiple dynamic content blocks or ampscript logic is used in a single email, it can be difficult to predict who is receiving what content. Imagine you see low click numbers for a specific CTA in your email. However this is only included in certain conditions, and hence not to all recipients. To find out how many, and which recipients, received an email with that CTA, you must use Impression Regions to keep track on that.

How do I implement impression tracking?

When using the standard dynamic content block, the tags for impression region tracking are set automatically, but you need to set them yourself if working with Ampscript, using BeginImpressionRegion function:

%%[ IF (@ageTier == "20-29" and @loyaltyLevel == "Gold" THEN ]%%
%%=BeginImpressionRegion("Something_specific_for_you")=%%
Here is some content only some of the recipients are getting to see.
%%=EndImpressionRegion(0)=%%
%%[ ENDIF ]%%

In the above example, if you don’t math the criteria in IF statement, you will not get to see the content, and the impression region will not be triggered. If you match the criteria, your recipient will be included in the tracking extract with impression regions, in the context of this particular sendout, having “Something_specific_for_you” registered there.

When closing an impression region with EndImpressionRegion() function, it is not required to pass any parameters to the function call. It does support a single parameter which cis a boolean. It defines the scope of regions closed by the function. A value of True/1 closes all previous Impression Regions:
%%=EndImpressionRegion(1)=%%
A value of False/0 closes only the preceding Impression Region:
%%=EndImpressionRegion(0)=%%
The default value, when no parameters are added to the call, is false.

Please be aware, that BeginImpressionRegion() function only supports static values for the region name. However you can use the workaround below, if your name needs to be set dynamically:

%%=TreatAsContent(concat("%","%=BeginImpressionRegion('",@blockName,"')=%","%"))=%%

If you are using SSJS instead of Ampscript, you can also use the equivalent of these functions, BeginImpressionRegion and EndImpressionRegion:

<script runat="server>
     Platform.Function.BeginImpressionRegion("mainBlock");
     var content = Platform.Function.ContentArea("123456");
     var moreContent = Platform.Function.ContentArea("789");
     Platform.Function.EndImpressionRegion("mainBlock");
</script>

In case you are using Dynamic Content block, the impression region name will be taken automatically from a combination of the rule and the name of the content block you are referencing in your dynamic content:

Dynamic content block referencing multiple content blocks, and automatically generating impression region tracking.

This can be validated by viewing the source code generated by the Dynamic Content block above:

%%[IF ((NOT IsNull([Score]) AND [Score] > "5")) THEN]%%
%%=BeginImpressionRegion("01__Rule_1__Small_Article_List")=%%
%%=ContentBlockById("289791")=%%
%%=EndImpressionRegion()=%%
%%[ELSE]%%
%%=BeginImpressionRegion("01__Default_Content__Full_width")=%%
%%=ContentBlockById("294778")=%%
%%=EndImpressionRegion()=%%
%%[ENDIF]%%

You can overrule the default naming convention, by clicking on the “pencil”:

Updating rule name

Replace the rule name by clicking on e.g. Default Content

Updating block name

Replace the block name by clicking on the name of the impression region.

One last way of defining impression region is by using ContentBlockByKey function in SSJS. Here you can provide impression region name as one pf the parameters:

This will fetch and display a content block, which is wrapped in Impression Region with the name defined in your second parameter.

Where do I view impression tracking?

There are two ways of viewing results of the impression regions: reports and tracking extract.

  1. Navigate to Email Studio > Tracking > Reports
  2. Under Tracking Reports, you get the options of “Impression Tracking by Job” or “Impression Tracking for Triggered Sends” – depending on your send method.

Running the Impression Tracking by Job report provides you with following metrics:

Impression Tracking by Job report example

As you can see, we have some overall job metrics, but we can also see how many of each impression region have been sent out, as well as the engagement with links within that particular region. This will allow you to be more precise, compared to just look at the overall CTR of your email.

There are also two other reports, covering more long term performance of your impression regions:

  • Region Performance Over Time
    The Region Performance Over Time report shows how a single section of content performs over a period across multiple sends. You can use this report to see how a specific link is performing over a certain period. Only emails that contain dynamic content or AMPscript can be tracked in this report.
  • Region Performance for Triggered Sends Over Time
    This report shows how a single section of content performs over time across multiple jobs in Triggered Emails.

These are quite OK reports, if the number of impression regions is limited. However for large enterprise solutions, with almost countless combinations of impression regions across large number of emails, they come short. Instead you should utilise an external BI tool, like PowerBI or similar to analyse large raw datasets. These can be obtained by running Tracking Extract in Automation Studio, and provide your with more detailed (subscriber specific) metrics on who has received which impression regions in that individual sends over a period of time. You will see following metric in the extract files:

  • SendImpression
    The SendImpression event extract file shows instances of an email send occurring during a specified date range. The file also includes the impression region name associated with the click event. The send events relate to all sends for subscribers on a list or to a particular send.
  • SendJobImpression
    The SendJobImpression file represents all impression tracking information from sends with activity logged against them for the timeframe of the extract. This list reflects only jobs that already processed. Sends scheduled for the future do not appear in this list.
  • ClickImpression
    The click event extract file shows all the instances of a clicked link in an email occurring within the specified date range. The file also includes the impression region name associated with the click event. The events in this report can relate to all sends for subscribers on a list or related to a particular send.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top