Savannahs is a popular store focused on designer shoes, bags and accessories. The company launched in Sweden in 2008, and since then they have expanded to become an international ecommerce retailer with 5 Shopify stores, one per geographical region (USD - international, UK, EU, AUD and SWE). With Savannahs’ growth, the tech team is focused on ensuring a positive customer experience, and for that to be true, the store must have confidence in their webhooks.
Victor is the tech lead, and therefore the one in charge of the tech stack. His goal is to reduce the burden on the technical team by setting up tools and workflow to remove friction for non-tech staff to manage the ecommerce.
Shopify webhooks often fall short for Victor. When there’s an issue (like a failed webhook), he only knows after the customer is already impacted.
For Victor, missing a webhook translates into failing to live up to the customer experience he strives for. And on the technical side, it means he has to dedicate his time to troubleshooting the errors of 5 stores....
What about Shopify webhook alerts? Well, too many alerts are just as useless as too few. Shopify just adds to the list of third parties that flood his emails with errors. He used to rely on his email to keep track of the errors, but realized he was often asking himself “is this still an error?” and ultimately was having difficulty keeping track of what was relevant.
When Victor does catch an error at the right time, he is disappointed that he does not have a dashboard that shows him the failed webhooks and gives him an opportunity to fix the error before it ends up impacting the customer.
Shopify doesn’t make it simple to troubleshoot webhook related issues. It can be hard to find the webhooks that didn’t work. There have been many incidents where webhooks that Victor was trying to troubleshoot disappeared because Shopify deleted them and he didn’t know about it.
Additionally, when it comes to replaying the events, the retry mechanism is inflexible. This causes him to wait for an automatic replay that will come hours down the line, or he has to do manual reconciliation.
Victor started to look for a solution so he could finally have confidence in his webhooks.
He was recommended Hookdeck by a member of the developer community and went to read co-founder Alex’s blog post. The webhook problem spoke to him and he realized he would need to rebuild the queuing wheel. When he compared building his own solution to trying Hookdeck, the answer was clear; Victor decided to set up Hookdeck to manage his most critical webhooks, the product update, and the order webhooks topics.
The first thing Victor noticed was the visibility of his webhooks. That helped him feel confident.
Hookdeck offers a dashboard that gave him a way to validate the health of his webhooks at a glance. It’s been so useful that it is now part of his routine to visit the “failed” event page to keep track of how things are going. He no longer has to rely on tracking Shopify emails.
Just glancing at Hookdeck every day, Victor avoids being caught off-guard with issues while still maintaining his priority to fix errors in a timely manner. He is thrilled to be able to customize alerts and retries for each connection to the exact level of granularity he needs.
An example of his ruleset:
“I love the fact I’m only receiving 1 email for failed webhooks. I know they are relevant and signify exactly what I need to take action on.”
In the beginning, what attracted Victor to Hookdeck the most was the ability to replay webhooks. Replaying webhooks is perfect for dealing with errors in production, and he was not disappointed. With Hookdeck, he can easily replay the events that have failed.
He quickly realized that manual retries are also very helpful during development because they save him from having to create new data for tests. He owns a store for his development environment and previously had to generate fake actions each time to test.
Using Hookdeck as his serverless queue means Victor can manage the throughput of irregular streams of events that would normally cause his backend servers to hit their rate limit. Previously, the backend server would hit the rate limit and events would start to fail when doing bulk updates that generate a lot of webhooks in a short amount of time.
Victor applied a 20 per second rate limit in order to keep their backend servers performant and avoid dropping any product update webhooks.
For example, at Savannahs, the product updates are done as batch updates via spreadsheet import that can generate 100s of webhooks in a minute or so. Their WMS backend is hosted on Cloud Run (GCP) which has a built-in rate limit of ~ 50/second.
For Victor, peace of mind is the biggest value of using Hookdeck. He doesn’t have to worry if everything is going fine. He feels confident that everything is working as it should because he has visibility on the current state of the systems. No mental notes required.
On top of the peace of mind, Hookdeck has already helped Victor save valuable hours of work (time he prefers to spend building Savannahs). Although it may be hard to estimate the exact value in number of hours saved, Victor has told us that using Hookdeck is the key to supercharging his workflow using webhooks from development to production.
"Hookdeck has definitely helped me save time on development and troubleshooting. I can’t put a number on it but it’s a big one!"