LUCENTCOMMERCEGET A FREE STORE AUDITFREE AUDIT

OPERATIONS · 3PL · CRO · 16 APRIL 2026 · 6 MIN READ

Fulfilment SLAs and what your storefront should promise

Your warehouse contract and your product page are two different promises, made by two different people, to two different audiences. The gap between them is your support queue.

A quarter of work on a board, the week in progress marked

Promise the part you control, at the percentile you actually hit. For most stores that means a dispatch commitment — “ordered before 2pm, leaves us today” — plus a delivery estimate that is clearly an estimate, because the carrier leg is not yours to guarantee. Set the number from your 90th percentile rather than your average: an average-based promise is wrong for a large minority of orders, and each of those is a support ticket, a refund risk and a customer who will not believe the next date you show them. Shopify’s own definition is a useful boundary — fulfilment time is the gap between the order being placed and the shipment being handed to a carrier. That is your half.

IN SHORT

  • Split the promise: dispatch is yours to commit to, transit is the carrier’s to estimate, and the storefront should not blur them.
  • Shopify defines fulfilment time as the time between an order being placed and the shipment being handed to a carrier service — a clean line between the two halves.
  • Set the promise from the tail of your distribution, not the mean. A promise you keep 50% of the time is a promise you have broken 50% of the time.
  • A 3PL contract measures dispatch against a cut-off time and usually carves out peak, goods-in delays and exceptions — read those clauses before you put a number on a product page.
  • Shopify offers delivery dates at checkout either automatically from your shipping performance or manually from a fulfilment time plus transit time you specify.
  • Shopify’s Delivery Promise API in the Admin API is, per its documentation, “currently restricted to select approved delivery promise partners”, so most stores build the estimate themselves.
  • A cut-off countdown is the highest-value element on the page precisely because it is the part you can guarantee.

Three parties, one sentence on the page

A delivery promise is assembled from three commitments made by three organisations, and the customer only ever reads the last one.

You decide when an order is released — after fraud checks, after a payment settles, after a personalisation step, after whatever holds the order for a few hours in your particular business. This is the part nobody measures and it is frequently where the day goes.

The warehouse or 3PL commits to picking, packing and handing over by a cut-off, on defined working days, subject to the exclusions in the contract. This is the commitment with money attached.

The carrier offers a service level. Even an express service is a service level, not a guarantee, and for most economy services the published transit time is a modal outcome, not a floor.

The storefront then compresses all three into one line of text, usually written by someone in marketing with access to none of the three. That is the structural problem, and it is why “what should we promise?” is an operations question that happens to be answered in a theme file.

What your 3PL contract actually says

Before deciding what the site says, read the SLA properly. The clauses that matter are rarely the headline.

  • The cut-off, and whose clock. Orders received by a stated time dispatch the same working day. Check whether “received” means placed on your store or arrived in their system — an integration that syncs on a schedule can lose you an hour against a cut-off you are advertising.
  • The percentage. Almost every SLA commits to a share of orders, not all of them. That number is the one to compare against what your page claims.
  • Working days, and which calendar. Weekend and public holiday handling changes the answer for every order placed after Friday’s cut-off. If you are shipping from another country, it is their holiday calendar, not yours.
  • Peak carve-outs. Many contracts relax the SLA for a defined peak window — exactly the weeks when your promise matters most and your traffic is highest.
  • Goods-in dependencies. Stock that has not been booked in cannot be picked. If inbound receiving has its own SLA, your dispatch promise inherits it.
  • Exceptions. Multi-item orders, oversized items, hazardous goods, personalisation, gift wrap. Each is usually excluded, and each is usually the order a customer is most anxious about.

Promise the tail, not the average

The most common mistake is arithmetic. A team looks at mean dispatch time, finds it comfortably inside the cut-off, and writes the comfortable number on the site. But a mean sits in the middle of a distribution: if your average order dispatches well within the promise, a substantial share still does not, and every one of those produces a customer who was told something untrue.

Use a high percentile instead — the 90th is a reasonable default. Ask “what date is true for nine orders in ten?” and put that on the page. It will read slower than the average, and it will be right far more often.

