The Zapier Engineering Blog

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

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...


The Developer-Friendly Way to Change Your API Auth

Ben Peter / November 2, 2017

During the lengthy history of public-facing APIs on the Internet, the process of requiring a user's authorization has progressed through a variety of methods. It's great when an API provider supports a newer (and hopefully better) authorization method, but deprecating the older method sometimes leaves the existing users...


How Zapier Drives Upgrades for Autopilot

Ellie Wilkinson / October 27, 2017

Welcome to our series of case studies about our partners. This month, we sat down with the team behind marketing automation software Autopilot to learn about how Zapier has impacted their business.

Read on to learn more or jump ahead to learn how the Autopilot team increased upgrades by:


How We Onboard New Engineers at Zapier

Brian Cooksey / October 19, 2017

It's your first day at a new company. You walk up to the doors of the office building, anxious about what today is going to be like. You’ve only been here once before, when you interviewed, and you’d rather forget the sweaty nervous mess of a person...