GoogleAnalyticsMailer 
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.
Installation
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
Usage
There are three level of customization for rewritten links:
- Class level: Params specified at class level will appear on every link of every message generated by that class
- Method level: Params specified at method level will appear only on that message
- View level: Views level parameters will take the highest precedence and they will always override all the others
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>
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request