Sign in
Google - Google Analytics

Help forum Feed Feed

Help forum > Google Analytics > Campaign Tracking > Automatically tagging PPC urls in using dynamic parameters in Google, Yahoo & MSN (Best Practice Techniques)

Automatically tagging PPC urls in using dynamic parameters in Google, Yahoo & MSN (Best Practice Techniques) Report abuse

PPC_Guru
Top Contributor
2/14/09
I am trying to work out a "best practice" way of tagging url`s by utilising the ad providers {dynamic} parameter, rather than manually tagging individual url`s.

Also, I need to store the Bidword and Campaign Name in the destination url`s & ensure the urls are not longer than 1024 characters.

Q1. Does adding manual url tags to adwords break GA tracking when gclid is enabled? e.g I wish to add utm_content={creative} and utm_campaign=MY_CAMPAIGN but I am concerned that dding tags will mena that cost data from adwords will not be passed or the GA tracking will break. As a work around I have used "utm_campaignX" and "utm_contentX" so parameter names are nto the same, but this is not idea.

Q2. Does anyone know if double calls to dynamic parameters will work in in Google, Yahoo & MSN? E.g

Google:  kw={ifcontent:ContentKeyword}{ifsearch:{keyword}}&distribution={ifsearch:search}{ifcontent:content}
Yahoo:kw={YSMKEY}&utm_term={YSMKEY}
MSN:kw={keyword}&utm_term={keyword}

Q3. Here is the interesting bit, comments gratefully received!...
(Note:CAPITALS indicates a manual tag, not dynamic)

------------- Google - Adwords
http://www.mydomain.com/landingpage.htm?
source=GOOGLE
kw={ifcontent:ContentKeyword}{ifsearch:{keyword}}
match=MY_MATCHTYPE
distribution={ifsearch:search}{ifcontent:content}
site={placement}
utm_contentX={creative}
utm_campaignX=MY_CAMPAIGN

Google dynamic variables:
{keyword}
{ifsearch:search}{ifcontent:content}
{placement}
{creative}


------------- Yahoo - YSM
http://www.mydomain.com/landingpage.htm?
source=YAHOO
kw={YSMKEY}
match={YSMMTC:exact:broad:content}
distribution={YSMMTC:search:search:content} * not sure if this works
adgrpid={YSMADGRPID}
utm_source=YAHOO
utm_medium=CPC
utm_campaign={YSMCAMPGID}
utm_term={YSMKEY}
utm_content={YSMADID}

Yahoo dynamic variables:
{YSMCAMPGID}
{YSMADGRPID}
{OVRAW}
{OVKEY}
{OVMTC}
{OVADID}
{OVKWID}

Note: Capital letters MUST  be used for the parameter names e.g  YSMADGRPID & YSMCAMPID according to yahoo help file:
:http://help.yahoo.com/l/us/yahoo/ysm/sps/screenref/16897.html#1

------------- MSN - Adcenter
http://www.mydomain.com/landingpage.htm?
source=MSN
kw={keyword}
match={MatchType}
distribution=SEARCHutm_source=MSN
utm_medium=CPC
utm_campaign=MY_CAMPAIGN
utm_term={keyword}
utm_content={AdID}

MSN dynamic variables:
{keyword}
{QueryString} * not used
{MatchType}
{OrderItemId}
{AdId}

Thanks

Phil.

Replies 1 - 33 of 33

PPC_Guru
Top Contributor
2/20/09
UPDATE: I am still testing this, waiting 24hours for results.

Google: (I still am unsure if utm_content & utm_campaign will break ?gclid cost tracking)

?source=GOOGLE&kw={ifcontent:ContentKeyword}{ifsearch:{keyword}}&match=MY_MATCHTYPE&distribution={ifsearch:search}{ifcontent:content}&site={placement}&utm_content={creative}&utm_campaign=MY_CAMPAIGN

Yahoo:

?source=YAHOO&kw={YSMKEY}&match={YSMMTC:exact:broad:content}&distribution={YSMMTC:search:search:content}&adgrpid={YSMADGRPID}&utm_source=YAHOO&utm_medium=CPC&utm_campaign={YSMCAMPGID}&utm_term={YSMKEY}&utm_content={YSMADID}

MSN: the ad destination url is set to {param1}

?source=MSN&kw={keyword}&match={MatchType}&distribution=SEARCH&utm_source=MSN&utm_medium=CPC&utm_campaign=MY_CAMPAIGN&utm_term={keyword}&utm_content={AdID}

Phil.
1 of 1 people found this answer helpful. Did you? Sign in to vote. Report abuse
Caleb Whitmore
Top Contributor
2/20/09
Phil,

To answer your question about whether or not using custom campaign parameters works in conjunction with AdWords auto-tagging the answer is no.  If you define utm_... in your destination URL's and have auto tagging, the gclid parameter will be added as well.  The utmz cookie, which captures campaign values, will record all the values, including the gclid.  Therein lies the problem - GA will record what you define with utm_... variables, but when the AdWords GCLID match runs it will overwrite any custom parameters for a session.

The best method for handling tagging on Yahoo and MSN as well as graceful tagging for Analytics is that I've found is below.  I came up with this last year when working on a similar solution for a large automotive client.

1) use some client-side code that selectively determines what the source is and then formulates a tracking string based on the appropriate parameters, and injects them into the URI via modifying the location.hash portion of the URI before you run the GA code.  Also be sure to enable the setAllowAnchor() method in your GA tag.

2) The result would be a URL loads, www.yousite.com/page.html?source=YAHOO&kw={YSMKEY}&
match={YSMMTC:exact:broad:content}&distribution={YSMMTC:search:search:content}&adgrpid={YSMADGRPID}&utm_source=YAHOO&utm_medium=CPC&utm_campaign={YSMCAMPGID}&utm_term={YSMKEY}&utm_content={YSMADID}

3) The JS code above reads the values out of the URI and creates a string to inject into the hash that looks like this: "#utm_source=yahoo.com&utm_medium=cpc-search-broad&utm_campaign=campaign-name&utm_term=term&utm_content=ad-content" so the URI then changes to www.yousite.com/page.html?source=YAHOO&kw={YSMKEY}&
match={YSMMTC:exact:broad:content}&distribution={YSMMTC:search:search:content}&adgrpid={YSMADGRPID}&utm_source=YAHOO&utm_medium=CPC&utm_campaign={YSMCAMPGID}&utm_term={YSMKEY}&utm_content={YSMADID}#utm_source=yahoo.com&utm_medium=cpc-search-broad&utm_campaign=campaign-name&utm_term=term&utm_content=ad-content

4) You then run ga.js with the setAllowHash(), which will read the values from the URI in the # string and set the utmz cookie accordingly, then fire tracking hits.  The rest will work as through you used standard GA tags for campaign tracking, and other tagged URL's would continue to be tracked normally.

Hope that helps!

-Caleb Whitmore
www.analyticspros.com
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
2/24/09
Caleb,

Thanks for the detailed reply.

Yes, the "location.hash" & pageTracker._setAllowAnchor(true); solution is an elegant one.

I found a recent blog post & script using this method:
http://www.e-nor.com/blog/index.php/web-analytics/tracking-traffic-from-press-releases-in-google-analytics/

JavaScript URI injection code:
http://www.e-nor.com/blog/images/09/code.txt

However, I am not a developer and I am not able to easily implement onsite changes.

I am trying to figure out a generic tag solution for PPC managers like myself; that does not involve manually tagging every single keyword url, and utilises the SE dynamic parameters.

Here is as far as I have got…

I have included the dynamic parameters first, then actual value from a live advert.

CAPITALS indicate a manual tag, not a dynamic parameter.

-------- Google:
 “utm_content” change to “adID”
“utm_campaign” change to “campaign”

?source=GOOGLE&kw={ifcontent:ContentKeyword}{ifsearch:{keyword}}&match=MY_MATCHTYPE&distribution={ifsearch:search}{ifcontent:content}&site={placement}&adID={creative}&campaign=MY_CAMPAIGN

http://www.mydomain.com/landingpage.htm?
source=GOOGLE
kw=tracking_test_20090219_tagged
match=MY_MATCHTYPE
distribution=search
site=
adID=2599556614
campaign=MY_CAMPAIGN
gclid=CPnEuv2m8pgCFQqT3wodllxm1g

The site={placement}is empty in this example, as the advert was active on  google.co.uk - if site targeting on content network is used {placement} data will be populated or you can a filter for $A2 in Referral: ^(http://|https://)([^/]*)

As Caleb pointed out the utm_content and will be  overwritten by gclid from adwords. Thus I have to use this work-around to store the utm_content now called “adID” parameter:

1. Advanced Custom Filter to send value of "adID" to Campaign Content
Request URI:(\?|&)^adid=([^&]*)
Campaign Content:$B2

2. Advanced Custom Filter to remove adId parameter from URI
Request URI:(.+)(\?|&)^adid=([^&]*)(.*)
Request URI:$A1$A4

NOTE TO GOOGLE:  Please add support for {MatchType} & {Campaign name} dynamic parameter in Adwords; it will make this process alot easier.

-------- Yahoo

I have change {YSMMTC:exact:broad:content}
to {YSMMTC:standard:advanced:content} for simplicity.

?source=YAHOO&kw={YSMKEY}&match={YSMMTC:standard:advanced:content}&distribution={YSMMTC:search:search:content}&adgrpid={YSMADGRPID}&utm_source=YAHOO&utm_medium=CPC&utm_campaign={YSMCAMPGID}&utm_term={YSMKEY}&utm_content={YSMADID}

http://www.mydomain.com/landingpage.htm?
source=YAHOO
kw=tracking%20test%2020090219
match=standard
distribution=search
adgrpid=10424031419
utm_source=YAHOO
utm_medium=CPC
utm_campaign=650988031
utm_term=tracking%20test%2020090219
utm_content=23047458531
OVRAW=tracking%20test%2020090219
OVKEY=tracking%20test%2020090219
OVMTC=standard
OVADID=23047458531
OVKWID=163017877531

-------- MSN - advert url’s have been set to use {param1}

?source=MSN&kw={keyword}&match={MatchType}&distribution=SEARCH&utm_source=MSN&utm_medium=CPC&utm_campaign=MY_CAMPAIGN&utm_term={keyword}&utm_content={AdID}

http://www.mydomain.com/landingpage.htm?
source=MSN
kw=tracking%20test%2020090219
match=e
distribution=SEARCH
utm_source=MSN
utm_medium=CPC
utm_campaign=MY_CAMPAIGN
utm_term=tracking%20test%2020090219
utm_content=450250688

Note: MSN`s {MatchType} dynamic parameter only shows a single letter value:
e=exact
p=phrase
b=broad
c=content

