Wel­come back to the Site­Cat­a­lyst Finance Fun­da­men­tals blog series.  In this series we are dis­cussing the imple­men­ta­tion basics and exam­ple analy­sis of each fun­da­men­tal solu­tion that Finan­cial Ser­vices cus­tomers should con­sider lever­ag­ing.  Stay tuned and please feel free to con­tribute your thoughts/experience as we dis­cuss each solution.

The bread and but­ter of Site­Cat­a­lyst is mea­sur­ing the effec­tive­ness of cam­paigns against down­stream con­ver­sions.  With this fun­da­men­tal (and applic­a­ble down­stream con­ver­sions) imple­mented cor­rectly, orga­ni­za­tions can under­stand the effec­tive­ness of exter­nal mar­ket­ing cam­paigns on dri­ving both traf­fic and con­ver­sions.  Today’s post will focus on imple­men­ta­tion best prac­tices and a future post will cover report­ing and analy­sis tips.

Fun­da­men­tal Implementation

At the most basic level, this solu­tion lever­ages one Site­Cat­a­lyst vari­able: the Cam­paign Track­ing Code (aka s.campaign).  The default set­ting for this vari­able is last touch allo­ca­tion and seven day dura­tion.  In finan­cial ser­vices, I often see clients extend the dura­tion up to 30 days and in some rare cases 60 or 90.  Gen­er­ally I’d say 14 to 30 days is the right range, since the fur­ther you go out, the less rel­e­vant the cam­paign is to the down­stream conversion.

Cam­paign track­ing starts with ensur­ing that the s_code is con­fig­ured to find a spe­cific query string para­me­ter and assign it to s.campaign.  This is typ­i­cally done with the get­Query­Param plu­gin.  Gen­er­ally speak­ing, the s_code would also be con­fig­ured to dedu­pli­ate click-throughs with the get­Val­Once plu­gin.  Usu­ally, this code is setup for you by your Adobe imple­men­ta­tion con­sul­tant and it might look some­thing like this:

/*External Campaigns*/

if(!s.campaign) s.campaign=s.getQueryParam(‘s_cid’)


In this code “s_cid” is the query string para­me­ter used for exter­nal cam­paign track­ing.  If you would pre­fer to use another para­me­ter, it is as easy as swap­ping this out.

Once the s_code has been con­fig­ured, then the next step is to tag all exter­nal mar­ket­ing cam­paigns that drive traf­fic to your web­site with track­ing codes.  Every email, paid search, off­site ban­ner, social media link, offline van­ity URL redi­rect, etc. should be tracked with a unique track­ing code.  The more gran­u­lar the code, the more gran­u­lar the report­ing can be, but the more main­te­nance will be required for man­ag­ing the codes.  Con­sis­tency is king here, as untagged cam­paigns will not show up in the report­ing and miss-tagged cam­paigns can impact data quality.

For exam­ple, let’s say that I wanted to pro­mote this blog post through LinkedIn, as well as email­ing it out to a hand­ful of my col­leagues.  To mea­sure the effec­tive­ness of these two cam­paigns, I would assign each one a unique track­ing code and embed that track­ing code in the URL of the link to the page.  The URLs would look some­thing like this.

On LinkedIn:


In the email:


In these URLs, “sm-tcsffecp11” and “em-tcsffecp12” are my track­ing codes.  s_cid matches the query string para­me­ter con­fig­ured in the s_code.  When these URLs are present, the s_code will iden­tify the s_cid query string, and pull the track­ing codes into s.campaign.

It isn’t uncom­mon to have thou­sands and thou­sands of track­ing codes in a fully imple­mented sys­tem.  This can pose a real chal­lenge in man­ag­ing the codes, the meta­data, and report­ing.  SAINT clas­si­fi­ca­tions help immensely to sim­plify the report­ing aspect, but there still needs to be a process/system for man­ag­ing the track­ing codes and import­ing their meta­data to SAINT.  Cur­rently my favorite solu­tion for this is the SAINT Bernard tool that was devel­oped last year by Adobe’s Engi­neer­ing Ser­vices team.

