Archive for the 'NUDE' Category
A buddy just emailed me to say that his Google Analytics advanced filters were working again to expose the detailed search queries of AdWords visitors!
You can find detailed instructions on exposing your keyword data in this post:
NUDE: AdWords Keyword Data Exposed With Google Analytics!
I looked into it and it looks like Google fixed their advanced filter problem (at least for these filters) on March 5th.
Yes, I will eat my words and gladly admit that I overreacted in this post. ![]()
If you enjoyed this post, make sure you subscribe to my RSS feed or get email updates whenever we write anything new!
If you are using the new javascript code for Analytics, you should head over to ROI Revolution and download the latest exact keyword data tracking script so you can enjoy exact search terms that will show up in the user defined field in Analytics. ROI Revolution posted the update yesterday so it’s nice and fresh! ![]()
semvironment posts related to this update:
AdWords/Analytics Keyword Data Fix - Thanks Jeff!
If you enjoyed this post, make sure you subscribe to my RSS feed or get email updates whenever we write anything new!
Per ROI Revolution’s request, here are the credits for this post - at the top instead of the bottom:
If you have any questions, you can find the source that Jeff found and shared with us here - credit rightly belongs to the Unofficial Google Analytics blog at ROI Revolution for authoring the fix. <—Bold was added for emphasis…I already had that sentence written at the bottom of the post. ROI Revolution may credit others in that post…
This fix was found and shared with us by Jeff because he saw that we documented some problems that were caused by the extra wide use of the tip found here. <—- If you read that post you will find out exactly where we found that tip at the bottom of that post…
Jeff James kindly stopped by the blog to tell us that he continues to receive his specific keyword data through a script fix that captures the specific keyword data from the cookie. I was on to that but I was trying to take the data from a different part of the cookie and I suck at writing javascript…I guess I should always leave quick fixes up to the pros - after all, I have to admit that I’m not a programmer but I can fake my way through some of it - clearly not all of it.
Thanks for finding and sharing this fix Jeff!
Here is the fix:
Download/Save this file: ga_keyword.js
Don’t forget to upload the file to the proper directory/location on your website and change the code below accordingly!
Rewrite your analytics code so it looks like this on your landing pages or throughout your entire website if it’s easier:
<script src="http://www.yourwebsite.com/ga_keyword.js" type="text/javascript"></script>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">
_uacct = "UA-XXXXX-X";
urchinTracker();
sleuth();
</script>
sleuth(); displays the exact keyword data under the cross segment option User-Defined Value.
So, after implementing this fix, you should see most of the exact keyword data under the cross segment menu. I recommend taking this route but you can find the cross segment menu in almost any detailed page of Google Analytics:
Traffic Sources -> Keywords -> Under the text that says “Search Sent * Visits via * Keywords” you will find a drop down that has the word “Segments:” next to it -> At the bottom of that list you will see “User-Defined Value”…click that and there you have it, your newly exposed exact key term data from Analytics!
I hope Google doesn’t poop on this fix too… ![]()
If you enjoyed this post, make sure you subscribe to my RSS feed or get email updates whenever we write anything new!
My natural inclination is to share. I like sharing information, personal stories, problems, news, tools, life, etc. It’s just who I am and I think that’s one reason I love this industry…
That was until I felt the wrath of Google over the past week!
I saw it coming I guess - it happens in the SEO industry…or it used to happen until Google smacked any SEO that shared a secret by patching/fixing/closing the “gap”. And it still happens every once in a while.
What the heck am I referring to? I’m referring to this cycle:

I can understand and see the value of this cycle for certain things that help people fraudulently take advantage of a system - of course that needs to be stopped…it’s killing the stuff that really helps IMPROVE relevancy, users, systems and businesses that simply makes my blood boil.
This month Google changed their auto-tagging function so it would render the “AdWords keywords exposed” tip useless for a short time! We’re talking with Google right now but in the mean time…the stats may not reflect exactly what you expected for a while (since January 15th?). I’ll write a separate post about the details of what I have done, what I’m testing, and where I think the issues is because I simply can’t place my thumb on the right solution although I’m confident we’ll come up with it soon!
Enter Evolution
This is why there is a secret “10%” of SEO knowledge out there…and I’m now convinced that we are probably going to hold back on our ultimate PPC secrets that we planned to expose which will contribute to the idea that there is a secret 10+% of PPC knowledge that is not and will not be exposed.
Evolution changes everything:

