Why does inventory reporting end up in a spreadsheet?
Because a stock system is built to run transactions, not to trend them. Its reports answer one question, for one person, as of right now. Someone still has to export last quarter, join it to sales, work out what turned and what sat, and reconcile the result against the ledger. The workbook that grows out of that becomes the real reporting system — owned by one person, unversioned, and quietly wrong in ways nobody can audit.
The symptoms are consistent. On-hand value is known but turns are not, so nobody can say which SKUs are funding the business and which are storing cash on a shelf. Margin is quoted at the invoice level and never at the part level, so the loss-makers hide inside a healthy average. Builds are tracked on a whiteboard because the work-order list will not trend. A semantic model fixes this at the root: one set of facts and dimensions, one definition of turns and of margin, and visuals that recompute themselves.
Which numbers should the dashboard carry?
The views that earn their keep for a small manufacturer or wholesaler are the ones that connect stock to money: what you hold, how fast it moves, what it earns, and what is in build. Each is a page in one model rather than a separate export. Here is the map we walk through on the demo call.
Fishbowl dashboard views and the records behind them
| Dashboard view |
What it measures |
Fishbowl records behind it |
| Stock on hand |
Units and inventory value by part, location group and bin, with a committed-versus-available split |
Part and product records, on-hand quantities by location |
| Inventory turns & aging |
Turns, days on hand, and slow-moving or dead stock ranked by the cash sitting in it |
Issue and receipt history measured against on-hand balances |
| Sales & margin by SKU |
Revenue, cost and gross margin per part, customer, channel and rep, trended against prior periods |
Sales orders and order lines with unit cost and price |
| Work orders & builds |
Open, in-progress and finished builds, quantity completed against planned, and cycle time |
Work order and manufacture order records with their statuses and dates |
| BOM cost roll-up |
Component cost per finished good, and planned consumption against what the build actually used |
Bills of materials plus the parts issued to each build |
| Reorder & purchasing |
Parts below reorder point, open purchase orders, vendor lead time and receipt accuracy |
Purchase orders, receipts, vendor records and reorder settings |
| Backorders & fill rate |
Lines shipped complete against what was promised, and the age and value of what is waiting |
Sales order lines compared with shipment records |
The table describes record types, not a schema. Field names and availability vary by Fishbowl edition, version and how your team has configured it, so we confirm the mapping against your own install before quoting the hours. Distributors who want the wider trading picture — fill rate, vendor scorecards and customer health across the whole book — should read our Power BI dashboards for wholesale distributors, and shops that also run a plant floor will find the production side on Power BI for manufacturing and logistics.
How do you connect Power BI to Fishbowl?
Through whichever supported route your install allows. The Fishbowl server stores its data in MySQL, so a read-only database account is usually the cleanest path: Power BI has a documented MySQL database connector (opens in new tab), and a scoped account keeps reporting away from anything that can write. Where your edition or your hosting makes that awkward, the Fishbowl API covers the same ground with more effort per record.
Whatever the route, we do not point a report at the production server and leave it there. We land the extract, run it incrementally so each refresh moves only changed rows, and let the report query a modeled copy — which keeps the warehouse screens responsive while a year of transactions is being read. Refresh then runs inside Power BI's documented limits; Microsoft's data refresh reference (opens in new tab) sets out the cadence available on each licence. Because Fishbowl typically runs on a server inside your own network, an on-premises data gateway (opens in new tab) carries the connection; we install it, document it, and fix breakages out of your banked hours.
Which access path fits your install?
It depends on your edition, how much history you need, and what your administrator is willing to open up. This is the honest comparison behind the scope estimate you approve before any hours are spent.
Access paths from Fishbowl into Power BI and what each is best at
| Access path |
Best for |
Tradeoff |
| Read-only MySQL account |
Server installs on your own network; full history, incremental loads |
Needs database credentials from your administrator and a gateway |
| Fishbowl API |
Editions or hosting arrangements where direct database access is not offered |
More work per record, and narrower coverage than the database |
| Staged copy in SQL Server |
Large transaction volumes, or joining Fishbowl to other systems |
Adds a database to run — worth it once history gets long |
| Scheduled report exports |
Small, stable extracts and quick proofs of concept |
Stays semi-manual; does not scale to years of transactions |
| Accounting system alongside |
Financial statements, AR and AP sitting next to the unit detail |
Ledger only — no part-level stock or build detail on its own |
Where does QuickBooks fit alongside it?
Fishbowl holds the unit-level truth and the accounting system holds the ledger, and the two answer different questions. Reporting from either alone leaves a gap: the stock system cannot produce a P&L, and the ledger cannot tell you which SKU is turning. Modeling them together closes it.
We align the item, customer and vendor keys across both, so gross margin by SKU and the income statement are read from one refreshed model rather than two exports reconciled by hand. Teams that want the ledger side built out first should start with our QuickBooks Power BI dashboard build; if your books run on Xero instead of QuickBooks, the same pattern applies with a different source. Either way, the inventory model stands on its own and the finance layer clips onto it.
Who is this for, and what does it cost?
Small and mid-sized manufacturers, assemblers, wholesalers and distributors running Fishbowl — usually with an owner, controller or operations manager who is tired of rebuilding the same workbook. You buy prepaid Flex hours that never expire: Starter $2,500, Growth $4,600 or Power $8,000, with rates from $100/hour on the largest block.
Most tasks ship in 3–5 business days once you approve the scope estimate; a first full inventory build is larger and gets a clear timeline up front. The usual pattern is a Growth or Power block for the connection, the model and the first pages — that work is front-loaded — then the remaining hours spent on extra views, DAX changes and refresh care. There is no project minimum and no retainer: you send a request, we reply with a scope and the hours it needs, and hours deduct only for work you approve. The mechanics are laid out on how prepaid Flex hours work.
What do you own when we finish?
Everything. The Power BI file, the semantic model and DAX, the extraction logic, the refresh schedule and the service account all live in your tenant and on your server. There is no black box, no licence to us and no lock-in — if you never send another request, the dashboards keep running.
We publish to your workspace, document the access route and the records we read, and walk your team through the model so someone internal can maintain it. Most clients then keep a few banked hours for what follows: a page for a second warehouse, a measure that has to track a changed costing method, or a refresh that broke when credentials rotated. That is post-launch support without a retainer — the same hours, spent when you need them.