railsでゴールページに直接訪問されてコンバージョン増えたと喜ばないための1行


ウェブサイトを運営していて「やった、コンバージョンが爆裂した!」

と思っていたらbotがthanksページに大量に訪問していたり、コンバージョンページをブックマークしているユーザーがいてコンバージョンが増えていた事、一度はありますよね?

thanksページに直接URLに訪問された場合、他ページにリダイレクトすれば良いですが、同じURLのままエラーページを返すとGoogleAnalytics上でコンバージョンとして扱われます。

ここでは簡易的に、railsでエラーページを表示しているのにコンバージョンになる事を防ぐスクリプトを説明します。

先頭の1行がエラーでかつゴールページの判定をしている箇所です。


<% if response.code.to_s != "200" && (request.original_url =~ /\/thanks/) != nil %>
<!-- NOTHING -->
<% else %>
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'xxxxx', 'auto');
  ga('send', 'pageview');

</script>
<% end %>

ステータスコードが200(OK)以外で、さらにURLが/thanksに一致すればgoogle analyticsのタグをHTMLに含めません。

ステータスコードをto_sして"200"と文字列にそろえて比較しています。

目標到達プロセスを設定していても、ゴールページのURLでページが表示されるとコンバージョンにカウントされます。それを水際で回避するためのものです。