Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Mail merge for Gmail and Google Spreadsheets
Ruby JavaScript
Tree: f502559ab3

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

HappyTo: No more "sad bcc"

What's a sad bcc, you ask? It's when you want to send an email a list of people:

  • who you'd prefer not to see each other's email addresses
  • who you want to still feel special
  • who you want to customize a piece of the email for

So, what does HappyTo do then? I'd be happy to tell you. Basically, all of those things. Remember the days of mail merge? It's that, but with Gmail and Google Spreadsheets.

You just:

  1. Create a Google Spreadsheet with at least an "email" column. You can create other columns to customize what will go in the email each person receives.
  2. Publish the spreadsheet
  3. Export your Gmail user name and password locally

    export GMAIL_USERNAME =
    export GMAIL_PASSWORD = kazam
    # feel free to put a space in front of those commands so they don't get stuck in your history
  4. Grab and start the app

    git clone
    bundle install
    rails s
  5. Enter your spreadsheet url

  6. Enter a subject template. You may use any column name as a Mustache template variable. Ex:

    Great to see you yesterday {{name}}
  7. Enter a body template. You may use any column name as a Mustache template variable. Ex:

    <p>Hi {{name}},</p>
    <p>I'm happy to tell you I'm using HappyTo to send an email to you at {{email}}</p>
    <p>Tell your dog, {{dog}}, I said hi!</p>

Kazaam! Your emails are sent.

What's under the hood

HappyTo uses a few different technologies:

Why don't you host this for me?

A few reasons:

  • You don't get between a dog and his bone, and you don't get between a techie and their Gmail password.
  • I don't want to deal with spam-related issues. This is meant for personal use. Use something else to send out your shake weight emails. Gmail will cap you at about 200 bulk emails per day anyway.
Something went wrong with that request. Please try again.