Templated Texts

Templated Texts is an app for smartphones, helping you to send slight variations on the same text message to a group of people you define using the system contacts app. You can use tokens like $givenName or $name to customize each message for its recipient. Use it to organize a union, or a party.

Here's a link to download the iOS version of Templated Texts from the App Store

Here's a link to sideload the Android version of Templated Texts from my website

Here's a link to the iOS code

Screenshots

screenshot of main screen in this iOS app, with composed text message reading 'Hi $givenName — the strike authorization vote is today. Have you submitted your ballot?' screenshot of the text message sending view in this iOS app, with the interpolated text message reading 'Hi John — the strike authorization vote is today. Have you submitted your ballot?'

Why I built this app

I'm a member and organizer in my union, the New York Times Tech Guild. In the run-up to securing our first union contract, my coworker Sarah Duncan approached me to be part of a phone tree for our union that was focused on communicating with coworkers and getting people to take action. There are around 700 of us, and as we started to prepare for a strike being called, Sarah and a group of fellow organizers had reached the conclusion that we needed a way to talk to everyone in our union quickly. Sarah's pitch to me and others was that if we found around 20 or so people who could commit to sending texts to 30 people within a 24 hour time period, we could quickly reach all 700 or so members when we needed to.

Our union has typically emphasized one-on-one synchronous conversation as the best way to find out where someone is actually at: it's harder to ghost or ignore someone when you're on a phone or video call, and it can be easier to hear and express the nuance that's sometimes required in organizing conversations on a call vs. in text. But those organizing conversations take time; I think the longest I remember spending on the phone with someone was an hour and a half. Towards the end of our contract campaign, we sometimes had time-sensitive conversations or asks for fellow union members: we wanted people to vote to authorize a strike, or to sign up for a picket line shift that day. Texting was the common denominator communication medium that could reach people where they were at, when it wasn't possible to get in touch with them synchronously.

The group of texters started by manually sending texts to each of our 30 people, copying and pasting each message individually to each recipient. We used a Signal group to workshop what message to send, and coordinate who needed help sending their messages. This worked OK! Even though individually messaging people was time consuming, we started to hear back from coworkers via texts who were otherwise hard to reach on other work-adjacent communication channels like Slack, Zoom, or Google Meet. Sending texts individually from real coworkers (us) also left room for people to reply, and conversations often spun out from these texts that would not have happened otherwise. It didn't hurt that in contrast to paid shortcode mass texting services, sending texts from our personal phones was free.

Working in software, I sometimes feel like it's impossible to escape my fate: after a few weeks with the group of us sending these texts by hand, it began to feel like it shouldn't be that hard to build an app to help automate some of the work. I'm not a native app developer by trade, but had previously messed around with enough Swift UI and Jetpack Compose to feel like I could get a native app built quickly that would eliminate the most annoying part (copying, pasting, and sending a text 30 times) while still retaining some of the personal touch (sending and being able to reply to individual text messages). The result is this app, Templated Texts, a novice-tier Swift / Kotlin app we used to send texts to our fellow union members throughout the end of our contract campaign.

It's a cliché in labor organizing that the hard problems aren't solved by better tech or better tooling or better apps. I can heartily endorse the truth of this: I'm not sure that a text message moved anyone to action who was on the fence about crossing our picket line, or was unsure about voting to authorize our strike, or was worried about losing a paycheck. The texts were supplementary to other organizing conversations that had been happening in some cases for years. I do think the app allowed those of us pitching in doing outreach to do so quickly, though, without spending loads of time outside of work grinding out text messages. We could text fellow union members from the playground, or the bar, or during a meeting at work. This feels like a sweet spot for software in general: automate the boring parts! And I expect this to continue to be a theme as more of the tech industry unionizes, and we continue to flesh out which problems are or are not amenable to us making our own tools to help us do the work of organizing.

Facts about this app

Please email me if you have questions, or need support.

How to add contacts to a group

Many people don't know that your built-in contacts app can group contacts! Here's how to create a new group, by platform:

iOS

On iOS, groups are called "Lists". Go to the "Contacts" app, and add a new “List”. Add contacts to the list, then you should see the name of the list show up in Templated Texts (you may need to restart the Templated Texts app).

screenshot of the main contacts screen on iOS with a squiggle circling the 'Add list' button

Android

On Android, groups are called "Labels". Go to the "Contacts" app, and add a "New Label". Detailed instructions here.