Swiss Water: Automating Multi-Roaster Fulfillment
Swiss Water is the global leader in chemical-free decaffeination, using a proprietary process that relies entirely on pure water, temperature, and time to remove 99.9% of caffeine while preserving the bean’s original character. Their online marketplace connects consumers directly with a network of independent specialty roasters who source Swiss Water green beans, roast them to order, and ship from their own facilities across North America. It’s a powerful model for discovery, but it also creates a fulfillment challenge that no standard e-commerce platform is built to handle. This is the first in a series of posts covering our work with Swiss Water, starting with the operational system that had to exist before anything else could.
When we started working with Swiss Water, every order placed on the central Shopify store required significant manual effort. Staff had to determine which roaster was responsible for a given product, extract the order data, generate a shipping label through a separate interface, and email it to the partner for fulfillment. On top of that, the store had no reliable way to calculate accurate shipping costs at checkout. Because each roaster ships from a different location, a single flat rate either ate into margins on long-distance shipments or inflated costs enough to drive cart abandonment. As order volume climbed, this workflow was becoming a serious bottleneck.
We built a custom Shopify application specifically designed for this multi-vendor architecture. This is something off-the-shelf apps simply aren’t equipped to handle at this level of complexity. The first step was making the store “roaster-aware.” Using Shopify Metaobjects, we built structured roaster profiles and linked them directly to the products they fulfill. With that spatial data in place, the app could intercept the checkout flow and query live carrier APIs using the roaster’s origin address and the customer’s destination, replacing the old flat-rate guesswork with accurate, real-time shipping costs.
The real payoff came post-purchase. The moment an order is placed, the app receives a webhook, parses the line items and resolves each product to its associated roaster. It automatically creates the order in the correct roaster’s fulfillment queue, generates a pre-paid shipping label using the exact package dimensions and carrier service the customer selected, and dispatches the label directly to the roaster’s team. Label delivery can be configured to fire instantly or batch on a daily schedule to align with each roaster’s production cycle.
The impact was immediate. Manual order routing and label generation were completely eliminated. The Swiss Water team reclaimed hundreds of hours previously spent on repetitive logistics work. The marketplace could now scale transaction volume without a proportional increase in operational headcount — ten orders or ten thousand, same zero-touch process.
This phase established the foundation, but information still only flowed in one direction: orders went out to roasters, and that was it. In our next post, we’ll cover how we layered on order synchronization and automated tracking updates, giving customers shipping visibility with a built-in delay to allow roasters time to get items out the door.