How Sticker Mule Does Faster Fulfillment
by Jarrett Streebin
Sticker Mule is a custom sticker printing service that launched in 2010. They've grown rapidly since their inception and, since the operation was built from scratch, their small team had cobbled together their backend systems as quickly as possible to handle demand.
Recently, they turned their attention towards improving the speed of their service, and recognized their existing backend manufacturing and shipping systems were a bottleneck. Their ecommerce frontend was built in Ruby on Rails, while their backend system was based on a 3rd party Java application that wasn't tightly integrated with their ecommerce site. Their backend polled their ecommerce app every 15 minutes to request new orders. However, once orders were imported, further updates were not synchronized. If a customer updated their address or shipping method, the Sticker Mule staff would need to manually update it. Additionally, the 15 minute wait to import orders was an unnecessary delay in their order fulfillment process.
By building their own suite of backend applications, Sticker Mule's own apps could be optimized to help the company process orders faster while laying a foundation to add more advanced functionality. The only problem was this change would require Sticker Mule to build their own shipping software. Given the complexity of the UPS, FedEx and USPS APIs, the team thought this would take a while and shelved the idea until they came across EasyPost.
After discovering the EasyPost API, Sticker Mule realized that building their own shipping software would be trivial. Immediately, they set out rewriting their entire backend and completed the project in under 8 weeks. They did some interesting things with our API, including generating labels in ZPL format to print via a Zebra label printer. Their prior app generated PDF labels and printed to a desktop printer, but using ZPL allows them print labels much faster.
The Code In Action
To make this work, a ruby script running on a computer in the factory fetches these and sends them to a Zebra label printer. From their backend:
shipment = EasyPost::Shipment.create( to_address: verified_address, from_address: easypost_from_address, parcel: parcel, customs_info: customs_info ) shipment.buy(rate: easypost_rate_for_shipping_method(shipment)) shipment.label(file_format: 'zpl') update_attribute(:label_needs_printing, true)
Since rolling out their new backend, Sticker Mule gained additional visibility into their order process, further reduced turnaround time and added additional quality control tools to improve reliability. For example, their staff sees an actual mockup of each sticker while printing shipping labels to ensure each order is packed correctly.
Moving forward, Sticker Mule plans to add support for mobile shipping label printing, as well as enhance their ability to support international customers by adding paperless commercial invoicing support and free domicile shipping.