Com­mon Pitfalls

  • Incon­sis­tent imple­men­ta­tions:  It isn’t uncom­mon for a Finan­cial insti­tu­tion to have excel­lent cam­paign track­ing on paid search and ban­ner ads, but com­pletely miss track­ing codes on monthly state­ment emails (yes, those links in the monthly state­ment are dri­ving vis­i­tors to your site, and are there­fore con­sid­ered exter­nal mar­ket­ing activ­i­ties, even if the goal might be dif­fer­ent from more tra­di­tional mar­ket­ing efforts).
  • Mix­ing exter­nal and inter­nal cam­paigns:  I’ve seen imple­men­ta­tions where the same query string para­me­ter and Site­Cat­a­lyst vari­able is used for track­ing exter­nal (off­site) cam­paigns and inter­nal (onsite) cam­paigns.  When this hap­pens, the inter­nal cam­paigns over­write exter­nal cam­paigns.  This results in under­stat­ing the value of exter­nal cam­paigns.  Best prac­tice imple­men­ta­tions will use a dif­fer­ent query string para­me­ter and a dif­fer­ent eVar for track­ing the inter­nal campaigns.
  • Not dedu­pli­cat­ing click-throughs:  To me, hav­ing an accu­rate click-through met­ric is very impor­tant in a basic imple­men­ta­tion.  Dedu­pli­cat­ing click-throughs using the get­Val­Once plu­gin men­tioned above ensures that reload­ing the land­ing page or click­ing on the back but­ton to the land­ing page don’t inflate the click-through count.  In my next post, I’ll go into details on using click-throughs instead of vis­its or vis­i­tors for con­ver­sion rates.

Advanced Imple­men­ta­tion

There are a num­ber of advanced imple­men­ta­tion tac­tics.  Today, I will briefly touch on just two of them.

  • Mar­ket­ing Chan­nels: While tag­ging all exter­nal cam­paigns that you can is a pre­req­ui­site for effec­tive exter­nal cam­paign report­ing, there will be chan­nels that you can­not tag (e.g. nat­ural search, nat­ural social media, and nat­ural refer­rers).  The mar­ket­ing chan­nels solu­tion pro­vides a method to iden­tify these untag­gable “nat­ural” chan­nels and pro­vides a more holis­tic view of report­ing on all sources of traf­fic to your web­site.  Detailed doc­u­men­ta­tion on lever­ag­ing Mar­ket­ing Chan­nels can be found here.
  • Cost Met­rics: Just like cap­tur­ing the esti­mated value of a con­ver­sion (or import­ing value data via trans­ac­tion IDs) can pro­vide a bet­ter numer­a­tor for eval­u­at­ing cam­paign per­for­mance, import­ing the cost of a cam­paign can also pro­vide a bet­ter denom­i­na­tor.  The mar­ket­ing chan­nels solu­tion pro­vides a mech­a­nism for import­ing cost/budget data for each mar­ket­ing chan­nel.  Alter­na­tively, data sources can be used to upload this data to indi­vid­ual track­ing codes.


Cam­paign track­ing is one of the highest-value opti­miza­tion points that can be done in Site­Cat­a­lyst, and imple­ment­ing cor­rectly gives lots of poten­tial for upside. We have cov­ered the imple­men­ta­tion basics in this post.  In the next post, we will go over the reporting/analysis ben­e­fits and exam­ples avail­able from this solution.

Have a ques­tion about any­thing related to Site­Cat­a­lyst for the Finan­cial Ser­vices indus­try?  Do you have any tips or best prac­tices to share?  If so, please leave a com­ment here or send me an email at tucker (at) adobe​.com and I will do my best to answer it on this blog! (Don’t worry – I’ll keep your name and com­pany name confidential).