Thus match={MatchType} will be either an e|p|b|c

It is possible to add filters in GA to change the above to exact|phrase|broad|content using:

** NOT TESTED - I will report back once I have checked these filters work in 48hours **

Request URI:(.+)(\?|&)^match=e(\?|&)$(.*)
Request URI:$A1$A2match=exact$A3$A4

Request URI:(.+)(\?|&)^match=p(\?|&)$(.*)
Request URI:$A1$A2match=phrase$A3$A4

Request URI:(.+)(\?|&)^match=b(\?|&)$(.*)
Request URI:$A1$A2match=broad$A3$A4

Request URI:(.+)(\?|&)^match=c(\?|&)$(.*)
Request URI:$A1$A2match=content$A3$A4

Then send the value to an empty field, such as User Defined:

Campaign Source:(.*)
Request URI:(\?|&)^match=([^&]*)
User Defined:$A1-$B2

This would display as “google-exact” or “google-phrase”

Then remove the "match=" parameter in URI
Request URI:(.+)(\?|&)^match=([^&]*)(.*)
Request URI:$A1$A4

Cheers

Phil.
Did you find this answer helpful? Sign in to vote. Report abuse
Caleb Whitmore
Top Contributor
2/24/09
Phil,

Great post.  I noted "Thus I have to use this work-around to store the utm_content now called “adID” parameter:" still won't work for you because when gclid is processed in, it's going to overwrite anything that is in that field if gclid is set in the utmz cookie.

The E-Nor post is a good overview with more details.  Their post and script is based on the case study I presented with the method I noted earlier.  In theory, with some effort in scripting, you don't need to do a tone of work to implement location.hash solution once you've mapped your parameters.  You'd simply need to script the handler to capture the variables for each engine and render them out into the location.hash field.  Place that handler into your site globally in the <head> or before your GA code and you'll be set.

-Caleb
www.analyticspros.com
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
2/24/09
Caleb,

Removing the value of adID is happening after GA logs have been processed via a custom filter; which is extracting this from the landing page URI, thus I can not see how gclid overwriting utmz cookie will make any difference?

"simply" .. implement the location.hash solution by mapping parameters... add script handler to capture variables for each engine... render into location.hash ... place handler into global <head>... add salt... bake for 30mins ;-))

I will consult developer and see if he is able to adapt the E-Nor script to map the parameters.

Phil.
Did you find this answer helpful? Sign in to vote. Report abuse
ShoreTel
Top Contributor
2/24/09
This is a very interesting thread re: overwriting utm_* tags from gclid. I too use the auto-tagging + manual tagging and in my AdWords clicks report the AdWords campaign name (as listed in AdWords) gets credit for the visit, but the "manual" campaign tag (ie. utm_campaign), get credit for the Impression, Click, Cost, etc.

The top line data all ends up being correct, but the visits and clicks are split between the two "versions" of the campaign.

Our saving grace is the fact that we don't include utm_term (keyword) in our manual tags so when we change the Clicks report to Dimension -> Keyword, everything lines up with the correct keyword.
Did you find this answer helpful? Sign in to vote. Report abuse
Caleb Whitmore
Top Contributor
2/24/09
Phil,

Yes, the bake for 30 mins is the most important part :).

Unless Google has changed ordering of operations, the gclid acts as a lookup table.  the gclid doesn't overwrite the cookie, it is an actual value appended into the __utmz cookie which is then processed later and matched back to a data import from AdWords.  It used to be that filters weren't able to influence fields impacted by a lookup table.  If your test shows otherwise I'd love to hear about it!

Oh, and set the oven to 450 degrees (f) when baking that script - but I don't what that converts to in metric measures ;).

Best,

-Caleb
Did you find this answer helpful? Sign in to vote. Report abuse
Caleb Whitmore
Top Contributor
2/24/09
ShoreTel,

That is very interesting feedback about the auto campaign getting credit for the AdWords campaign name and your manual campaign getting the impressions, etc.. attributed to it.  That would indicate to me that GA is first processing the visit level data and reconciling the AdWords import with visit dimensions and then running filters, before finally adding the additional imported AdWords metrics to the report.

If you cross-segment by a dimension other than campaign, i.e. go through, say, Regions, then segment by campaign, what gets attributed - AdWords or Manual? 

-Caleb Whitmore
www.analyticspros.com
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
2/26/09
RE:Caleb post "gclid auto campaign getting credit for the AdWords campaign name and your manual campaign getting the impressions attributed to it" ... and checking... "cross-segment by a dimension other than campaign". This is confusing me.

I think Caleb is suggesting that in Traffic report >> Campaign which is set by utm_campaign in Yahoo & MSN will be incorrect, but Traffic Source >> Adwords >> Adwords Campaigns will be correct? Due to the gclid assigning Impression to campaigns correctly for Adwords but not for manually tagged cmapaigns such as Yahoo & MSN. Is that right?

UPDATE: Regarding ppc dynamic parameters, I have made a couple of changes to the tags. I have decided to add a parameter for SearchWord (sw) and use the YSM & MSN dynamic parameters &sw={YSMRAW} and &sw={QueryString} .

There is no adwords parameter for SearchWord so I will try to use the value of try to add the search string stored in  __utmz (utmctr=search-word) into trackPageview e.g
trackPageview(/landingpage.htm/?source=GOOGLE&kw=tracking_test_20090219_tagged&match=MY_MATCHTYPE&distribution=search&site=&adID=2599556614&campaign=MY_CAMPAIGN&gclid=CPnEuv2m8pgCFQqT3wodllxm1g&sw=SEARCH-WORD-HERE);

Secondly, I am requested that Adwords add a {position} parameter as this would be very useful for bid management. There is a value of num= in google paid advert redirects, but this is not shown in the referrer so need to be a dynamic parameter.
http://www.google.co.uk/aclk?sa=[right-side-advert]&ai=[randomclickID]&num=[ad_position]&ggladgrp=[adgroupid]&gglcreat=[adid]&sig=[clientid-encoded]&q=[desination-url]

Cheers

Phil.

P.S That would be 230º c - I will let you know when I have got the JavaScript URI injection installed correctly - hopefully I will avoid overheating the server & cookies burning ;-)

Did you find this answer helpful? Sign in to vote. Report abuse
Caleb Whitmore
Top Contributor
2/27/09
Phil,

gclid isn't relevant to Yahoo or MSN since it is a custom parameter for AdWords.  My thought re: ShoreTel's note was that it sounds like there is an order of operations applied with the AdWords cost data import that splits attribution of campaign names to visit metrics and application of cost-data.

Two other thoughts:

1) You don't need to pass in the actual query string as a parameter since it is already available to GA.  There have been filters out for years that copy the actual query string for any engine and move it into another field, usually user-defined, to allow drill-down on bidded term > actual term.  I'll link to them below.

2) You don't need an AdWords position parameter as these are already available as dimensions in Google Analytics - just not normally exposed.  See the post about "secret segments" on my blog at www.analyticspros.com, and use the "segkey" of "ad_slot" and "ad_slot_position".  I'll try to put up a blog post about it later today with a quick-link you can just drag-n-drop onto your bookmarks toolbr for quick access.

Best,

-Caleb Whitmore
www.analyticspros.com
Did you find this answer helpful? Sign in to vote. Report abuse
Caleb Whitmore
Top Contributor
2/27/09
Update: the reference I made to linking to blog posts about the filter for exact terms - I can't seem to find the blog post that originally covered this, so I'm going to write one of my own.  Check back soon...

-Caleb
Did you find this answer helpful? Sign in to vote. Report abuse
ShoreTel
Top Contributor
2/28/09
FYI: When I go to Map Overlay and choose a country (US) and then do Dimension -> Campaign the "official" AdWords Campaign name gets credit for the visit, not the utm_campaign tag. The same as the AdWords Campaigns -> Clicks report.
Did you find this answer helpful? Sign in to vote. Report abuse
Caleb Whitmore
Top Contributor
3/2/09
Ahh... so it sounds like there are some slightly strange orders of operation for reconciling gclid data to dimensions.

-Caleb
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
3/7/09
Caleb,

Sorry for the delayed reply - I was on Holiday.

1) Yes, I know about the RegEx for extracting the Search Engine query string e.g $A3 in (\?|&)(q|p|query)=([^&]*) of Referral.

However not all Google or Yahoo cpc search partners use a q|p|query as a SearchWord parameter. Thus using &sw={YSMRAW} for Yahoo and extracting utmctr=search-word in the  __utmz cookie for Google is a more accurate way of catching all the exact searches.

Just to give you an idea of scale the legacy GA code there are 12 different search parameters for the SearchWord uOkw= (q|p|query|qs|qt|encquery|k|rdata|searchExpr|szukaj|terms|text|wd|search_for) and some UK engines such as orange.co.uk & sky.co.uk are not added by default in http://www.google-analytics.com/urchin.js (uOkw=)

Secondly, I need to dissect parameters values on the landing page using Excel. Thus if I save the SearchWord on the landing page this save me time.

Thirdly, it will be an interesting test to set the internal site search parameter to the same parameter as the referring search keyword (?sw)- this might highlight some new keywords or provide a new way of using the keyword refinements report for AdWords campaign.

2) Cool - I did not know it was possible to segment by Ad Slots or Ad Positions :-)

However, this only worked for me when I clicked the apply segment button in advanced segment reports (this added &seg0=[my-saved-report-number]) to the url.

