Help & Support
Reach a human or find answers to the questions people ask most.
Getting started — your first 20 minutes
Step 1 — Let the import finish · nothing to do
The moment you install, LiveProfit pulls your last 12 months of orders and your full product catalogue, including
the Cost per item you already filled in on Shopify. A first import takes a few minutes for a small store
and up to an hour for a large one; you don't have to sit and watch it.
What you get: revenue, orders and margins on the dashboard, already correct for everything Shopify knows about.
Step 2 — Fill the missing product costs · 5–10 minutes, the one that matters
A product with no cost is counted as free, so its margin looks perfect and your profit is too high. Open Product Costs and click the Missing cost filter: that short list is every product that has actually sold with a cost of 0 — usually a handful, not your whole catalogue. Gift cards, freebies and products you confirm at 0.00 are excluded on purpose.
Three shortcuts if the list is long: Sync catalog pulls anything you've since set in Shopify, bulk edit handles a group at once, and connecting Zendrop or CJ replaces estimates with the amount your supplier actually invoiced, per order.
What you get: a net profit you can trust. This single step is the difference between a nice dashboard and a number you'd make decisions on.
Step 3 — Connect your ad platforms · 2 minutes each, optional
Meta, TikTok, Google, Snapchat and Pinterest, from Integrations → Ad platforms. Each one is an OAuth click — we read ad account IDs and spend numbers, nothing else, and we never touch your campaigns. Past spend is backfilled when you connect, so your history fills in retroactively.
If you don't run ads, skip this and say so on the checklist — the app stops asking.
What you get: real net profit instead of gross margin, plus the Campaigns view that ranks campaigns by profit rather than ROAS.
Step 4 — Set your transaction fees · 2 minutes
Shopify Payments fees arrive exact, per order, straight from Shopify — including the currency-conversion fee. Nothing to configure there. But PayPal, Stripe, Twint or a local gateway bill on their own side and Shopify never tells us the amount, so their rates are yours to enter in Settings → Transaction fees. Processing is typically 1% to 4% of every order; left at zero, that is straight overstated profit.
You can apply new rates to past orders in the same click.
Step 5 — Check the calculation rules · 3 minutes, read-only if you agree
Settings → Calculation holds the handful of rules that decide what lands in net profit: whether shipping cost is deducted, whether collected taxes leave your profit, what happens to the COGS of a refunded order, and which day a refund is counted on. Every one of them ships on the default that matches Shopify out of the box, and every one has a “How this is calculated” block with both formulas and a worked example at 100.00.
Read them once. If your business works the way the defaults assume, change nothing.
Then: the things worth doing later
- Expenses — your Shopify plan, apps, freelancers, rent. Spread pro-rata per day, so no artificial spike on the billing date.
- Suppliers — Zendrop and CJ replace estimated COGS with the real invoice on fulfilled orders.
- Email reports — a daily or weekly P&L in your inbox.
- Cash Flow — enter your bank balance and the 90-day runway becomes real.
- AI Analyst — ask questions about your own numbers in plain language.
What keeps running without you
- Orders — every 5 minutes, refunds included.
- Ad spend — daily per platform. Platforms keep consolidating for 24–48 h, so yesterday's figure can still move slightly.
- Product catalogue — synced from Shopify. A cost you typed is locked and never overwritten by a sync.
- Supplier invoices — an estimated COGS is replaced by the real one once the order is fulfilled.
- Exchange rates — each day converts at that day's rate, not today's.
Which is why a past day can change slightly overnight: every one of those makes it more accurate, not less. The full list of reasons is in Why are my numbers different from Shopify?
Get in touch
24 hours Monday–Friday
48 hours weekends
Frequently asked questions
Why do my numbers differ from Shopify Analytics?
Short answer: Net Revenue matches Shopify's “Total sales” to the cent. Every other gap comes from a definition, a filter or sync timing — not from wrong data.
The full breakdown, with the exact rules LiveProfit applies, is right below: Why are my numbers different from Shopify?
How is Net Profit calculated?
Net Profit = Net Revenue − COGS − Transaction Fees − Ad Spend − Custom Expenses
Net Revenue is order totals minus refunds (identical to Shopify “Total sales”). COGS is unit cost × quantity per line item — synced two-way with Shopify inventory costs and editable on the Product Costs page. Transaction fees are exact per order for Shopify Payments (incl. currency-conversion fee and your configured VAT); external gateways use your configured rates plus the plan surcharge. Ad Spend aggregates Meta, TikTok and Google, converted to store currency at the ECB rate of each spend day.
Why does COGS show 0 on some products?
Shopify's inventoryItem.unitCost is only populated if you set a cost per variant in Shopify Admin (Products → Variant → Cost per item). If it's blank, we save it as 0.
Go to Product Costs to override with the real cost — we'll use your override for all future calculations.
How often does data sync?
Orders and Facebook ad spend refresh every 5 minutes automatically. You can also click the Synced pill in the Dashboard header for a quick sync, or use its chevron menu → "Full re-import".
New orders typically appear within 5 minutes of being placed. Facebook usually publishes daily totals with a 24-hour delay for attribution.
Can I connect multiple stores?
Yes — the Growth plan supports up to 3 stores, Scale up to 5 (see the plans page). Each store is scoped separately (own Shopify token, own FB campaign filter, own P&L), then the "All Stores" view rolls them up into one currency.
Which currencies are supported?
CHF, EUR, USD, GBP, AUD, CAD today. Each store displays amounts in its native currency. "All Stores" converts everything into the currency most of your stores use (if it's a tie, your first connected store wins) with live ECB rates from frankfurter.app, refreshed daily. The currency in use is always printed next to the totals.
Current rates are visible on the Settings page.
What data does LiveProfit store?
We store your order metadata (order names, dates, line items, revenue, refunds, shipping, financial status) and your Facebook ad spend by campaign per day. That's it.
We do not store customer names, emails, or payment details. When you uninstall the app, we hold your data for 48 hours (in case of reinstall) then permanently delete every trace: orders, ad spend, product costs, store record.
How do I cancel my subscription?
Two ways, and you only need one of them.
1. From the app. Open Subscription. Next to your plan you'll see Cancel subscription → confirm. We cancel the charge on Shopify's side immediately, and the page then shows “Access continues until <date>”. That date is the end of the period you already paid for — you keep the full app until then, and nothing is charged again.
2. By uninstalling LiveProfit from your Shopify admin. Shopify tells us the moment you uninstall and we cancel the subscription automatically. You don't have to do both — uninstalling is enough, and you will never be billed for a period after the uninstall.
No cancellation fee, no notice period, no “contact us to cancel”. Re-subscribing later is one click from the same page.
Do I lose my data if I cancel or uninstall?
If you cancel but keep the app installed: nothing is deleted. Your orders, product costs, cost rules, expenses and ad-spend history stay exactly where they are, and syncing carries on. Re-subscribe whenever you want and you pick up where you left off — no re-import, no re-entering costs.
If you uninstall: you have a 48-hour grace window. We mark the store as uninstalled and stop everything. Reinstall within 48 hours and your history is intact — nothing was touched.
After those 48 hours we permanently delete everything. Every table keyed to your store is wiped — orders, refunds, product costs, cost rules, expenses, ad spend, campaigns, sync cursors, your access tokens and the store record itself. It is a real delete, not a flag: we cannot restore it afterwards, and neither can support.
Want a copy first? Export before you go: Orders → Export CSV, Product Costs → Export CSV, and the P&L export on the dashboard. On the Scale plan you can also pull everything through the /v1/* API.
Do you support Zendrop / AutoDS / other suppliers?
Zendrop: native integration live. Paste your API key in Settings → Supplier integrations, and per-product costs sync automatically nightly. New products get their COGS backfilled on the first Shopify import.
AutoDS + Spocket: coming in a follow-up sprint (their API access is under review). Meanwhile, enter costs manually on the Product Costs page or import via CSV.
Custom suppliers / DSers: manual entry or CSV import — same workflow as AutoDS/Spocket during that gap.
My Ad Spend doesn't match Facebook Ads Manager — why?
LiveProfit only counts campaigns whose name contains your store's "FB Campaign Filter" keyword (set on the Settings page). This lets multi-brand advertisers attribute spend correctly.
If the filter is empty or doesn't match your campaigns, spend won't appear. Check the keyword matches at least part of your campaign names (case-insensitive). Facebook's own totals include all your campaigns regardless of filter — that's usually the source of any mismatch.
Can I export my data as CSV?
Yes — the Dashboard exports the P&L summary, the Orders page has its own "Export CSV" button for per-order rows, and the Costs page exports per-product summaries — all for the selected date range. The same data is also available via the public REST API on the Scale plan.
Do you have a mobile app?
Yes — you can install LiveProfit as a Progressive Web App (PWA) directly from your phone browser. On iOS Safari: tap Share → Add to Home Screen. On Android Chrome: the install prompt appears automatically after a few visits.
Native iOS and Android apps (App Store + Play Store) launch late 2026 — you'll get a notification in-app when they're available.
Can I get alerts on Slack / Discord / Teams?
Yes — go to Integrations and paste your webhook URL. LiveProfit will forward critical anomalies (ROAS drop, revenue spike, sync failures, low cash runway) plus daily digests to your channel of choice.
Zapier and Make integrations are coming soon. The public REST API is available today on the Scale plan for custom automations.
Is there a public API?
Yes — the public REST API is available on the Scale plan. Endpoints under /v1/* cover stores, orders, P&L, products, anomalies, and outbound webhook subscriptions. Rate limit: 300 requests/minute per key. Contact support from this page to get your API key. Full docs at liveprofit.io/docs/api.
Why are my numbers different from Shopify?
1. Check the filters first
- Date range. Compare identical ranges. Shopify's “Today” and a 30-day preset rarely start on the same day.
- Timezone. LiveProfit stamps every order with its day in your shop's own timezone — the one set in Shopify admin (Settings → General) — so days line up with Shopify Analytics. We read it when you install the app and refresh it daily. Two notes: orders imported before we knew your timezone keep the day they were originally given (ask support if you need those recalculated), and with “All Stores” selected each order keeps its own shop's day rather than being re-normalised to a single zone.
- Store. The selector at the top: “All Stores” sums every shop, converting each one into the currency most of your stores use (shown next to the totals). Compare one store at a time against that store's Shopify admin.
- Order statuses. LiveProfit counts orders that are
Paid,Partially refundedorRefunded. It ignores test orders, and it ignores orders that are still pending, authorised, unpaid or voided — they appear the moment they're actually paid. Shopify Analytics counts orders as placed, so a store with unpaid / cash-on-delivery orders will read higher there.
2. Revenue: same number, two names
Net Revenue = Shopify “Total sales”. Order totals — after discounts, including taxes and shipping — minus refunds. These should be identical to the cent. If they aren't, it's a filter above or a sync gap below.
Gross Revenue ≠ Shopify “Gross sales”, on purpose. LiveProfit's Gross Revenue is what customers actually paid, minus shipping. Shopify's Gross sales is list price × quantity before discounts and excluding taxes and shipping. Two different questions, two different numbers.
Refunds are counted on the day the refund was processed — same as Shopify's “Returns”. You can switch them back to the original order date in Settings → Calculation, but be aware that restates past days and you'll stop matching Shopify.
3. Shipping: two different lines
Shipping appears twice in any profit calculation, and mixing them up is the single most common “my profit is wrong” report.
| Line | What it is | What LiveProfit does with it |
|---|---|---|
| Shipping charged | What the customer paid you for delivery. Part of the order total. | Revenue. Always included in Net Revenue — exactly like Shopify. |
| Shipping cost | What you pay the carrier or the supplier to ship it. | Expense — off by default. Most dropshipping costs are all-in (shipping already inside the product cost), so double-counting it would understate your profit. Turn it on in Settings → Calculation → Shipping cost. |
Shopify Analytics only ever shows the first line. It has no idea what your carrier charges you.
4. Taxes: collected is not paid
| Line | What it is | What LiveProfit does with it |
|---|---|---|
| Taxes collected | VAT / sales tax the customer paid on top of the price. It sits inside the order total and you owe it to the tax office — pass-through money, not yours. | Included in Net Revenue by default, because that's how Shopify's “Total sales” works and we want the two to match out of the box. |
| Taxes paid | What you actually remit. | Deducted only if you ask. Tick Exclude collected taxes from profit in Settings → Calculation and the collected amount is subtracted from net profit. Your revenue line stays untouched, so it keeps matching Shopify. |
5. What Shopify doesn't have at all
Below the revenue line, there is nothing to compare — Shopify Analytics simply doesn't hold these numbers:
- Transaction fees — exact per-order fees from Shopify Payments, including the currency-conversion fee and the VAT you configured. Other gateways use the rates you set, plus your Shopify plan surcharge.
- COGS — your product costs, refined by market, quantity, period, or replaced by your supplier's real invoice when Zendrop / CJ is connected.
- Ad spend — pulled daily from Meta, TikTok, Google, Snapchat and Pinterest, converted to your store currency at the rate of the spend day.
- Custom expenses — subscriptions, salaries, agency fees, spread pro-rata across the days of the period.
That's the whole point of LiveProfit: Shopify tells you what came in, LiveProfit tells you what's left.
6. Sync timing — why yesterday can move
- Orders refresh every 5 minutes. A very recent order may be in Shopify and not yet here.
- Ad spend keeps consolidating on the platforms' side for up to 24–48 hours after the day closes. Yesterday's spend is not final at 00:01.
- Supplier costs. When Zendrop or CJ is connected, an estimated COGS is replaced by the real invoiced amount once the order is fulfilled — often overnight. The day gets more accurate, which means the number moves.
- Refunds land on the day they were processed, so a refund today changes a day in the past if you use the “original order date” option.
Still not matching? Reconcile in 6 steps
- Pick one store and one identical date range on both sides.
- Compare LiveProfit Net Revenue with Shopify → Analytics → Total sales. These are the two numbers that must be equal.
- If they differ, open Orders for that range and compare the order count with Shopify → Orders (same filters). A gap in count means a sync gap, not a calculation gap.
- Check for unpaid / pending / test orders on the Shopify side — LiveProfit doesn't count them.
- Run a sync from the header pill, then re-check. If a whole stretch of days is missing, see “A coverage-gap banner won't clear” below.
- Still off? Email support with the store name, the exact date range, and both figures. That's everything we need — no screenshots required.
Data completeness
Dashboard banners flag data-quality and business anomalies. Here's what each type means and how to fix it.
Coverage gap — "MMM YYYY looks incomplete"
Ad spend is recorded for a month but very few order-days are in the database. Usually means Shopify orders were dropped or never synced (60-day API window, sync outage, etc.) while Facebook ad spend backfilled fine.
Fix: Re-import the missing orders from a Shopify Admin CSV export (see Re-import CSV below).
Impossible ROAS — "Ad spend N× revenue"
Last 30 days' ad spend is more than 3× tracked net revenue. Almost always a symptom of a coverage gap — resolve that first. If it persists after re-import, ads are genuinely underperforming.
Missing costs — "N products have missing costs"
Products appear on paid orders but have no cost entry in product_costs. Their COGS defaults to zero and inflates Net Profit.
Fix: Open Product Costs, use the "Missing cost" filter, and enter unit costs manually. You can also click Sync catalog on that page to pull costs from Shopify's "Cost per item" field where you've set it, or connect your supplier (Integrations) so real fulfilment costs flow in automatically.
Sync stale — "Last sync N hours ago"
No new orders have been recorded in the last 6+ hours during Zurich business hours. The 5-minute incremental sync may be stuck, the Shopify token may have expired, or Shopify may be down.
Fix: Click the Synced pill in the Dashboard header (quick sync), or its chevron menu → "Full re-import". If it still looks stale after a few minutes, contact support from this page.
FB→orders gap — "N days of ad spend with 0 orders"
Days where Facebook charged > 50 CHF but no orders landed. Contiguous runs are bundled into a single banner. Usually a coverage gap symptom, occasionally a real outage (Shopify checkout broken, campaign misconfigured for the wrong region, etc.).
Fix: Verify the affected date range in Shopify Admin → Orders. If orders exist there, re-import via CSV. If not, dig into the campaign or store state.
Revenue drop — "Revenue dropped X% vs last week"
Last 7 completed days had > 50% less revenue than the prior 7, and ad spend didn't drop by more than 30% — so it's not just a paused campaign.
Fix: Check Shopify Admin for stuck orders (unfulfilled payment, sync backlog), inventory issues (an out-of-stock hero product), or a broken checkout / theme change.
Unprofitable product — "Product X is unprofitable"
Any product with more than 20 units sold in the last 30 days and a COGS ratio above 65% (i.e. supplier cost eats more than two-thirds of retail).
Fix: Reprice the SKU, source it from a cheaper supplier, or discontinue it. Click "View product →" on the banner to jump to Product Costs pre-filtered.
A coverage-gap or FB→orders-gap banner won't clear
These banners mean a stretch of orders is missing from LiveProfit for a given month. In almost every case a sync resolves it:
- Open the sync menu (the status dot in the header) and run a sync for the flagged period.
- Give it a minute, then refresh — the banner clears once the next check cycle completes.
- If the gap persists, contact support with the store name and the month shown on the banner. We can re-import the missing orders for you from a Shopify export.
