Through-out our many collective years designing and building web solutions for a wide variety of clients, integrating with 3rd party APIs have been a consistent pain point for everyone involved. As such, it's extremely important to design and implement solutions that use 3rd party APIs with the care and attention that the task deserves.
Tell me, does any of this sound familiar to you?
- Slow response times
- Poor or no documentation
- Tacked on to a larger system as an after-thought
- Frequent and/or unexpected down-times
- Changes made upstream without consideration for (your) existing integrations
- Inconsistent use across the various endpoints
- Inadequate or down-right wrong error reporting
- …
These issues are often unknown at the beginning of a project, and can lead to missed work estimates, scope creep and a headache in the long term as edge-cases are slowly revealed through extended use. As such, it’s paramount to approach integrations with unknown and out of your control APIs with the assumption that THEY WILL GO WRONG… the question then becomes; how can we build a system that is resilient from the get-go and what should we watch out for?
The client's business Who cares? And why it’s you!
If you have an existing system to keep track of products, stock, orders or anything else that you may want to use, does it have a build-in API? Do you know if it is any good? Have you previously bought a potentially great looking, but non-functioning e-commerce website?
Many development agencies will be more than happy to offer out-of-the-box solutions that are not appropriate for your particular system, or undercut with estimates in order to win work without giving the due consideration to what may need to be a complex bespoke solution.
It’s easy to underestimate the amount of work it takes to build robust processes that seamlessly work with the systems that you already use day in, day out. This is especially true when they are a tacked-on, or infrequently used added extra. You may not have ever tried to use your system’s API, but when it comes to setting up e-commerce that works with it, you end up with delays and headaches. It may even be the case that you are aware of difficulties having tried to integrate with your system in the past, but are so invested using it in the normal operation of your business that moving away is just not an option.
Not knowing about your system’s API, or having been burnt by failed or costly past projects is not the end of the world. It just means that it’s particularly necessary to find a digital partner (could it be us?) who are open and honest, and most importantly, understand the following…
As a client business, what questions should you ask your developer?
- Is the documentation well written?
- Will failed API requests be retried at a later time?
- Will there be alerts sent when failed API requests continue to fail? (Will you jump on the issue when this occurs as part a support agreement?)
- Will a dashboard be made so that successes, failures and errors messages can be quickly and easily seen?
The developer or digital agency Who cares? And why it’s you!
Have you ever run-over on a quote to integrate with a client system? Did you look at the documentation only to discover midway through development that it’s out-dated or plainly wrong? Have you had the client API update with breaking changes with no notice?
As developers, its our responsibility to make sure that systems out side of our control do not harm the client business. In many cases, especially when handling orders and customer information, missing ANY requests can be disastrous. As part of a larger project, it’s easy to underestimate the time and work to make a perfect solution; well built queue-based requests, appropriate error handling, robust alerts and comprehensive tests. If there was ever part of your project to overbuild, it’s hands down API integration… but maybe I’m just a biased back-end developer who doesn’t like scrambling to find lost data and push hot-fixes (both are true).
In a future article, I’ll go over a simple approach to managing requests with a queue system with Drupal e-commerce...