I believe this new innovative/creative evolution is what drives the success or failure of a PPC marketer or an SEO.
So…my questions to Google are:
Why won’t you let us easily see every exact query that comes through AdWords?
Wouldn’t it drive advertisers to be more relevant? Better ROI for businesses and therefore increased confidence and budgets for AdWords?
Are you or are you not striving for the most relevant results to a search query?
Why do I think Google Sucks?
Because their behavior with this particular issue is not consistent with their perceived “willingness” to help small business owners make more money and get better ROI with AdWords!
Summary
Google SUCKS and I will find another way to improve the community’s ROI quickly and effectively - this time I’m going to discretely release the solution…probably via RSS messaging and email. ![]()
If you enjoyed this post, make sure you subscribe to my RSS feed or get email updates whenever we write anything new!
While dynamic landing pages are awesome for advertising, and we haven’t had any problems yet after thousands of clicks and tons of conversions, security is a concern for us and our users so John has kindly commented on the previous post about how to fix these potential security issues. I simply copied John’s comments and posted them here. Thanks John!
_____________________
Unfortunately, as simple as your code example is, it introduces a Cross-Site Scripting (XSS) vulnerability to your page. XSS can lead to all kinds of bad things like session hijacking and browser redirection. Check out these links to learn how to prevent XSS:
http://www.owasp.org/index.php/XSS
http://shiflett.org/blog/2005/jan/xss-cheatsheet
The code snippets on the ha.ckers.org site show you different ways to exploit or discover XSS problems. To fix it, you have to properly sanitize the input from the query string variable before you display it on the page.
You have an additional issue on your page as it looks like magic quotes are enabled. For example:
http://www.semvironment.com/prosperity.php?kw=james’
To fix the XSS problem, you’ll need to filter the input. For efficiency, you can do this once, save the output, and use the cleaned variable for displaying on the page.
Right now, your script allows pretty much anything to be injected on the page. In your use case, it seems reasonable that you want to prevent any kind of HTML. After all, this looks pretty silly:
http://www.semvironment.com/prosperity.php?kw=%3Ch1%3EBIG%20TEXT%3C/h1%3E
If this is the case, you can simply use the htmlentities function to escape all tags:
//top of the script
$cleankw = htmlentities($_GET['kw'],ENT_QUOTES);
//wherever it appears on the page
php echo $cleankw;
On the other hand, if you want to allow HTML, it’s a much harder problem to solve. I recommend this article as a starting point:
http://blog.liip.ch/archive/2005/01/16/xss-how-we-try-to-prevent-it.html
An extreme example of what can go wrong when you allow XSS to persist can be found here:
Hope that helps
______________________
If you want to learn more about John Herren, he has a blog here. Thanks again John!
Note: Input problems appear to generally occur when the user can manipulate it from a form, etc. Because our users are clicking directly to the page, input is supplied by Google and the query searched by the user. After the user is ON the page, they can manipulate the page if you don’t use htmlentities to escape html characteristics…you also have the risk of a savvy user hijacking things which is why it is good to filter the input once then display the output. I could be wrong, but that is my understanding…here is a great list of ways to filter the data from php.net: http://us.php.net/filter.
If you enjoyed this post, make sure you subscribe to my RSS feed or get email updates whenever we write anything new!
This is the second installment in our semvironment NUDE series where we expose some of the best pay per click secrets ever! This series will be posted roughly every 2 to 4 weeks…so watch out for the naked secrets of the super successful in pay per click advertising!
If you missed the introductory installment, you can find it here.
___________________________________________
This secret will rock your world - it does not need great copy to hype it up because the results will scream success!
*Note 3/31/08 - I changed the first ucwords in the dynamic code to htmlentities for security purposes…I recommend you use htmlentities as shown in this blog post.
Without further ado, here is your quick 4 step guide to making a dynamic landing page with PHP in 15 minutes or less:
1. Open your landing page in your favorite editor and make sure it is saved as php OR html.

Copy and paste this line to your .htaccess file if you are going to use an html (or htm) landing page:
AddType application/x-httpd-php .htm .html
Now you can run php scripts in your htm(l) files.
2. Copy and Paste the following code into your landing page’s Title and content. Put your original content (the word or phrase you are replacing) in the string “Your Original Info Here”:
<?php
if ($_GET['kw'])
{echo htmlentities($_GET['kw']);}
else
{echo ucwords(”Your Original Info Here”);}
?>
For example, I want to replace the Title on the semvironment landing page so I would use this code for my Title:
The title would display the original content if somebody landed on the page without querying a keyword:

And if somebody came to our page from a specific keyword in the destination url, our Title would look like this:

This is the code I would use for one of our original content questions or headlines:
<p>Are You Looking For
<php?
if ($_GET['kw'])
{echo htmlentities($_GET['kw']);}
else
{echo ucwords(”High Quality PPC Management”);}
?>
?</p>
This question would be displayed if somebody landed on the page without querying a keyword:
Are You Looking For High Quality PPC Management?
And this question would be displayed after somebody clicked on our ad from the query “PPC Management Services”:
Are You Looking For PPC Management Services?
Using ucwords in the code will capitalize the first letter of every word in the search query or string…, you can simply remove ucwords and the corresponding parenthesis () if you don’t want to have the first letter capitalized on each word - your code would look like this:
<?php
if ($_GET['kw'])
{echo $_GET['kw'];}
else
{echo “your original info here”;}
?>
This is particularly useful if you are using it in a paragraph of regular text. You can format this so your searcher’s query can be bold or italicized or underlined, making it appear more relevant and useful to the user.
3. Save, Upload, and Test your landing page.
To test it, simply type in your landing page url -
www.yoursite.com/yourlandingpage.php?kw=your+search+query
Pretty freaking sweet, huh?
4. Now go to any ad platform and simply enter this in your destination url on your ads:
www.yoursite.com/yourlandingpage.php?kw={keyword}
Example -
My landing page is already edited using the steps listed above…so I went to AdWords to play with the Quality Score on a highly irrelevant search query. Please excuse or have fun with my mild sense of humor…
I started a new campaign and a new adgroup using the keyword homestar poopsmith.
The destination url (our company name is now semvironment - we used to be known as apollo sem):
![]()
The live ad:

And this is what I get when I click through the ad after searching for Homestar Poopsmith (click on the screenshot to enlarge):
The entire page is technically about PPC Management. I added the dynamic text to two headlines on the page…one at the beginning of the content and one towards the middle of the page. The title is also dynamic.
Here is my quality score for the broadly matched term homestar poopsmith:

How will this help you?
Your landing pages will be more relevant to your users AND Google; your quality scores should go up, your costs should come down, and we can expect you to convert more visitors!
Recommendations
Use this pay per click secret with caution! Your results can and will vary!
If you are an ecommerce site with a specific product, you will probably want to carefully include the dynamic search query in your content and titles - maybe you will use empty or open questions like “Are You Looking For (Keyword)?” “This is the closest match…and we think it will be a perfect fit for you because…”
Everybody that implements this secret should aggressively use negatively matched keywords in your campaigns and ad groups.
Creating a dynamic landing page might compromise your SEO strategy. We generally recommend that you duplicate your SEO landing pages (if you are using them for PPC) and place them into a separate file or directory for you to advertise with. Add the “advertisement” directory to the robots.txt file as a disallowed directory to avoid some duplicate content issues.
You will be able to view the exact search terms people are using by filtering through your landing page results in Analytics - another useful way to find negative match keywords.
That’s a wrap! Now You can Create A Dynamic Landing Page in 15 Minutes or Less with PHP!
The originating source of our knowledge regarding this post came from this 2006 Digital Point Forum post.
If you enjoyed this post, make sure you subscribe to my RSS feed or get email updates whenever we write anything new!
A few people emailed/posted a great question about finding the conversion data with the new filters you added to your Google Analytics profiles we discussed in our NUDE series. Here you go:
(These instructions start after you are logged into your Analytics profile of choice…)
If You DO NOT Use Goals -
1. Click on Content.
2. Then click on Top Content.

3. Find your conversion page and click on it…you will get a bunch of fantastic stats about that page.

(Click the image above to see a bigger picture…)
4. Drop down the Segment menu and choose Keyword (directly underneath and to the right of the bold sentence “This page was viewed **** times“).

If You USE Goals!
1. Click on Traffic Sources.

2. Then click on Keywords.

3. Click on a detailed keyword.

4. Finally, click on Goal Conversion - you can see the keyword conversion rate, number of conversions, and my favorite: the Per Visit Goal Value for that specific keyword!

