Plugin formulas return sentinel strings starting withDocumentation Index
Fetch the complete documentation index at: https://gridos.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
# when something goes wrong, so the failure is visible in the cell rather than crashing the entire recalc. This page maps sentinels to their root causes.
#NOT_INSTALLED: enable the 'slug' plugin in File > Marketplace
The plugin isn’t installed for your account. Open the marketplace (gear → grid icon) and click Install on the plugin’s card.
Why you see this — once you’ve toggled anything in the marketplace, the install gate activates. Built-in formulas (SUM, MAX, IF, …) are never gated; only plugin-sourced ones. A brand-new user who has never touched the marketplace is treated as “no preferences yet” and sees every loaded plugin’s formulas work — the gate activates the first time you toggle.
#SHOPIFY_AUTH! / #STRIPE_AUTH! / #GITHUB_AUTH!
Credentials are missing or rejected.
- Marketplace → Configure on the plugin’s card → paste the required keys.
- If you’re in OSS mode, check your
.envhas the env vars the plugin expects (SHOPIFY_ADMIN_TOKEN,STRIPE_SECRET_KEY,GITHUB_TOKEN) and that you’ve restarted the server after editing.env. - For Shopify specifically, the admin token must have the
read_ordersandread_productsscopes on the private app it came from.
#*_OFFLINE!
Network is unreachable. The plugin can’t hit the upstream API. Check your server’s outbound network connectivity (on Render: the service should have outbound by default, but a misconfigured private network could break it).
#SHOPIFY_429! / #STRIPE_429! / #GITHUB_RATE_LIMIT!
You’ve hit the upstream’s rate limit. The 60s in-process cache each plugin uses usually prevents this but a workbook that has the same formula in hundreds of cells, or a tab that recalcs constantly, can still hit it.
- Shopify — leaky-bucket, 40 req/sec burst with a 2 req/sec steady-state. Wait a minute and retry.
- Stripe — 100 req/sec per account. Very unlikely to hit in a normal dashboard.
- GitHub — 60 req/hr anonymous, 5000 req/hr with a PAT. Setting
TOKENvia Configure lifts this 83x.
#GITHUB_BAD_REPO! / #GITHUB_NOT_FOUND!
The user/repo string didn’t parse, or the repo doesn’t exist (or isn’t accessible without a token). The parser accepts "user/repo" or a pasted GitHub URL ("https://github.com/user/repo"), but not other shapes. Common mistakes:
- Trailing slash:
"user/repo/"— gets trimmed fine. - Empty part:
"user/"— fails with#GITHUB_BAD_REPO!. - Private repo with no token set:
#GITHUB_NOT_FOUND!even though it exists. Set aTOKENwith access.
#VALUE! or #PARSE_ERROR! on a plugin formula
These are the kernel’s sentinels, not the plugin’s. Usually means you’ve passed the wrong argument type — e.g. a cell reference to a text cell where the formula expects a number. The parser now preserves string-cell values (rather than silently coercing to 0) so the type mismatch surfaces as #VALUE! instead of a wrong number.
Plugin loaded but no formulas appear
CheckGET /plugins — it lists every discovered plugin, what formulas + agents it registered, and any register() errors. If a plugin’s register(kernel) threw, the plugin shows up in the errors array with a traceback, and its formulas never landed in the registry.
Common failures during development:
- Forgot
def register(kernel):— the loader skips plugins without it. - Import-time exception — boot log has
[plugins] ERROR in <slug>: ...lines. - Syntax error in
plugin.py— same place in the boot log.