Friday, 6 February 2015

Google Analytics Adds Basic Cohort Analysis (Beta)

In statistical analysis, a cohort is a group of people or subjects who all share some time-bound event, characteristic, or experience. For example, shoppers who visit an ecommerce site for the first time on January 30, 2015 could be said to be a cohort since they have a shared characteristic — they visited for the first time — and the experience was during the same time period, Friday, January 30. Cohort analysis is, perhaps, most useful when two or more cohorts are compared. This comparison lets marketers and analysts see the relationship between the two cohorts over time.

The Analytics’ cohort report can be configured around cohort type, cohort size, metric, and date range.

  • Cohort type. At the time of writing, the only available cohort type was acquisition date, thus one could look at how folks who visited the site on a particular date behaved over time.
  • Cohort size. This report attribute may be set to day, week, or month. In the email example above, each cohort was defined by folks who registered in January. It may be the case that if Google added additional cohort types, it would also expand the list of available cohort sizes to include other sorts of dimensions.
  • Metric. This is simply the thing one wants to measure. Presently, metrics include conversions per user, page views per user, sessions per user, user retention, goal completion, conversion, and more.
  • Date range. The relative date range for the data to be displayed.

The cohort analysis can also be run across segments. As an example, one could look at the average session duration for visitors on mobile devices versus visitors using desktop computers. Or cohorts could be based on new visitor acquisitions the week before Christmas 2014, the week including Christmas, and the week after.

This example shows session duration for three cohorts.

Doing this analysis, we might learn that visitors using desktop computers generally spend more time on site than do visitors on mobile devices and that this effect is even more extreme during the week before Christmas.

Wednesday, 4 February 2015

SEO Friendly Infinite Scroll

Three major news website redesigns this year look very different but have an important feature in common: articles that seamlessly transition to new content, without requiring readers to click or tap headlines and then wait for new pages to load.

This “continuous scroll” strategy for news sites’ article pages is gaining momentum. It’s been adopted by,, reflecting the fact that direct homepage traffic is waning (see the New York Times innovation report), and traffic from social media (particularly Facebook) just keeps growing.

So as readers increasingly enter sites from “side doors” or article pages, media organizations are trying to figure out how to get them to stick around. Pew recently found that visitors from Facebook are far less engaged than direct visitors. Here’s how sites that relaunched in the first half of 2014 are addressing that problem by making use of the continuous scroll (aka infinite scroll) feature in their article pages:

Since its March redesign,’s bounce rate — the percentage of visitors who leave the site after viewing only one page — has declined by 15 percentage points, according to managing editor Edward Felsenthal. The percentage of desktop visitors going to another piece of content jumped 21 percentage points between February and May.

Felsenthal attributed that to the continuous scroll, which provides a clickless path for readers to reach another story. He said the left rail, which serves as a “traveling homepage” of links to the top stories of the moment, also helped.

The fact that queues up top stories, not related stories, is crucial to the site’s strategy for serving social visitors, Felsenthal said: “In many ways the major objective of our redesign was to showcase for those users the full Time offering.”

NBC News
The redesigned NBC News takes a different approach from Time. Article pages transition into related stories, not top stories. And some stories are compiled into “storylines,” so if you’re interested in “hot cars and kids,” you can read a stack of more than 30 stories.
Mobile page views in June were up 30 percent over the previous 12-month average, according to an NBC News spokesperson. On average, NBC News readers on desktop and mobile are seeing nearly 20 percent more pages per visit than before the site’s February redesign.
Los Angeles Times
The LA Times redesign is less seamless than the other two in terms of transitioning quickly to the next piece of content. There’s a choose-your-own-adventure quality to the layout; non-blog stories transition into a section page instead of another article page based on which section you choose.
That gives readers more control over where the site takes them next, but requiring readers to choose what they see next adds some friction that the other sites lack.
A spokesperson for the LA Times said it was too early to share specifics about how the newspaper’s new site is performing. She summed up the goals of the May redesign:
• Eradicating print-centric and antiquated web concepts, such as “the fold,” “the jump,” “endless clicking” and “the dead end” with endless scrolling and multi-directional navigation
• Seamlessly pathing readers from one piece of content to the next, with section fronts and article pages anchored by a row of thumbnails that automatically transport readers to related coverage or other sections
Quartz, Fortune, and Cosmopolitan
The homepage-less Quartz is a clear influence here, particularly for Time. Whatever page you arrive on via social media occupies the top spot in the story stack, with top news — not related stories — below. Editorial news judgment plays a big role in the reader’s experience.