When I tried manually adding…

&segkey=1&segkey=ad_slot
&segkey=1&segkey=ad_slot_position
&segkey=1&segkey=ad_group

…to the url in the Adwords Campaign reports in GA - I just got this error message saying segmentation not possible: https://www.google.com/support/googleanalytics/bin/answer.py?answer=113738

Phil.
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
3/9/09
UPDATE: In order to standardise parameter definitions I have switched the naming of utm_content & utm_campaign back (i.e removed the "X" at the end) in Adwords tag. If the AdWords GCLID matching is overriding everything, then I see no harm in adding these manual tags.

Secondly, I can still see the manual parameter values in my backup analytics solution which are not effected by the GCLID override. Thirdly, this means that the "utm_campaign" & "utm_content" are consistent across the 3 major cpc Search Engines.

I have decided to manually name the Yahoo Campaigns and change utm_campaign={YSMCAMPGID} …to… campgid={YSMCAMPGID}. This is because I prefer to use a text name campaign rather than an ID and it means that this is consistent with Google & MSN campaign names.

To rule out the possibility of an overlap in AdvertID, I have added a single character (g|y|m) infront of:
Google:utm_content=g{creative}
Yahoo :utm_content=y{YSMADID}
MSN   :utm_content=m{AdID}

In order to standardise tagging further; I have added empty parameters such as adgrpid= and site= so that each Search Engine has the same number of parameters. I have added campgid= adgrpid= kwid= as suspect in the long term the SE`s will add support for these 3 parameters (see my note about SpyFu at the end of this post).

CAPITALS indicates a manual tag.

The “Source” & “kw” parameters have been added for 3rd party legacy tracking systems which do not support customs parameter definitions.


------------ Google:
http://www.mydomain.com/landingpage.htm?
source=google
kw={ifcontent:contentKeyword}{ifsearch:{keyword}}
match=ENTER_MY_MATCHTYPE_HERE
distribution={ifsearch:search}{ifcontent:content}
site={placement}
campgid=
adgrpid=
kwid=
utm_source=google
utm_medium=cpc
utm_campaign=ENTER_MY_CAMPAIGN_HERE
utm_term={ifcontent:contentKeyword}{ifsearch:{keyword}}
utm_content=g{creative}
sw=

?source=google&kw={ifcontent:contentKeyword}{ifsearch:{keyword}}&match=ENTER_MY_MATCHTYPE_HERE&distribution={ifsearch:search}{ifcontent:content}&site={placement}&campgid=&adgrpid=&kwid=&utm_source=google&utm_medium=cpc&utm_campaign=ENTER_MY_CAMPAIGN_HERE&utm_term={ifcontent:contentKeyword}{ifsearch:{keyword}}&utm_content=g{creative}&sw=


------------ Yahoo:
http://www.mydomain.com/landingpage.htm?
source=yahoo
kw={YSMKEY}
match={YSMMTC:standard:advanced:content}
distribution={YSMMTC:search:search:content}
site=
campgid={YSMCAMPGID}
adgrpid={YSMADGRPID}
kwid=
utm_source=yahoo
utm_medium=cpc
utm_campaign=ENTER_MY_MY_CAMPAIGN_HERE
utm_term={YSMKEY}
utm_content=y{YSMADID}
sw={YSMRAW}

?source=yahoo&kw={YSMKEY}&match={YSMMTC:standard:advanced:content}&distribution={YSMMTC:search:search:content}&site=&campgid={YSMCAMPGID}&adgrpid={YSMADGRPID}&kwid=&utm_source=yahoo&utm_medium=cpc&utm_campaign=ENTER_MY_MY_CAMPAIGN_HERE&utm_term={YSMKEY}&utm_content=y{YSMADID}&sw={YSMRAW}


------------ MSN
http://www.mydomain.com/landingpage.htm?
source=msn
kw={keyword}
match={MatchType}
distribution=search
site=
campgid=
adgrpid=
kwid=
utm_source=msn
utm_medium=cpc
utm_campaign=ENTER_MY_MY_CAMPAIGN_HERE
utm_term={keyword}
utm_content=m{AdID}
sw={QueryString}

?source=msn&kw={keyword}&match={MatchType}&distribution=search&site=&campgid=&adgrpid=&kwid=&utm_source=msn&utm_medium=cpc&utm_campaign=ENTER_MY_MY_CAMPAIGN_HERE&utm_term={keyword}&utm_content=m{AdID}&sw={QueryString}


------------ Exclude parameters to keep the landing page url`s tidy:

source, kw, site, campgid, adgrpid, kwid, sw, ovraw, ovkey, ovmtc, ovadid, ovkwid, ysmwa

I would suggest extrapolating “match” & “distribution” from the request URI to an empty filed such as user defined.

------------ Other points

* It would useful if Adwords Quality Score per keyword was visible in GA via the GCLID lookup.
* Mivia & Looksmart support some dynamic parameters which I have not explored in this post.
* Competitive Intelligence tools such as SpyFu & Adgooroo are being used to extrapolate ppc campaign structures based by spidering SERP`s and copying the destination urls on these pages, thus either kwID and campaignID`s must be used or forwarding url`s need to be used (e.g TradeDoubler http://tsw0.com/xxxx/xxx and Atlas http://clk.atdmt.com/xxx/xxxxxxxx/ ). Note: forwarding urls requires a manual exception to the Adwords display url policy per advert!

Cheers

Phil.
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
3/20/09
FINAL SOLUTION FOR GENERIC PPC TAGS:
---------------------------------------------------------------------

The simplest solution is to use gclid for Google adwords. For Yahoo & MSN use:

Yahoo:
?utm_source=yahoo&utm_medium=cpc&utm_term={YSMKEY}&utm_content=y{YSMADID}&utm_campaign={YSMCAMPGID}

MSN:

?utm_source=msn&utm_medium=cpc&utm_term={keyword}&utm_content=m{AdID}&utm_campaign=msn-campaign

Note: Yahoo "tracking urls" must be enabled and "ovraw, ovkey, ovmtc, ovadid, ovkwid, ysmwa" should be added to your exclude website parameters settings in Google Analytics. Capitals must be used for YSMKEY, YSMADID & YSMCAMPGID. Where "?" is present in the url already changed ?utm_source to &utm_source.
---------------------------------------------------------------------

Here are more comments on the dimensions error & utilising all available dynamic parameters provided by the Search Engines`s...

I received a response from a GA specialist (via Adwords) regarding using utm_* manual tag when autotaging (GCLID) is enabled. I also ask them to expand upon Caleb point about 
"Manual tag data is simply overwritten by the GCLID when the match is run with Adwords and cost data is imported".

GA specialist said...

If the advertiser tags his links manually & also has auto-tagging turned on, neither of them will take precedence. It will cause the cost data for these URLs not to be imported 
into GA. This is because the cookies will capture both the utm_* manual tags & the GCLID, but when GA tries to import cost data from Adwords it gets confused and doesn't know 
how to apply it to the relevant Adwords Campaign.

They said this is a common problem when clients use auto-tagging & manual tags in the same account, and that they encourage either one or the other (not a mix of both) within Adwords campaigns. They suggest that there is no advantage to using manual tags if you are using Auto tagging already.


Here is the quote from slide 27 if the GA test "If you’ve enabled auto tagging, don’t manually tag your AdWords destination URLs. Doing so can create conflicting data in your reports."
http://services.google.com/analytics/breeze/en/campaigntracking_adwordsintegration/index.html

So... I have renamed "utm_campaign"  back to "campaign", and "utm_content" renamed to "adid=", lol!

I am using a secondary analytics program which is unable to lookup the GCLID, so there is a disadvantage for me to only using the auto-tagging method and beacuse I wish to standardise tagging across all Search Engines I will need to double-tag "campaign" & " utm_campaign" in YSM & MSN. This will mean that I will be able to set one parameter "source", "campaign" & "kw" across all ppc engines in my secondary analytics package.

---------- Google Adwords

http://www.yourdomain.com/landingpage.htm?
source=google
kw={ifcontent:content-keyword}{ifsearch:{keyword}}
sw=
distribution={ifsearch:search}{ifcontent:content}
site={placement}
campgid=
adgrpid=
adid=g{creative}
kwid=
campaign=YOUR_CAMPAIGN_NAME_HERE
match=YOUR_MATCHTYPE_HERE

?source=google&kw={ifcontent:content-keyword}{ifsearch:{keyword}}&sw=&distribution={ifsearch:search}{ifcontent:content}&site={placement}&campgid=&adgrpid=&adid=g{creative}&kwid=&
campaign=YOUR_CAMPAIGN_NAME_HERE&match=YOUR_MATCHTYPE_HERE

------------ Yahoo:
http://www.yourdomain.com/landingpage.htm?
source=yahoo
kw={YSMKEY}
sw={YSMRAW}
match={YSMMTC:standard:advanced:content}
distribution={YSMMTC:search:search:content}
site=
campgid={YSMCAMPGID}
adgrpid={YSMADGRPID}
adid=y{YSMADID}
kwid=
utm_source=yahoo
utm_medium=cpc
utm_term={YSMKEY}
utm_content=y{YSMADID}
utm_campaign=YOUR_CAMPAIGN_NAME_HERE
campaign=YOUR_CAMPAIGN_NAME_HERE

?source=yahoo&kw={YSMKEY}&sw={YSMRAW}&match={YSMMTC:standard:advanced:content}&distribution={YSMMTC:search:search:content}&site=&campgid={YSMCAMPGID}&adgrpid={YSMADGRPID}&adid=y{YSMADID}&kwid=&utm_source=yahoo&utm_medium=cpc&utm_term={YSMKEY}&utm_content=y{YSMADID}&utm_campaign=YOUR_CAMPAIGN_NAME_HERE&campaign=YOUR_CAMPAIGN_NAME_HERE

------------ MSN

