Skip to content

Storage management ​

Every photo a member uploads, every sermon audio file, every PDF receipt, every PWA icon β€” they all live in Supabase Storage, and each org has a plan-tier limit on the total. The Storage tab at Settings β†’ Storage lets an admin see exactly what's stored, where, and clean up anything no longer needed.

This is admin-only, and it's where you go when the "Storage near limit" warning starts appearing in the dashboard.

Storage explorer

Open the storage tab ​

From the sidebar, click Settings, then scroll the tabs to Storage. The page has two parts:

  1. A Storage Usage overview card at the top.
  2. A File browser below, broken out per bucket.

Storage overview ​

The overview card shows:

  • Total used vs your plan limit (e.g. "2.4 GB of 10 GB used").
  • Total files across all buckets.
  • A progress bar that turns yellow at 80% and red at 90%.

Plan limits as of this writing:

PlanStorage cap
Starter1 GB
Growth10 GB
Network50 GB
Unlimited250 GB

If you blow past the limit, new uploads fail with a storage_limit_exceeded error. Existing files keep serving β€” we don't delete anything automatically.

Buckets ​

GCM splits storage into purpose-named buckets so you can see at a glance where space is going. Each bucket is shown as a clickable card with file count and size:

BucketWhat goes here
member-photosProfile photos uploaded by members or staff.
pwa-iconsThe 192/512 icons you set in PWA setup.
brandingLogo, favicon, and any other image set in Branding.
podcast-mediaSermon audio + cover art for podcast episodes.
website-mediaImages and files used in the Website Builder.
giving-receiptsGenerated tax statement PDFs.
attendance-photosCheck-in photos (if photo check-in is enabled).
workflow-attachmentsFiles attached to workflow runs.
message-attachmentsFiles attached to outgoing messages.
forms-uploadsFiles members submit via Forms.

Click any bucket to drill in.

Browsing a bucket ​

The file browser shows folders and files in the selected bucket. Org-scoped buckets always start with your org ID as the top-level folder, so what you see is automatically scoped β€” no risk of seeing another org's files.

Each row shows:

  • Filename
  • Size (formatted: KB / MB / GB)
  • Type (image, PDF, audio, video, document)
  • Uploaded (relative time β€” "3 days ago", "5 minutes ago")
  • A Download button and a Delete button.

Click a folder name to drill in; click the back arrow to go up. The breadcrumb at the top shows where you are.

TIP

The browser lists files in batches of 100. If a bucket has more than that, the bottom of the list shows Load more. For very large buckets (10,000+ files), the browser can take a moment to render β€” be patient.

Downloading a file ​

Click the download icon next to any file. The browser fetches a signed download URL (valid for 60 seconds) and triggers a download. For public buckets, the URL is just the public CDN link.

This is useful for:

  • Pulling sermon audio to re-edit it.
  • Downloading a generated tax statement to email manually.
  • Backing up member photos before a bulk delete.

Deleting files ​

Click the trash icon to delete a file. A confirmation dialog asks you to confirm β€” deletion is permanent (we don't soft-delete storage files; they're really gone after this click).

Watch out for the special cases:

  • Member photos β€” deleting from storage doesn't remove the photo reference from members. The member's record still claims a photo but the URL 404s. To do this cleanly, edit the member and clear their photo from the member edit screen, which removes both.
  • Branding logo / PWA icon β€” same problem. Update the setting first via Settings β†’ Branding, then delete the old file here.
  • Tax statement PDFs β€” these are generated on demand by the giving module. Delete them freely; if a donor requests it again, GCM re-generates.

Bulk delete ​

The current explorer doesn't support multi-select bulk delete. For large clean-ups, contact support β€” the platform team can run a targeted delete via SQL based on criteria (e.g. "all member photos for inactive members updated more than 2 years ago"). This is the safer path when deleting hundreds of files at once.

Public vs private buckets ​

Some buckets are public (their files are reachable by URL by anyone with the link). Others are private and require a signed URL.

BucketVisibility
member-photospublic
branding, pwa-icons, website-media, podcast-mediapublic
giving-receiptsprivate (signed URLs only)
attendance-photosprivate
forms-uploadsprivate
workflow-attachmentsprivate
message-attachmentsprivate

Public buckets are intentionally public β€” they're fronted by Supabase's CDN, which means images load fast even on slow connections. The trade-off is that anyone with a URL can fetch the file, so don't put PII or financial documents in public buckets. The browser tags each bucket card with its visibility so you know what you're looking at.

What about quotas per bucket? ​

Plan limits apply to total storage across all buckets β€” there's no per-bucket cap. So if you're using 9.5 GB of your 10 GB Growth limit, it doesn't matter which buckets that's spread across; you have 0.5 GB left across the org regardless.

The browser still shows per-bucket totals because they help you decide where to clean up. If 7 GB of your 9.5 is in podcast-media, your audio archive is the obvious target.

What's saved where ​

Storage itself is Supabase Storage (S3-compatible), keyed by bucket + path. The Storage Explorer UI calls a Supabase RPC (org_storage_stats) that aggregates file counts and sizes per bucket, scoped to your org's path prefix. RLS on storage.objects ensures you only see files under <org_id>/... paths.

Common pitfalls ​

"I deleted a member's photo here but it still shows on their profile." Hard-reload to clear the browser cache. If the photo still appears, the member record still has the path stored β€” edit the member, clear the photo there too, and save.

"My storage usage looks higher than the file sizes add up to." The stats include thumbnail variants and versioned copies. Supabase generates a thumbnail for every image automatically, which counts against your quota. The file browser shows you only the originals; the totals include all the variants.

"I deleted everything in a bucket but the storage usage didn't drop." The stats refresh on a 5-minute cache. Wait a few minutes or click the refresh button in the overview card.

"Files I didn't upload appear in workflow-attachments." Workflows attach files automatically when nodes complete (e.g. a generated PDF, a captured screenshot). These accumulate; clean them up periodically.

Next steps ​