Plan limits and monitoring
Both Flexweg and Firebase have plan limits. Stay under them or pay; either way, monitor them so you don't get surprised mid-publish.
Flexweg limits
Flexweg's pricing tiers control:
- Storage — total bytes across all files in your site
- Bandwidth — bytes served per month (CDN egress)
- API requests — calls to the Files API per month
The exact numbers depend on your Flexweg plan. Check your Flexweg dashboard for current quotas.
Where storage gets used
A typical Flexweg CMS site's storage breakdown:
| Category | Per item | Quick math (1 000 posts) |
|---|---|---|
| HTML pages | 5-50 KB | 10-50 MB |
| Images | 50-500 KB per variant | 500 MB - 5 GB (varies wildly) |
| CSS / JS theme assets | 10-50 KB | One-time cost |
| Sitemaps + RSS + search index | 10 KB - 5 MB | One-time cost |
menu.json + posts.json | 5-20 KB | One-time cost |
media/ originals (none — discarded) | — | — |
Images dominate. A site with 1 000 posts each having one hero image (at 4 variants per image) is ~2-5 GB. Plan accordingly.
Where bandwidth gets used
Public visitors hitting your site download:
- HTML pages (per page view)
- CSS + theme JS (per session, after first visit cached)
- Images displayed on viewed pages
- Search index (when a visitor opens the search modal)
Most sites' bandwidth pattern is dominated by images on high-traffic pages. CDN cache hits on Flexweg's edge reduce repeated bandwidth — first visit pays full size, subsequent visits hit the cache.
Where API requests get used
Admin actions:
- Each Publish — 1 upload + N cascade uploads (home, category archives, sitemaps, RSS, search index, …) — typically 5-20 API calls per publish
- Each Theme switch — N uploads for theme assets + (N posts × cascade) uploads if you regenerate
- Each Image upload — 1 upload per variant (4-6 per image)
- Each Sync theme assets — 1 upload per CSS / JS file × number of themes
- Each
getStorageLimitscheck — 1 API call
A site doing ~10 publishes per day burns ~150 API calls per day; ~5 000/month. Within most plans' free quotas.
Firebase limits
Firestore + Firebase Auth have their own quotas:
Firestore reads / writes
Free tier ("Spark"): 50 000 reads + 20 000 writes per day. Beyond that, Blaze (pay-as-you-go) at fractions of a cent per operation.
A typical Flexweg CMS site uses:
- Reads on admin load — ~30-100 docs (settings, recent posts, terms)
- Reads on each list-view scroll — 0 (in
globalmode, all in memory) or 20 docs per page (inpaginatedmode) - Writes on each publish — 1 (the post) + some cascade writes (e.g.
lastPublishedHashupdates)
Most single-admin sites stay under the free tier. Multi-admin or content-heavy sites should switch to Blaze.
Firestore storage
Free tier: 1 GB. Most CMS sites use much less (50-500 MB even for 5 000+ posts, since posts store Markdown not images).
Firebase Auth users
Free tier: 50 000 MAU (monthly active users). For a CMS, MAU is just the admin team — usually 1-10. Negligible.
Monitoring
Flexweg storage card
The flexweg-metrics MU plugin contributes a Storage card to the admin dashboard:
- Bar showing used / plan limit in MB
- Progress turns amber at 70%, red at 90%
- Upgrade button appears at ≥ 80%, links to your Flexweg billing page
- Refresh button for manual re-check
Always-visible. The first thing you see on dashboard load.
Firestore document count card
Same plugin's Firestore card shows document counts per collection:
- Posts (online vs draft)
- Pages
- Terms
- Media
- Users
Useful for spotting runaway growth (e.g. a stale media library, accumulated drafts).
Firebase Console
For deeper analysis:
- Firestore → Usage tab — daily reads / writes / storage trend
- Authentication → Users — actual user count, MFA status
Flexweg dashboard
Your Flexweg dashboard's monitoring tab — bandwidth, API requests, storage, all per-day.
When you hit a limit
Flexweg storage full
- Symptom: 413 errors mid-publish; partial state on the public site
- Recovery: upgrade your Flexweg plan (most pragmatic) OR delete unused media
Firestore read quota exceeded
- Symptom: admin shows generic Firestore errors; live subscriptions stall
- Recovery: switch to Blaze (most pragmatic; usually < $5/month for moderate sites) OR rate-limit admin operations
Firestore write quota exceeded
- Symptom: post saves fail with Firestore errors
- Recovery: same as reads — Blaze.
Firestore storage full
- Symptom: writes fail with
RESOURCE_EXHAUSTED - Recovery: clean up old data OR upgrade. Posts + terms are tiny; media metadata is small. Most sites won't hit this.
Cleanup tips
Delete drafts you'll never publish
The PostsListPage's filter lets you find every draft. Bulk-delete obsolete ones.
Delete unused media
The Media library's filter for "unused" finds media with no incoming references. Bulk-delete safely.
Check previousPublishedPaths
Posts whose deletion failed on a previous publish accumulate paths in previousPublishedPaths. Most clean up automatically on the next publish; persistent failures might indicate a Flexweg or rules issue.
Sitemap files for empty years
The flexweg-sitemaps plugin auto-deletes empty year files. If you see leftover ones (e.g. sitemap-2018.xml for a year with no online posts), run Themes → Regenerate site → Sitemaps to clean up.
Continue
- Operations: troubleshooting
- Updating the admin
- Settings → Performance — paginated mode for large sites