http://www.yourdomain.com/landingpage.htm?
source=msn
kw={keyword}
sw={QueryString}
match={MatchType}
distribution=search
site=
campgid=
adgrpid=
adid=m{AdID}
kwid=
utm_source=msn
utm_medium=cpc
utm_term={keyword}
utm_content=m{AdID}
utm_campaign=YOUR_CAMPAIGN_NAME_HERE
campaign=YOUR_CAMPAIGN_NAME_HERE

?source=msn&kw={keyword}&sw={QueryString}&match={MatchType}&distribution=search&site=&campgid=&adgrpid=&adid=m{AdID}&kwid=&utm_source=msn&utm_medium=cpc&utm_term={keyword}&utm_content=m{AdID}&utm_campaign=YOUR_CAMPAIGN_NAME_HERE&campaign=YOUR_CAMPAIGN_NAME_HERE

-------------- Shorten Tags (e.g duplicate campaign tags have been removed)

Google:
?source=google&kw={ifcontent:content-keyword}{ifsearch:{keyword}}&distribution={ifsearch:search}{ifcontent:content}&site={placement}&adid=g{creative}&campaign=google-campaign&match=google-matchtype

Yahoo:
?source=yahoo&kw={YSMKEY}&sw={YSMRAW}&match={YSMMTC:standard:advanced:content}&distribution={YSMMTC:search:search:content}&adgrpid={YSMADGRPID}&utm_source=yahoo&utm_medium=cpc&utm_term={YSMKEY}&utm_content=y{YSMADID}&utm_campaign={YSMCAMPGID}

MSN:
?source=msn&kw={keyword}&sw={QueryString}&match={MatchType}&distribution=search&utm_source=msn&utm_medium=cpc&utm_term={keyword}&utm_content=m{AdID}&utm_campaign=msn-campaign

Exclude parameters for the above are:
source, kw, sw, match, distribution, creative, site, campgid, adgrpid, kwid, adid, ovraw, ovkey, ovmtc, ovadid, ovkwid, ysmwa, _s_ref

--------------

To store "match-distribution" (e.g "search-exact") in the empty field user-defined change the exclude parameters to:
source, kw, sw, creative, site, campgid, adgrpid, kwid, ovraw, ovkey, ovmtc, ovadid, ovkwid, ysmwa, _s_ref

Then add these 3 Custom Filter/Advanced filters:

1. Send value of "match-distribution" to user-defined field
Request URI:(\?|&)match=([^&]*)(\?|&)distribution=([^&]*)
User-Defined:$A2-$A4

2. Remove match parameter from Request URI
Request URI:(.+)(\?|&)match=([^&]*)(.*)
Request URI:$A1$A4

3. Remove distribution parameter from request URI
Request URI:(.+)(\?|&)distribution=([^&]*)(.*)
Request URI:$A1$A4

Hopefully that is a wrap, phew. Sorry the post went on a bit!

Cheers

Phil.

P.S just in case GA add support for auto-import of Yahoo ppc cost data here is the url: http://www.google.com/support/analytics/bin/answer.py?hl=en&answer=55467
1 of 1 people found this answer helpful. Did you? Sign in to vote. Report abuse
jkrogers
Level 1
4/28/09
Hi Phil,

Great post. I have been searching for exactly this. I am not a developer, meaning I don't follow exactly what needs to be done. I understand what is happening, just not exactly what goes where, what is dynamic, and what is manual. Would you be willing to post instructions for a layman?

Many thanks!
Jason
Did you find this answer helpful? Sign in to vote. Report abuse
jkrogers
Level 1
4/28/09
Does this accomplish the same thing, from Analytics help?

"The links to my site already contain my own campaign tracking variables. Can I use these variables instead of Google Analytics'?"
http://www.google.com/support/googleanalytics/bin/answer.py?answer=55577&topic=11098

If you've already tagged your online links with your own tracking variables, you can map these existing variables to Google Analytics' campaign tracking variables. Your tagged links will need to contain at least 3 variables. These will map to:

   1. utm_source: the source of your campaign (Google, Overture)
   2. utm_medium: the medium of your campaign (cpc, banner, email)
   3. utm_campaign: the name of your campaign (spring sale)

For the purpose of these instructions, we will assume that your site contains the following URL:

    www.example.com/index.html?camp=GADS&kwd=memory&version=47&type=ppc&adver=google

Step 1. Match your variables with Google Analytics' variables. Create a table following the format below:

User Variable1     Google Analytics Variable     Filter Field2
camp   =>> _setCampNameKey()   =>> Campaign Name
adver   =>> _setCampSourceKey()   =>> Campaign Source
type   =>> _setCampMediumKey()   =>> Campaign Medium
kwd   =>> _setCampTermKey()   =>> Campaign Term
version   =>> _setCampContentKey()   =>> Campaign Content

    1. from the example URL above; replace the values in this table with your own custom campaign variables

Step 2. Modify the tracking code on each of your pages

    You'll need to add the following lines (in bold) to the tracking code on your pages. The additions will be identical for each page, so you can use an include or template system to add this code. The code below is based on the example URL above:

    <script type="text/javascript">
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
    </script>

    <script type="text/javascript">
    try{
    var pageTracker = _gat._getTracker("UA-xxxxxx-x");

    pageTracker._setCampNameKey("camp"); // name
    pageTracker._setCampMediumKey("type"); // medium
    pageTracker._setCampSourceKey("adver"); // source
    pageTracker._setCampTermKey("kwd"); // term/keyword
    pageTracker._setCampContentKey("version"); // content

    pageTracker._trackPageview();
    } catch(err) {}
    </script>

Thanks
Jason
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
5/9/09
A couple of UPDATES on this post.

* The exclude parameter setting in GA is limited to 255 characters -  read ShoreTel`s post here on how to remove more parameter http://tinyurl.com/thank-2-ShoreTel-parameter-fix
* The "source" parameter is now a reserved word because Google are now using source=web & source=iglk in SERP, so I have change to "ecruos", its source backwards :)
* The {keyword} in Adwords is now the SearchWord not BidWord, I am not sure when this changed, but I have only just noticed it. Note:[exact] words will be uneffected, this only impacts "phrase" & broad.
* I forgot to add "creative" parameter for the Ad Title in the above.
* I am still waiting for my YSM IndexTool account activation, so I can not confirm the above tags works as secondary analyics package (Yahoo IndexTools install guide recommends using "kw", "creative" and " _s_ref" but these can be custom mapped http://tinyurl.com/Yahoo-IndexTools-Install-pg35)
*Just to clarify: the MSN & Yahoo tags will work on an advert level e.g It is not necessary to use {param1} in MSN just enter the destination url as  www.yourdomain.com/landingpage.htm?utm_source=msn&utm_medium=cpc&utm_term={keyword}&utm_content=m{AdID}&utm_campaign=msn-campaign" or on Yahoo "www.yourdomain.com/landingpage.htm?utm_source=yahoo&utm_medium=cpc&utm_term={YSMKEY}&utm_content=y{YSMADID}&utm_campaign={YSMCAMPGID}"
* It is a good idea to add filters to change the utm_campaign={YSMCAMPGID} number to a name; as this help with identification. Simularly, adding &utm_content=y{YSMADID}|My-Ad-Title or &utm_content=m{AdID}|My-Ad-Title helps with advert indentificaton and a/b testing advert conversion rates. Also, I can`t emphasise how useful it is to be able to segment by campaign and keywords for MSN rather than view all keywords, so where possible manually enter something the campaign names for your msn in "&utm_campaign=msn-campaign".
* Tip: I am using notetab.com to replace "&" with "^p" when decifering url strings.

----- Jason
Dynamic = "one tag fits all" e.g in Adwords {keyword} will return the SearchWord you are advertising on and the same tag can be used for all keywords destinaton urls.
Manual = manually tag every single keyword or advert url.

As for the writing a layman guide, not sure I have time! Once I get Blog up and running I will re-visit this & write up.

Here are two links that provide examples of the Adwords dynamic parameter
http://adwords.google.com/support/bin/answer.py?hl=en&answer=74996
http://adwords.google.com/support/bin/answer.py?hl=en&answer=75003

--------- Jason second comments

The use of parameter mapping is a good suggestion. However only Yahoo provide parameters to map to by default. e.g.

pageTracker._setCampTermKey("OVKEY"); // for BidWord - (or setCampTermKey("OVRAW")  for SearchWord)
pageTracker._setCampContentKey("OVADID"); // content

Also source, medium & campaign are not present in Yahoo autotags. So you would need to write an onpage script that said "if landing page contains OVADID" then medium = "cpc" & source = "yahoo". But even the campaign name would still be unknown. You would need to manually tag "campaign=my-yahoo-campaign-name" or manually add "adgrpid={YSMCAMPGID}".

pageTracker._setCampNameKey("campaign"); // campaign name (or you could use use setCampNameKey("adgrpid")
pageTracker._setCampMediumKey("type"); // medium
pageTracker._setCampSourceKey("ecruos"); // source

Secondly, unlike Yahoo. MSN does not have an autotag and the mapping will be different for setCampTermKey & setCampContentKey e.g.

pageTracker._setCampTermKey("kw"); // BidWord - "sw" for SearchWord
pageTracker._setCampContentKey("adid"); // content

Thirdly, in Adwords using a destination url of www.yourdomain.com/landingpage.htm/?campaign=my-adwords-campaign and an onpage tag of pageTracker._setCampNameKey("campaign");
would be the same as www.yourdomain.com/landingpage.htm/?utm_campaign=my-adwords-campaign so the adworsds matching bug mentionded above would re-surface.

I think in terms of time and effort adding the tags to advert or keyword urls in Yahoo & MSN, I think  this is quicker thank writing a script for the onpage detection. Also, MSN is due to roll-out a new version of its desktop tool on 14th May soon so this should make tagging in msn easier: https://maf.adcenter.microsoft.com/desktop/Microsoft.adCenter.Editor.application

Cheers

Phil.

---------- Google Adwords
http://www.yourdomain.com/landingpage.htm?
ecruos=google
kw=
sw={ifcontent:content-keyword}{ifsearch:{keyword}}
distribution={ifsearch:search}{ifcontent:content}
creative=
site={placement}
campgid=
adgrpid=
adid=g{creative}
kwid=
campaign=YOUR_CAMPAIGN_NAME_HERE
match=YOUR_MATCHTYPE_HERE

