Provides support for Google Analytics campagin tags for links generated by ActionMailer
MIT License
This gem automatically rewrites absolute links generated by ActionMailer. It intercepts all'url_for
calls (so link_to
calls are intercepted as well)
and change the final url to add Custom Campaign parameters to your URLs.
Add this line to your application's Gemfile:
gem 'google_analytics_mailer'
And then execute:
$ bundle
Or install it yourself as:
$ gem install google_analytics_mailer
There are three level of customization for rewritten links:
In order to enable Google Analytics params for a given mailer you should simply add a line to a given mailer as in:
class UserMailer < ActionMailer::Base
default :from => '[email protected]'
# declare url parameters for this mailer
google_analytics_mailer utm_source: 'newsletter', utm_medium: 'email' # etc
# Links in this email will have all links with GA params automatically inserted
def welcome
mail(to: '[email protected]')
end
end
Then in your view generate links as usual:
<!-- this will produce your-url?utm_medium=email&utm_source=newsletter because of class default params -->
<%= link_to('Read online', newsletter_url) -%>
<!-- local parameters are not overridden, so this produces ?utm_medium=email&utm_source=my_newsletter -->
<%= link_to('Read online', newsletter_url(utm_source: 'my_newsletter')) -%>
In order to override params for a specific message you can override params in the method which defines the message as in:
class UserMailer < ActionMailer::Base
default :from => '[email protected]'
# declare url parameters for this mailer
google_analytics_mailer utm_source: 'newsletter', utm_medium: 'email' # etc
# Links in this email will have utm_source equal to second_newsletter
def welcome
google_analytics_params(utm_source: 'second_newsletter', utm_term: 'welcome2')
mail(to: '[email protected]')
end
end
At view level you can override generated parameters using the with_google_analytics_params
method
<div class="footer">
<%= with_google_analytics_params(utm_term: 'footer') do -%>
<!-- this will override other params and produces ?utm_medium=email&utm_source=newsletter&utm_term=footer -->
<%= link_to('Read online', newsletter_url) -%>
<%- end -%>
</div>
or you can disable them for a specific block
<div class="footer">
<%= without_google_analytics_params do -%>
<!-- this will output link with no analytics params at all -->
<%= link_to('Read online', newsletter_url) -%>
<%- end -%>
</div>
Since ActionMailer and ActionController use the same code base to provide view rendering this gem can be used in the
same way in any action controller which inherits from ActionController::Base
(i.e. almost every controller in a
Rails application). The alias google_analytics_controller
is provided for better naming thus in a controller you can do
class UserController < ApplicationController
# declare url parameters for this controller. Absolute links in this controller will be tagged with GA parameters
google_analytics_controller utm_source: 'some site', utm_medium: 'web' # etc
# Override for single action
def index
google_analytics_params(utm_source: 'index page', utm_term: 'foo bar')
end
end
View syntax is obviously the same as in mailer.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)