Recently I've been making heavy use of Zapier to automate tasks that were stealing a lot of my time and focus. The more I automate, the more time and focus I get back which is incredibly invaluable. It's been really freeing and has helped me regain control over my time. The more I automate away, the more time I get to experiment, create, and be available to other members on my team.
At first glance it might not be apparent just how powerful zaps can be so I figured I'd first walk you through how Zapier works, a couple really awesome features Zapier has, and then wrap up with some zaps I've created and a few more recipes to get your zap juices flowing!
Zapier allows you to connect 100s of apps together and automate workflows you would have to otherwise do manually. Each integration you add to a zap is called a step. If it's a 3rd party integration like Google Calendar or Twitter, you can OAuth into the services and then use it in any zaps you create.
These steps can be pretty much anything and any data fetched or created in a step becomes available to all future steps in the zap as well. If you use the Twitter integration and search for a user, that user info will be available to any future steps. This is a very powerful feature and makes a lot of really amazing things possible, as we'll see later in the section about a few of my wildest zaps.
- programmatically transform data
- pull data out of something like an email or calendar event body
- build a URL for Cloudinary images
While in a node environment it's not possible to install npm packages
This is a very handy step that I use in almost every zap. You can catch incoming webhooks or send out HTTP requests. I often use incoming webhooks to kick off zaps and I LOVE to pair outgoing webhooks with serverless functions. The latter makes it possible to integrate with other APIs and services Zapier doesn't currently support.
Sometimes you just want to do small data transformations and don't want to do it in code, like formatting dates, breaking arrays out into individual fields for use in future steps, etc.
This step makes it possible to stop a workflow if a certain condition isn't met. I use this step often for things like:
- handling certain event types in Google Calendar and not the rest
- not running the rest of the zap if certain data isn't found, like say a user in Twitter or GitHub
This step makes it possible to conditionally run different paths of a workflow based on certain criteria that you define. As in, say you wanted to send a Slack message if one thing happened, or an email if another. While a bit of a weird example I think the value of if/else logic in a workflow can still be seen.
As I use Zapier more and more, I find new ways to really push the platform to it's limits. If you think outside the box you can not only automate your work away, but also solve problems that would otherwise require a lot of coding. I was referring to this methodology as
JustEnoughCode, but the smart and wonderful @chantastic introduced me to the term
LowCode, and I think that rolls off the tongue a lot nicer!
I recently worked on a website for an online fitness program and hit an issue when it came to registration. Users actually sign up on another app called Beyond the Whiteboard for the programming and then need to also be given access to the website that has the workouts, partnership deals, and other content only available to those who sign up on the other app. The app has no public API and we didn't want to manually have to add them to the users for the website. The only thing I had to work with was the welcome email for the users that sign up.
What I did was have them send the welcome emails to Zapier instead of directly to the user and I then used a zap to:
- Catch incoming emails from sign ups
- Generate a unique access code
- Send the code and user's email to a database for the site
- Transform the email body to include the code and link to the website for registration
- Send the new email to the user
By Doing this I was able to support automated registration and everyone was happy. It took me only a few hours to set up! I did the same thing with the sorry to see you go email so if they ever leave the program we can remove them from the users of the site as well!
I recently kicked off streaming for Apollo GraphQl and while it's been going great, I found I was spending a lot of time dealing with social media for the streams as I needed to get the description from the calendar, get the streamers photos from Twitter, create a social card, schedule tweets. It was eating up a lot of time and the context switching and remembering to set up tweets started to cause quite a bit of anxiety! So again I turned to zaps and came up with the following:
- Kick of zap based on calendar event (2 days before, 1 day before, and 2 hours before a stream begins)
- Get description from body of calendar event
- Pull twitter handles of streamers for event description
- Fetch streames profiles from Twitter
- Convert streamers profile picture URLs to Base64 for Cloudinary usage
- Split the workflow depending on the stream show type
- Build a Cloudinary URL for the social card with profile pics and title of stream
- Create a tweet with event description and social card URL attached
- If it's the 2 hour before event start zap also use a webhook to call out to Twitch API and update the stream title
This zap has ~18 steps! I've summarized here for brevity's sake, but as you can see it's extremely powerful!
Here are some other recipes I use often that you might find useful!
- Form Submission -> Airtable -> Slack
- YouTube Video Added to Playlist -> Social Media
- Slack Command -> Webhook -> DO ANYTHING!
- Reactji or Star Message in Slack -> DO ANYTHING!
- Pull Metrics from GitHub (or anywhere) -> Quip -> Slack
- Twitch stream start -> Slack
- Event sign up -> Slack
- New Calendar Event -> Slack
The possiblilities are endless! If you make an interesting zap, let me know on Twitter!