Transcribing a Facebook Group to CiviCRM Group

The Task

I needed to create a new group in CiviCRM, the CRM we use at my alumni foundation. This group would contain all the individuals who had joined our discussion group on Facebook. I wanted it so that whenever a new person joined, I could easily find who from their graduating class was also in the group. With that info, I could make a welcome post with their old classmates tagged in it.

The Tedium

I pulled up the full roster in CiviCRM. I would check the names of everyone who was a member of our Facebook group, and then bulk add them to a new user group on CiviCRM.

What this actually looked like was having the CiviCRM roster open in one window, the names of all the Facebook group members in another, and then going down the list, checking boxes. Very boring.


The Solution

I had previously created a text file with the names on the FB group members (that’s a different post!) so I was in a good position to automate. I wanted it to accomplish the following:

  1. Minimize typing as much as possible
  2. Eliminate the need for using modifier hotkeys so my fingers can stay on the home row
  3. Minimize the need for clicking or cursor movement so my fingers can stay on the home row

The obvious boring loop was this:

  1. Use ⌘ + F to focus on the “Find in Page” field
  2. Type the person’s last name
  3. Verify the name it brings me to is correct
  4. Click on the box next to their name


After doing this 10 or so times I noticed that about 90% of the time when I search a name, Safari would highlight the name in the exact same position in the window, so all I would have to do is keep the cursor over the box and click it to check it.

The Macro

With this core loop in mind, I separated the workflow into two distinct parts:

  1. Doing a search for a name, which never changed. No decisions required
  2. Clicking on the box next to the correct person, which does change. Decision required occassionally

Macro 1: Get Next Name and Find It


To keep things on the home row, I set the macro trigger to ; . When pressed, It would grab the last name of the next person on the list and paste it into the find box on the roster window. The exact steps looked like this:

  • Activate TextWranger (which displayed the text list of FB Group members)
  • Type Down Arrow to go to the next line on the document
  • Move the cursor to the end of the line with ⌘ + Left Arrow
  • Execute ⌥ + ⇧ + Left Arrow which will select the entire word to the left of the cursor, i.e. the person’s last name
  • Copy to clipboard
  • Activate Safari window
  • Execute ⌘ + F to focus on the Find in Page prompt
  • Paste the name into find

About 90% of the time, the window will put the exact person I was looking for in the center of the window, so all I have to do is click to hit the check box. I don’t want to take my fingers off the home row, so…

Macro 2: Type ' to Click


Super simple. The macro just clicks at the current positon when the single quote is pressed. On the rare case that the person is incorrect because two people had the same last name, I’ll labor myself to use the track pad and click it.

All Done!

With these macros in place, I was able to breeze through the remaining 85 or so names on the list.

Notes