E-commerce
June 30, 2026
"I had €82 in my cart, why am I being charged €5.90 for shipping?" "Your banner said free shipping, but my package is in Corsica." "The -20% code was supposed to include free shipping, wasn't it?" Free shipping converts, but it also generates tickets that neither the glossary nor the progress bar can resolve on their own.
Sendcloud (8,000 European consumers, 2025) indicates that 82% prefer free shipping to fast options, and 70.5% add an item to reach the threshold (Sendcloud, Delivery Compass 2025). Heeya estimates that "is shipping free?" represents 8% to 12% of recurring customer service tickets (Heeya, customer service tickets 2026).
This guide #303 addresses customer support for free shipping offers: thresholds, exceptions, post-purchase misunderstandings. It complements the free shipping glossary (marketing definition) and threshold display (#304) with a focus on customer service processes, macros, and dispute resolution.
Summary
Why does free shipping fuel so many customer service tickets?
Customers do not read your Shopify shipping profile. They remember "free shipping" from the home page, ignore the asterisks, and then message you when the checkout displays €5.90.
Three recurring pain points
Misunderstood threshold: Ex-VAT vs. Inc-VAT, promo codes excluded, cart without eligible products
Unseen exception: Corsica, overseas territories, heavy furniture, marketplace dropshipping
Expired temporary promo: banner still in cache, day-after email with the old threshold
Operational cost
Each poorly handled free shipping ticket costs 8 to 15 minutes of agent time, with the risk of a negative review if the answer contradicts the banner. Afineo notes that 33% of sites offer free returns but increase shipping rates to balance it out (Afineo, e-commerce returns): the customer then confuses outgoing shipping and returns.
Principle #303
Document a single source of truth for free shipping, route each question to an intent, and respond with live cart figures, not with "please read our T&Cs".
How does it differ from the glossary, UX #304, and bot shipping #203?
Six neighboring contents, six complementary roles.
Free delivery glossary
The glossary defines the marketing lever. Book #303: customer service playbook when the promise breaks in production.
Threshold display (#304)
Threshold communication (#304): FRANCO-UX, progress bar, 3-state copy. Book #303 handles already opened tickets and disputes.
Shipping bot (#203)
Delivery bot (#203) automates pre-purchase ship_cost and ship_free_threshold. Book #303 adds post-purchase, combined promotions, refund of shipping costs incorrectly invoiced.
Hidden fees (#291)
Preventive fee support (#291) intercepts checkout shock. Book #303: resolution after invoicing or banner contradiction.
Fee communication (#204)
Explaining fees (#204): micro-copy. Book #303: agent macros and exception matrix.
Promise alignment (#280)
Marketing-support alignment (#280) centralizes master PROMISES. Book #303 extracts the operational FRANCO-POLICY section from it.
Which FSHP-MAP mapping should be used to classify free carriage tickets?
The FSHP-MAP taxonomy (Free Shipping Helpdesk Policy) prevents every agent from reinventing the same explanation.
12 free shipping support intents
fshp_threshold: what is the amount for free shipping?fshp_gap: how much am I missing?fshp_eligible: does this product count towards the threshold?fshp_promo_stack: promo code + free shipping stackable?fshp_zone_excl: Corsica, islands, internationalfshp_heavy_excl: furniture, pallet, surchargefshp_method_excl: express, home vs pick-up pointfshp_charged_error: shipping charged despite threshold being metfshp_banner_mismatch: site said free, checkout didn'tfshp_temp_offer: weekend offer, Black Fridayfshp_membership: club, subscription, loyalty cardfshp_return_vs_ship: free return confused with delivery
90-day Mining
Gorgias or Zendesk export, keywords: free shipping, free, shipping fee, free delivery, threshold, €59, €79. Group into intents. Prioritize top 5 covering 75% of volume. Mandatory fshp_* tag upon closing.
Routing rule
If order_id is present: lookup order before replying. If live cart: query Shopify cart + shipping profile. Never provide a generic threshold response without context.
How to write the FRANCO-POLICY document for agents and bots?
The FRANCO-POLICY document is the single source cited by support, marketing, and the bot. Sendcloud recommends calibrating the threshold based on average cart, margin, and shipping cost, not on competition (Sendcloud, Shopify shipping costs).
8 mandatory blocks
Active threshold: VAT-inclusive amount, region (FR mainland by default)
Calculation base: product subtotal including VAT after cart discounts, before shipping
Product exclusions: gift cards, subscriptions, listed oversize SKUs
Regional exclusions: Corsica +X €, EU outside FR, DOM-TOM
Shipping exclusions: standard free, express always paid
Promotions: cumulative or not with codes, Black Friday dates
Temporary offers: lowered threshold from Nov 12 to 15, marketing owner
Disputes: when to refund wrongly billed shipping (cap, deadline)
Optimal threshold formula
DataFirefly suggests: threshold where additional margin offsets average shipping cost C, with average cart P and margin M (DataFirefly, threshold calculation 2026). Sendcloud's rule of thumb: 20 to 25% above the average cart. Example: AOV €52 → threshold €65.
Versioning
Dated franco_version field (v2026-06). Snapshot in order confirmation: "Shipping: free (threshold €65 incl. VAT, policy v2026-06)". Reduces "which rule applied?" disputes.
Which FRSH macros should be used to respond in less than 60 seconds?
Ten FRSH macros cover 85% of free shipping tickets without improvisation.
Pre-purchase
FRSH-THRESH-01: "Standard delivery free from {{seuil}} € incl. VAT in metropolitan France (excluding Corsica and heavy products). Your cart: {{cart_total}} €. You are missing {{gap}} € if applicable."
FRSH-GAP-02: "Only {{gap}} € more for free delivery. Suggestion: {{sku_suggest}} at {{price}} €." See the free shipping logic in guide #291.
FRSH-PROMO-03: "The code {{code}} discounts your products by {{pct}} %. The free shipping threshold remains {{seuil}} € on the subtotal after discount. Codes do not replace the threshold unless 'free shipping included' is specified."
Exceptions
FRSH-CORSE-04: "Corsica: free delivery from {{seuil_corse}} € or a {{surcharge}} € surcharge according to our policy. Your order: {{detail}}."
FRSH-HEAVY-05: "The {{sku}} is classified as a heavy shipment: free delivery is not applicable, rate is {{rate}} € (2 people, slot)."
FRSH-EXPRESS-06: "Free shipping covers standard delivery. Express remains {{express_price}} € with delivery {{eta_express}}."
Post-purchase and disputes
FRSH-ERROR-07: "You are correct: subtotal {{subtotal}} €, threshold {{seuil}} €, shipping {{charged}} € billed by mistake. Refund of {{amount}} € within 48 hours."
FRSH-DENY-08: "Product subtotal {{subtotal}} €, threshold {{seuil}} €. Gap {{gap}} €. Shipping {{charged}} € compliant with our policy from {{date}}. Link: {{policy_url}}."
FRSH-RETURN-09: "Outward delivery: {{ship_status}}. Return: {{return_policy_short}}. These are two separate rules."
FRSH-BF-10: "Black Friday offer: free shipping from {{seuil_bf}} € from {{start}} to {{end}} only. Outside this period: standard threshold {{seuil_std}} €."
What is the six-step protocol for an "I was charged for shipping" dispute?
The shipping charge dispute protocol avoids systematic refunds or aggressive refusals.
Collect: order_id, banner screenshot if provided, delivery postal code
Recalculate: subtotal incl. VAT post-discounts, SKU exclusions, shipping profile zone
Compare: active rule at the order timestamp (not current rule if changed)
Classify: technical error, promo agent error, customer under threshold, zone exception
Resolve: shipping refund, commercial gesture, or documented FRSH-DENY-08
Tag + feedback:
fshp_charged_errororfshp_banner_mismatch, marketing alert if banner is incorrect
Decision Matrix
Threshold reached, shipping charged: auto-refund if discrepancy > €0.01
Incorrect banner > 24 h: refund + fix UX within 4 h
Customer €2 under threshold: no policy refund; optional gestural gesture for VIPs
Excluded heavy SKU: FRSH-HEAVY-05, no gesture except for product page error
DTC Mode Example
Order #8842: €67 products, €65 threshold, €4.90 shipping charged. Cause: €10 gift card excluded from customer calculation but included in Shopify. Agent: explains basis of calculation, refunds €4.90 because product threshold excluding card = €67. FRANCO-POLICY patch: "gift cards excluded from threshold" in bold.
How do I handle exceptions for zones, heavy products, and carriers?
French free shipping exceptions account for 40% of escalations if they are not scripted.
Geographical zones
Metropolitan France: default rule. Corsica: often carrier surcharge not absorbed by margin. French Overseas Territories (DOM-TOM): free shipping is rare, dedicated threshold or never offered. EU: threshold per Shopify market. Document in FRANCO-POLICY one line per zone, not a vague paragraph "excluding remote areas".
Products and categories
Oversize: metafield
shipping_class=heavy, free shipping disabledPre-order: free shipping upon shipment, not upon split order
Marketplace / dropshipping: third-party supplier delay and shipping, see dropshipping support
Gift cards: often excluded from the free shipping subtotal
Shipping method
Free shipping = Standard Colissimo home delivery. Pickup points are sometimes included, express shipping never. Sendcloud pickup point: 58% of Europeans prefer OOH (Sendcloud, trends 2026): specify if pickup point counts as "free shipping".
Zone agent script
"Your postal code {{cp}} is in {{zone}}. Rule: {{rule}}. Tariff applied: {{rate}} €. Alternative: {{alt}}."
How to manage temporary promotions, promo codes, and cumulative offers?
Temporary free shipping promotions multiply tickets by 2x to 4x if marketing and support do not share the same calendar.
Shared promo calendar
Notion or Asana: start/end date, free shipping threshold, zones, excluded SKUs, owner, banner link. Support receives a Slack alert at T-24 h and T+1 h post-promo. Align with PROMISES master (#280).
Combining code + free shipping
Three models to be explicitly documented:
Model A: threshold based on original price (before discount code)
Model B: threshold based on cart value after discount code (most common)
Model C: code PORTOFFERT = free shipping with no threshold, non-combinable
Common marketing errors
"Free shipping this weekend" banner without an end date. Klaviyo email with old threshold 48 hours after change. Free shipping pop-up on excluded product PDP. Every incident → fshp_banner_mismatch ticket + weekly review.
Active macro promo
During Black Friday: FRSH-BF-10 mandatory. Agent forbidden to say "I'll waive shipping costs as a gesture" if the policy states it is paid outside of promotions.
Where to place the bot and the human on free shipping questions?
Distribute bot vs human free shipping for speed without over-promising.
Auto bot (extended intents #203)
fshp_threshold, fshp_gap with live cart, fshp_eligible if metafield, fshp_return_vs_ship, fshp_temp_offer if indexed calendar, FREE-SHIPPING-POLICY hub link.
Human under 5 min
fshp_charged_error, fshp_banner_mismatch, chargeback threat, customer > 500 € LTV, B2B, complex split order.
Bot forbidden
Promising shipping refund without order lookup
Announcing free shipping if cart < threshold "to be nice"
Inventing expired promo threshold
Bot corpus
Index FREE-SHIPPING-POLICY + /pages/shipping page + JSON promo calendar. Same source as Gorgias macros. Drift bot ≠ checkout = peak fshp_charged_error. Complete shipping bot (#203) with fshp_* tags.
Which KPIs should be tracked to reduce carriage-free tickets?
Measure the volume and quality of free shipping tickets, not just the successful delivery rate.
Monthly KPIs
fshp_ticket_rate: fshp_* tickets / total tickets
fshp_first_reply_accuracy: replies compliant with FREE-SHIPPING-POLICY (QA 20 tickets)
fshp_refund_port_total: € refunded for shipping disputes
fshp_banner_mismatch_count: marketing errors detected by customer service
fshp_reopen_rate: customer reopens "it's not clear"
fshp_bot_deflection: fshp intents resolved without human intervention
Weekly Review 30 min
Top 3 intents, 1 patch for FREE-SHIPPING-POLICY or macro if gap. Cross-reference with pre-checkout questions (#24) to report UX friction to guide #304.
Alert Signal
fshp_charged_error > 5/week: audit Shopify shipping profile + banner sync. Sendcloud: 66.3% of abandonments linked to shipping costs (Sendcloud 2025): each unresolved dispute also feeds into future abandonment.
How does Qstomy reduce free shipping issues and freight disputes?
Qstomy calculates threshold, gap, and exceptions directly from the Shopify cart or order, cites FRANCO-POLICY, and routes shipping fee disputes.
Capabilities
Cart/order lookup: subtotal, discounts, zip code area
Auto-detection of fshp_* intents and FRSH macros
FRANCO-POLICY index + promo calendar
Heavy SKU / Corsica zone flagging via metafields
Human handoff payload: threshold recalculation + banner capture
Monthly fshp_* KPI export
Quantified DTC Scenario
French wellness brand, 1,850 tickets/month, fshp_ticket_rate 9.4% (174 tickets), 31% reopening rate for "unclear threshold". Deployment of FRANCO-POLICY 8 blocks + 10 FRSH macros + Qstomy grounding + fshp tags. After 8 weeks: fshp_ticket_rate 5.8%, fshp reopening rate −38%, shipping fee dispute refunds −24% (fewer upstream errors), fshp_bot_deflection 61%.
See Shopify, AI support, demo.
Which playbooks should be deployed to scale French-speaking support?
Playbook 1: fshp ticket audit (3 h)
90-day export, classify 12 intents in section 3. Note top 5 verbatims. Estimate fshp_ticket_rate baseline.
Playbook 2: write FRANCO-POLICY (4 h)
Fill in 8 blocks of section 4 with ops and marketing. Publish hub /pages/livraison-franco. Footer link.
Playbook 3: FRSH macros (2 h)
Import FRSH-THRESH-01 to FRSH-BF-10 into Gorgias. Test 15 historical tickets.
Playbook 4: dispute protocol (1 h)
Display section 6 matrix in Notion. Train 3 agents on Shopify order recalculation.
Playbook 5: promo sync (30 min / campaign)
Section 7 calendar, Slack alert, activate FRSH-BF-10, deactivate banner T+1 hr.
Useful links
This week: export 20 "free shipping" tickets from the quarter. How many could have received FRSH-THRESH-01 with a live cart? If more than half, prioritize FRANCO-POLICY before the next promo.

Enzo
June 30, 2026





