|
LANDING PAGESTurning Review Pages Into Landing PagesLet me say at the outset that if pay per click advertising isn't your thing you can simply ignore this page entirely. What you'll find here is of interest to PPC marketers only. Although Review Site is designed to work well in the SEO context, it is also possible to convert it into an efficient landing page system. That is, you may wish to use it in connection with your pay per click campaigns. The remainder of this page will explain how you can go about this. Clearly, the pages within Review Site that have the best potential as landing page candidates are the review pages, and perhaps the product comparison page. It is easy to imagine, for example, AdWords campaigns that send targeted traffic to a particular review page. But to make these review pages (or the comparison page) work as landing pages, some modifications and enhancements become necessary. For example, when you send someone to a particular review page, you want them to read, or at least, scan the review. If there is a list of other review pages on the left side of the page, the visitor might click away from your landing page. So to make this list go away, we add a query string variable to the URL that you use to invoke a particular review. If this is the URL you normally use to invoke a particular review page: http://mydomain/rs/reviewsite/reviews/widget-number-two-review.html then the following URL, which makes use of the lp (for landing page) query string variable, suppresses the list of reviews: http://mydomain/rs/reviewsite/reviews/widget-number-two-review.html?lp=1 Find a review page in your system and try it. You'll notice a few changes in the layout and the absence of some features, like the navigation links. I'll cover the philosophy behind this later in this page, and also explain how you can get those back if you decide you need them. For now, you just need to be aware that the content of a page in landing page mode can differ from the content seen when the page has not been invoked with lp=1 in the query string. OK, so that's the first trick in your landing page inventory. Now we are going to expand upon it to including campaign tracking. Adding Campaign TrackingThe idea behind campaign tracking is that you add extra information to your campaign URLs so that you can determine which campaigns are ultimately successful (result in sales) and which should be tossed because they are losing you money. Campaign tracking requires that you carry the "campaign marker" from the web page on which the advert was viewed, all the way through to the Thank You page seen by the customer after they have made a purchase and earned you a commission. As you can imagine, there are a few steps to this process, and you have to get each one right or it won't work. But it's really not that hard to add tracking, provided you don't have thousands of URLs that require separate tracking IDs. Everything you need to implement tracking is discussed on this page. In this section I'll discuss the general procedure for adding campaign tracking. As you will see, it is not overly difficult to do. However, if you have a ton of ad groups and keywords and attempt to track to the keyword level you will likely find the process tedious, time-consuming, and potentially error-prone. After I have discussed the general case I'll suggest an alternative that avoids all this and provides much more accurate levels of campaign tracking. In the section Integrating Optimize My Site I will discuss how Jeremy Palmer's PPC tracking tool can be used with Review Site to make your life much simpler. For now, let's consider the simplest possible case of manually-implemented campaign tracking. We add a tracking ID to the destination URL of our advert. Including the landing page variable, the advert destination URL might look like this: http://mydomain/rs/reviewsite/reviews/widget-number-two-review.html?lp=1&landing_id=1234 In this case our tracking ID, which we designate by the variable landing_id, is 1234, but it could be any alphanumeric string that we can match up with a particular campaign when we get around to analyzing final results. Now, the only thing we have to do is attach that landing_id value to the affiliate URL that is ultimately used to send the visitor off to the merchant home page for the product in question. In this way it becomes our tracking ID.
REVIEW LANDING PAGES This template, which is parsed by Review Site, is passed a hash named $s.in which contains the names and values of all query string variables used to invoke the landing page. So if I wanted to append the landing_id to the outgoing affiliate URL I would target this piece of code in the LANDING PAGE section of the template: <a href="[% $review.jump_url %]" target="_blank"> I would add a conditional to this that takes into account whether or not the page is being rendered in landing page mode (lp=1 in the query string) and whether a landing_id is available to attach. The result would be something like this: [%* TRACKING EXAMPLE (REVIEW PAGES) *%] <a [% if $s.in.lp == 1 && $s.in.landing_id %] href="[% $review.jump_url %]?tid=[% $s.in.landing_id %]" [% else %] href="[% $review.jump_url %]" [% /if %] target="_blank"> When the page is invoked without setting lp=1 we just get the regular jump script link. Otherwise a check is performed to see if there is also a landing_id to attach. You will also see use of the conditional [% $s.is_landing_page %] in the review.tpl template. This is equivalent to [% if $s.in.lp == 1 %] but is easier to read. They can be used interchangeably. Note also that I have used tid as the name of the tracking variable that I am sending on to the merchant. It will depend entirely on the requirements of your affiliate network and how they extract tracking information. For example, ClickBank will recognize the query string variable tid as the tracking variable, while Google AdWords campaigns typically use the variable google_id to perform tracking. If you add tracking information in this way to the URL of the "jump script" that is used to extract the affiliate URL and send the visitor on their way, your tracking information will be added to that affiliate URL. In fact, the ENTIRE query string you add to the jump script URL is attached to the outgoing affiliate URL. It is also important to appreciate that none of this extra tracking code is present in your default setup. If you look at the review.tpl template you won't find any of this stuff. The reason for this is that how you go about your ad conversion tracking is up to you. I have outlined a simple approach above, but your particular case might require slight changes in implementation. The implementation can also be made a fair bit more complex, as we will see later in this page, when we try to increase conversions by enhancing the behavior of the landing pages.
COMPARISON LANDING PAGES However, in this case there are multiple jump script links (these are the GET NOW buttons seen on that page) which lead off the page because there are multiple products listed on the page. If we are going to add our tracking variables to all of these links (buttons) we are going to be targeting a link that appears in a product loop. In fact the piece of Smarty code that we need to modify looks like this: href="[% $item.jump_url %]" We would change it to something like this (which is virtually identical to what we had before): [%* TRACKING EXAMPLE (COMPARISON PAGE) *%] <a [% if $s.in.lp == 1 && $s.in.landing_id %] href="[% $item.jump_url %]?tid=[% $s.in.landing_id %]" [% else %] href="[% $item.jump_url %]" [% /if %] target="_blank">
OTHER PAGES & NAVIGATION LINKS But for the pages that you do treat as landing pages, you probably don't want users clicking on elements of the navigation area, and going off to other pages on your site. For that reason, if you look at the content of the navigation.tpl template you'll notice that the [% $s.is_landing_page %] variable has been used to knock out elements that might take the user to other parts of your site. For instance, to remove all the navigation links, [% $s.is_landing_page %] has been used to conditionally remove the tabbed_navigation.css style sheet: [% if $s.is_landing_page != 1 %] <link href="[% $s.css_url %]/tabbed_navigation.css" rel="stylesheet" type="text/css" /> [% /if %] The links themselves have been knocked out a little further down in the same template: [% if $s.is_landing_page != 1 %] <div id="tab" > <ul> [% foreach from=$s.nav_links item=link_hash %] <li [% if $link_hash.selected %]id="current"[% /if %] ><a href="[% $link_hash.url %]" ><span>[% $link_hash.anchor_text %]</span></a></li> [% /foreach %] </ul> </div> [% /if %] The same approach has also been used to remove the search engine input box too, and the ability to click on the logo to get to the home page. You can reintroduce any of this functionality by simply editing navigation.tpl You will note that this removal of links to other pages on your site has not be done everywhere in the page. It doesn't always make sense to do this (for example, on the product comparison page where you offer links to reviews elsewhere on your site). So, if you need to stop visitors from going anywhere but through an outgoing affiliate link you will have to introduce the relevant conditionals, using [% $s.is_landing_page %] appropriately, to remove these links. Testing Your Tracking CodeOnce you have added tracking to your campaigns it is not very difficult to see whether your landing pages are incorporating the tracking information. All you need to do is view the HTML source code for the landing pages and inspect the URL of the jump script. You should see your tracking variable added to the query string of the jump script URL. So if you added ?landing_id=123 to the destination URL of your PPC advert, the jump script URL in the HTML source code ought to look something like this (assuming the modifications shown in the previous section using tid as the name of the outgoing tracking id): http://mydomain/rs/reviewsite/recommends/widget-number-two-review.html?tid=123 Remember that the jump script is actually the file named recommends, which does a lookup of the value for the Review.product_url column, based on the value of the file name widget-number-two-review. That's the actual destination (merchant page) where you want to send the visitor. In this case, if the value of the Review.product_url column was http://mynickname.vendor.hop.clickbank.net/ then the ultimate affiliate URL used to send the visitor on their way would be this one: http://mynickname.vendor.hop.clickbank.net/?tid=123 If you want to send on more information than just the tid variable, then you will need to add the requisite code to the box marked [%* TRACKING EXAMPLE *%] from the previous section. Remember, all of the query string variables from your advert destination URL are contained in the hash [% $s.in %]. You can pluck out and use whatever components of it that you wish. OK, one more example before we go because I can already hear people saying "What about Google AdWords conversion tracking?". Well, it's no different than what has been discussed above. If you want to pass a Google AdWords conversion tracking variable you will take the tracking ID that Google provides and add it to your advert destination URL, so that you have something like: http://mydomain/rs/reviewsite/recommends/widget-number-two-review.html?google_id=1234567890 So if the vendor in question is running Google conversion tracking on their Thank You page and the variable they ask you to send on to them is to be called gid, then all you would do is adjust your jump script like so: [%* GOOGLE TRACKING EXAMPLE *%] <a [% if $s.in.lp == 1 && $s.in.google_id %] href="[% $review.jump_url %]?gid=[% $s.in.google_id %]" [% else %] href="[% $review.jump_url %]" [% /if %] target="_blank"> Of course, you really need to make sure you know what the query string variable is that the merchant is looking for. If you specify a gid value, and what they wanted was a g_id value, then your tracking is not going to work. So be sure to get the details right. Also, don't forget that most merchants do not implement Google conversion tracking. Find out if they do before you send them any tracking id. Otherwise you are wasting your time. Can you send both a Google conversion tracking ID AND another tracking ID (like a ClickBank tid variable) at the same time? Sure. Though, usually one or the other is enough for most people. Analyzing And Optimizing Your TrackingThe job of analyzing your tracking statistics and figuring out which campaigns are making you money is vital to your long term success as an affiliate. No-one who ignores the fact that most of their campaigns lose money is going to turn a significant profit, if any profit at all. In fact, most affiliates fail at exactly this stage because they are unable to optimize their campaigns. Although the analysis of campaign tracking is beyond the scope of this documentation, I can recommend a great piece of software that will help you with this job. Jeremy Palmer's Optimize My Site software was created for this exact purpose. You may remember that I mentioned the inspiration for the Review Site software was Jeremy's Black Ink Project 2.0, and that Jeremy is a very well-known pay per click marketer. Every year he spends hundreds of thousands of dollars on his pay per click campaigns, and it is vitally important for him that he weed out the campaigns that are losing him money. To get a handle on this he created his Optimize My Site software. In a nutshell, this is what the OMS software does:
I'll have more to say about how you can use the Optimize My Site software with Review Site in a later section entitled Integrating Optimize My Site. Adding Landing Page IntelligenceWe can do more than just modify our landing pages to allow them to pass a tracking ID onto the affiliate network. We can actually have the landing pages show different information depending on the campaign used to invoke the page. This means we can modify what the visitor sees according to which advertisement of ours they clicked upon. For example, if a web surfer clicks on our advert that targets acne sufferers who are "Embarrassed By Pimples?" we might add a header to the landing page that reads "My Pimples Embarrassed Me. Until I Found This Solution..." Naturally the reader is going to be interested in learning more because we have followed the emotional chord that caused them to click our way to begin with. This is powerful stuff. In fact, this is exactly the kind of system that Steven Clayton and Tim Godfrey of Commission Blueprint fame, use to pull in about $100,000 in ClickBank commissions every month. They are not alone. Other internet marketers who have mastered the use of similar systems that incorporate targeted testimonials and precise campaign tracking also claim to be making handsome commissions. Adding this extra functionality to our landing pages is not all that hard, actually. The first step involves adding another table to the Review Site back end to hold the "response intelligence". Actually, you could add more than one table to help with this, but let's assume we are going to achieve what we need with a single table called Landing. Incidentally, your Review Site distribution ships with such a table. It sits there doing nothing, but now you know what it is for, or what it COULD be used for. Let's suppose you are working with the Landing table, and that it has the following fields: id - record identifier, or tracking id keywords - keyword phrase associated with the ad campaign landing_page_header - phrase we add to the top of our triggered landing page You could make your Landing table a lot more complex than this, but this will do to demonstrate what we can achieve with it. When a review page is generated by Review Site the application looks for extra query string parameters in the URL request. If it finds any of the form tablename_id=1234 it checks whether the string tablename actually corresponds to a table in the system. If it finds one, it uses the value of the query string variable to look up the associated record (in this case, record 1234). It then extracts the record and makes it available to the review.tpl template for use in the special hash [% $s.lookup_info %] As an explicit example, suppose we added landing_id=2 to our landing page query string. Since the Landing table exists, the record with id=2 will be made available and each of the columns can be accessed like this in the review.tpl template: [% if $s.lookup_info.landing|@count %] id = [% $s.lookup_info.landing.id %]<br/> keywords = [% $s.lookup_info.landing.keywords %]<br/> landing_page_header = [% $s.lookup_info.landing.landing_page_header %]<br/> [% /if %] Note that we have used the Smarty syntax |@count to count the number of elements in the landing hash. That's a convenient way to determine whether or not a record was extracted. So how can we use this information? Well, the keywords are not that useful in the context of a landing page. They are of more interest to us, as a reminder of what campaign we might be dealing with. But the landing_page_header content is useful. We can add it to the top of our landing page by doing something like this: [% if $s.is_landing_page && $s.lookup_info|@count && $s.lookup_info.landing|@count && $s.lookup_info.landing.landing_page_header %] [%* WE ARE TREATING THIS AS A LANDING PAGE *%] <h1>[% $s.lookup_info.landing.landing_page_header %]</h1><br/> [% /if %] When we do that, in response to a user clicking on our "Embarrassed By Pimples?" advert, our landing page screams "My Pimples Embarrassed Me. Until I Found This Solution..." This is only the tip of the iceberg, though. You could certainly add more columns to the Landing table and incorporate more information into your landing pages. Of course, how far you go with this depends on your niche and its profit potential. There is no point making landing pages with super targeted responses if your efforts are not earning you money. The addition of header text, as shown above, might be as far as you want to go. Remember, just because you CAN add landing page intelligence to your Review Site pages does not mean you should. It will be up to you to figure out whether it is going to be useful, and how you should go about implementing it. Please don't email me and ask what you need to do. I have already laid it out in its entirety on this page. So, if you don't get it, either forget about trying to do it yourself, or perhaps check out Commission Blueprint for ideas. The videos that come with that product are actually very good and show you exactly how landing pages can be tailored to specific campaigns to increase their profitability. One last note. You can always add landing page intelligence by keying off the content of your query string. Remember that the content is available in the special hash [% $s.in %]. However, I personally think that it is cleaner, and more convenient, to just pass the ID of a table record and use the content of the [% $s.lookup_info %] hash to do the work. But it is entirely up to you which way you want to do it. Integrating Optimize My SiteIf you have followed the gist of the ideas behind campaign tracking you'll appreciate that there are two very significant road blocks to implementing tracking on a large scale (when you have thousands of keyword-level advert URLs to deal with). For one thing, setting up that many separate tracking URLs is time-consuming, tedious, and error-prone, as is any manual process. The other problem is that tracking represents only half of the story. You still have to find a way to analyze the results of your tracking. Fortunately both of those problems have been encountered before, many times by affiliates, and now there are a few software solutions that address these problems directly. The one that I am familiar with, and which I am going to tell you about was created by super affiliate Jeremy Palmer. Because he created the tool for himself, and because he used it for years before deciding to release it as a commercial product, the Optimize My Site campaign-tracking software has the advantage of being well-tested in the critical day-to-day operations of someone who spends hundreds of thousands of dollars per year on pay per click marketing. If you followed the logic of the tracking URLs discussed in the section Adding Campaign Tracking you can now forget all about that and in this section you'll learn how to implement tracking in a much easier way by letting Optimize My Site do all the hard work.
HOW OPTIMIZE MY SITE WORKS
That is, every time someone clicks on a pay per click advert and ends up on your landing page a visitor ID is created on-the-fly (it's actually an integer) and it is both recorded in the OMS click database AND floated as a cookie. When the visitor eventually follows one of the (cloaked) affiliate links on your landing page the cookie is used as the tracking ID and is attached to the outgoing affiliate URL. In fact, when the incoming click is recorded, a lot more than just the newly assigned visitor ID is written to the OMS click database. Information about the source of the click, like the campaign, ad group, keyword, and a host of other interesting parameters associated with the visitor are captured. All that information is then available simply by doing a lookup based on the visitor ID. So whenever a sale is made and the visitor ID is stored in the affiliate network database (as a tracking ID) the foundation has been laid for relating the infomation in your local OMS click database with information in both the affiliate network AND the pay per click service database (e.g. Google AdWords). The Optimize My Site software is able to retrieve reports from the relevant PPC service, and affiliate network, and correlate the information with the records in your local click database. Form these reports you can determine which campaigns are profitable or not - or which campaigns could be profitable if you tweaked them. It is powerful stuff. You may be wondering how the tracking is done on-the-fly. The first step with Optimize My Site is to add affiliate links to the OMS database. These links are assigned an integer ID and an equivalent cloaked URL is provided for each affiliate URL. Each of these links carries the assigned integer ID and redirects to the proper affiliate URL when clicked. An OMS redirection script named click.php appears each of these URLs.
HOW TO ADD OMS TRACKING TO REVIEW SITE
http://mydomain/rs/reviewsite/recommends/widget-number-two-review.html So when a link like this is clicked on, the recommends script looks up the value of Review.product_url and sends the visitor to that destination. In this case, the redirection link that you have supplied as the value of Review.product_url will look something like this: http://mydomain/oms_track/click.php?link=1 The OMS click.php script will look up both the cookie containing the visitor ID and the true merchant URL (the affiliate link you entered into OMS). It will attach the visitor ID to the affiliate link as the tracking ID, and it will also record the outgoing click in the OMS database before sending the visitor off to the merchant. So that's the rear end of the process taken care of. It simply requires that you add the OMS cloaked affiliate URLs in place of the true affiliate URLs you would normally have supplied as the value for the Review.product_url column in Review Site. But we still have to configure OMS to create the necessary tracking IDs on the fly, and work in the destination URLs for Review Site landing pages. The first step here is to simply set up your campaigns, ad groups, and keywords (let's assume we are doing this with Google AdWords) and specify your Review Site destination URLs. If you are only promoting one offer you might just have a single destination URL to work with. If you have added landing page intelligence, you might have more URLs to deal with, keyed on a landing_id variable that throws up different content according to the value of that variable. Or not. The point is, you set up your PPC landing page URLs in the normal way that you would had you not been planning to add any sort of campaign tracking. As a reminder, these landing page URLs will look something like the following: http://mydomain/rs/reviewsite/reviews/widget-number-two-review.html?lp=1 or http://mydomain/rs/reviewsite/reviews/widget-number-two-review.html?lp=1&landing_id=1234 Remember that, in Review Site context, the landing_id is simply a record ID for the Review Site Landing table, and that this landing_id allows us to pull up the content of a Landing table record and add parts of it to the landing page if we want to. It has nothing to do with the campaign tracking that OMS will be implementing. You can choose to add landing page intelligence using the landing_id variable, or you can ignore this aspect of PPC campaigns entirely. Once your landing page URLs have been added to AdWords you can use the Google AdWords Editor to export your campaign, or your entire AdWords account, as a CSV file and then that file can be imported into OMS. From there you will be able to convert the landing page URLs in your campaigns to equivalent URLs that go through an OMS script named tracking.php The reason for doing this is so that when someone clicks on a PPC advert of yours, they are first redirected to the tracking.php script which records the visitor information (including campaign related information), assigns a visitor ID as a cookie, and then redirects to the regular Review Site landing page (the URL you entered as the destination URL of your AdWords campaign). The visitor ID cookie is later used by the clicks.php script when the visitor leaves your site to visit a merchant. The visitor ID value is attached to the outgoing URL as the tracking ID that ties everything together. Once the new destination URLs with tracking have been added to the campaign(s) they can be pasted into the Google AdWords Editor and your AdWords campaign(s) can finally be imported back into Google AdWords. Let's recap the process of integrating Optimize My Site with Review Site to provide campaign tracking. Here it is, broken into easy to follow steps. This assumes that Google AdWords is your PPC service, but you would go through the same steps for the Yahoo and Microsoft PPC platforms: THE 7-STEPS TO INTEGRATE OMS TRACKING INTO REVIEW SITE Although there are a number of steps to carry out with this, none of the steps is particularly difficult or time consuming. Jeremy has created a detailed video session that covers all the fundamental operations that can be carried out with the OMS software. So if you use OMS you will have access to the video and be able to follow exactly what you need to do to implement tracking. Once you have done all this and activated your PPC ads, OMS will keep track of your conversions and you will be able to use the OMS interface to build reports that detail the profitability of your campaigns. For more information about the OMS software, visit Optimize My Site. Next Section: INTEGRATING WORDPRESS « Table of Contents | Obtain Review Site » Copyright © 2008 Random Mouse Software. All Rights Reserved. |