Power Tables
1. What it is
Power Tables lets you create typed data tables that scale to millions of rows. Each table you create is a real database table with defined column types, so sorting, filtering, and reporting run at database speed rather than in the browser. You can import data from CSV or Excel files (by hand or on a nightly schedule), set up automations that fire on row changes or on a schedule, let people count stock from a phone with counter columns, and connect tables to Live Boards for dashboards and signage.
- Enablement: Power Tables is a pay-as-you-go app billed per 1,000 rows stored. An admin enables it from the Apps Marketplace — no separate licence decision is required.
- Vocabulary: one entry in a table is a row. (Some databases call it a “record”; Power Tables consistently says row, and so does this article.)
- What it is not: Power Tables is the data layer. It does not chart or visualize data on its own — that is Live Boards’ job. A saved view in Power Tables defines which rows and columns to show; a Live Board binds to that view to render tiles, gauges, and leaderboards. It is also not a spreadsheet — there are no formulas and no cell-by-cell editing in the grid; that is AI Sheets’ job.
- Mini Apps are built elsewhere: a Mini App (Inventory, a visitor log, a custom tracker with its own name, icon, and sidebar entry) is authored in App Builder, not here. Power Tables is the substrate underneath it. See “Mini Apps” in Key Concepts below.
2. Standing it up
- Go to Admin → Apps Marketplace, find Power Tables, and enable it.
- Open Power Tables → Tables. Create your first table — give it a name, then add typed columns (Text, Number, Date, Currency, Select, and others). You can also use Create with AI: describe what you want to track and AI proposes columns for you to review before creating.
- Grant access. By default every user who can reach the app can see every table. To restrict a table to specific people or groups, open the table’s Sharing page and switch the access mode to Restricted, then add grants. Grant levels are Viewer (read rows), Contributor (also add and edit rows), and Manager (also change columns, settings, and sharing).
- Confirm it worked: your users should see Power Tables in the app launcher and be able to open the tables they have access to. On mobile, employees get a read-and-count surface at /m/power-tables — table cards and searchable row cards, plus − / + steppers on any counter column. Adding rows, importing, and exporting stay on desktop.
3. Key Concepts (How It Works)
A few of these words get used interchangeably in conversation and mean different things in the product. This section is the disambiguation.
Table vs. view vs. board
- A table is the data — a real database table with typed columns, holding every row.
- A view is a named slice of one table: filters, sort order, and which columns are visible. It stores no rows of its own. Every table starts with an “All rows” view, and you author more from the grid.
- A board is a display — a leaderboard, stat tile, gauge, or grid — and it lives in the Live Boards app, not here. A board binds to a view, never to a raw table, so the view is where you decide exactly which rows and ordering the board reflects. Refine the view and every board on it updates.
Shared views vs. personal views
- Shared views belong to the table and are visible to everyone who can see it.
- Personal views belong to one user and are visible only to them.
The difference matters twice: only shared views can feed a Live Board, and only shared views can be used as the row selector for a scheduled automation rule. If a board reports “source unavailable,” a personal view is a common cause. The two also draw on separate pools — shared views are a configurable quota, personal views have a fixed per-user cap.
Tables and columns
A table has a name, a description, and a set of typed columns. Each column has a type that determines what values it accepts and which filter operators are available. The twelve column types are: Text, Long text, Number, Currency, Boolean, Date, Date/time, Select (dropdown), Email, URL, User (a reference to an employee), and Attachment (a file on a row). An admin chooses one column as the display column — the value from that column names each row wherever it is referenced (notifications, boards). If none is chosen, the first text column is used automatically.
A column’s type is fixed once created; its name is not. Renaming a column is instant at any table size, because everything in the product references columns by ID rather than by name.
Counter columns are a behaviour flag, not a column type
A counter column is not a thirteenth type. It is an opt-in setting on an existing Number column (“Show − / + steppers for quick counting” on the column form). Ticking it changes only how the value is entered:
- The desktop grid, the row drawer, and the mobile card render − / + buttons instead of a typed field, for anyone who can write rows on that table. (Viewers see the plain number.) The mobile steppers work without JavaScript.
- A tap sends the change, not the answer. The server takes a lock on the row and applies
new = max(0, current + delta). So if a shelf holds 12 and two people each tap − at the same moment, the result is 10 — never 11. This is why counting from several phones at once is safe. - Counts floor at zero; you cannot drive a counter negative.
- Because a tap is a delta, counter adjustments deliberately carry no “someone else changed this” conflict check — deltas compose, so there is nothing to conflict over. Typing an absolute value in the drawer still gets the normal check.
- Each adjustment can carry a short change note (“used in OR 2”), up to 500 characters.
Untick the flag and the same column goes back to being an ordinary number field. Nothing about the stored data changes.
Relative date windows
Date and Date/time filters can be written as a window rather than a fixed value. Eight operators are available: today, yesterday, this week, this month, this quarter, this year, last N days, and next N days. Both ends of the window are recomputed on the server every time the filter runs, so a view saved as “expiring in the next 30 days” keeps meaning that instead of freezing to the day it was saved. The same vocabulary drives Live Boards periods, view-watch alerts, and the AI agent (the agent covers all but next N days).
Access mode vs. grant
These are two different controls and both are needed to restrict a table.
- The access mode is the table’s posture: Everyone (the default — anyone with app access can open it) or Restricted.
- A grant names one person or one recipient group and gives them Viewer, Contributor, or Manager rights on that table, with an optional expiry.
Grants only take effect on a Restricted table. On an Everyone table they are inert — everyone can already see it. A grant can raise a plain member to Contributor or Manager on one table without changing their app-wide role, and admins always have full access regardless of grants.
Archive vs. delete
Nothing in Power Tables is deleted the moment you press the button.
- Archiving a table hides it immediately from every surface — the table list, Live Boards, the API, and mobile — and starts a grace period, after which it is permanently purged. A warning goes out before the purge. Restoring counts against your table quota, so you need room under the limit.
- Deleting rows (single, bulk, or the clear step of a replace-mode import) sends them to a recovery bin, where an admin can restore a whole batch. A restored row is re-inserted through the normal write path, so it is a new row that inherits current column rules.
- Archiving a column is refused outright while something depends on it — see below.
Exact retention windows are in the FAQ.
Columns in use cannot be archived out from under what depends on them
If you try to archive a column that an enabled automation rule references, that an active Live Board renders as its entity or score column, or that a bound Form maps to (including as its match column), Power Tables refuses and names each consumer in the message, so you know exactly what to edit first. Renaming that same column is always safe.
Automations
Rules that fire actions when something happens. Two trigger families exist: row events (a row is created, a row is updated, a named field changes, a row is deleted) and schedules (daily, weekly, or every N minutes). A scheduled rule binds to a shared view whose filters select the rows it acts on. Actions include updating fields, notifying a user, sending an external email, requesting approval, creating a task, calling a webhook, locking a row, archiving a row, deleting a row, and three AI actions (fill a column, summary digest, anomaly alert). Rules that fail five consecutive times pause themselves automatically and notify their owner.
Forms → table binding
A Forms template can point at a Power Tables table, so a submission becomes a typed row. The binding lives on the form template, and it has two modes:
- Append (the default) — every submission adds a new row. Ingest is idempotent, so a form that passes through several completed states still produces exactly one row, and editing a submission later does not rewrite the row it created.
- Update (stock-take semantics) — the binding names a match column. The submission’s answer for that column finds the existing row, and every other mapped answer is written onto it. “How many are left?” updates the master item instead of appending a log line. If nothing matches, the binding decides whether to create a row or record a visible skip; if two rows match, it stops rather than guess.
This is the recommended capture path for frontline users: Forms already has a mobile surface, validation, and an audience model, so a form is a narrow door onto a table.
Barcode scanning
Any Text column can be marked “Scan a barcode or QR code into this field.” On a phone, the row form then offers a Scan button that reads the code with the camera and drops the value into the field, with typed entry always available as a fallback. Supported symbologies: QR, Code 128, Code 39, EAN-13, EAN-8, and UPC-A.
Quotas vs. the billing meter
These are unrelated, and confusing them leads to the wrong fix.
- Quotas are capacity guardrails on shared infrastructure — how many tables, rows, columns, indexes, shared views, and automation rules you may have. They cost nothing. Most can be raised by an admin in Settings up to a self-serve ceiling, and beyond that by MangoApps support.
- The billing meter is what you pay for: rows stored, counted nightly across your active tables and charged per 1,000 rows per year. Archived tables and MangoApps sample data are not counted. There is no per-seat charge and no monthly floor.
So raising a quota does not raise your bill, and lowering one does not lower it. Storing fewer rows is the only thing that changes what you pay.
Mini Apps
A Mini App — Inventory, a visitor log, a custom tracker with its own name, icon, and place in the sidebar — is created in App Builder, not in Power Tables. An admin describes what they need in plain language and gets a real app at its own address. Power Tables is the substrate underneath: the mini app’s data is a Power Table, its tabs are saved views, its behaviour is automation rules, and its dashboard is a Live Board.
That layering is what lets a mini app carry its own permissions — a frontline user can be given one narrow door (“report a count for this item”) without being able to browse or edit the table behind it. Mini app rows bill on the same Power Tables row meter; there is no second charge.
Live Boards
Boards bind to a Power Tables shared saved view to render tiles, leaderboards, gauges, and grids on dashboards and Digital Signage. A board reads a view, never a raw table, so the view’s filters control what the board shows.
4. Running it
Creating and populating a table
- Go to Power Tables → Tables and click New Table.
- Name the table, add columns, and choose types. You can set validation rules per column (required, min/max for numbers and dates, a regex pattern for text). While adding a column you can also tick Show − / + steppers for quick counting on a Number column, or Scan a barcode or QR code into this field on a Text column.
- Add rows manually from the table grid, or import from CSV or Excel. During import you map file columns to table columns; the app remembers the mapping for future imports.
Counting stock
- Edit the Number column that holds the quantity and tick Show − / + steppers for quick counting.
- That column now shows − / + buttons in the desktop grid, in the row drawer, and on a phone at /m/power-tables. Tapping either one applies the change on the server, so several people can count the same shelf at once without overwriting each other, and the value never goes below zero.
- In the row drawer, type a short note beside the stepper before tapping (“used in OR 2”) to record why the count moved. Notes are capped at 500 characters.
- Review those notes in the row’s own History panel — open the row and expand History. Notes are attached to the individual change entry there; the table-wide Activity log lists who changed what, but does not show the note text.
Binding a Form to a table
- Open the table’s Setup page and choose Feed from a Form, then pick a form template.
- Map each form field to a table column.
- Pick the mode. Add a new row per submission is the default. Update the matching row turns the form into a stock-take: choose the match column, and each submission finds that row and updates the other mapped answers instead of appending.
- The binding’s health — including the reason for any submission that did not land — shows on the table’s Setup page.
Importing data on a schedule
- Open a table’s Setup page and create an Import schedule.
- Provide the source. A public HTTPS URL needs no setup at all. A protected HTTPS endpoint or an SFTP server binds to a connection an admin configures once at Admin → Integrations.
- Choose the mode: Replace (clears existing rows first — the source is the system of record) or Append (adds rows each run).
- Enable the schedule. It runs nightly, and a Run now button triggers it on demand. Status and errors appear on the table page and on the Analytics page.
Exporting data on a schedule
- On the table’s Setup page, create an Export schedule.
- Select an SFTP connection (configured under Admin → Integrations) and a remote path. Scheduled exports are SFTP only — an export has to push to a credentialed destination, so there is no HTTPS option here even though scheduled imports have one.
- Choose the format: CSV or XLSX.
- Enable the schedule. Each run writes the table’s current rows to the destination.
Archiving a column
Archiving a column is refused while an enabled automation rule, an active Live Board, or a bound Form still depends on it. The refusal message names each one — edit or remove those first, then archive. Renaming the column instead is always safe and takes effect immediately.
Setting up automations
- Open a table and go to the Automations tab.
- Create a rule: pick a trigger (row event or schedule), add conditions, then add actions.
- For a scheduled rule, bind it to a shared view — the view’s filters select which rows the rule acts on. The view must not use personal filters (the “@me” sentinel never matches for a scheduled run).
Recovering deleted rows
When rows are deleted, they are held in a recovery bin for 30 days. Open the table’s Deleted rows page to see batches grouped by the action that deleted them (single delete, bulk delete, or import replace). Restore a batch to re-insert the rows as new rows.
Reviewing activity
Two different surfaces answer two different questions.
- The row’s History panel (open a row, expand History) is the field-by-field trail for that one row: which column changed, old value to new, who did it — or “Automation · rule name” when a rule did — and the change note on any counter adjustment. This is the only place note text is shown.
- The table’s Activity log is the table-wide feed of who created, updated, or deleted rows.
Imports and bulk inserts are deliberately not logged row by row; the import task record is the audit trail for those.
The app-level Analytics page shows cross-table activity, schedule health, automation health, quota usage, and inventory flags (empty tables, tables with no writes in 30 days, archived tables awaiting purge).
5. Settings
All settings are at Power Tables → Settings (admin only). There are ten in total: the six limits below, plus assignment notifications, the AI agent switch, Create-with-AI, and the default currency.
Limits
Each limit shows current usage and a utilization bar. A limit cannot be set below what is already in use.
| Setting | Default | What it changes |
|---|---|---|
| Max tables | 5 | How many active tables the business can have |
| Max rows per table | 1,000,000 | Row cap per table — import and manual entry both check this |
| Max columns per table | 25 | Active columns per table |
| Max indexed columns per table | 4 | Columns with a database index for faster filtering |
| Max shared views per table | 25 | Shared saved views per table (personal views have a separate per-user cap) |
| Max automation rules per table | 25 | Automation rules per table |
Limits can be raised up to a self-serve ceiling. Past that ceiling, contact MangoApps support. If MangoApps staff have raised a limit for your account, the settings page shows a note. Personal saved views are bounded separately by a fixed per-user cap that is not listed here and cannot be raised. Exact defaults, ceilings, and the personal-view cap are in the FAQ.
Raising a limit does not change your bill — see “Quotas vs. the billing meter” above.
Notifications
| Setting | Default | What it changes |
|---|---|---|
| Tell people when a row is assigned to them | On | Sends an Inbox item — “Actor assigned you row in table” — when a User column names someone on a single-row write. Bulk paths (imports, bulk update, sample data) stay silent regardless of this setting. |
AI
| Setting | Default | What it changes |
|---|---|---|
| Enable the Power Tables AI agent in Ask AI | Off | Lets Ask AI answer questions about your tables and create tables, views, and indexes on an admin’s behalf with confirmation. Off by default because the agent both reads every row of every table and carries write tools. |
| Enable Create-with-AI for new tables | On | Adds a “Create with AI” panel to the New Table drawer — describe what to track and AI proposes typed columns. Only your typed description leaves the tenant; row data never does. |
Currency
| Setting | Default | What it changes |
|---|---|---|
| Default currency for money columns | USD | The currency unit shown on Currency columns that don’t declare their own — appears in the grid, row form, and on Live Boards. Individual columns can override this; stored amounts are never converted. |
Sample data
The settings page also offers Load Sample Data and Remove Sample Data. Sample data creates several tables with rows, saved views, Live Boards, access grants, schedules, and view alerts so every surface has something to show. Sample import and export schedules are seeded paused — nothing runs on its own.
6. More help
- Power Tables FAQ — specific setup and operating questions, and the exact numbers: file size limits, quota ceilings, retention windows, and pricing.
- Live Boards Overview — building the leaderboards, tiles, and gauges that bind to your saved views.
- Forms Overview — the capture surface to bind to a table.
- App Builder Overview — where Mini Apps are actually created.
- Ask AI — the assistant answers questions about Power Tables from these articles.