Help & Support
Search the whole page, take the tour, or write to a human — everything below is what LiveProfit actually does today.
Getting started — your first 20 minutes
Step 1 — Let the import finish · nothing to do
The moment you install, LiveProfit pulls your entire Shopify order history 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 Attribution view that ranks campaigns, ad sets and ads 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 — every 5 minutes too, on all five platforms. Platforms keep consolidating their own figures for 24–48 h, so yesterday 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?
Frequently asked questions
Your numbers
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?
Can I see profit per product?
Yes. Open Product Costs → Analytics and pick a single store at the top: every product is ranked by the profit it actually generated over the selected period — units sold, revenue, cost of goods, attributed ad spend, transaction fees and net profit, with its margin and ROAS.
Ad spend is attributed per product one store at a time, so pick a single store rather than All Stores. The Export button gives you the same rows as a CSV.
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”). The dashboard shows refunds on their own card, next to custom expenses; each has an “In Net Profit” switch that only changes what the dashboard displays (and its calendar and comparisons) — the P&L, reports and alerts always deduct both. 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, Google, Snapchat and Pinterest, 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.
My Ad Spend doesn't match Facebook Ads Manager — why?
The usual cause is the store's campaign filter (Integrations → Ad platforms). With no filter, every campaign of the connected ad account counts. With one, only campaigns whose name contains one of its words count — on every ad platform (Meta, TikTok, Google, Snapchat, Pinterest). It exists for one ad account shared by several brands: each store keeps its own campaigns.
Under the filter, each platform shows how many campaigns it counted and excluded, with their spend, and names any campaign that none of your stores counts. Ads Manager totals include every campaign, so the excluded ones are the gap. Matching ignores case; separate several words with commas.
Sync, data and exports
Some orders don't show up in LiveProfit
New orders normally appear within seconds — Shopify notifies LiveProfit — and every order is checked again every 5 minutes. If the order is only a few minutes old, give it a moment.
Otherwise, three checks cover almost every case:
- Period and store. Look at the date range and the store selector at the top of the page. An order is counted on the day it was placed in your shop's own timezone (Shopify admin → Settings → General), so a late-evening order can sit on the next or previous day when you compare with another timezone.
- What counts as an order. In Settings → Calculation → What counts as an order, authorized orders, pending payments (cash on delivery, bank transfer), test orders and zero-revenue orders all count by default. If one of them is set to Not counted, those orders stay out of your totals on purpose.
- Cancelled orders. A cancelled order stays in your Orders list but counts as a sale and a full refund — net zero — exactly like Shopify's reports.
Draft orders and abandoned checkouts aren't orders until the customer completes them. Still missing after 10 minutes? Search its number in Orders, then send us the order number in the chat — we check your store's sync directly.
How often does data sync?
Orders, refunds and ad spend from all five platforms (Meta, TikTok, Google, Snapchat, Pinterest) 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. The ad platforms publish their own daily totals with a lag and keep revising them for 24–48 h — a nightly pass re-pulls the last 28 days so those revisions land.
What data does LiveProfit store?
We store your order metadata (order names, dates, line items, revenue, refunds, shipping, financial status), your ad spend by campaign per day for each platform you connect, the ad click each order came from, your product costs and cost rules, and your custom expenses. Nothing else.
We do not store customer names, emails, or payment details. What happens on uninstall depends on whether you have a LiveProfit account — see Do I lose my data if I cancel or uninstall? and our Privacy Policy.
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 through the public REST API on the Scale plan.
Stores, currencies and suppliers
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 campaign filter, own P&L), then the "All Stores" view rolls them up into one currency.
Which currencies are supported?
Every currency Shopify supports — we pull around 160 daily rates, so a store in SEK, PLN, INR or BRL converts as correctly as one in EUR. 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 daily rates from frankfurter.app (ECB, used for the major currencies) merged with open.er-api.com (everything else), refreshed every 24 h. The currency in use is always printed next to the totals.
Current rates are visible on the Settings page.
Do you support Zendrop / CJ Dropshipping / AutoDS / other suppliers?
Zendrop: native integration live. Paste your API key in Integrations → Suppliers, and per-product costs sync automatically nightly. New products get their COGS backfilled on the first Shopify import.
CJ Dropshipping: native integration live too. Connect it in Integrations → Suppliers and your real per-order fulfilment costs replace the estimate once an order ships.
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.
Billing, cancelling and leaving
How much does LiveProfit cost? Plans and pricing
Every plan starts with a 14-day free trial. The app is billed through Shopify — it appears on your Shopify invoice, no card to enter with us.
- Starter — $29/month: 1 store, up to 500 orders a month, 2 team members.
- Growth — $59/month: up to 3 stores, 1,500 orders a month, 5 team members.
- Scale — $129/month: up to 5 stores, 5,000 orders a month, unlimited team members.
Yearly billing is 20% cheaper. No per-order fees. You can change or cancel your plan anytime from Subscription.
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, what happens depends on whether you have a LiveProfit account. Your Shopify access tokens are removed either way. If you never created an account, every table keyed to your store is wiped — orders, refunds, product costs, cost rules, expenses, ad spend, campaigns, sync cursors and the store record itself. It is a real delete, not a flag: we cannot restore it, and neither can support. If you do have an account, your business history stays attached to it so you can sign back in and pick it up when you reinstall — and you can ask us to delete all of it at any time from the data deletion page.
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.
Apps, alerts and the API
Do you have a mobile app?
Yes — on iPhone and Android, straight from your phone's browser: no App Store download, its own icon on your home screen, the same live numbers as on your computer. It takes about 30 seconds — step-by-step guide.
You need a LiveProfit login (email + password) to open it on your phone. No login yet? Create it in Settings → About → LiveProfit on your phone.
Can I get alerts on Slack / Discord / Teams?
Not yet — Slack, Discord and Teams alerts are built but not switched on in the app, so there is no webhook field to fill in today. What you can turn on right now is the scheduled email digest: Settings → Email reports, one per store, at the hour you pick.
Zapier and Make are coming soon. If you can write a little code today, the public REST API and its outbound webhooks (Scale plan) already do this — see “Is there a public API?” below.
Is there a public API?
Yes — the public REST API is available on the Scale plan. Endpoints under /v1 cover orders, products, P&L and dashboard analytics, cohorts and LTV, expenses, ad platforms, anomalies, and outbound webhook subscriptions. Keys are scoped to one store; rate limit 300 requests/minute per key. There is no self-serve screen to create a key yet — ask support from this page and we issue one for your store. Full reference: 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. By default LiveProfit counts every order in your Shopify admin:
Paid,Partially refunded,Refunded,Authorized(paid, not yet captured),Pending(cash on delivery, bank transfer, deposits),VoidedandExpiredauthorizations (listed at zero once cancelled) and test orders — the same rows as your Orders page in Shopify. A cancelled order is counted as a sale and a refund, net zero, like Shopify's reports. One difference to know: Shopify Analytics leaves test orders out of its reports while the Orders page lists them; LiveProfit follows the Orders page. Each category is a switch in Settings → Calculation — turn one off and LiveProfit becomes deliberately narrower than your admin.
2. Revenue: same number, two names
Net Revenue = Shopify “Total sales”. Order totals — after discounts, including taxes and shipping — minus refunds. They match to the cent except in three cases, all on the refund side (checked line by line against Shopify's sales report, 16.10.2026):
- Lost chargebacks. Shopify's report keeps the sale; the money left your account anyway. LiveProfit counts it as a refund on the day the dispute was lost.
- Items returned or removed with no money refunded. Shopify's “Returns” counts the value of the returned item; LiveProfit counts only money actually refunded.
- Refunded shipping. Shopify takes it off its “Shipping charges” line; LiveProfit counts it in Refunds. The total is the same, the two lines differ.
Anything else is a filter above or a sync gap below.
Gift cards follow Shopify's rule: selling a gift card is not revenue (it's money you owe the customer). The sale counts when the card is used to pay for an order.
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 — the same day as Shopify's “Returns” (amounts can differ for the three reasons above). 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 by default when your store collects tax. Collected tax (net of any tax refunded to the customer) is subtracted from net profit — it is owed to the tax office, never yours. Your revenue line stays untouched, so it keeps matching Shopify. To keep tax inside profit, untick Exclude collected taxes from profit in Settings → Calculation. |
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 every 5 minutes 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 Settings → Calculation: if a category (authorized, pending, test orders) has been switched off, those orders are left out on purpose. By default every order counts.
- 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 (a sync outage, an expired token, an import interrupted mid-history) while 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, checked against your shop's own business hours (its Shopify timezone), so a quiet night never raises it. 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 more than 50 (in your store's currency) 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.