?ecruos=google&kw=&sw={ifcontent:content-keyword}{ifsearch:{keyword}}&distribution={ifsearch:search}{ifcontent:content}&creative=&site={placement}&campgid=&adgrpid=&adid=g{creative}&kwid=&campaign=YOUR_CAMPAIGN_NAME_HERE&match=YOUR_MATCHTYPE_HERE

------------ Yahoo:
http://www.yourdomain.com/landingpage.htm?
ecruos=yahoo
kw={YSMKEY}
sw={YSMRAW}
match={YSMMTC:standard:advanced:content}
distribution={YSMMTC:search:search:content}
creative=
site=
campgid={YSMCAMPGID}
adgrpid={YSMADGRPID}
adid=y{YSMADID}
kwid=
utm_ecruos=yahoo
utm_medium=cpc
utm_term={YSMKEY}
utm_content=y{YSMADID}
utm_campaign=YOUR_CAMPAIGN_NAME_HERE
campaign=YOUR_CAMPAIGN_NAME_HERE

?ecruos=yahoo&kw={YSMKEY}&sw={YSMRAW}&match={YSMMTC:standard:advanced:content}&distribution={YSMMTC:search:search:content}&creative=&site=&campgid={YSMCAMPGID}&adgrpid={YSMADGRPID}&adid=y{YSMADID}&kwid=&utm_ecruos=yahoo&utm_medium=cpc&utm_term={YSMKEY}&utm_content=y{YSMADID}&utm_campaign=YOUR_CAMPAIGN_NAME_HERE&campaign=YOUR_CAMPAIGN_NAME_HERE

------------ MSN
http://www.yourdomain.com/landingpage.htm?
ecruos=msn
kw={keyword}
sw={QueryString}
match={MatchType}
distribution=search
creative=
site=
campgid=
adgrpid=
adid=m{AdID}
kwid=
utm_ecruos=msn
utm_medium=cpc
utm_term={keyword}
utm_content=m{AdID}
utm_campaign=YOUR_CAMPAIGN_NAME_HERE
campaign=YOUR_CAMPAIGN_NAME_HERE

?ecruos=msn&kw={keyword}&sw={QueryString}&match={MatchType}&distribution=search&creative=&site=&campgid=&adgrpid=&adid=m{AdID}&kwid=&utm_ecruos=msn&utm_medium=cpc&utm_term={keyword}&utm_content=m{AdID}&utm_campaign=YOUR_CAMPAIGN_NAME_HERE&campaign=YOUR_CAMPAIGN_NAME_HERE
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
5/9/09
One more point. The idiot that wrote that wrote the Atlas JavaScript tags, decided to make any instance of 'google' or 'miva' in the referring source as from google or miva. I am using a form of ppc arbitrage, so as a safegurad I have changed:

ecruos=google
ecruos=yahoo
ecruos=msn

to...

ecruos=adwords
ecruos=ysm
ecruos=adcent ("er" remove as it is spelt differently in UK)
Did you find this answer helpful? Sign in to vote. Report abuse
johnh123
Level 1
5/13/09
I'm not sure I follow all this.  Above, you say "*Just to clarify: the MSN & Yahoo tags will work on an advert level e.g It is not necessary to use {param1} in MSN just enter the destination url as  www.yourdomain.com/landingpage.htm?utm_source=msn&utm_medium=cpc&utm_term={keyword}&utm_content=m{AdID}&utm_campaign=msn-campaign" or on Yahoo "www.yourdomain.com/landingpage.htm?utm_source=yahoo&utm_medium=cpc&utm_term={YSMKEY}&utm_content=y{YSMADID}&utm_campaign={YSMCAMPGID}"

Does that mean I can do just that and have my tracking, or do I have to do all this other stuff in the posts as well?
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
5/19/09
John, yes just add the tags to Yahoo & MSN. For MSN you need to add this to the Advert destination url, Yahoo I think allows both KW and Advert level tagging.

Phil.
Did you find this answer helpful? Sign in to vote. Report abuse
AntoineNY
Level 1
9/29/09
Hello Phil,

Very interesting posts!
I've finally implemented dynamic parameters for all the search engines. Only if I would have found this post beforehand! This would have saved me lots of time.

I'm willing to change campaign and Ad IDs to more meaningful data, but I'm not very comfortable with how filters work.
Could you explain a little more  "It is a good idea to add filters to change the utm_campaign={YSMCAMPGID} number to a name". I tried to look for other resources on the web but could not find anything.

How would you achieve that?

Thanks,
Antoine
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
10/1/09
@AntoineNY

There is a good post by john @ ppchero .com , who did the same as me...  started by using ID`s then change to names for Adverts & Campaign name, as it was a pain having to match up numbers with names in excel.

1. Inserting “ID” Parameters into URLs:

"Initially, I gave instructions for placing ad group & campaign ID parameters into the utm_content= & utm_campaign= sections of the URL. This is not very helpful, unless you are mapping to an offline keyword database. These are literally ID numbers given to each campaign & adgroup use by Yahoo & MSN. Solution: Insert the actual name of your ad groups & campaigns into these sections of the URL. This will allow you to filter your data by ad group, by campaign, etc. within Analytics."  john @ ppchero .com


http://www.ppchero.com/the-secret-of-tracking-yahoo-keyword-data-in-google-analytics/ (old)
http://www.ppchero.com/url-tagging-tracking-ppc-campaigns-google-analytics/ (new)

I would also recommend changing... Yahoo & MSN ID`s from:

utm_content=y{YSMADID}
utm_campaign={YSMCAMPGID}

utm_content=m{AdID}
utm_campaign={OrderItemID}

To...

utm_content=YOUR_TITLE_HERE
utm_campaign=YOUR_CAMPAIGN_NAME_HERE

utm_content=YOUR_TITLE_HERE
utm_campaign=YOUR_CAMPAIGN_NAME_HERE

2. exclude parameter in GA are case sensitive and run before filters are applied, thus they need to be entered in the same CASE as they appear on the landing page e.g "OVMTC" not "ovmtc". As a precaution both types can be added e.g. "OVMTC, ovmtc"

http://www.google.com/support/forum/p/Google+Analytics/thread?tid=6a060e9477607c8f&fid=6a060e9477607c8f0004706d6559ed09&hl=en

3. There is a official YSM document about tracking tags with examples here, which is worth a read:
http://tinyurl.com/ysm-tracking-url-tags and
http://help.yahoo.com/l/us/yahoo/ysm/sps/screenref/16897.html#1

Cheers

Phil.

When I get some free time... I will compile this post and create an excel formula for Yahoo & MSN to create these tags.
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
10/11/09
If using Banner or Content Network campaigns ppc campaigns.

Consider using ? rather than # and adding pageTracker._setAllowAnchor(true); to footer means that SEO pageranks passes to the correct page. ReadMore: http://www.google.com/support/forum/p/Google+Analytics/thread?tid=653ee3228853e56b&fid=653ee3228853e56b000471e86cedc093

Alternatively, exclude parameters can be added to Google Webmaster Tools:
http://searchengineland.com/google-lets-you-tell-them-which-url-parameters-to-ignore-25925
http://www.flickr.com/photos/23148333@N06/3927048854/
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
11/20/09
MSN has added support for a parameter clickID for auditing (e.g if you use clickforensics.com). ClickFraud on MSN search network is still very low, but if you use an auditing service it worth enabling this feature.

msclkid={msclkid}

http://community.microsoftadvertising.com/blogs/advertiser/archive/2009/06/17/introducing-adcenter-clickids.aspx

It is probably best to set Advert destination url to {param1} and then set KW destination url to the landing page plus ?msclkid={msclkid} or &msclkid={msclkid}

The generic tag looks like this:
?utm_source=msn&utm_medium=cpc&utm_term={keyword}&utm_content=YOUR_TITLE_HERE&utm_campaign=YOUR_CAMPAIGN_NAME_HERE&msclkid={msclkid}

There is an Advanced URL change feature in MSN desktop that can partially automate this task.

It would be nice if MSN added a tick box to auto enable this feature, but looks like they are just letting advertisers do this manually.

Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
11/27/09
When using GA + ClickForensic/YahooIndextools at the same time = both a manual tagging & GCLID need to be present.

However, GA specialist said previously...

If the advertiser tags his links manually AND has auto-tagging turned on, neither of them will take precedence. It will cause the cost data for these URLs not to be imported into GA. This is because the cookies will capture both the utm_* manual tags & the GCLID, but when GA tries to import cost data from Adwords it gets confused & doesn't know how to apply it to the relevant Adwords Campaign.


When I spoke to a GA specialist at eMetrics he added...

There is a work-around: enable customised campaign tracking url & then manually tag urls with the new parameters. The result is that GA import engine does not get confused, as there are no utm* tags present in the url.


So, adding these to the global footer on page tag:

pageTracker._setCampSourceKey("my_source"); // source
pageTracker._setCampMediumKey("my_medium"); // medium
pageTracker._setCampNameKey("my_campaign"); // campaign
pageTracker._setCampTermKey("my_term"); // keyword
pageTracker._setCampContentKey("my_content"); // content adTitle
pageTracker._setCampNOKey("my_nooveride"); // cookie overide
From: http://code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html

Then manually change ppc destination urls to: http://www.mydomain.com/landingpage.htm/?my_source=google&my_medium=cpc&my_campaign=ENTER_MY_CAMPAIGN_HERE&my_term={ifcontent:ContentKeyword}{ifsearch:{keyword}}&my_content=ENTER_MY_CONTENT_HERE

I have not tested the above, but interested to know if this works!

Cheers

Phil.

Both ClickForensic/YahooIndextools allow for url parameters to be customized within their import settings, so the my_source|my_medium|my_term  can be set to anything.
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
1/18/10
Yahoo ppc have update their auto-tagging to include OVCAMPGID, OVADGRPID by default on 13th January 2010.

