Connecting your Shopify store to StartFill
Three ways to get your Shopify orders into our warehouse, explained for someone who has never opened the JTL Fulfillment Network before. What each one costs, what it needs from you, and what breaks if you skip a step.
Contents
- 1Before you read on3
- 2The cast, defined once3
- 3How the pieces fit together4
- 4Which route do I want?5
- 5Before you start — all routes7
- 6Shared groundwork8
- 7Route 1 — the StartFill Bridge9
- 8Route 2 — FFN Connect11
- 9Route 3 — doing it yourself14
- 10Going live — checklist17
- 11Troubleshooting17
- 12What to send us to get started18
Every screenshot in this manual is a live capture of the real systems, taken in English. Nothing is a mock-up.
Start here
What the pieces are called, how they fit together, and which of the three routes suits you. Read this part before you touch any settings.
1Before you read on
Ten lines that will save you an hour.
You sell on Shopify. We store your stock and ship your parcels. Between those two facts sits a piece of software that moves orders one way and stock levels and tracking numbers the other. This manual is about choosing and setting up that piece.
There are three ways to do it. Most merchants should take Route 1, where we provide and run the connection. It costs nothing, has no per-order fee, and works on every Shopify plan including Basic. The other two exist because they suit particular situations, and we describe them honestly rather than steering you.
2The cast, defined once
Several products have confusingly similar names. Here they all are.
| JTL Fulfillment Network JTL-FFN | A data hub run by JTL-Software that connects online sellers with warehouses.
Free to join. Lives at fulfillment.jtl-software.com. This is the road your
orders travel down. |
| Merchant Händler | You. The person who owns the goods and the shop. |
| Fulfiller Dienstleister | Us. The company that stores your stock and ships your parcels. |
| Warehouse Lager | One specific building of ours, assigned to you. Nothing works until you have one. |
| StartFill Bridge | Our own connector between Shopify and the network. Route 1 in this manual. We build it, run it and maintain it. There is nothing for you to install. |
| FFN Connect | A separate paid product from a separate company, FFN Connect GmbH, at
ffn-connect.de. A ready-made Shopify app that does the same job for a
monthly fee plus a fee per order. Route 2. |
| SKU and JFSKU | SKU is your own article number, from Shopify. JFSKU is the article ID the network assigns. "SKU mapping" means making sure each Shopify product points at the right JFSKU, so the warehouse picks the right box. |
| EAN | The barcode on the product. We scan it, so treat it as mandatory data. |
| Location Standort | A Shopify concept: a place where stock sits. Our warehouse must exist as a location in your Shopify, or Shopify cannot allocate orders to it. |
| JTL-Wawi | JTL's desktop ERP. You do not need it. All three routes here are "without Wawi" paths. We run Wawi and JTL-WMS at our end; that is our problem, not yours. |
3How the pieces fit together
Your shop on the left, our warehouse on the right. All you are really choosing is what sits in the middle.
4Which route do I want?
StartFill Bridge
We provide and operate the connection. You give us access to your shop; we do the rest and keep it running.
FFN Connect
A finished Shopify app from a third party. You install it, click through the sync screens, and you control it yourself.
Do it yourself
Upload CSV files by hand in the free portal, or have your own developer build against the REST API.
| Route 1 · StartFill Bridge | Route 2 · FFN Connect | Route 3 · Do it yourself | |
|---|---|---|---|
| Monthly cost | €0 | from €10 + per order | €0 |
| Cost at 500 orders/month | €0 | about €90 per month | €0 in licence |
| Who sets it up | We do | You do | You or your developer |
| Time to live | 1–2 working days after your data is ready | 30–60 minutes | Days to weeks |
| Works on Shopify Basic | Yes | Yes | Only with a Partner app — see 8.2 |
| Orders pushed automatically | Yes | Yes | Only if built |
| Tracking back to Shopify | Yes | Yes | Only if built |
| Stock synced back | Yes | Yes | Only if built |
| Returns handling in the tool | Via us, on request | Yes, in the app | Only if built |
| Amazon, eBay, Otto too | Ask us | Yes | Only if built |
| You keep direct control | Shared with us | Yes | Yes |
| Best for | Almost everyone | Merchants who want their own dashboard, or who sell on several marketplaces | Very low volume, or teams with in-house developers |
Setting it up
The groundwork everyone does, then the detail for whichever route you chose. Sections 5 and 6 apply to all three routes.
5Before you start — all routes
These apply whichever route you pick. Steps 6.1 to 6.3 are shared groundwork; nothing else works until they are done.
What you need
- A Shopify store you own, or on which you are staff with app permissions.
- A free JTL customer account (JTL-Kundenkonto — the company login). This is not the same as a "JTL ID", which is a personal developer login and will not give you access to the network.
- A signed fulfilment agreement with us, so we can accept you in the network and assign a warehouse.
- Product data in reasonable shape: every product needs a unique SKU. We also need an EAN, a weight and dimensions for each one.
Product data: the part that decides how smooth this goes
Almost every delay we see at onboarding is data, not software. Before you begin:
- Every variant has its own SKU. Not just the product — each size, each flavour, each pack.
- SKUs are unique and stable. If you renumber articles later, the mapping to our warehouse breaks and stock can be picked incorrectly.
- EANs are real and match the physical barcode on the item we will scan.
- Weights and dimensions are per single sellable unit, not per carton.
- Food and supplements: tell us which SKUs carry a best-before date or a batch number, because that changes how we book them in and pick them.
6Shared groundwork
Three steps everybody does, in this order.
- Create your free JTL customer account
Go to
fulfillment.jtl-software.comand register. It is free and there is no credit-card step. Make sure you are creating a JTL customer account, not a JTL ID. After login you land on the merchant dashboard. The numbers there stay at zero until we are actually holding goods for you.The portal has its own language switch, EN / DE, in the top-right corner. It is a separate setting from the one in FFN Connect, so you may need to set English in both places.
Live screenThe merchant dashboard. The green menu bar holds everything the free portal can do: Dashboard, My network, My operations, Find warehouse, Merchant request, Data exchange. The EN / DE switch is at the far right. All figures stay at zero until a fulfiller is holding goods for you. - Get connected to StartFill and receive a warehouse
Send us your JTL account e-mail address. Either we invite you, or you send us an invitation
link from My network → My warehouses → Send invitation to fulfilment service
provider. Once we accept, your status shows In Zusammenarbeit and a warehouse
appears under My network → My warehouses.
Live screenMy warehouses on a new account — empty. This is normal before we accept you, and it is where most merchants get stuck. The button top right, Send invitation to fulfilment service provider, generates the link you send us. Live screenFind warehouse. You can also browse providers by city and distance. If you already know you are coming to us, use the invitation instead — it is quicker. Until that warehouse row exists, nothing downstream can work. If it stays empty, the problem is the business relationship or an unaccepted invitation, never a software setting.
- Tell us how you want to connect Route 1, 2 or 3. If Route 1, we take it from here and the rest of section 7 describes what we will ask you for.
7Route 1 — the StartFill Bridge
We provide the software. You provide access and data. Here is exactly what happens and who does what.
7.1 What it does
When a customer places a paid order in your Shopify store, Shopify notifies our bridge within seconds. The bridge converts the order into a picking job in the fulfilment network, against your stock in our warehouse. We pick, pack and ship it. The carrier tracking number and the new stock level travel back to Shopify automatically, so your customer gets a dispatch notice and your shop shows the right quantity.
| Trigger | A paid order in Shopify |
| Typical delay | Seconds from payment to picking job |
| Matching | Your Shopify SKU to the JFSKU in our warehouse |
| Back to you | Tracking number, fulfilment status, stock level |
| Not sent | Unpaid orders, cancelled orders, and anything you tag no-ffn |
7.2 What we need from you
- Your JTL account e-mail So we can link you as a merchant and assign your warehouse.
- Permission to install our app on your store
We send you an install link. You open it, read the permission screen and click Install.
Only you can do this — it is your customer data, and granting access is your decision, not
ours.
The app asks to view customer data, view store owner details, and view and edit products and orders. It needs customer data because a parcel without a delivery address cannot be shipped.
Live screenShopify's install screen. Expand each row and read it before granting. The example shown is a third-party fulfilment app; ours asks for the same three categories, for the same reason. Only the store owner can click Install. - A product list with SKU, EAN, weight and dimensions A spreadsheet is fine. We create the matching articles in the network so that your SKUs map to the right JFSKUs.
- Your stock Send it to our warehouse against an announced delivery (an inbound). Stock becomes sellable only once we have physically booked it in.
7.3 What we do
- Build and host the connection, and monitor that it is alive.
- Create your articles in the network and keep the SKU mapping correct.
- Map your Shopify shipping methods to real carrier services.
- Fix it when Shopify or JTL change something at their end.
7.4 What you should know before choosing it
In the interest of you making an informed decision rather than a flattered one:
- You depend on us for this piece. If you later leave StartFill, the bridge goes with us. Your JTL account, your warehouse relationship and your data remain yours, and Route 2 is always available as a replacement.
- It is Shopify-focused. If you also sell on Amazon, eBay or Otto and want one tool for all of them, ask us — but FFN Connect may genuinely suit you better.
- You do not get your own dashboard for it. You see everything in Shopify and in the free JTL portal; there is no third screen to log into.
8Route 2 — FFN Connect
A finished Shopify app from FFN Connect GmbH. Roughly 30–60 minutes, no programming.
8.1 Setting it up
- Register at ffn-connect.de and link your JTL account Create an account, then open Settings → Organization & Users. In the JTL Fulfillment Network Account panel, connect the same free JTL customer account from step 6.1. If it says Connect rather than Connected as…, do that first.
- Switch the interface to English if you want it It opens in German for a German-registered company and there is no flag icon. Click your name at the bottom-left, then Persönliche Einstellungen → Anzeige → Sprache → English. It applies per user, not per company, so each colleague sets their own.
- Check your warehouse is there
Settings → Warehouses. If it says No Warehouse, go back to step 6.2 —
the app cannot create a Shopify location without one.
Live screenSettings → Warehouses showing "No Warehouse". The Low Stock Threshold above it is only the dashboard alert level and is unrelated. Chase the warehouse, not the software. - Start the trial or subscribe
Settings → Plan & Invoices. Sales channels stay locked until a plan or trial
is active. The Add sales channel card looks clickable before that and simply does
nothing, which is confusing but not broken.
Live screenSettings → Plan & Invoices. Status Not subscribed, with the button that starts the 14-day trial. Sales channels unlock only after this. - Install the app from the Shopify App Store
Search for FFN Connect, click Install, and read the permission screen before granting it.
The listing says "Free to install" — that only means Shopify does not bill you. FFN Connect
GmbH bills separately.
Live screenThe FFN Connect listing in the Shopify App Store. Developer FFN Connect GmbH, category Third-party logistics (3PL). "Free to install" refers to Shopify billing only. - Let the app create the fulfilment location In FFN Connect open Warehouses and click Synchronise. It creates a special fulfilment-service location in Shopify. Do not create one by hand. Then add shipping rates for the new location in your Shopify shipping profile.
- Synchronise products, then release them to us
Sales Channels → your Shopify channel → Synchronise products →
Continue and synchronise. Then go to Items and release them to the fulfiller
in bulk. Each product gains the new location at stock level 0 until we book the goods in.
Live screenThe Items screen. Note the two identifier columns: SKU is your own article number from Shopify, JFSKU is the ID the network assigns. Matching the two is what "SKU mapping" means. - Map your shipping methods, then send your stock Match each Shopify shipping method to one we offer. Without this, orders arrive with no valid carrier and stop. Then announce and send your inbound delivery.
8.2 What it costs
| Volume | Per order | Per month |
|---|---|---|
| Base fee, includes 50 orders | — | €10 |
| 500 orders per month | €0.18 | €90 |
Rates observed on ffn-connect.de in July 2026, excluding VAT; the per-order rate falls as volume rises. A 14-day trial is offered without a credit card. Verify current pricing before you decide — it is not ours and we do not control it.
9Route 3 — doing it yourself
Free in licence cost, not in effort. Two sub-routes: by hand, or by code.
9.1 By hand, with CSV
The free portal offers import templates, imports and exports under Data exchange, plus scheduled FTP. There is no "connect a shop" button anywhere, because the free portal has no Shopify connector. In practice you export orders from Shopify and upload them here.
This is workable at a handful of orders a week and painful beyond that. It is a reasonable way to evaluate the network before committing.
9.2 By code, on the REST API
Your developer builds against two APIs: the FFN Merchant REST API and the Shopify Admin API. Every call to the merchant API carries three headers together:
Authorization: ffn <token>x-application-idx-application-version
A mismatch between the token and the application ID is the most common cause of a
401. The token comes from the portal under External authorisations.
9.3 The Shopify Basic plan question — corrected
You will read, including in FFN Connect's own FAQ, that a custom app cannot be used on the Shopify Basic plan because protected customer data is only unlocked on higher plans. That is true of one kind of custom app and it is widely misreported as meaning Route 3 is impossible on Basic. It is not.
| Kind of app | Where it is created | Customer names and addresses on Basic |
|---|---|---|
| Admin custom app | Shopify admin → Settings → Apps → Develop apps | No — blocked on Basic |
| Partner app, custom distribution | Shopify Partner Dashboard, bound to one store | Yes — works on Basic |
A Partner app with custom distribution is bound permanently to a single store, needs no Shopify app review, and does receive protected customer data. That is the route our own bridge uses, which is why Route 1 works on Basic.
orders/create webhook and created
a picking job in the network. An admin-created custom app on the same store cannot.Two practical consequences
- Use the webhook, not polling. The order payload delivered to
orders/createcontains the delivery address. Always verify the HMAC signature before trusting a webhook. - For tracking write-back, poll the merchant API's outbound updates feed and match on the external order number you set when creating the outbound, then create the Shopify fulfilment with the carrier tracking number.
Reference
The go-live checklist, the problems that actually occur, and what to send us so we can start.
10Going live — checklist
Work down the list. Do not skip the order; each item depends on the one above.
- Free JTL customer account created, with a company e-mail address.
- StartFill accepted as your fulfiller; a warehouse row appears under My warehouses.
- Every Shopify variant has a unique SKU, plus EAN, weight and dimensions.
- Articles exist in the network and the SKU → JFSKU mapping is confirmed.
- Your chosen route is configured, and the first synchronisation ran shop → system.
- Our warehouse exists as a location in Shopify, with shipping rates attached.
- Shopify shipping methods mapped to the carrier services we offer.
- Inbound delivery announced and physically received; stock shows real quantities.
- One real low-value order placed and shipped end to end, tracking number visible in Shopify.
- Only then: old locations removed from the shipping profile.
11Troubleshooting
My warehouse list is empty, or says "No Warehouse".
Nobody has assigned you one yet. This is a business step, not a setting. Contact us — and if you have been testing in the sandbox, check you are logged into the live account.
I logged in with my JTL ID and cannot see the Fulfillment Network.
A JTL ID is a personal developer and community login. The network needs the JTL customer account — the company login. They are different accounts.
Products synced, but stock shows 0 in Shopify.
Correct and expected. Stock appears only after we physically book the goods in. Until the delivery arrives and is received, the location exists with zero quantity.
Orders reach the network but nothing ships.
Usually one of three things: no stock booked in for that article; the Shopify shipping method is not mapped to a carrier service; or the SKU does not match a JFSKU, so we cannot tell which box to pick.
My API calls return 401 Unauthorized.
The token and the x-application-id do not belong together. Both must come from
the same external authorisation. Also check you are pointing at the right environment —
a sandbox token will not work against the live API.
I am on the Shopify Basic plan. Will this work?
Yes, on Routes 1 and 2 without qualification. On Route 3 it works if your developer builds a Partner app with custom distribution, and does not if they create an admin custom app. See section 9.3.
Do I need JTL-Wawi?
No. All three routes work without it. We run Wawi and JTL-WMS at our end.
The Shopify App Store says FFN Connect is "Free to install". Is it free?
No. That phrase means Shopify does not bill you for it. FFN Connect GmbH invoices you separately, per order, outside your Shopify bill.
Should I switch off my old Shopify location straight away?
No. Wait until our location shows real stock. Deactivating early makes your products show as sold out mid-migration.
Something changed and orders stopped arriving.
On Route 1, tell us — we monitor the connection but you will often notice a gap before an alert does. On Routes 2 and 3, check first that the connection to the shop is still authorised; app permissions and tokens can be revoked by a staff change in Shopify.
12What to send us to get started
| JTL account e-mail | The address you registered at fulfillment.jtl-software.com |
| Shopify store domain | For example your-shop.myshopify.com |
| Shopify plan | Basic, Grow, Advanced or Plus |
| Product list | SKU, product name, EAN, weight, dimensions, and whether the item carries a batch or best-before date |
| Expected volume | Orders per month, and your peak months |
| Carrier preference | If you have one, and any service level you have promised your customers |
Send it to your StartFill contact and we will come back with a connection plan and a date.
StartFill is the fulfilment arm of Blumental Bayern GmbH, Melanchthonplatz 4–6,
90443 Nürnberg, Germany.
Sources: JTL-Guide (guide.jtl-software.com, Onlinehändler ohne JTL-Wawi),
the JTL Fulfillment Network portal, Shopify developer documentation on protected customer
data, and ffn-connect.de. Edition 2.0, July 2026 — supersedes the earlier two-option
comparison guide, which understated what is possible on the Shopify Basic plan.