The second-order effect is the one worth arguing for internally. A promise you keep builds a customer who believes the next one. Once a customer has been let down, every subsequent date on your site is discounted, including the honest ones, and you have lost the mechanism rather than one order. We wrote about the conversion side of this in [the delivery date that changes conversion](/blog/delivery-promise-the-date-that-changes-conversion): the date converts by removing a question, and it can only do that if the answer holds.

This is also the case for promising *less* than you can do. A store that dispatches most orders same-day and promises next-day dispatch has given itself a day of slack, and delights a good share of customers by beating its own promise. Under-promising is cheap; a missed date is not.

What the storefront should actually say

Four things, in roughly this order of value.

The cut-off, as a countdown. “Order within 3h 12m for dispatch today.” It is the strongest element available because it is the one part of the chain you genuinely control, and it converts urgency out of a real operational fact rather than a manufactured one.

Dispatch and delivery, distinguished. Say which is which. “Leaves us today, arrives Tue–Thu” is more honest and no less persuasive than a single confident date you cannot underwrite. Customers understand that post is post.

The estimate, on the product page, not just at checkout. Shopify can show a delivery date at checkout — either automated from your shipping performance or manual from a fulfilment time and transit time you set. That is useful and it is late: the decision about whether to buy was made further up. The delivery promise APIs that would let you compute this properly are, per Shopify’s documentation, restricted to approved delivery promise partners, so a product-page estimate is usually something you build from your own inputs.

Stock reality. A date that ignores whether the item is in the right warehouse is a guess wearing a uniform. If your inventory is split across locations with different dispatch profiles, the promise has to know which location will serve the order.

And one thing not to say: anything with the word “guaranteed” attached to a carrier leg. It creates an obligation your contracts do not cover, and in several jurisdictions it creates one your legal team would rather you had asked about.

Measure it, or you are guessing quarterly

You already hold the data. Shopify records when the order was placed and when it was fulfilled; the difference is your dispatch time, order by order, against exactly the boundary Shopify defines. Carrier scan events give you the transit half.

A weekly report with three lines is enough to run this: the share of orders dispatched within the promise, the 90th percentile dispatch time, and the same two figures for whichever order types your SLA excludes. When the third line diverges from the first two, you have found the group of customers your promise is quietly wrong for.

Then put a rule around it: the storefront promise is reviewed when the report says so, not when someone remembers. The stores that keep their dates honest through peak are the ones where changing the promise is a normal operational action that takes ten minutes, not a theme deploy that needs a developer. Wiring that up — making the date a setting rather than a hard-coded string — is one of the cheapest things in this whole post, and it is usually the thing we do first on a [store management engagement](/services/support).

The honest summary: your customers are not asking for speed. They are asking for a date they can plan around. Those are different products, and the second one is much easier to deliver.

Questions this raises

Should I show a dispatch date or a delivery date?

Both, labelled differently. Dispatch is a commitment you can make because it is inside your operation; delivery is an estimate because the carrier leg is not. Merging them into a single confident date means you are underwriting someone else’s performance with your own credibility.

What delivery percentile should I promise?

Set the promise at a high percentile — the 90th is a sensible starting point — rather than the average. An average-based promise is by definition wrong for a large share of orders, and each miss costs a ticket now and disbelief later.

Can Shopify show estimated delivery dates natively?

At checkout, yes. Shopify supports delivery dates either generated automatically from your shipping performance or configured manually from a fulfilment time plus transit time. The richer Delivery Promise APIs in the Admin API are documented as restricted to approved delivery promise partners, so a product-page estimate is usually custom.

How do I handle peak, when my 3PL SLA relaxes?

Change the promise before peak rather than during it, and treat the contractual carve-out as the planning input it is. Extending the advertised dispatch window for six weeks costs you some conversion; missing thousands of dates in the highest-traffic period of the year costs considerably more.

Our promise is slower than our competitors. Should we still show it?

Yes. Shoppers who need it sooner will leave either way, and they leave later and angrier if they find out after paying. Showing a slow date honestly loses some orders now and prevents refunds, tickets and lost repeat business. If the date itself is the problem, fix the operation — the page is not where that gets solved.

Where should the delivery promise live in the code?

In configuration, not in a template. Cut-off times, working days, holiday calendars and transit windows all change, and each change should be an admin edit rather than a deploy. If updating the promise needs a developer, it will be out of date when it matters most.

NEXT STEP

Free store audit

A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.