Quartz senior editor Zach Seward said it’s nice to see others emulate one of his site’s signature features: “It must mean we’re onto something.” He also said he doesn’t like the term “infinite scroll”:
The intent is to help users who get to the end of a story but want to keep reading. Some sites have dead ends, others create paralysis of choice. We choose to quietly suggest just one more story, which users can easily scroll into or just ignore. It’s all about that one moment rather some kind of infinite experience.

Seward recently told Digiday’s Ricardo Bilton that Quartz estimates “readers view about 50 percent more stories per visit than they would without the option to scroll.” And, Seward said, “When people choose to read another story on Quartz, about 80 percent do so by scrolling, as opposed to clicking on a headline.”

Time Inc.’s Money and Fortune have also adopted the Quartz-inspired template for their redesigns. And at the “sexy new”, a long stack of related stories is presented to readers at the bottom of article pages.

The article page is the new homepage, so what goes on underneath articles seems to be the paramount concern when redesigning a media site in 2014. Some, like Time and Quartz, choose to “quietly suggest” a particular story. Others, like the LA Times and Cosmo, are using the space below stories to offer lots of choices for readers. But all of them have redesigned with an eye toward that second click or page view.

10 Essentials in Implementing a SEO-Effective Infinite Scroll

The Infinite Scroll is becoming increasingly used in Web design. In fact, many businesses are choosing this feature for their websites, either to provide a different experience to users or to stay up-to-date with the latest digital trends. While it can be beneficial to adopt Infinite Scroll, it is important that its implementation takes into account the best SEO and usability practices.

The Main Issue: Indexing

In terms of SEO, one of the major challenges that you may encounter in trying to implement Infinite Scroll is indexing. The issue stems from the fact that Google does not allow the JavaScript download to display content found below a Web page that was programmed in Infinite Scroll. As a result, when the search engine lands on your Web page, it will only see the content that is first presented to the user; the content that is visible without having to scroll. To address this shortcoming, you must help Google detect your entire website’s content to effectively index your website and promote visibility between internal pages. You can do this by implementing an interlinking strategy.

Interlinking: The Solution to Indexing

An interlinking strategy is necessary to promote effective indexing to your website’s pages. By allowing Google to effectively crawl internal pages, you can ensure your website’s domain authority will remain high.

Classic Pagination

The first step to an effective interlinking strategy (when implementing Infinite Scroll), is to use a system of classic pagination. Pagination not only allows for a better crawling of pages (as mentioned above), but it is also necessary for users who turned off JavaScript display on their Web browser for whatever reason.
By adopting a classic navigation system, we help Google access all content on your website. As a result in the search engines, your website appears completely normal without any third-party technology such as Infinite Scroll. You no longer have to be concerned about your content being detected.
The following provides practical tips on how to implement classic pagination with Infinite Scroll.
As the image above indicates, the key to successful pagination is to first divide the content into unique segments, while carefully avoiding the possibility of duplicate content. Next, one should have a unique URL per page (ex.,, etc.) and a unique title per page (ex. website – Page 1, website – Page 2, etc.). It is necessary to present search engines and users with navigational numbered links toward other pages. There should be at least one "Back" link and one "Next" link.
Furthermore, you must use the REL and CANONICAL meta tags in the pagination system to properly segment the process, ensure there are no issues with browsing and indexing, and to avoid the possibility of duplicate pages. You must also ensure that off limit pages all give a 404 error. Why?
"JavaScript code which is too complex or arcane could also prevent rendering the page fully and accurately." — Google Webmaster Central Blog, May 23, 2014

