Skip to main content
GridOS ships three third-party connectors in-tree. Each is a plugin — loaded at boot, callable as a formula from any cell, configurable per-user through the marketplace Configure modal (or via env vars in OSS). All three follow the same pattern: stdlib urllib (no new Python deps), a 60-second in-process cache so spreadsheet-wide recalcs don’t hammer the upstream API, and #<PLUGIN>_*! sentinel strings on failure so errors surface in-cell rather than crashing the recalc.

Shopify

Formulas:
Credentials:
  • STORE_DOMAIN — your Shopify admin domain, e.g. myshop.myshopify.com. No scheme, no trailing slash.
  • ADMIN_TOKEN — a private-app Admin API access token (shpat_…). Needs at minimum the read_orders and read_products scopes.
Set them in the marketplace Configure modal (SaaS) or as SHOPIFY_STORE_DOMAIN / SHOPIFY_ADMIN_TOKEN env vars (OSS).

Stripe

Formulas:
MRR normalization: the plugin walks every active subscription item and normalizes its recurring interval into months (day → 1/30, week → 7/30, month → 1, year → 12), so a mix of monthly, annual, and weekly plans sums to a meaningful monthly number. Amounts are converted from Stripe’s cents to dollars in the return value. Credentials:
  • SECRET_KEYsk_live_… or sk_test_… from Stripe Dashboard → Developers → API keys. For safety, use a restricted key with read-only access to Charges, Customers, and Subscriptions rather than your primary secret key.

GitHub

Formulas:
The repo argument accepts "user/repo" or a pasted GitHub URL like "https://github.com/user/repo". Credentials (optional):
  • TOKEN — optional personal access token. Without one you get GitHub’s anonymous 60 req/hr limit on public repos; with one you get 5000 req/hr and can read private repos you have access to.

Error sentinels

All three connectors return sentinel strings on failure so the error is visible in-cell:

Caveats

  • Operator-scoped env vars in SaaS — if you set SHOPIFY_ADMIN_TOKEN on the Render service in SaaS mode, every user queries your Shopify store. That’s the OSS fallback behavior bleeding through. For a multi-tenant deploy, don’t set plugin credentials in the server env; let each user configure their own via the marketplace Configure modal.
  • Per-user quotas live upstream — the 60 req/hr GitHub anon limit, Stripe’s 100 req/sec cap, and Shopify’s leaky-bucket rate limit are all on the upstream. The 60s cache helps a ton but a workbook that uses the same formula in 100 cells will still issue one upstream request per formula per 60s window.