So... Remember to add OVCAMPGID, OVADGRPID (in CAPITALS) exclude parameters in order to keep your landing URI`s page tidy in GA!

OVRAW, OVKEY, OVMTC, OVADID, OVKWID, OVCAMPGID, OVADGRPID

http://www.advertiser.com/landingpage.htm?
OVRAW=blue%20widget (searchword)
OVKEY=widgets (bidword)
OVMTC=standard (matchtype)
OVADID=9166058030
OVKWID=76177891530
OVCAMPGID=412947530
OVADGRPID=6084417411


I welcome this change, but I am annoyed I was not warned about it. Also it would be nice if they added a dynamic paramter for {CampaignName},  {AdGroupName} and {AdTitle} and fix the annoying feature that disabled the ysmwa clickID every 14 days for accounts if no ysm conversions have been  triggered.

http://www.ysmblog.com/blog/2010/01/14/new-search-improvements/ (no mention of this URL Tracking change in announcement)
http://video.yahoo.com/watch/6773996/17603801 (yahoo new features video 14th January)
http://www.ysearchblog.com/
http://twitter.com/YahooAdBuzz

References:
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
1/19/10
I found an interesting was to use the Google Adwords parameter, I have called this... "gparam", results are shown in the content drilldown report.

gparam_opt1=/{ifsearch:search/{keyword}/{creative}}{ifcontent:content/{placement}/{creative}}

Result would be...
/search/bidword/123456
/content/publisher.com/123456

Or you can display this in a different folder structure here:

gparam_opt2=/{ifsearch:search/{creative}/{keyword}}{ifcontent:content/{creative}/{placement}}

Result would be...
/search/123456/bidword
/content/123456/publisher.com

Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
1/20/10
I think I have a final resolution for this post (yippie!), plus a few extras thrown in for good luck...

I have NOT TESTED this yet... but it should work.


xParam1 & xParam2 are extra features for the data hungry ;)

SiteSearch category:sw (tick the box that says remove search query from url)

I suggest using the Category SiteSearch to store SearchWords, beacuse it is urlDecoded so contains no HTML gunk, and leave the User-defined field free, but it will inflate the onsite searches count. If you are using the category search already or the % of users using sitesearch is important remember to add "sw" to exclude parameters.

GA exclude parameters settings:
gparam1, gparam2, yparam1, yparam2, mparam1, mparam2, distribution, network, site, OVRAW, OVKEY, OVMTC, OVADID, OVKWID, OVCAMPGID, OVADGRPID, ysmwa, msclkid, ("sw" is optional)

AD_TITLE & CAMPAIGN_NAME need to be filled in manally as no network supports a dynamic varible for these, although Yahoo and MSN support ID`s for these (e.g. my_content=AD_TITLE&my_campaign=CAMPAIGN_NAME).

langing page global footer needs to include:
pageTracker._setCampSourceKey("my_source"); // source
pageTracker._setCampMediumKey("my_medium"); // medium
pageTracker._setCampNameKey("my_campaign"); // campaign
pageTracker._setCampTermKey("my_term"); // keyword
pageTracker._setCampContentKey("my_content"); // content adTitle

------Google PPC
http://www.yourdomain.com/landingpage.htm?
my_source=google
my_medium=cpc
my_term={keyword}
my_content=AD_TITLE
my_campaign=CAMPAIGN_NAME
distribution={ifsearch:search}{ifcontent:content}
site={placement}
gparam1=/{ifsearch:search}{ifcontent:content}/{creative}
gparam2=/distribution={ifsearch:search/{keyword}/{creative}}{ifcontent:content/{placement}/adID={creative}}
gclid=xxx [automatically added]

------Yahoo PPC
http://www.yourdomain.com/landingpage.htm?
my_source=yahoo
my_medium=cpc
my_term={YSMKEY}
my_content=AD_TITLE
my_campaign=CAMPAIGN_NAME
distribution={YSMMTC:search:search:content}
match={YSMMTC:standard:advanced:content}
sw={YSMRAW}
yparam1=/{YSMMTC:search:search:content}/{YSMADID}
yparam2=/distribution={YSMMTC:search:search:content}/match={YSMMTC:e:b:c}/campaignID={YSMCAMPGID}/adgrpID={YSMADGRPID}/adID={YSMADID}/kwID={YSMKWID}
ysmwa=xxx [automatically added]

------MSN PPC
http://www.yourdomain.com/landingpage.htm?
my_source=msn
my_medium=cpc
my_term={keyword}
my_content=AD_TITLE
my_campaign=CAMPAIGN_NAME
match={MatchType}
sw={QueryString}
mparam1=/search/{AdId}
mparam2=/distribution=search/match={MatchType}/adgrpID={OrderItemId}/adID={AdId}
msclkid={msclkid} [manually added]

**** OPTIONAL SPECIAL FEATURES FOR THE DATA HUNGRY ***


* There dynamic ID & values from Adwords, Adcenter & YSM that are not stored in GA.
* The more data values stored in GA the better; as more can be mined from this data (assuming it is useful data).
* With this in mind I have invented the xParam (gPram, yParam, mParam) to store these extra values.

*** gParam
distribution={ifsearch:search}{ifcontent:content}
site={placement}
adID={creative}
kw={keyword}

*** yParam
distribution={YSMMTC:search:search:content}
match={YSMMTC:e:b:c}
campaignID={YSMCAMPGID}
adgrpID={YSMADGRPID}
adID={YSMADID}
kwID={YSMKWID}

*** mParam
distribution=search
match={MatchType}
adgrpID={OrderItemId}
adID={AdId}

--- xParam1 (simular to s_kwcid= used by Omniture)

gParam1=/{ifsearch:search}{ifcontent:content}/{creative}
Example: /search/123456 or /content/123456

yParam1=/{YSMMTC:search:search:content}/{YSMADID}
Example: /search/123456 or /content/123456

mParam1=/search/{AdId}
Example: /search/123456

--- xParam2
gparam=/distribution={ifsearch:search/{keyword}/{creative}}{ifcontent:content/{placement}/adID={creative}}
Example: /distribution=search/bidword/adID=123456
Example: /distribution=content/publisher.com/adID=123456

yParam=/distribution={YSMMTC:search:search:content}/match={YSMMTC:e:b:c}/campaignID={YSMCAMPGID}/adgrpID={YSMADGRPID}/adID={YSMADID}/kwID={YSMKWID}
Example: /distribution=s/match=e/campaignID=123/adgrpID=123/adID=123/kwID=123

mParam=/distribution=search/match={MatchType}/adgrpID={OrderItemId}/adID={AdId}
Example: /distribution=search/match=e/adgrpID=123/adID=123

Let me know what you think... and confirm it works!


Thanks

Phil.

Google Adwords:
?my_source=google&my_medium=cpc&my_term={keyword}&my_content=AD_TITLE&my_campaign=CAMPAIGN_NAME&distribution={ifsearch:search}{ifcontent:content}&site={placement}&gparam1=/{ifsearch:search}{ifcontent:content}/{creative}&gparam2=/distribution={ifsearch:search/{keyword}/{creative}}{ifcontent:content/{placement}/adID={creative}}

YahooSearchMarketing:
?my_source=yahoo&my_medium=cpc&my_term={YSMKEY}&my_content=AD_TITLE&my_campaign=CAMPAIGN_NAME&distribution={YSMMTC:search:search:content}&match={YSMMTC:standard:advanced:content}&sw={YSMRAW}&yparam1=/{YSMMTC:search:search:content}/{YSMADID}&yparam2=/distribution={YSMMTC:search:search:content}/match={YSMMTC:e:b:c}/campaignID={YSMCAMPGID}/adgrpID={YSMADGRPID}/adID={YSMADID}/kwID={YSMKWID}

MSN Adcenter:
?my_source=msn&my_medium=cpc&my_term={keyword}&my_content=AD_TITLE&my_campaign=CAMPAIGN_NAME&match={MatchType}&sw={QueryString}&mparam1=/search/{AdId}&mparam2=/distribution=search/match={MatchType}/adgrpID={OrderItemId}/adID={AdId}&msclkid={msclkid}

Footer Notes:

* Google Adwords is the ONLY provider NOT to support {SearchWord} or {MatchType}
dynamic parameter - Google your getting behind Bing & Yahoo - this is a fundemental feature - ADD it now!
sw={GoogleSearchWord}
match={exact|phrase|broad|content|placement}

