1. highly flexible & customizable: if they don't have a pre-built integration with a tool you use, you can easily build your own using their built-in webhook, webhook listeners, and "code" blocks. does require a bit of coding experience, but once you or your team build a few things / experiment & figure it out.. it's an absolute game-changer.
2. you'll think "what would i do without this?" ... that's the hallmark of a great software, and Zapier is without a doubt one of the top 3 most important tools for our business. if you want to be data-driven, the first step is getting the right data to the right places. Zapier enables you to do that EASILY.
3. reliable. i've only had about 2 - 3 "outages" in my zaps since i started using the tool, and they were all due to edge-cases that my custom-code steps didn't handle properly. Zapier gives you a nice debugging / testing interface and allows you to search back through every single "zap" that your account has sent over time... and step through them to sort out what the issue might be.
1. pulling in "test data" when building zaps - this is one thing that really annoys me... when you're creating a new Zap, and Zapier is "testing the step" that you just set up, it only pulls the most recent "event" that matches what you're doing. Now, this is OK in most cases, but if you have a zap that needs to handle a few different situations "conditionally" ... then it stinks. for example, say you want to build a zap that sends your sales team an email every-time a Stripe charge of over is processed. Well, if the most recent charge in Stripe (or the most recent 3 or 4, etc.) are all lower than, then your test will fail. That's a very contrived example, but ideally, Zapier would allow you to search through past events for the app that you're trying to "zap from", and CHOOSE the appropriate test event.
Minor gripe mainly will only impact those who want to build more complex/complicated zaps.