Loading DHL data…
Overview
By country
By month
Weight & products
Duties
Order details
Monthly cost trend total ex VAT, stacked by row type
Cost components share of total
Top 5 destinations by total cost
Top 10 destinations by cost
All countries click headers to sort
| Country | Parcels | Shipping £ | Duties £ | Total £ | Avg shipping/parcel £ | Avg duties/parcel £ | Avg kg/parcel | Avg order ex VAT £ | Shipping % of order |
|---|
Month-on-month by country total ex VAT per month, with change vs previous month
Monthly spend trend
Monthly breakdown MoM Δ in last column
| Month | Parcels | Shipping £ | Duties £ | Total £ | Avg/parcel £ | MoM Δ | Avg order ex VAT £ | Shipping % of order |
|---|
Parcels by weight band
By product type
Weight band detail
| Weight band | Parcels | Total cost £ | Avg cost £ | £/kg |
|---|
Duties & taxes by month
Top countries by duties paid
| Country | Duty rows | Total duties £ | Avg per row £ |
|---|
Order details one row per shipment · first 500 of 0 matching · DHL duties auto-merged via Shipment #
How to read Net shipping %: (DHL shipping cost − customer paid) ÷ order ex VAT
● Positive % = Skin Cupid loses on shipping (DHL cost exceeds what the customer paid)
● Negative % = Skin Cupid profits on shipping (customer paid more than the DHL cost)
● 0% = breakeven
● Positive % = Skin Cupid loses on shipping (DHL cost exceeds what the customer paid)
● Negative % = Skin Cupid profits on shipping (customer paid more than the DHL cost)
● 0% = breakeven
| Month | Ship Date | Order Ref | Country | City | Weight | DHL £ ex VAT | DHL duties £ | Order ex VAT | Customer paid ship | Net shipping % |
|---|
Loading DPD data…
Overview
By country
By month
By service
Order details
Monthly cost trend total ex VAT
Service mix share of total spend
Top 5 destinations by total cost
Top 10 destinations by cost
All countries
| Country | Parcels | Total £ | Avg/parcel £ | Avg kg | Avg order ex VAT £ | Shipping % of order | % of total |
|---|
Monthly spend trend
Monthly breakdown MoM Δ in last column
| Month | Parcels | Total £ | Avg/parcel £ | MoM Δ | Avg order ex VAT £ | Shipping % of order |
|---|
Parcels by service
Spend by service
Service detail
| Service | Parcels | Total £ | Avg/parcel £ | Avg kg |
|---|
Order details one row per parcel · first 800 of 0 matching
How to read Net shipping %: (DPD cost − customer paid) ÷ order ex VAT
● Positive % = Skin Cupid loses on shipping (DPD cost exceeds what the customer paid)
● Negative % = Skin Cupid profits on shipping (customer paid more than the DPD cost)
● 0% = breakeven
⚠ RTC parcels (returns to warehouse, Sender = "RTC WND") have no Shopify order ref by design.
● Positive % = Skin Cupid loses on shipping (DPD cost exceeds what the customer paid)
● Negative % = Skin Cupid profits on shipping (customer paid more than the DPD cost)
● 0% = breakeven
⚠ RTC parcels (returns to warehouse, Sender = "RTC WND") have no Shopify order ref by design.
| Ship Date | Service | Order Ref | Country | Weight | DPD £ ex VAT | Order ex VAT | Customer paid ship | Net shipping % |
|---|
Loading Royal Mail data…
Overview
By month
By service
By channel
By country
Order details
Monthly cost trend total est. ex VAT, stacked by service
Service mix share of total spend
Top channels by parcel count
Monthly spend trend
Monthly breakdown MoM Δ in last column
| Month | Parcels | Est. Net £ | Est. Gross £ | Avg £/parcel | MoM Δ |
|---|
Parcels by service
Spend by service
Service detail
| Service | Code | Parcels | Est. Net £ | Est. Gross £ | Avg £/parcel |
|---|
Parcels by channel
Channel detail
| Channel | Parcels | Est. Gross £ | Avg £/parcel | % of total |
|---|
How country is determined:
● Tracked 24 / Tracked 48 (TPS / TPN) are UK-only — always shown as UNITED KINGDOM
● International (MP7) — derived from the matched Shopify order's shipping address
● Unknown — international parcels with no Shopify match (e.g. In Store, Unleashed Warehouse Transfer)
● Tracked 24 / Tracked 48 (TPS / TPN) are UK-only — always shown as UNITED KINGDOM
● International (MP7) — derived from the matched Shopify order's shipping address
● Unknown — international parcels with no Shopify match (e.g. In Store, Unleashed Warehouse Transfer)
Top 10 destinations by parcels
International only excludes UK domestic for clarity
| Country | Parcels | Est. Gross £ | Avg £/parcel | % of intl |
|---|
All countries including UK domestic
| Country | Parcels | Est. Gross £ | Avg £/parcel | % of total |
|---|
Order details one row per parcel · first 800 of 0 matching
Cost basis: Royal Mail prices are flat per service/weight band, so we apply the OBA-derived monthly average rate per parcel. Total reconciles to actual OBA spend within ~1-2%.
How to read Net shipping %: (RM cost − customer paid) ÷ order ex VAT
● Positive % = Skin Cupid loses on shipping ● Negative % = Skin Cupid profits on shipping ● 0% = breakeven
⚠ Non-Shopify channels (In Store, Unleashed Warehouse Transfer) have no Shopify order match by design.
How to read Net shipping %: (RM cost − customer paid) ÷ order ex VAT
● Positive % = Skin Cupid loses on shipping ● Negative % = Skin Cupid profits on shipping ● 0% = breakeven
⚠ Non-Shopify channels (In Store, Unleashed Warehouse Transfer) have no Shopify order match by design.
| Despatch Date | Service | Channel | Country | Order Ref | Tracking | RM £ ex VAT | Order ex VAT | Customer paid ship | Net shipping % |
|---|
LCS Cleaning — coming soon
Monthly invoice data from Drive.
Badger Fulfillment — coming soon
Weekly QuickBooks receipts aggregated to monthly.
Ellgia — coming soon
Monthly PDF invoices from Drive.
Stacatruc — coming soon
Ad hoc engineer visit invoices.
EE — coming soon
Monthly broadband billing.
Water Plus — coming soon
Needs MyAccount portal extraction.
EON — coming soon
Manual download flow.
Overall operations cost — coming soon
Combines all suppliers once each module is live.
Loading courier data…
Time horizon:
From
to
Courier rate comparison your rate cards × avg parcel weight per destination
Duty handling:
USA + Canada — Skin Cupid pays duties (DDP); Europe — IOSS or customer pays. DDP fee applied to DPD prices for USA/CA. DT1 is informational — only relevant where pre-clearance is used.
Current avg £: Shipping cost only — duties paid by Skin Cupid (US/Canada) are excluded so the figure is comparable to rate card prices.
Royal Mail International rate: Shown as actual avg £/parcel from your shipped data (rate card pending). "—" means no RM shipments to that country in this period.
Weight: Avg parcel weight per country; rates rounded up to next weight band.
Transit times: Indicative working days based on each courier’s published guidance — confirm with your account managers for contractual SLAs. DHL varies by destination zone; DPD by chosen service.
Current avg £: Shipping cost only — duties paid by Skin Cupid (US/Canada) are excluded so the figure is comparable to rate card prices.
Royal Mail International rate: Shown as actual avg £/parcel from your shipped data (rate card pending). "—" means no RM shipments to that country in this period.
Weight: Avg parcel weight per country; rates rounded up to next weight band.
Transit times: Indicative working days based on each courier’s published guidance — confirm with your account managers for contractual SLAs. DHL varies by destination zone; DPD by chosen service.
| Country | Parcels | Avg weight | Current avg £ shipping only |
DHL £ | DPD £ | RM £ | Cheapest | Saving/parcel | Annual saving | Duty |
|---|
— = no rate available (courier doesn’t serve that country, or weight exceeds limit). Rows sorted by annual saving descending. Switching only recommended if saving >£2/parcel and ≥5 parcels in period.
Loading all courier data…
Time horizon:
From
to
Spend by courier monthly trend, stacked
Courier comparison cost per parcel and total
| Courier | Parcels | % of parcels | Total spend £ | % of spend | Avg £/parcel |
|---|
Spend share
Country spend & margin all couriers combined, sortable
Status flags: 🟢 Healthy (shipping <25% of revenue) ·
🟡 Watch (25-40%) ·
🔴 Loss-making (>40%)
Note: Order revenue requires Shopify sync. Royal Mail country requires Shopify match (UK domestic is hardcoded).
Note: Order revenue requires Shopify sync. Royal Mail country requires Shopify match (UK domestic is hardcoded).
| Country | Total parcels | DHL | DPD | RM | Total £ | Avg £/parcel | Order rev £ | Customer paid £ | Shipping % of rev | Status |
|---|
These are real shipments without a matched Shopify order, so revenue and margin can’t be calculated.
Usually means the order ref on the shipment didn’t resolve to a Shopify order (legacy data, B2B orders not in Shopify, or unsynced).
| Country | Total parcels | DHL | DPD | RM | Total £ | Avg £/parcel |
|---|
⚠️ Loss-making destinations aggressive recommendations & savings estimates
Settings
Published Google Sheet CSV. Default is the Skin Cupid DHL Analytics Data sheet.
Published Google Sheet CSV. Default is the DPD Consolidated sheet built by the Apps Script.
Published Google Sheet CSV. Default is the Royal Mail Consolidated sheet built by the Apps Script.
The Cloudflare Worker that proxies to Shopify Admin API. The token never touches the browser.
Shopify order sync cross-reference DHL parcels with Shopify order values
Loading status…
How it works: The portal loops through each month of your courier data (DHL, DPD, Royal Mail), fetches all Shopify orders from your Worker, and caches them in your browser's IndexedDB. Once cached, the portal matches each DHL parcel to its Shopify order to compute average order value and shipping cost as a percentage of order value.
First sync may take 2–5 minutes depending on order volume. After that, only re-sync if data changes.
First sync may take 2–5 minutes depending on order volume. After that, only re-sync if data changes.