Profit Dashboard
Health and syncing
This page never hides itself
Every other Profit screen shows a “connect your accounts” panel when something is missing. This one deliberately does not, because a missing connection is exactly the thing you came here to diagnose.
The banner at the top
Either All healthy, or one warning per problem. The warnings are written as instructions, for example:
- “{source}: token expired — renew the connection.” Go to Setup and reconnect that service.
- “{source}: data is {n} min old.” Nothing has come in from that source for a while.
- “Orders today: Shopify counts X, the database Y.” The most useful warning on the page — see below.
- “Meta API usage at {pct}%” — you are approaching Meta’s rate limit. Sync less often.
- “Shopify permission missing: {right}” — add it to your Shopify app and reinstall.
The Sources table
One row per thing Shopdeck fetches. Read it left to right: what, how it went, when, how much.
| Status | What it means |
|---|---|
| Healthy | Ran recently and succeeded. Nothing to do. |
| Stale | Last successful run was more than half an hour ago. Often fine overnight; worth a look during the day. |
| Failed | The last attempt errored. The Message column says why. |
| Token expired | The key for that service no longer works. Go to Setup and reconnect it. |
| Skipped | Deliberately not run — usually because the service is not connected, or a paid source was out of credits. |
If you set up webhooks, a row named shopify_webhook appears here too, with a message per delivery. That is where you confirm they are working — see Get orders in seconds.
Orders in database — the most useful block
Three tiles that compare Shopdeck against Shopify directly.
- Orders today · Shopify — counted at Shopify, live, not from Shopdeck’s copy.
- Orders today · database — what Shopdeck has.
- Total number of orders — everything ever synced.
When the first two match, your figures are complete and you can stop worrying. When Shopdeck has fewer, press Refresh; if the gap survives that, Shopify is not reporting the order in this window — usually a different creation date.
When Shopdeck has more, that is normal around midnight and after a cancellation: Shopify stops counting an order while Shopdeck still does. Refreshing will not change it; the next full sync will.
Permissions of your Shopify app
A table of every permission Shopdeck asked for, whether Shopify granted it, and what it is used for. This is the fastest way to find out why a screen is empty.
- Missing next to read_all_orders — that is why long date ranges look empty.
- Missing next to any shopify_payments permission — that is why Cash flow shows an estimate instead of your real payouts.
- Not needed — Shopdeck knows your shop is under 60 days old, so there is no older history to fetch.
To fix a missing one: add it in your Shopify app’s configuration, save, and reinstall the app. Then run a full sync.
Ad attribution and limits
- Unattributed ad spend · 7 days — money spent on campaigns that are killed, archived, or whose name does not contain a product name. It still counts against your total; it just cannot be pinned to a product.
- Meta API usage — how close you are to Meta’s rate limit. Green under 50%, amber to 79%, red above. If it keeps climbing, sync less often.
Common findings
A source has been Stale all day
Why: Nothing has triggered it. The automatic sync runs while somebody has a Profit screen open.
Fix: Press Refresh for a quick pull or Full sync for everything, and watch the row update.
Everything is healthy but the dashboard is empty
Why: The data arrived; your filters or your date range are hiding it.
Fix: Go back to Overview, clear every filter, and set the range to 30 d. The empty-state panel there lists exactly which filters are on.
meta_creatives or tiktok_creatives shows zero rows
Why: The platform returned no ad-level data — usually because there are no active ads, or the token lacks a permission.
Fix: Check the message on that row, then re-test the connection in Setup. The Creatives screen stays empty until those rows arrive.