The Zapier Engineering Blog

A blog about hacking, development workflow automation, and how to get things done with less work.

API Best Practices: Webhooks, Deprecation, and Design

Adam DuVander / August 16, 2018

At Zapier we love what APIs make possible, but we also wrestle with them every day. Our developer platform connects to over 1,000 APIs with millions of a calls every day. We run into API downtime, anti-patterns, and deprecations all the time. Here we’ve collected some of the...


How we used iptables to replicate UDP traffic when upgrading our Graylog cluster

Kishore Nallan / August 2, 2018

At Zapier, we're big fans of Graylog, and rely heavily on its logs to help us track down tricky bugs and correlate customer issues with specific outages.

Recently, we needed to upgrade our Graylog cluster. Since we had to do this with zero downtime, we decided to provision a...


How We Automated Our Engineering Skills Test for Hundreds of Applicants

Brian Cooksey / June 21, 2018

Implement an algorithm that computes a minimum spanning tree for a weighted undirected graph.

Don’t worry, we aren’t going to ask you a question like that. At Zapier, we think putting candidates through a crummy interview process is a poor way to assess them and doesn’t help...


A Place for Manualization in an Automated World

sunny paris / April 5, 2018

Editor’s note: We publish occasional guest posts on the Zapier Engineering Blog, like this one from Sunny Paris, CEO of NoCRM.io

For decades, programmers have been manually initiating automation. The perennial example is the trusty shell script, run from the command line at the moment it’s needed...


Webhooks for Productive Developers

Adam DuVander / March 29, 2018

Webhooks by Zapier

Keeping it simple is usually the best course of action in most things. There are a bunch of problems that can be solved without your development environment. For the many cases that require moving data or alerting when data changes, webhook notifications are a useful pattern to reduce–and sometimes...


The Technical Debt Behind Your Integrations Strategy

Adam DuVander / February 22, 2018

An integrations strategy promises to connect your software to all the other tools your customers use. Approached correctly, you can connect All The Things. But it’s not easy. With one or two integrations, maybe you can stay on top of the changes in just a handful of APIs. More...


Security Exploit Bounty Program

Mike Knoop / January 1, 2018

Responsible Disclosure

Security of user data and communication is of utmost importance to Zapier. In pursuit of the best possible security for our service, we welcome responsible disclosure of any vulnerability you find in Zapier. Principles of responsible disclosure include, but are not limited to:

  • Access or expose only customer...

Decreasing RAM Usage by 40% Using jemalloc with Python & Celery

Bryan Helmig / December 14, 2017

At Zapier, we're running hundreds of instances of Python and Celery, a distributed queue that helps us perform thousands of tasks per second. With that kind of load, the RAM usage has become a point of contention for us.

To process all the activity within our service, we run...


Minimize Downtime for MySQL Upgrades: How to Work Around RDS Limitations

Kishore Nallan / November 30, 2017

If you've worked on a web application backed by a relational database, you will understand how frequently the underlying schema changes. You might add or remove columns, change the type of existing columns, or add new indices as your business evolves.

While modern ORMs make such schema changes fairly...


Thinking Fast and Estimating Wrong

Justin Deal / November 16, 2017

Software estimates are fundamentally flawed. I've always intuitively known this, but a year ago, I did a little experiment inside Zapier to prove it. Now when I say "prove," I don't mean full-on lab coats, large population, double-blind, scientific study. So please don't beat me up too...