Too Complex or Arcane?

Without classic pagination, the Google bot will not be able to access your content. Infinite Scroll requires a scrolling interaction that the robot in theory cannot execute. No scrolling, no content. No content, no search results.

Other Interlinking Elements

The following is a list of other key elements that need to be implemented to ensure proper indexing:
  • Well-segmented categorization: Segmentation of your content should be structured appropriately with categories and tags.
  • Well-structured menus: Do not be afraid to include in your menus all the internal pages that you think are pertinent (categories, tags, articles, etc.)
  • Interlinking module: An effective and popular technique for executing a good interlinking strategy is the use of an automatic module. For example, inserting a "related post" or "random articles" script at the end of a blog article will allow the wide distribution of pages with a high domain authority. This brings optimal indexing, and gives fresh impetus to forgotten older articles.
  • Avoid no-follow links: Surprisingly, many sites use the no-follow attribute on their own internal links. This practice basically indicates to Google that you do not trust pages that are internal to your website.
  • Sitemap: Including a sitemap on your website will help the indexing of your site.

Infinite Scroll as a Progressive Improvement

Infinite Scroll should be implemented as a "progressive improvement"; that is, it should function as an additional feature available to users that support it, without penalizing others or changing the technical structure of the site.

Asynchronous Download

For a "progressively improving" implementation, an Infinite Scroll has to load the required JavaScript elements necessary for asynchronous operation. Here is an overview of Infinite Scroll in asynchronous mode:

  1. The user requests a page (eg: and gets the content of this page.
  2. When it reaches the limits of content while scrolling, a JavaScript function will run, requiring new content from the server.
  3. When the server responds with the new content, another JavaScript function interprets the data and injects it into the HTML page.
  4. When there is more content to download, the server responds with a 404 error message that will not be shown to the user. Rather, we will post a notice that the content is exhausted. This feature works for both a scroll up as a scroll down.

Preloading and Caching

The asynchronous download can cause delays in the content display depending on the server’s response time. Therefore, we must use preloading and caching. The purpose of preloading is to download the adjacent content preventatively to minimize the new contents’ loading time. Caching’s purpose is to keep asynchronously downloaded content in memory.

Browsing States


The Infinite Scroll is definitely a plus for continuous navigation, but what about "segmented" navigation? If a user scrolls for several sections, finds an interesting link and clicks it, then returns to the Infinite Scroll, what happens?
If a user visits your site, leaves, then comes back a few days later and tries to find a certain piece of content, what is their experience? How will they know where to go? The answers to these questions are found in the History.pushState.

2. History.pushState

History.pushState lets you change the URL in the address bar dynamically. When the user scrolls and reaches a new section, the address bar will change. The pushState then creates a new state in the browser navigation history. If the user clicks on the back button, it will be up to the previous URL we populate via pushState.
history.pushState(stateObject, title, URL);
window.onpopstate = function(event) {
window.location = window.location; }
Sites like Facebook and 9gag demonstrate the importance of this practice. If you scroll far down on the site page with Infinite Scroll, then accidentally press the "Back" button and return immediately to the site, you will return to the very top of the scroll instead of exactly where you left off.

SEO Benefits?

The implementation of an Infinite Scroll, when well established, will not influence the SEO performance of a website. The major advantage however, lies in optimizing conversions (depending, of course, on the objectives of the website in question!).
For example, one of the most documented cases is that of TIME Magazine, which managed to reduce its bounce rate by 15 percent simply through the implementation of an Infinite Scroll. The reason being is when users enter the website, they browse through several different pages of content without realizing they have changed pages multiple times. This increases the likelihood that they will view many content pages on the website during their visit. The main lesson learned in all of this is that a user is extremely lazy, and it’s up to you to make it as easy as possible for them to go through your content!
Thus, the implementation of an Infinite Scroll on your website may allow you to decrease your bounce rate and increase the amount of content being viewed, as well as the number of pageviews. This can be extremely interesting for sites whose main income comes from advertising with CPM ads (if the advertisement reloads when users change pages with Infinite Scroll).


In summary, the implementation of Infinite Scroll on your website may benefit the user experience and increase conversions, provided you follow best Web development practices. By following the advice shared in this article, you can easily avoid falling into the trap of not indexing. You will also be able to give more weight to your internal pages and much more easily achieve your conversion goals. The Infinite Scroll will help achieve conversions if set up based on UX best practices.


  • Francis Roussin, earned media advisor, and Philippe Vachon-Rivard, front-end developer at iProspect, also contributed to this post.

Google Study: PPC and SEO for Branded KWs is better than Just SEO

It used to confuse me before, why would I add my brand keywords or keywords that I am already on top of SERPs for in my PPC campaign? I was thinking that people are going to click on my links automatically because they are already on top.
But I still ran the camapigns with those KWs, just to prevent competitors taking them.
Then I found an inetresting study to justify the paid clicks on branded and organically ranked KWs:

The study which was conducted by Google concluded that 50 percent of clicks generated by paid ads are not replaced by organic clicks when the ads are absent and the website has a first position organic search ranking. The study also shows that as the organic search ranking decreases, the percentage of clicks not replaced by the paid ad increases. This implies that organic search alone cannot drive as much traffic to a website as organic search combined with paid search.
Here is the Abstract:

Impact Of Ranking Of Organic Search Results On The Incrementality Of Search Ads

Abstract: In an earlier study, we reported that on average 89% of the visits to the advertiser’s site from search ad clicks were incremental. In this research, we examine how the ranking of an advertiser’s organic listings on the search results page affects the incrementality of ad clicks expressed through Incremental Ad Clicks (IAC) and as estimated by Search Ads Pause models. A meta-analysis of 390 Search Ads Pause studies highlights the limited opportunity for clicks from organic search results to substitute for ad clicks when the ads are turned off. On average, 81% of ad impressions and 66% of ad clicks occur in the absence of an associated organic search result. We find that having an associated organic search result in rank one does not necessarily mean a low IAC. On average, 50% of the ad clicks that occur with a top rank organic result are incremental, compared to 100% of the ad clicks being incremental in the absence of an associated organic result.

Impact Of Ranking Of Organic Search Results On The Incrementality Of Search Ads

Wednesday, 28 January 2015

SEO Engineering vs. SEO Magic

Don’t we all hate it when people think of SEO as a magic wand?

“Make my site rank on top of Google!”“How much do you take for SEO?”“I want more traffic! More leads! And more online sales, do your thing... and I will pay you 300$ a month!” 

And the scenarios never end!!!

There are hundreds of different ways to do SEO, including sitemaps, link-building, and search-engine-friendly site design and so on. The best strategy for successful SEO can differ by product, by page and even by season. Identifying what works best for each case is what really shows results. In many times, well-known strategies for SEO may not work for a client, while certain tactics that may not be expected for them could work like a charm.

The bottom line is, an SEO specialist is not a magician but an Architect or an Engineer.

  • We are directors, we orchestrate the whole online existence of the business and integrate it to physical life.
  • We are marketing specialists, we design and draw marketing strategies, segmentation, targeting, and positioning.
  • We are analysts, we research the market, identify strengths, weakness, opportunities and threats.
  • We are detectives, we spy on competitors and monitor the brand’s mentions and reputation
  • We are Financial Analysts, we know how to calculate the Time value for money (i.e. the future value of a present investment)
  • We are Brokers, we buy and sell (online) real-estate and placements all the time.
  • We are problem solvers and crises managers, when a new algorithm hits, we know how to contain it and recover the site and protect the business. 
  • We are the Big Brother, we oversee the big data world of numbers, internet traffic distribution, traffic flows, channels, Trends, and daily buzz.

We may not be Magicians, But we definitely are... Supermen and Women

SEOs and online marketers are supermen and women
SEOs are Supermen

Tuesday, 27 January 2015

Differences Between Responsive Design, Dynamic Serving, and a Separate Mobile Site

There are many ways to configure a website for all screens. Factors to think about include the cost, time to build, your available human resources and infrastructure, and the needs of your customers.
Whatever configuration you choose, as an underlying principle we strongly recommend that you serve all your sites from a single domain, like In particular, if your desktop site is hosted on, don’t put your mobile site on a separate domain, like
Stay with a single domain and you’ll build brand and URL equity with your users. With that principle in mind, let’s look at the three basic ways you can build a mobile-friendly website: responsive designdynamic serving, and a fully separate mobile site.

Responsive Design

Responsive web design (RWD for short) is a clever design technique that uses a single HTML code base for all platforms. That is, all viewing devices read from the same code on the same URL.  The content resizes itself to fit the screen being used, based on pre-defined breakpoints and fluid grids.
RWD requires solid up-front planning. Costs can be high at first, but once the device-specific strategy is set, maintenance can be less resource-intensive.
·        One URL for all content. Using a single URL for a piece of content makes it easier for your users to interact with, share, and link to your content. It’s also easier for search engines to discover and index your content.
·        A streamlined user experience. Presentation of all content is customized, and device-specific features can still be used.
·        Flexible orientation. RWD naturally allows for landscape or portrait device orientation changes by users.
·        No redirects. Load time is reduced and performance increased.
·        Careful planning required. Since all HTML is shared here, careful planning is a must to develop a truly custom and robust experience with optimal performance for each device and user.
Common mistakes to avoid:
·        Data bloat. Don’t let mobile users download full-size images meant for big screens and fast speeds. Try to reduce HTTP requests and minimize CSS and JavaScript. Load visible content first and defer everything else.
Who it’s for:
Businesses that are focused on offering a consistent experience and can plan holistically for all devices with a single web team. (, and all use this approach.) RWD can be expanded to fit new devices as they emerge, and the single URL is good for linking and sharing articles without confusion or redirects.

Dynamic Serving

In this method, the web server detects the type of device a visitor is using, then presents a custom page designed just for that device. Custom pages can be designed for any device type, from mobile phones and tablets to smart TVs.
·        A custom user experience. Each user gets content and layout created just for their device.
·        Easier changes. Adjust content or layout for one screen size without having to touch other versions.
·        Faster loading. Your team can streamline content for optimal load times on each device.
·        Single URL. As with Responsive Design, Dynamic Serving keeps all your users on a single URL.
·        Content forking. Multiple custom pages mean multiple sets of the same content. Unless you have a sophisticated CMS in place, keeping content up to date on all device-specific pages can be challenging.
Common mistakes:
·        Faulty device detection. Your servers will need to run scripts to recognize all available devices. This step prevents problems like the server sending a mobile-optimized site to tablet users. Your webmaster will need to keep the directory up-to-date and running smoothly to avoid bad detection or gaps in service. Another common mistake is that the server assumes a device orientation, most commonly portrait, but the user may be holding the device in a different orientation (ie landscape).
·        Changing experiences: Users will be confused if you have multiple sites and they appear radically different. While it’s important to customize for each screen size, your brand look and feel should be recognizable in all formats.
Who it’s for:
Dynamic serving is a resource-intensive solution for companies that make frequent changes to their website, and who often need to adjust display for one device, such as tweaking only their mobile site. A capable IT staff (or vendor) is a must to manage the different and possibly complex sets of website code required.

A Separate Mobile Site

A third option is to simply create a mobile site that’s separate from your original desktop site. Your system detects mobile visitors and redirects them to your mobile-optimized site (often using a sub-domain like
Only mobile users will see the separate mobile site. Users of tablets, Web-enabled TVs or other devices will still see your original desktop site.
·        A custom user experience. This gives you the most freedom to create a separate mobile site that is designed only for mobile users.
·        Easier changes. Content or design changes can be limited to the mobile version of the site, with no effect on other devices.
·        Multiple URLs. Sharing a web page requires careful redirects and integration between your mobile and non-mobile sites. Redirects also lead to longer page load times.
·        Content forking. Keeping two different sets of content can make data management more complex.
Common mistakes:
·        Faulty redirects. When a mobile user lands on a deep desktop page, make sure they aren’t redirected to your generic mobile homepage. Also important: avoid smartphone-only errors, where a desktop URL redirects to a non-existent mobile URL.
·        Missing annotations. The two-way (“bidirectional”) annotation helps Googlebot discover your content and helps our algorithms understand the relationship between your desktop and mobile pages and treat them correctly.
·        Inconsistent user experience: People who look at your smartphone site should recognize it as the same business they see on your desktop site. This prevents confusion and a bad overall user experience.
Who it’s for:
Businesses that for any reason need to manage their mobile site independently. For instance, some businesses may want to use a different vendor for mobile, or may want a mobile structure that simply wouldn’t be possible with RWD. Since setup is relatively easy and can be quite cost-effective, a separate mobile site can be good for small businesses with more basic site needs.



Friday, 9 January 2015

How to Make The Analytics ROBOT to send virtual traffic To Any Site or Track Visits to Your Physical Rooms!!!

Ever wondered how traffic bots work? How come you put any URL in this simple app and you receive thousands and thousands of hits (seen on Analytics) with any parameters or metrics you like.
You can identify which pages receive the traffic, session duration, used device, screen res., even IP, medium, source, etc. So you can actually see in your traffic reports on GA that you've received your traffic from CNN, NY Times, Yahoo, or even Google.

The way such traffic bots work is very simple and straightforward and can used to trigger traffic signals from almost anything.

Here is the HOW it Works:

It sends a 'get request' through the Measurement HTTP Protocol using to GA servers on its URL:

For Example:

All what you have to do is to put this in the address bar of your browser and press Enter:

You can find all the Parameters here: 

Now you understood the logic, you can run this request through a very simple app that changes the CID and sends the request automatically via a list of proxies, or instead you can build this small device and... 

YOU CAN TRACK YOUR HOME VISITS WITH GOOGLE ANALYTICS and see how many rooms are visited the most!!

Full details are here:



A Checklist Before buying a Used Domain

Whether it is a .com or dot anything, you need to be sure that the domain you are paying a lot of money in is safe and worth every penny you are putting in it.

Buying a used domain is like buying an expensive used car, it may look fancy but you don't know what is under the hood. So, you need to check everything, get a report, and be comfortable knowing that the domain you are driving won't run into an accident in the future because you did not spend one hour doing some check-ups.

The following 14 points is my checklist, you can use it as is, or add more to it if you like:

  1. site: search on the domain name in Google, Bing
  2. info: Search
  3. Google the domain name and check reputation
  4. Keyword search volume, and competition (AdWords KW Planner)
  5. Check the Domain age
  6. Check the way back machine at
  7. Check robots.txt file and see if is disabled
  8. Check Backlinks quantity and quality
  9. Check domain and IP health and if it is blacklisted
  10. Check domain and IP health on
  11. Check if blacklisted:
  12. see if the Domain or IP is currently listed in the live Spamhaus Domain Blocklist (DBL)
  13. check if it is on DMOZ or Yahoo Dir
  14. Find contact info on If not private, run a search on the contact person 

Wednesday, 7 January 2015

AdWords Scripts Tools and Basics

You do not have to be a programmer to run AdWords Scripts, especially when you manage large E-commerce sites.

I know it is intimidating for many PPC Specialists to deal with code, but when you know the great things you can do with these ready-made scripts and how to implement them as easily as setting up an Ad Group, you will regret not knowing how to do it a long time ago.

First, what can you use the Adwords Scripts for:
There are many things you can use the Scripts for, but the most important are:
  1. Finding broken links in destination URLs
  2. Disabling Ads or Keywords for out of stock items. 
  3. importing data from other CRM tools
  4. Import data from a spreadsheet to make decisions on your AdWords account
  5. Use external inventory data to pause/unpause entities.
  6. As inventory becomes high, you can increase bids or add new keywords.
  7. Automatically take actions against keywords hogging your spend for the day.
  8. Pause the keyword and increase budget at the same time.
  9. Create campaign stats reports and visualizations.
Adwords Scripts infographic what to use it for PPCHero

Adwords Developers page has provided all the needed tools and material you will need in order to run your Scripts. You can find them all here:

Russel Savage has created a nice tutorial that explains the lines you will find in most Scripts:

* Intro to Javascript For AdWords Scripts
* Version 1.0
* Created By: Russ Savage
function main() {
  // This is a comment. AdWords Scripts ignores this
  /* Here is another way to comment
     that can be used when you need
     to comment multiple lines */
  // The main function tells AdWords where to start. You always need
  // at least a main function in your script.
  // Let's start with some variables (or primatives)
  // More info on Javascript variables can be found:
  var clubName = 'Fight Club'; // declared with single quotes
  var rule1 = "Don't talk about fight club."; // or double quotes if needed
  var members = 12; // a number, no quotes
  var dues = 3.50; // also a number
  var isAcceptingNewMembers = true; // a boolean, for yes or no answers
  // When you need to store multiple values, consider an Array
  // More detailed intro to Arrays can be found here:
  var memberNames = ['brad','edward','robert'];
  // Which you can access the values with an index
  var coolestMember = memberNames[0]; // pronounced member names sub zero
  // 0 is the index of the first element of the array, 1 for the second, etc.
  // We can use the length property of an array to find out how big it is.
  var numberOfMembers = memberNames.length; // this will be 3
  var dailyFights = numberOfMembers*2; // star ( * ) is an operator for multiply
  // so the total number of fights is 6.
  // More on operators can be found here:
  // If you want to group multiple variables together, you can using an Object.
  // An Object is simply a grouping of common variables (and other stuff we'll see later)
  var FightClub = { // The curly brace says group these things together. there is another one at the end.
    clubName : 'The Fight Club', // a string variable. In an Object, we use : instead of = for assignment
    rules : ["Don't talk about fight club.",  // each variable is separated by a comma, instead of a semi-colon
             'Do not talk about fight club.'],
    memberNames : ['brad','eddy','robert','phil','dave'],
    dues : 3.50,
    foundedYear : 1999
  // Now to access the variables inside the object, we use the dot
  Logger.log(FightClub.clubName); // prints The Fight Club
  Logger.log(FightClub.memberNames[0]); // prints brad
  // Objects are one of the most important concepts of Javascript and they will come back
  // again and again a little later. More details can be found here:
  // Sidebar: Why do I use camelCase for variable names? Technically
  // I could
  var UsEWhaTevERIwanteD = 'but camelCase is easier to read';
  // and conforms to the style guide that Google recommends:
  // Follow the style guide. It helps others read your code.
  // If statements (or control statements) allow you to split your code path if needed
  if(numberOfMembers > 10) { // if we have more than 10 members
    dues += 1.00; // increase the dues,
    // plus equals (+=) says "add the value on the right to the value on the left"
  } else { // otherwise
    dues -= 1.00; // decrease the dues
    // there are also -=, *= (multiply), /= (divide by), and %= (modulo equals)
  // Comparison operators like >, <, ==, ===, <=, >= allow you to compare values
  // They return true or false, always
  // Notice the double and triple equal signs. That's not a typo. More info can be found at:
  // You can also have multiple if statements and multiple things to test
  if(dues > 5) { // if dues are over $5
    dailyFights++; // increase the fights
  } else if(dues > 2 && dues <= 5) { // if dues are greater than $2, but less than $5
    dailyFights--; // decrease the fights
  } else { // otherwise
    dailyFights = numberOfMembers*2; // reset the fights
  // You'll probably notice none of this makes sense. it is only for example.
  // Double Ampersand && just means AND, || means OR. So in the statement above,
  // both statements with operators must be true in order for the fights to be decreased.
  // Oh, and ++, -- is shortcut for +=1 and -=1 respectively.
  // Ok, now lets talk about loops.
  // Here are a few different ways to loop through the members
  // This is called a While Loop and while it might be easy to understand,
  // You won't use it nearly as often as the other two.
  var i = 0; // the variable i is what we will use for each indice
  while(i < memberNames.length) { // while i is less than the length of names
    Logger.log(memberNames[i]); // print out the name
    i++; // and increment the index by 1
  // i is a variable that controls the loop. A common issue with While loops
  // is that you will forget to increment the loop control and you get an infinate loop
  // This is the classic For loop
  // The declaration, checking, and incrementing are all done
  // in the first line so it is harder to miss them
  for(var index = 0; index < memberNames.length; index++) {
  // And finally, the easiest loop but hardest to explain, the ForEach loop
  // This is just a variation of the For loop that handles incrementing index
  // behind the scenes so you don't have to.
  for(var index in memberNames) { // declare index, which will be assigned each indice
    Logger.log(memberNames[index]); // Use the indice to print each name
  // You can jump out of a loop before it reaches the end by combining the if statement
  for(var index in memberNames) {
    if(memberNames[index] === 'edward') {
      break; // break is a keyword you can use to break out of the loop.
  // In this case, only the first name is printed because we broke out once we had the
  // second name. More on break and its partner, continue, check out:
  // Now let's talk about functions. We have already seen a function in action: main()
  // Functions are groupings of useful code that you can call over and over again easily
  function fight(player1, player2) {
    if(Math.random() < .5) {
      return player1;
    } else {
      return player2; // return means we are going to send player2 back
                      // to the code that called the function
  // This code can be called over and over again using a loop
  for(var player1 in memberNames) { // Loop through each member
    for(var player2 in memberNames) { // Then loop through again
      if(player1 !== player2) { // Players can't fight themselves so check for that
        Logger.log(fight(player1,player2)); // Then call the function we defined earlier
  // This code calls fight() for:
  //    brad vs. edward, brad vs. robert
  //    edward vs. brad, edward vs. robert
  //    robert vs. brad, robert vs. edward
  // Some other functions we have been calling are Logger.log() and Math.random()
  // The cool thing is that as callers of the function, we only need to know how
  // to call the function, we don't need to know how it works behind the scenes
  // For example:
  //   var answer = LargeHadronColider.simulateEleventhDimensionalQuantumThingy(47);
  // Who knows how this works. All we need to know is to send it a number and expect a
  // number back.
  // I hope you've been noticing all of the Objects we have been using here. Logger is one,
  // Math is another one (and LargeHadronColider is a fake one). Along with variables, we
  // can also put functions in there as well:
  var FightClub = {
    // ... all that other stuff
    chant : function() {
      Logger.log('His name is Robert Paulson.');
    totalMembers : 5
  // Whoa trippy. So what happens when I call
  // It's going to print His name is Robert Paulson
  // The thing that makes Google AdWords Scripts different from writing just regular Javascript
  // is all of the pre-defined Objects that use functions to interact with AdWords.
  // How does the above statement work?
  AdWordsApp  // this is a predefined object in AdWords Scripts
    .keywords() // which has a function called keywords() that returns a KeywordSelector object
    .withLimit(10) // which has a function withLimit() that returns the same KeywordSelector object
    .get(); // which has a function get() that returns a KeywordIterator object.
  // Check out the AdWords Scripts documentation to find the objects and classes that make up these calls
  // So I think that just about does it for this tutorial.  If you made it this far, awesome! Post a comment to ask
  // any questions you might have.
  // Thanks,
  // Russ

If you still find it intimidating, or you dont want to waste time copuing and pasting Scripts, there is always Hero Pro by PPC Hero. It costs between 100 to 400 and will take all the Scripting burden off your head.