Google AdSense is great.
You have a website that contains interesting original content which you update regularly. You are getting good traffic from natural search results so you think adding Google AdSense to your site would be a nice way to earn a little income from your hard work.
So you create an AdSense account, add the AdSense javascript to your website and check in regularly to see your income creep up, very slowly at first but after six months you are making maybe a dollar or two a day and are heading towards the $100 or £60 hurdle for your first payout.
The day comes when you hit the milestone and then a few days later you get an email saying your Google AdSense account has been disabled due to invalid click activity.
You go through the 4 stages of
  • Anger - Why the hell did I get banned? Google you have cheated me !!!
  • Denial - I didn't do anything wrong !!!
  • Despair - Months and months of hard work all for nothing :( :( :(
  • Acceptance - OK I must have screwed up and done something to cause this ban
I speak from personal experience having received a ban and I will now share what I've learned to help you avoid the same fate.
The first thing to note is that Google will not go into more detail than "Invalid Click Activity". If you run Google AdSense on multiple domains (you are only allowed one AdSense account regardless of how many domains you run) they will not tell you which domain caused the ban.
Once you receive a ban you are locked out of Google AdSense reporting which makes it even harder to discover which of your sites received the invalid clicks so if you didn't keep copies of your AdSense statistics (I didn't) then you will have a really hard time discovering when and where the violations occurred.
There is an appeals process and I have written two politely worded appeals identifying how I think I fell foul of their terms and conditions and what corrective action I have taken but both times my appeals have been rejected with no information or reason supplied.
I've done a lot of research into what might have caused my ban and have compiled it into a list of points which you should follow to stay compliant and remain in the AdSense programme.

Understand how Click Through Rate (CTR) works

CTR is a key statistic in how Google determines if the number of clicks on your AdSense adverts is in line with the number of visitors and page views your website receives. If the number of clicks for each page view is too high then Google will treat this as suspicious and this could get you banned. CTRs vary depending on the type of content on the page but typically could be 0.5% to 1% (i.e. one click for every 100-200 page views).

Don't tell friends and family about your website or how Google AdSense works.

I made the mistake of telling friends and colleagues about how I was making money and although I warned them not to click on my adverts I can't be 100% sure that none of them did. Play it safe and tell no-one. If your website is popular enough to make decent money from AdSense then that will be because it appeals to a large number of people.

Don't "Share" your website content links on Facebook.

The reason is that your Facebook contacts are most likely friends, family, and colleagues and these are the kind of visitors who might click your adverts out of a misguided sense of helping you and distort your CTR. I suspect Google keeps track of how many adverts are clicked where the HTTP referrer is Facebook and treat these as suspicious.

Don't put any kind of text on your website that could be seen as an invitation to click on your adverts.

This doesn't have to be as obvious as "Please click my adverts". Even something like "This website is supported by advertising" is probably enough to get a ban. Remember that Google AdSense publishers are manually audited by humans so you might fool a robot but not a Google employee. In an early version of my website I had a line of text I thought was acceptable but a friend of mine told me it was in violation of the Google AdSense terms and conditions so I removed it quickly.

Make sure you have a privacy policy that meets the AdSense requirements.

See this link for an example of a compliant policy

Never click your own adverts.

OK, this one should be obvious to any honest publisher. It is clearly click fraud and I never deliberately clicked my own adverts but I do remember accidentally hitting them maybe twice during testing. My website gets nearly 300 unique visitors a day and I don't believe one or two clicks over a year of traffic was the reason for my ban.

Never VIEW your own adverts.

This one is not so obvious but if you consider it, by visiting your own website with adverts enabled you are diluting your CTR (by increasing the number of page views which don't result in a click) and this could be seen as an effort to hide fraudulent clicks amongst a larger number of innocent page views.
My advice is to wrap the code which displays the adverts with some checking code which disables adverts under certain conditions. You probably want to disable adverts on the following conditions:
  • Client IP address is your home or work
  • Page is a non-content page (such as login, error, or thank you page)
  • HTTP referrer is Facebook
If your website is written in PHP then you can use this code which I have written:

Don't put Google AdSense on your website until you have reached a minimum level of traffic.

By waiting until you've reached a respectable level of unique visitors each day you will be more likely to achieve a typical CTR that will not look suspicious to AdSense's automatic monitoring systems. If you enabled AdSense when you have very low traffic then any clicks will result in an unusually high CTR and will look like click fraud.
My suggestion would be to wait until you are seeing more than 200 unique visitors per day. You can check this easily if you set up Google Analytics.

And if you follow this advice and still receive a ban

Don't take it personally. Google is just a business. AdSense is a numbers game and Google makes it's money from the advertisers. It must protect its own revenue by keeping those advertisers happy and that means removing websites from the AdSense programme who present a risk of click fraud or perhaps just don't generate a good enough return for those advertisers (how many clicks convert into purchases).
If you still think your website attracts enough traffic to be profitable then investigate other advertising schemes such as http://chitika.com/ or http://www.adbrite.com/.