Case · Haselherz
weclapp + Shopify Fulfillment Automation at Haselherz
From paper- and Excel-driven fulfillment to a continuous order pipeline: an order in the Shopify shop lands automatically in weclapp, the shipping label is printed, stock is reduced, the invoice is created — without anyone having to touch anything.
Results in numbers
- Order processing
- fully automated
- Manual steps
- from 5 to 0
- Scaling headroom
- 10× volume
Challenge
Manual fulfillment processes that could no longer keep up with D2C growth — every order was hand-walked through five steps.
What we delivered
- 01 Rollout of weclapp as ERP backbone for stock, purchasing, and invoicing.
- 02 Automated fulfillment process — order receipt to shipping label without manual intervention.
- 03 Operations scale with order volume, not team size.
Starting point
Haselherz is a D2C brand in the premium-food space — small, curated assortments, high-quality production, with a loyal customer base that lets the brand guide them. Growth at Haselherz doesn’t come from mass marketing, it comes from consistent quality and repeat-buy rates — which means: order volume rises slowly but steadily, and around special occasions (seasons, campaigns) there are real peaks.
When we started at Haselherz, fulfillment looked like this: order arrived in the Shopify shop, was manually marked on a list, someone checked the payment, printed the shipping label via the DHL portal, wrote the dispatch back into the shop, and the invoice was created manually at the end of the day. Five steps, each one hand-walked, each one prone to errors or being forgotten.
In the past this worked because order volumes were small. But with growth it became clear: every additional rise in orders meant either more staff — or real automation. Staff in the D2C food market is expensive and hard to find, so the answer was clear.
Discovery & architecture
Discovery was short because the picture was unambiguous. Three decisions shaped the setup:
- weclapp as the ERP backbone, not the shop. Stock, purchasing, and invoicing belong in the ERP — the shop is just the sales surface. That’s the same architectural decision as at I-CLIP and Excase, and it’s especially important in D2C: cross-channel sales (shop + marketplaces + direct sales) needs central stock.
- Keep Shopify as the established storefront. Haselherz already had a well-established Shopify presence with good SEO and a loyal customer base — replatforming would have been expensive without clear benefit. The Shopify customizations stay in use, weclapp comes in as the ERP layer behind it.
- Automate fulfillment end-to-end. Each of the five manual steps had an automatable path — we joined them into a single workflow that runs from Shopify order receipt to the tracking email to the customer without any human intervention.
Implementation
We started with weclapp master-data migration — products, suppliers, conditions, stock data. At Haselherz this was comparatively simple: the assortment is manageable, the supplier list is clear. The work was in the clean modeling of packaging units — a product can be sold in different sizes, which affects stock, conditions, and shipping weights.
In the second step we built the Shopify ↔ weclapp bridge. Incoming orders are pushed into weclapp via webhook, created there as orders, and queued in the dispatch pool. Stock synchronization runs bidirectionally: weclapp is the master for stock, every sale immediately reduces the Shopify stock level, every goods receipt increases it.
The actual lever was dispatch automation. Once the payment is verified (Shopify does that itself), weclapp triggers a chain: generate shipping label via the DHL API, write the tracking number back into the Shopify order, send tracking email to the customer, generate the invoice and stage it for the DATEV interface. Same with DPD. One configuration, multiple shipping providers.
Edge cases we explicitly routed out: orders above a threshold (anti-fraud), international shipping with customs declaration, returns — all three land on separate workflows that need human intervention. Important: the default path is fully automated, the manual path is the exception, not the rule.
Result
Today, orders run from Shopify arrival to dispatch confirmation fully automatically. The five manual steps are reduced to zero. The managing director sees open orders, stock, and liquidity in weclapp every day — at a glance, without having to piece things together from three systems.
Haselherz’s growth has continued since the rollout — and the operations team has not grown. The scaling headroom is there: the current setup would handle a 10× rise in orders without anyone having to change anything fundamental. That’s exactly the point of ERP architecture — it should not just reflect today’s volume, but the volume that’s possible.
Voice from the project
„weclapp as the backbone, Shopify as the frontend — and between them a fully automated fulfillment process that Mate iT built for us. Orders flow through today without anyone having to touch them. Exactly what we needed to grow."
FAQs about this case
How fast does an order flow through the system today? +
From arrival in the Shopify shop to printed shipping label is typically under two minutes — without anyone having to touch anything. Payment is verified, the order flows into weclapp, stock is reduced, the invoice is created, the shipping label is printed, the tracking email is sent. Six steps automated in one workflow.
What happens with edge cases — complaints, returns, large orders? +
Edge cases are routed out of the workflow and land on a manual stack. Large orders above a defined threshold automatically go through a credit check. Returns are handled via a separate process — also continuously in weclapp, but with human approval.
What happens if Shopify is temporarily unreachable? +
Orders that are not transferred to weclapp directly during a Shopify outage are buffered and synchronized retroactively. There is a consistency check that reconciles every hour — an order cannot be lost. We haven't had a longer Shopify outage in production yet, but the logic is tested.