Logistics In The Time of COVID-19
If you haven’t heard, Tulip has had the honor and privilege of providing our software to MasksOn, a non-profit organization supporting physicians in the struggle against COVID-19. MasksOn, a volunteer group of makers from the Greater Boston area, is designing, manufacturing, and distributing Personal Protective Equipment (PPE) to physicians across the country. The majority of the group’s effort has focused on manufacturing ventilators made from a scuba mask, a filter, and a 3D printed adapter that connects the two.
Things change very quickly at MasksOn, as everything in the fight against COVID-19 seems to. Unfortunately, demand for PPE is high and supply is low. Throughout the development process, there have been countless revisions to ventilators to ensure safety, reliability, and longevity.
Tulip was built for this type of fast, fluid, and agile environment. And so, over the last two weeks, we’ve volunteered our product and engineers to MasksOn. The speed and flexibility offered by Tulip have made us uniquely positioned to solve this type of problem.
In this post, I’ll explain one of the ways we helped Maskon out: integrating Tulip logistics applications with shipping service Shippo.
Integrating to Make Sure PPE Gets Where It’s Needed
One of the many ways that we’ve supported MasksOn is by building into our Apps integration with Shippo. Shippo is a multi-carrier shipping service that enables you to create and pay for shipments online. Their product has an intuitive interface and great API documentation.
We used Tulip Connector Functions to build an integration to this shipping service in one afternoon’s worth of effort. The best part is that from Tulip’s perspective there’s nothing unique to Shippo. This type of integration can be built for any third-party system that has a REST API.
The Shipping Terminal App is the App where users decide how to get a batch of masks from the MasksOn headquarters in Alewife, Massachusetts, to any hospital around the country. Users can decide if the masks should be shipped via a courier (local delivery) or if they should be shipped (long distance delivery). Here’s the screen the user sees when creating shipments for orders:
You can see the Ship with GoShippo in the bottom right-hand corner. This is the button where later we’ll build our Trigger, but first, let’s sign up for Shippo.
The first thing we did to integrate Shippo into this App was to sign up for a Shippo account. Once we did that, we added a credit card to our account and generated a Shippo API Key. Then, after diving into Shippo’s API documentation, we built two Connector Functions for our App. Here’s what they looked like:
Above you’ll see the two Connector Functions that we built: Create Shipment and Create Transaction.
The Create Shipment function accepts a list of inputs about the shipment such as where it’s coming from, who it’s going to, and the package’s dimensions. With those inputs the function returns a Status (a boolean telling us if the shipment was successfully created) and a Rate ID (the unique identifier for the rate that USPS quoted us for).
The Create Transaction function accepts the Rate ID (the one that we received from the Create Shipment function) and returns a Status (a boolean telling us if the transaction was successfully executed), Tracking Number, a Tracking URL, and a Label URL.
Once these Connector Functions were built we edited our Ship with GoShippo button’s Trigger so that these Actions were called when the button was clicked on:
Finally, we display the image linked to by the Label URL in our App using an Image Widget:
This screen is then printed and taped to the box to be shipped.
This integration is one-piece of a bigger puzzle that went into matching PPE with professionals in need.
We’re very grateful to be able to help MasksOn deliver on their goal of providing PPE to physicians across the country. If you’d like to learn more about this Shippo integration, MasksOn, or some of the other ways that Tulip is responding to COVID-19, reach out to us at firstname.lastname@example.org.