* No ppc network currently supports {position} or {RightHandSide|LeftHandSide} parameter.
Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
1/20/10
Google appears to have added gglAdGrp, gglCreat & position values to PPC referral url`s on google.com & google.co.uk

http://www.google.com/url
q=search word
url=/aclk
sa=l
ai=gobble-degook
num=5
ggladgrp=5638343534277209496
gglcreat=16688867964745241834

q=http://www.ppc-domain.com/destination-url.htm
sig=gobble-degook
rct=j
ei=gobble-degook
usg=gobble-degook

If you are storing the referal in in used-defined, you test this by searching for
ggladgrp|gglcreat)=.+
or (ggladgrp|gglcreat|num)=.+

Note:num=position for ppc is only visible in on right-hand-side advert, it is omitted on top-left-hand side adverts.

Did you find this answer helpful? Sign in to vote. Report abuse
PPC_Guru
Top Contributor
2/8/10
I am in the process of compiling this posts, just posting some ROUGH notes...


Recipe for ppc Dynamic tagging parameters

----------------------------------------------------------------------

I am trying to work out a "best practice" way of tagging url`s by utilising the ad providers {dynamic} parameter, rather than manually tagging individual url`s.

{Dynamic} = One tag fits all - a database element which changes depending on the field value e.g in Adwords {keyword} will return the BidWord you are advertising on and the same tag can be used for all keywords destination urls.

Manual = manually tag every single keyword or advert url.

--------------------------------
Google dynamic variables:
{keyword}
{creative}
{placement}
{ifsearch:search}
{ifcontent:content}
http://adwords.google.com/support/aw/bin/answer.py?answer=14816
http://adwords.google.com/support/aw/bin/answer.py?answer=74996
http://www.google.com/intl/en/adwordseditor/index.html

Google specials combinations
{ifcontent:contentsite={placement}}
{ifsearch:search/{keyword}|{creative}}
{ifcontent:content/{placement}|{creative}}

--------------------------------
Yahoo dynamic variables:
{OVRAW}
{OVKEY}
{OVMTC}
{OVADID}
{OVKWID}
{OVCAMPGID}
{OVADGRPID}
{OVNDID} * YSM added on 10th Jan 2010
http://help.yahoo.com/l/us/yahoo/ysm/sps/screenref/16897.html#1
http://help.yahoo.com/l/us/yahoo/ysm/sps/screenref/2847584.html#7
http://www.google.com/support/analytics/bin/answer.py?answer=55467
http://tinyurl.com/ysm-tracking-url-tags (pdf file deleted)

Must be CAPITALS
To enable ysmwa clickID, account must be spending over £1500
It is not necessary to enable urls tagging feature in YSM once these tags have are added.

IndexTools installation guide
http://tinyurl.com/Yahoo-IndexTools-Install-pg35

--------------------------------
MSN dynamic variables:
{keyword}
{QueryString}
{MatchType} e|p|b|c exact|phrase|braod|content
{OrderItemId}
{AdId}
{msclkid}
{param1} dynamic advert destination url
#{param2} alternate Adtext - not used
#{param3} alternate Adtext - not used
http://advertising.microsoft.com/learning-center/best-practices/dynamic-text-types
http://maf.adcenter.microsoft.com/desktop/setup/en/setup.exe (adcenter Desktop contains an Advanced change URL feature)
http://advertising.microsoft.com/learning-center/downloads/adcenter-desktop-tips-tricks-tutorial


* Save Time by adding all in one go.
* Emphasise usefulness of seeing "Campaign" field in Yahoo & MSN
* Best to create include profile for Google/Yahoo/MSN ppc only profiles - more accurate than advanced segment moving forward
* Assume SiteSearch category:ga_sw not being used in ppc only profiles
* Store Bidword, Campaign name, SearchWord, Match type + other values provided by the SE`s.
* Clickforensics / Urchin / YWA -  url parameters mapping ga_source|ga_medium|ga_term
* 1024 chacter limit destination urls
* ANSCI characters are auto-encoded by the SE`s - white spaces are fine.
* The “source”, "campaign" “kw” parameters - use ga_source
* "#" is better instead of "?" - remember to enable setAllowAnchor()
Where "?" is present in the url already changed ?ga_source to &ga_source.
Where "#" is present in the url already changed #ga_source to &ga_source.
* Tidy up visual urls by placing parameters in virualpageview or serverside URI injection e.g. .trackpageview(document.location.pathname + document.location.search + document.location.hash)
* Rel=no referral HTML5 http://www.lunametrics.com/blog/2010/01/15/html5-analytics/
* Competitive Intelligence tools such as SpyFu & Adgooroo are being used to extrapolate ppc campaign structures based by spidering SERP`s and copying the destination urls on 
these pages, so best to either avoid uisng utm_* parameters, use utm_id not used
hide behind 301 redirects (e.g TradeDoubler http://tsw0.com/xxxx/xxx and Atlas http://clk.atdmt.com/xxx/xxxxxxxx/ ). Note: forwarding urls requires a manual exception to the 
Adwords display url policy per advert! http://adwords.google.com/support/aw/bin/answer.py?answer=6313
* CHECK - SpyFu & Adgooroo might be a way to block these tools from spidering the sites using robot.txt

JavaScript URI injection method:
http://www.e-nor.com/blog/index.php/web-analytics/tracking-traffic-from-press-releases-in-google-analytics/
JavaScript URI script: http://www.e-nor.com/blog/images/09/code.txt

Tip: When using 301 redirects avoid losing the tracking parameter, here is an .htaccess example
DONT USE - redirect 301 /OLD-Landing-Page.htm /NEW-Landing-Page.htm [NC]
DO USE - redirectMatch 301 ^/NEW-Landing-Page\.htm(.*)$ ^/NEW-Landing-Page\.htm$l.*$ [NC]

Tip: use notetab.com to replace "&" with "^p" when deciphering url strings and "=" with "^t", then pasting into Excel.


-------- ID or Name

1) Preference (not recommended)
“utm_content” change to “adID”
“utm_campaign” change to “campaign”

2) Preference2
&utm_content=y{OVADID}|My-Ad-Title
&utm_content=m{AdID}|My-Ad-Title

3) Lookup tables/filters on ID`s...

utm_campaign=g[MANUAL CAMPAIGN ID]
utm_content=g{creative}
utm_campaign=y{OVCAMPGID}
utm_content=y{OVADID}
utm_campaign=m{OrderItemID} - check is this KW id?
utm_content=m{AdID}

To rule out the possibility of an overlap in AdvertID, I have added a single character (g|y|m) infront of:
Google:utm_content=g{creative}
Yahoo :utm_content=y{OVADID}
MSN   :utm_content=m{AdID}


1. Inserting “ID” Parameters into URLs:

"Initially, I gave instructions for placing ad group & campaign ID parameters into the utm_content= & utm_campaign= sections of the URL. This is not very helpful, unless you are 
mapping to an offline keyword database. These are literally ID numbers given to each campaign & adgroup use by Yahoo & MSN. Solution: Insert the actual name of your ad groups & 
campaigns into these sections of the URL. This will allow you to filter your data by ad group, by campaign, etc. within Analytics."  john @ ppchero .com

http://www.ppchero.com/the-secret-of-tracking-yahoo-keyword-data-in-google-analytics/ (old)
http://www.ppchero.com/url-tagging-tracking-ppc-campaigns-google-analytics/ (new)

I would also recommend changing... Yahoo & MSN ID`s from:

utm_campaign=m{OVCAMPGID}
utm_content=y{OVADID}

utm_campaign=m{OrderItemID}
utm_content=m{AdID}

To...

utm_campaign=YOUR_CAMPAIGN_NAME_HERE
utm_content=YOUR_TITLE_HERE

utm_campaign=YOUR_CAMPAIGN_NAME_HERE
utm_content=YOUR_TITLE_HERE


Note: GA import engine removes parameters & goals first, then applies filters.

---------------------------

GA specialist said...

If the advertiser tags his links manually & also has auto-tagging turned on, neither of them will take precedence. It will cause the cost data for these URLs not to be imported
into GA. This is because the cookies will capture both the utm_* manual tags & the GCLID, but when GA tries to import cost data from Adwords it gets confused and doesn't know
how to apply it to the relevant Adwords Campaign.

They said this is a common problem when clients use auto-tagging & manual tags in the same account, and that they encourage either one or the other (not a mix of both) within 
Adwords campaigns. They suggest that there is no advantage to using manual tags if you are using Auto tagging already.

Here is the quote from slide 27 if the GA test "If you’ve enabled auto tagging, don’t manually tag your AdWords destination URLs. Doing so can create conflicting data in your 
reports."
http://services.google.com/analytics/breeze/en/campaigntracking_adwordsintegration/index.html

GA specialist at eMetrics added...

There is a work-around: enable customised campaign tracking url & then manually tag urls with the new parameters. The result is that GA import engine does not get confused, as 
there are no utm* tags present in the url.

So, adding these to the global footer on page tag:

pageTracker._setCampSourceKey("ga_source"); // source
pageTracker._setCampMediumKey("ga_medium"); // medium
pageTracker._setCampNameKey("ga_campaign"); // campaign
pageTracker._setCampTermKey("ga_term"); // keyword
pageTracker._setCampContentKey("ga_content"); // content adTitle
pageTracker._setCampNOKey("ga_nooveride"); // cookie overide
From: http://code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html

Then manually change ppc destination urls to: 
http://www.mydomain.com/landingpage.htm/?ga_source=google&ga_medium=cpc&ga_campaign=ENTER_ga_CAMPAIGN_HERE&ga_term={ifcontent:ContentKeyword}{ifsearch:{keyword}}&ga_content=ENTE
R_ga_CONTENT_HERE



Cookie extraction method...

1) You don't need to pass in the actual query string as a parameter since it is already available to GA.

__utmz (utmctr=search-word) into trackPageview e.g

function googleCookieReferrer()

   var feed=readCookie("__utmz"); 
   feed=feed.split("|");
   feed=feed[0].split("=");
   return feed[1];
}
http://padicode.com/blog/behavioral-targeting/behavioral-targeting-actions/

trackPageview(/landingpage.htm/?source=GOOGLE&kw=tracking_test_20090219_tagged&match=MY_MATCHTYPE&distribution=search&site=&adID=2599556614&campaign=MY_CAMPAIGN&gclid=CPnEuv2m8p
gCFQqT3wodllxm1g&sw=SEARCH-WORD-HERE
http://padicode.com/blog/behavioral-targeting/behavioral-targeting-actions/

2) setCamp mapped parameters

"The links to my site already contain my own campaign tracking variables. Can I use these variables instead of Google Analytics'?"
http://www.google.com/support/googleanalytics/bin/answer.py?answer=55577&topic=11098

pageTracker._setCampNameKey("camp"); // name
pageTracker._setCampMediumKey("type"); // medium
pageTracker._setCampSourceKey("adver"); // source
pageTracker._setCampTermKey("kwd"); // term/keyword
pageTracker._setCampContentKey("version"); // content

Yahoo provide parameters to map to by default. e.g.

pageTracker._setCampTermKey("OVKEY"); // for BidWord - (or setCampTermKey("OVRAW")  for SearchWord)
pageTracker._setCampContentKey("OVADID"); // content
pageTracker._setCampNameKey("OVCAMPGID"); // campaign name (or you could use use setCampNameKey("OVADID")
pageTracker._setCampMediumKey("ga_medium"); // medium - missing
pageTracker._setCampSourceKey("ga_source"); // source - missing

source, medium are not present - thus URI injection script must be used - landing page contains OVADID - change medium=cpc then source=yahoo.