Now you can review all the specific keywords that converted from AdWords! ![]()
If you enjoyed this post, make sure you subscribe to my RSS feed or get email updates whenever we write anything new!
Introducing our semvironment NUDE series where we expose some of the best pay per click secrets ever! This series will be posted roughly every 2 weeks…so watch out for the naked secrets of the super successful in pay per click advertising!
_______________________________________
You CAN expose your specific AdWords Keyword Data beyond the dreaded “other unique queries” in the AdWords Search Query Report with Google Analytics!
Don’t you hate running the AdWords Search Query report because you know the best data is behind the cold words “other unique queries”?
Do you have a sick feeling in your gut because you know you can make more money with your affiliate programs, blogs, and ads if you could only tighten up your AdWords advertising?
If you answered “yes”, then you need to read and implement this Analytics secret immediately.
Here is a detailed, step by step process to take a look at what lies beneath the silky covers of “other unique queries” using Google Analytics:
1. Log into AdWords and click on My Account -> Account Preferences:

2. Find the Tracking section in Account Preferences and make sure Auto-tagging is set to “yes”:
![]()
3. Click on Analytics from your AdWords account or sign into your Google Analytics account:

4. You can choose to skip this step if you want to edit your current website Analytics profile - we recommend you create a separate profile. Click on Add Website Profile >>:
![]()
5. Choose to add a profile to an existing domain:

6. Pick your domain, label the profile, make sure you have a check mark in the Apply Cost Data section and click finish:

7. You should see your new profile listed with any other profiles you already have:

8. Now you need to edit the settings of your new profile - Click on Edit next to your new profile:

Analytics Filter 1
9. Find the Filters Applied to Profile section and click Add Filter:
![]()
![]()
10. Choose to Add new Filter for Profile:
![]()
11. Give your filter a good name, drop down to the Custom Filter type and choose the Advanced option:

12. In Field A -> Extract A choose the Referral drop down and copy and paste this code into the available field -
(\?|&)(q|p)=([^&]*)
![]()
13. In Field B -> Extract B choose the Campaign Medium drop down and copy and paste this code into the available field -
cpc|ppc
![]()
14. In Output To -> Constructor choose the Custom Field 1 drop down and copy and paste this code into the available field -
$A3
![]()
15. Make sure all fields are required and they do not need to be case sensitive, then click Finish:

16. You should be back on the profile settings page where you can see this first filter has been applied to your detailed analytics profile.
Analytics Filter 2
17. Repeat steps 9 through 11 to create a second filter. Remember to give the second filter a different name and give this filter the attributes outlined in steps 18 through 21. ***You NEED both filters for detailed keyword data to work!***
18. In Field A -> Extract A choose the Custom Field 1 drop down and copy and paste this code into the available field -
(.*)
![]()
19. In Field B -> Extract B choose the Campaign Term drop down and copy and paste this code into the available field -
(.*)
![]()
20. In Output To -> Constructor choose the Campaign Term drop down and copy and paste this code into the available field -
$B1, ($A1)
![]()
21. Make sure all fields are required and they do not need to be case sensitive, then click Finish:

22. You should be back on the profile settings page where you can see this second filter has been applied to your detailed analytics profile. Make sure they are in the order we described - filter 1 should be listed BEFORE filter 2 under the Filters Applied to Profile section.
You are done setting up the secret that will expose your AdWords Keyword Data!
Now you need to wait a few hours for the data to be captured and reported. When you revisit Analytics you simply need to look at these reports and note the added data next to your AdWords keywords:
Traffic Sources -> Keywords

- or -
Traffic Sources -> AdWords -> Keyword Positions

Or a number of other reports…
The data in your old Analytics profile should look like this:

And the data in your new profile should look like this:

The keywords shown in parentheses (key+word) is the exact term the user searched when they found and clicked on your advertisement.
This particular client is only selling home security systems so I would look at this report and add “car” as a negative keyword and I would research “home security devices” to see if there is a decent volume for that term. Then I would consider optimizing a page for that term and add the keyword to my AdWords campaign to see if I can turn those visitors into the kind of visitor that puts money in my wallet.
That’s a wrap! Your AdWords Keyword Data is now EXPOSED, NAKED, IN THE BUFF, NUDE, or whatever you want to call it!
Our source for learning and applying this secret to our client accounts and our own accounts comes from a November 2007 blog post by the GA-Experts. Thank you, GA-Experts, for sharing this secret with us!
If you enjoyed this post, make sure you subscribe to my RSS feed or get email updates whenever we write anything new!


