Perishable Goods Demand Perishable Workflows
TriTails Premium Beef operates an online store shipping meat, which creates unique logistics constraints. Boxes must be packed with enough dry ice to keep contents frozen, and packages cannot sit in transit over a weekend. Daily shipping capacity is limited by both workspace size and UPS pickup schedules that don't always align with packing operations.
As the business scaled, order triage became a bottleneck. Every order needed its time-in-transit checked manually, sorted by urgency, and annotated with transit times on packing slips so packers knew how much dry ice to use. Weights and box sizes were then copied from a Google Sheet into ShipStation one label at a time. The process worked for ten orders, but became a full-time job as volume grew—and human errors still slipped through.
Developer Jacob Hands, who operates the business, started with a single automation goal: calculating transit times. He built a Cloudflare Worker endpoint that Google Sheets could pull from with =IMPORTDATA(order). That one step saved 30 minutes daily and sparked broader automation efforts. Automating the entire workflow at once wasn't feasible given limited development time, so Hands solved the highest-priority problems one at a time.
Choosing the Platform
The next step was pulling open orders from Shopify via API instead of manual copy-paste. Google Sheets had limits here—automation in spreadsheets quickly becomes hard to maintain. Airtable, which Hands had evaluated before but found unsuitable, now made sense. Its strict cell formats, intuitive UI, and built-in Scripting app for JavaScript development provided the right foundation.
Airtable Scripting lacks source control and code sharing between instances, but Cloudflare Workers addresses those gaps. Workers APIs can be fetched by Airtable scripts, giving the workflow a full developer platform with Wrangler and Miniflare for testing and deployment.
Order Importing and Triaging
An API endpoint in Workers scans all open Shopify orders and determines which should ship in the current week. Results are cached via the Workers Cache API to avoid Shopify API rate limits. The Airtable Scripting app then calls a Workers API built on Shippo to fetch carrier transit estimates for each order, updating Airtable rows sorted with paid priority air first, followed by longest to shortest transit times.
This replaced a 45-minute manual process with a button click that completes in seconds.
Packing Slips and Worksheets
Packing slips must print in triaged order rather than chronological order. Previously, each order had to be searched individually; now a button in Airtable generates pre-filled Shopify search links for each batch.
Printing the daily packing worksheet required a table format Airtable couldn't produce directly, so the solution came back to Google Sheets. A Workers API pulls data from Airtable and formats it as CSV; Sheets' IMPORTDATA function imports the day's orders automatically when the spreadsheet opens.
Synchronizing with ShipStation
After packers record box weights and sizes on paper, that data goes into Airtable. Instead of retyping it into ShipStation, a Workers endpoint sets weight and size via the ShipStation API. The script lists open orders once and stores the order name-to-ID mapping in Workers KV, avoiding ShipStation's slow list endpoint on subsequent calls. Orders receive a date tag in ShipStation making them identifiable for bulk label creation and printing.
Why This Architecture Holds Up
The entire system connects clients to Airtable, with Airtable calling Worker APIs that coordinate with third-party services. While the workflow could technically be built entirely in Airtable, Workers improved the development experience, code reuse, and testing. The Airtable Scripting app offers quick iteration with decent autocomplete, while Workers eliminated server babysitting entirely—a welcome relief for a business already stretched thin.
Secrets for third-party systems are stored as encrypted environment variables in Cloudflare Workers. And because Airtable handles the database and UI simultaneously, Hands built the complete workflow without writing HTML or using front-end frameworks, focusing instead on core business logic. Airtable dashboards provide high-level views of package types to forecast packing supply needs.
Room to Grow
One of the most valuable outcomes was how easy the architecture made adding features. Order splitting—which became necessary when orders required multiple packages—was automated with a “Split order” button created in thirty minutes. Another quick addition: a minimum ship date tag on the Workers API lets the sales team flag orders for customers who won't be home on certain days. The rest of the workflow automatically accounts for that constraint when deciding what ships.
Workers for Small-Scale, High-Value Automation
While Cloudflare Workers often get attention for handling massive traffic volumes, their utility isn't limited to high-scale use cases. For internal automation, the latency and throughput ceiling matters less than the ability to build precisely the tool your team needs. In our case, a few hundred Workers requests per day is more than sufficient to unlock significant operational value.
The combination of Workers as a lightweight execution layer and Airtable as a flexible data backend is particularly effective for creating custom internal tools. This pairing eliminates the need to stand up and maintain dedicated servers or manage complex infrastructure, letting you focus entirely on the workflow logic itself. The result is a tightly scoped application that fits your exact specifications, without the overhead usually associated with bespoke software.
This approach helps expand access to workflow automation for a broader range of businesses, letting teams ship their own solutions quickly, with infrastructure that scales down as effortlessly as it scales up.
Cloudflare is not affiliated with Formagrid, Inc., dba Airtable. The views and opinions expressed in this blog post are solely those of the guest author and do not necessarily represent those of Cloudflare, Inc.