Disadvantages:
* campaign name would still be unknown.
* advert name would still be unknown.
* only works for Yahoo, not MSN.
* probably lost after Yahoo changes to bing in Q1 2011.
* development time to add to site take longer that adding to campaign

Could not be used for Google manaul tags, due to Utm_campaign /gclid overide.
www.yourdomain.com/landingpage.htm/?campaign=my-adwords-campaign
pageTracker._setCampNameKey("campaign");

www.yourdomain.com/landingpage.htm/?utm_campaign=my-adwords-campaign?gclid=123 // default
pageTracker._setCampNameKey("utm_campaign");


-----------------------

xParam1 & xParam2 are extra features for the data hungry ;)

SiteSearch category:ga_sw (tick the box that says remove search query from url)

I suggest using the Category SiteSearch to store SearchWords, beacuse it is urlDecoded so contains no HTML gunk, and leave the User-defined field free - it will inflate the 
onsite searches count, but this is not a big deal.

GA exclude parameters settings:
gparam1, gparam2, yparam1, yparam2, mparam1, mparam2, distribution, network, site, OVRAW, OVKEY, OVMTC, OVADID, OVKWID, OVCAMPGID, OVADGRPID, OVNDID, ysmwa, msclkid, ("sw" is 
optional)

Tip: "OVMTC" not "ovmtc" within exclude parameter setting
http://www.google.com/support/forum/p/Google+Analytics/thread?tid=6a060e9477607c8f&fid=6a060e9477607c8f0004706d6559ed09

AD_TITLE & CAMPAIGN_NAME need to be filled in manally as no network supports a dynamic varible for these, although Yahoo and MSN support ID`s for these (e.g. 
ga_content=AD_TITLE&ga_campaign=CAMPAIGN_NAME).

langing page global footer needs to include:
pageTracker._setCampSourceKey("ga_source"); // source
pageTracker._setCampMediumKey("ga_medium"); // medium
pageTracker._setCampNameKey("ga_campaign"); // campaign
pageTracker._setCampTermKey("ga_term"); // keyword
pageTracker._setCampContentKey("ga_content"); // content adTitle
pageTracker._setCampNOKey("ga_nooveride"); // cookie overide attibution

------Google PPC
http://www.yourdomain.com/landingpage.htm?
ga_source=google
ga_medium=cpc
ga_term={keyword}
ga_content=AD_TITLE
ga_campaign=CAMPAIGN_NAME
ga_distribution={ifsearch:search}{ifcontent:content}
ga_site={placement}
gparam1=/{ifsearch:search}{ifcontent:content}/{creative}
gparam2=/distribution={ifsearch:search/{keyword}/{creative}}{ifcontent:content/{placement}/adID={creative}}
gclid=xxx [automatically added]

------Yahoo PPC
http://www.yourdomain.com/landingpage.htm?
ga_source=yahoo
ga_medium=cpc
ga_term={OVKEY}
ga_content=AD_TITLE
ga_campaign=CAMPAIGN_NAME
ga_distribution={OVMTC:search:search:content}
ga_match={OVMTC:standard:advanced:content}
ga_sw={OVRAW}
yparam1=/{OVMTC:search:search:content}/{OVADID}
yparam2=/distribution={OVMTC:search:search:content}/ga_match={OVMTC:e:b:c}/campaignID={OVCAMPGID}/adgrpID={OVADGRPID}/adID={OVADID}/kwID={OVKWID}
ysmwa=xxx [automatically added]

------MSN PPC
http://www.yourdomain.com/landingpage.htm?
ga_source=msn
ga_medium=cpc
ga_term={keyword}
ga_content=AD_TITLE
ga_campaign=CAMPAIGN_NAME
ga_match={MatchType}
ga_sw={QueryString}
mparam1=/search/{AdId}
mparam2=/distribution=search/ga_match={MatchType}/adgrpID={OrderItemId}/adID={AdId}
msclkid={msclkid} [manually added]

**** OPTIONAL SPECIAL FEATURES FOR THE DATA HUNGRY ***

* There dynamic ID & values from Adwords, Adcenter & YSM that are not stored in GA.
* The more data values stored in GA the better; as more can be mined from this data (assuming it is useful data).
* With this in mind I have invented the xParam (gPram, yParam, mParam) to store these extra values.

*** gParam
distribution={ifsearch:search}{ifcontent:content}
site={placement}
adID={creative}
kw={keyword}

*** yParam
distribution={OVMTC:search:search:content}
match={OVMTC:e:b:c}
campaignID={OVCAMPGID}
adgrpID={OVADGRPID}
adID={OVADID}
kwID={OVKWID}

*** mParam
distribution=search
match={MatchType}
adgrpID={OrderItemId}
adID={AdId}

--- xParam1 (simular to s_kwcid= used by Omniture)

gParam1=/{ifsearch:search}{ifcontent:content}/{creative}
Example=/search/123456 or /content/123456

yParam1=/{OVMTC:search:search:content}/{OVADID}
Example=/search/123456 or /content/123456

mParam1=/search/{AdId}
Example=/search/123456

--- xParam2
gparam=/distribution={ifsearch:search/{keyword}/{creative}}{ifcontent:content/{placement}/adID={creative}}
Example=/distribution=search/bidword/adID=123456
Example=/distribution=content/publisher.com/adID=123456

yParam=/distribution={OVMTC:search:search:content}/ga_match={OVMTC:e:b:c}/campaignID={OVCAMPGID}/adgrpID={OVADGRPID}/adID={OVADID}/kwID={OVKWID}
Example=/distribution=s/match=e/campaignID=123/adgrpID=123/adID=123/kwID=123

mParam=/distribution=search/ga_match={MatchType}/adgrpID={OrderItemId}/adID={AdId}
Example=/distribution=search/match=e/adgrpID=123/adID=123

Let me know what you think... and confirm it works!

Thanks

Phil.

Google Adwords:
?ga_source=google&ga_medium=cpc&ga_term={keyword}&ga_content=AD_TITLE&ga_campaign=CAMPAIGN_NAME&ga_distribution={ifsearch:search}{ifcontent:content}&ga_site={placement}&gparam1=/{ifsearch:search}{ifcontent:content}/{creative}&gparam2=/distribution={ifsearch:search/{keyword}/{creative}}{ifcontent:content/{placement}/adID={creative}}

YahooSearchMarketing:
?ga_source=yahoo&ga_medium=cpc&ga_term={OVKEY}&ga_content=AD_TITLE&ga_campaign=CAMPAIGN_NAME&ga_distribution={OVMTC:search:search:content}&ga_match={OVMTC:standard:advanced:content}&ga_sw={OVRAW}&yparam1=/{OVMTC:search:search:content}/{OVADID}&yparam2=/distribution={OVMTC:search:search:content}/ga_match={OVMTC:e:b:c}/campaignID={OVCAMPGID}/adgrpID={OVADGRPID}/adID={OVADID}/kwID={OVKWID}

MSN Adcenter:
?ga_source=msn&ga_medium=cpc&ga_term={keyword}&ga_content=AD_TITLE&ga_campaign=CAMPAIGN_NAME&ga_match={MatchType}&ga_sw={QueryString}&mparam1=/search/{AdId}&mparam2=/distribution=search/ga_match={MatchType}/adgrpID={OrderItemId}/adID={AdId}&msclkid={msclkid}


Tip: capture value xparam

1. send value of "xparam" to Campaign Content
Request URI:[?&]xparam=([^&]+)&
Campaign Content:$A1

2. remove adId from URI
Request URI:(.+)[?&]xparam=([^&]+)&(.*)
Request URI:$A1$A3

-------- Notes
* Adwords is the ONLY provider NOT to support {SearchWord} or {MatchType} - this is a fundamental feature  ga_sw={GoogleSearchWord} 
ga_match={exact|phrase|broad|content|placement}
* MSN need to added a tick box to auto-enable tags & msclkid.
* Miva, Looksmart, Ask.com ignored but they do support dynamic parameters.
* Adwords QS & Min firstpage bid should be added to GA

"segkey" of "ad_slot" & "ad_slot_position".
&segkey=1&segkey=ad_slot
&segkey=1&segkey=ad_slot_position
&segkey=1&segkey=ad_group

SearchWord filter on Referal
[?#&](q|p|query|qs|qt|encquery|k|rdata|searchExpr|szukaj|terms|text|wd|search_for)([^&]+)&

gglAdGrp, gglCreat & position - PPC referrals on google.com & google.co.uk
Note:num=position for ppc is only visible in on right-hand-side advert, it is omitted on top-left-hand side adverts.
http://www.google.co.uk/aclk?sa=[right-side-advert]&ai=[randomclickID]&num=[ad_position]&ggladgrp=[adgroupid]&gglcreat=[adid]&sig=[clientid-encoded]&q=[desination-url]

http://www.google.com/url
q=search word
url=/aclk
sa=l
ai=gobble-degook
num=5
ggladgrp=5638343534277209496
gglcreat=16688867964745241834
q=http://www.ppc-domain.com/destination-url.htm
sig=gobble-degook
rct=j
ei=gobble-degook
usg=gobble-degook

If you are storing the referal in in used-defined, you test this by searching for
ggladgrp|gglcreat)=.+
or (ggladgrp|gglcreat|num)=.+


Google Webmaster Tools exclude parameters (20 fields)
http://searchengineland.com/google-lets-you-tell-them-which-url-parameters-to-ignore-25925
http://www.flickr.com/photos/23148333@N06/3927048854/

Yahoo Sitemaps exclude parameters (10 fields)
http://help.yahoo.com/l/us/yahoo/search/siteexplorer/dynamic/
http://www.flickr.com/photos/rustybrick/1188618922/

YSM Example
OVRAW=blue%20widget (searchword)
OVKEY=widgets (bidword)
OVMTC=standard (matchtype)
OVADID=9166058030
OVKWID=76177891530
OVCAMPGID=412947530
OVADGRPID=6084417411
Did you find this answer helpful? Sign in to vote. Report abuse

Post reply

Sign in to answer this question.

Subscribe

Tell us how we're doing: Please answer a few questions about your experience to help us improve our Help Center.