RedFishBlueFishOne of the cor­ner­stones of a suc­cess­ful Dig­i­tal Mar­ket­ing imple­men­ta­tion is the exter­nal cam­paign.  In base­ball terms, the exter­nal cam­paign is the start­ing pitcher of your Dig­i­tal Mar­ket­ing efforts.  But there’s another player in your rota­tion who’s almost as impor­tant – the inter­nal pro­mo­tion.  Sim­ply put, the inter­nal pro­mo­tion is your closer.  While the exter­nal cam­paign may have helped draw peo­ple to your site, the inter­nal pro­mo­tion is respon­si­ble for seal­ing the deal and mak­ing sure they fol­low through to your con­ver­sion process.

A recent trend I’ve noticed with my clients has to do with mea­sur­ing the num­ber of inter­nal pro­mo­tion impres­sions.  While mea­sur­ing the num­ber of inter­nal pro­mo­tion Click­throughs is a well-established best prac­tice in dig­i­tal ana­lyt­ics, mea­sur­ing the num­ber of impres­sions that inter­nal pro­mo­tions receive is an idea that is grow­ing in popularity.

The main point of count­ing inter­nal pro­mo­tion impres­sions is to gauge which pro­mo­tions a vis­i­tor saw on a given page before a click-through occurred.  By col­lect­ing this infor­ma­tion, mar­keters can under­stand which of their inter­nal pro­mo­tions res­onate more strongly with cus­tomers and can lead to opti­miz­ing their place­ment on a given page.

We typ­i­cally rec­om­mend that our clients col­lect inter­nal pro­mo­tion impres­sions into a delim­ited vari­able – either a List Prop or List Vari­able.  The ben­e­fit in using these types of vari­ables is that they split each delim­ited ele­ment in the list into its own line item in a report, mak­ing it much eas­ier to under­stand and inter­pret the resul­tant data.

While List Props are very easy to set up, they have their lim­i­ta­tions.  All props (even List Props) are sub­ject to a 100 char­ac­ter lim­i­ta­tion, so a page with mul­ti­ple inter­nal pro­mo­tions may run into trun­ca­tion issues or miss­ing data.  Addi­tion­ally, you can­not pull suc­cess events into any traf­fic report, so you’d be lim­ited to using the Page Views, Vis­its, and Unique Vis­i­tors metrics.

Here’s an exam­ple of how you’d set a List Prop with a list of inter­nal pro­mo­tion impressions:



My pre­ferred method to col­lect inter­nal pro­mo­tion impres­sions is to use a List Vari­able (com­monly known as a “List Var”).  The biggest advan­tage with a List Vari­able is that they can accept very long val­ues.  While each delim­ited field is lim­ited to 255 char­ac­ters, the vari­able itself has no length lim­i­ta­tion.  Addi­tion­ally, you can pull suc­cess events into a List Vari­able report, which makes them much more use­ful in terms of under­stand­ing con­ver­sion.  If you’re set­ting mul­ti­ple inter­nal pro­mo­tions on a page, you can also add a field-level “sub-delimiter” which allows you to add addi­tional detail to the items con­tained within the list.

Here’s an exam­ple of a List Vari­able with­out a field-level sub-delimiter, as well as a suc­cess event to incre­ment an impres­sion for each ele­ment in the list:

if (s.list1){ = s.apl(, “event1”, “,”, 2);} //if list3 is present, call event1

This is how the list would show up in a report using the code above:



And here’s an exam­ple of a List Vari­able with a field-level sub-delimiter, as well as a suc­cess event to incre­ment an impres­sion for each ele­ment in the list:

if (s.list1){ = s.apl(, “event1”, “,”, 2);} //if list1 is present, call event1

When using a List Vari­able, there are a few things to con­sider.  Like Con­ver­sion Vari­ables (eVars), the expi­ra­tion and allo­ca­tion set­tings for a List Vari­able can be mod­i­fied.  Make sure that you pay close atten­tion to these set­tings and mod­ify them as needed for your spe­cific imple­men­ta­tion.  Each report suite only has three List Vari­ables avail­able, so make sure you plan accord­ingly!  Also, in order to tie your impres­sions to click­throughs, make sure that the IDs passed in your inter­nal pro­mo­tion impres­sions are the same as those passed upon a clickthrough!

If you’re look­ing for a more auto­mated way to col­lect inter­nal pro­mo­tion impres­sions, there are a num­ber of plu­g­ins that have been writ­ten by mem­bers of our con­sult­ing team for you to lever­age.  If this is some­thing that you’re look­ing for, don’t hes­i­tate to ask your friendly Ana­lyt­ics con­sul­tant for more information!

In a future blog post, we’ll dive into how you can opti­mize your report­ing by ana­lyz­ing the rela­tion­ship between the impres­sions and resul­tant Click­throughs that your inter­nal pro­mo­tions receive.  Until then, feel free to leave a ques­tion or com­ment below!


HI Adam,

Thank you for such a useful post. We tried to implement this approach in tracking the CTR on our page Modules. 

But came across the following s.list allocation limitation. Since s.list has only Full / Liner allocation, all success events are getting allocated to all previously fired s.list variables.

E.g.  we would fire s.list (with the page Module names)  and impression event (event39) when the page loads:"event39"

Then, we would fire the event24 with the clicked Module name if the user clicks on it:"event24"

WE hoped to get both the number of impressions and the number of clicks (and CTR rate) from the s.list report. However, since s.list values are never overwritten, all previously fired Module names got credit for both impression and click events. And instead of getting 1 click for Mod2 only, we got 1 click each for Mod1, Mod2, and Mod3.

Is there a workaround this issue? How s.list's allocation limit can be overwritten? IS there another way to implement the MOdule (= Internal Campaign) tracking?

Thank you!