THE COMPLETE CATALOG

Every feature. No marketing gloss.

Most product pages are highlight reels. This one isn't. It lists every tool we've actually built into Chamberly — including the hidden power-user stuff we don't advertise. What it does. Where to find it. How to use it.

Live inventory209 features cataloged30 categories
Area

Events

9 features

Event creator

Create an event with name, description, dates, times, location, venue, and featured image.

Where
Dashboard › Events › New Event
How
Click 'Create Event', fill the form, assign categories, set status (Draft / Active / Archived), save.

Event editor

Update an event's dates, location, image, categories, and status.

Where
Dashboard › Events › click any row
How
Open the event detail page, change fields, and save. Archive prompts a confirm dialog.

Event search & filters

Filter events by name, status (Draft/Active/Archived), and assigned category.

Where
Dashboard › Events
How
Type in the search box; use the Status and Category dropdowns at the top of the table.

Bulk delete events

Permanently remove many events at once. Cascading deletes are explained in the confirmation dialog.

Where
Dashboard › Events › row checkboxes
How
Check rows, click 'Delete' in the bulk action bar, confirm.

Bulk archive events

Move several events to archived state without deleting data.

Where
Dashboard › Events › row checkboxes
How
Check rows, click 'Archive' in the bulk action bar, confirm.

Event featured image with auto-sync

Hidden gem

Upload a hero image — or point to an external URL with auto-sync so the image updates when the source changes.

Where
Event form › Media & Settings card
How
Drop an image or paste a URL. Toggle auto-sync to refresh on every save.

Event categories

Taxonomy for grouping and filtering events on both dashboard and storefront.

Where
Dashboard › Settings › Event Categories
How
Create categories, assign them on event forms, surface them as chips on the public events page.

Event activity card

Per-event activity panel showing the sponsorships and members currently engaged with the event.

Where
Dashboard › Events › [event] (below the form)
How
Auto-populates with sponsorship counts, member counts, and revenue.

Event status lifecycle

Draft → Active → Archived transitions with state-aware confirmation prompts.

Where
Event form › Status dropdown
How
Change status; the archive transition asks for confirmation because it pulls the event from the public site.

Sponsorships

13 features

Sponsorship creator

Create a sponsorship for an event with pricing, quantity, benefits, and availability.

Where
Dashboard › Sponsorships › New Sponsorship
How
Pick event, name, price, quantity, benefits, and availability status; save.

Sponsorship cloner

Hidden gem

Duplicate a sponsorship into a different event, carrying over price, quantity, and benefits (first-rights and package memberships are intentionally left behind).

Where
Sponsorships row actions › Clone icon
How
Click Clone, select the destination event, click Clone. A draft copy is created so you can tweak before publishing.

Availability statuses

Control sponsorship visibility: Not Yet Available, First Rights, Public, or Sold Out.

Where
Sponsorship form › Availability Status
How
Pick the status; the storefront filters accordingly and respects first-rights windows.

Exposure tier

Optional 1/2/3 tier label that drives sort order, leaderboard weighting, and styling.

Where
Sponsorship form › Exposure Tier
How
Choose a tier (or leave blank) on each sponsorship.

Bulk archive / delete sponsorships

Multi-select to archive or hard-delete many sponsorships at once.

Where
Dashboard › Sponsorships › row checkboxes
How
Check rows, use the bulk action bar.

Sponsorship benefits editor

Add, remove, reorder (drag-and-drop), and inline-edit individual benefits.

Where
Sponsorship form › Benefits section
How
Type a benefit and press Enter; drag the handle to reorder; click an X to remove.

Save benefits as a bundle

Hidden gem

Turn the current sponsorship's benefits into a reusable bundle you can apply to future sponsorships.

Where
Sponsorship form › Benefits › 'Save as bundle' button
How
Click 'Save as bundle', name it, optionally describe it, save.

Apply a benefit bundle

Drop a saved bundle into a sponsorship to populate the benefits list in one click.

Where
Sponsorship form › Benefits › 'Apply bundle' dropdown
How
Click 'Apply bundle', choose one; benefits populate immediately.

Bulk apply benefits across sponsorships

Hidden gem

Push a bundle or specific benefits onto many sponsorships at once. Past sponsorships keep their snapshot; future ones get the new benefits.

Where
Dashboard › Settings › Benefits › 'Bulk apply to sponsorships'
How
Filter sponsorships by event or hand-pick them. Pick a bundle or specific benefits. Apply.

Auto-saved benefit library

Hidden gem

Every benefit you type into a sponsorship is silently saved to a library so it's available the next time you start typing.

Where
Dashboard › Settings › Benefits
How
Use the library to manage, dedupe, or remove the platform's default starter benefits.

Sponsorship slug conflict detection

Hidden gem

Auto-generated URL slug, with prompts if a collision is detected within an event.

Where
Sponsorship form (auto)
How
Slug is derived from the name; edit if the system flags a conflict.

Zero-price confirmation guardrail

Hidden gem

Setting a $0 sponsorship triggers a confirmation dialog so you don't accidentally publish freebies.

Where
Sponsorship form › Price field
How
Enter 0; confirm in the dialog if intentional.

Quantity & reservation breakdown

Real-time view of total / available / reserved-by-first-rights quantity for each sponsorship.

Where
Sponsorship form and Sponsorships table
How
View the inline breakdown — reserved counts come from first-rights allocations.

First Rights

6 features

Assign first-rights holders

Reserve quantity for specific businesses, with optional expiration. The storefront automatically shows reserved sponsorships only to those holders.

Where
Sponsorship form › First-Rights Manager
How
Click 'Add holder', select a business, enter quantity, repeat, save.

Bulk-assign first-rights

Hidden gem

Reassign many businesses in one save instead of editing them one at a time.

Where
Sponsorship form › First-Rights Manager
How
Add multiple holders before saving — they all update atomically.

First-rights remaining-quantity tracker

For each allocation, see how many slots are still claimable vs. already purchased.

Where
Dashboard › My First Rights and reports
How
Open the My First Rights page — remaining = total reserved − already purchased.

First-rights cleanup

Hidden gem

Sweep expired first-rights allocations so quantity returns to the public pool.

Where
Dashboard › Settings › Data
How
Click 'Cleanup expired first-rights'; the operation runs asynchronously and reports counts.

First-rights reminder emails

Automatic reminders sent to holders as their window approaches expiration.

Where
Background (Inngest)
How
Enabled by default; cadence and templates live under Email Automations.

First-rights report

Donut and per-sponsorship table showing claimed, remaining, and expired allocations.

Where
Dashboard › Reports › First Rights
How
Use the date range and event filters to drill in.

Packages

7 features

Package builder

Bundle multiple sponsorships into a single buyable package with bundle or per-item discounts.

Where
Dashboard › Packages › New Package
How
Add items, set quantity per item, apply a package-level discount or per-item override, save.

Package per-item discount override

Hidden gem

Override the package-level discount on individual items (percentage or fixed amount).

Where
Package form › item row › 'Item Discount' checkbox
How
Check the box, pick the type, enter the value. The line shows your override price.

Live package pricing summary

Real-time price math as you add items and adjust discounts.

Where
Package form › right column
How
Watch the summary update — it shows base, discounts, and total at a glance.

Share a package link

Copy a public package URL to clipboard for emailing to a prospect.

Where
Packages table › Share icon
How
Click Share; the URL copies with a confirmation toast.

Assign a package to a business

Hidden gem

Restrict a package to a specific business — it shows in their sponsor portal only.

Where
Package form › Assigned Business
How
Pick a business; the package becomes a private member-only offer.

Send a package to a sponsor

Hidden gem

Email a package offer with a one-click 'Reserve' or 'Add to cart' button directly to a sponsor.

Where
Package detail › Send Package
How
Pick the recipient, customize the message, send.

Add full package to cart

One-click add of every item in a package to the sponsor's cart.

Where
Sponsor account or public package page
How
Click 'Add package to cart' — quantities and discounts carry through.

Coupons

9 features

Coupon code creator

Percentage or fixed-amount discount codes with usage limits and scoping.

Where
Dashboard › Coupons › New Coupon
How
Enter a code, choose discount type/value, set limits, save.

Restrict coupons by event or sponsorship

Limit a coupon to a specific set of events or sponsorships rather than the whole store.

Where
Coupon form › Applicable Events / Applicable Sponsorships
How
Multi-select the events or sponsorships the code applies to.

Coupon usage caps

Set total redemptions and/or per-customer redemption caps.

Where
Coupon form › Usage Limit / Per-User Limit
How
Leave blank for unlimited or enter caps.

Coupon order-amount range

Restrict a coupon to a minimum and/or maximum order subtotal.

Where
Coupon form › Min/Max Order Amount
How
Enter thresholds; invalid carts get a clean error at checkout.

Exclude sale items from coupon

Hidden gem

Prevent a coupon from stacking on already-discounted line items.

Where
Coupon form › 'Exclude sale items'
How
Toggle on; the validator enforces it server-side.

Individual-use enforcement

Hidden gem

Allow only one use of a coupon per customer.

Where
Coupon form › 'Individual use'
How
Toggle on.

Coupon expiration

Auto-deactivate a code after a specific date and time.

Where
Coupon form › Expires At
How
Pick a date; the validator rejects use after expiry.

Bulk deactivate coupons

Hidden gem

Turn off many codes at once without deleting them, so you keep usage history.

Where
Coupons table › multi-select › 'Deactivate'
How
Check rows, click Deactivate in the bulk action bar.

Real-time coupon validator

Server-validates a code at checkout — the client never controls discount math.

Where
Checkout › coupon input
How
Type the code; the cart re-totals instantly with the validated discount.

Orders

10 features

Order detail viewer

Full breakdown: line items, payment mode, representative, status history, notes, refunds.

Where
Dashboard › Orders › click any row
How
Open the order to see everything in one card.

Manual status transitions

Move an order through Pending → Committed → Completed or Cancel.

Where
Order detail › Manage Status
How
Pick a status, confirm. The audit log records every change.

Bulk mark complete / cancel

Move multiple orders to Completed or Cancelled at once.

Where
Orders table › multi-select
How
Check rows, click Mark Completed or Cancel in the bulk action bar.

Stripe refunds

Refund online-paid orders directly back through Stripe with one click.

Where
Order detail › Refund button (shows only for paid orders)
How
Click Refund, confirm. The order status flips to Refunded and the sponsor gets a notification.

Line-item cancellation

Hidden gem

Cancel individual items inside an order without voiding the whole order.

Where
Order detail › line item › Cancel
How
Click Cancel next to an item; eligibility is checked server-side.

Order notes (internal)

Add internal-only notes — visible to staff, not to the sponsor.

Where
Order detail › Order Notes
How
Type into the note input and click Add. Notes are timestamped and attributed.

Reassign representative

Hidden gem

Change which person at a business owns an order, useful after staff turnover.

Where
Order detail › Representative dropdown
How
Pick a new rep and save.

Resend confirmation email

Re-send the order confirmation email to the original buyer.

Where
Order detail › Resend Confirmation Email
How
Click the button. A toast confirms delivery.

QuickBooks order export

Export orders in a QuickBooks-friendly format, optionally filtered by status.

Where
Dashboard › Orders › Export to QuickBooks
How
Filter the list first if needed; click Export to download the formatted file.

Activity log per order

Chronological record of status changes, refunds, notes, and system events.

Where
Order detail › Activity Log
How
Scroll to the log section — every action is timestamped with author.

Members & Businesses

7 features

Business directory

Searchable, paginated list of every business in your chamber.

Where
Dashboard › Members
How
Search by name; click a row to drill into a business profile.

Business profile editor

Edit name, logo, status, tier, contact info, and notes.

Where
Dashboard › Members › [business]
How
Open the business, update fields, save.

Multiple business representatives

A business can have many reps. One is marked primary; each has a role (admin / purchaser / viewer).

Where
Business detail › Representatives tab
How
Add a rep with email, name, and role. Use the Primary checkbox to set the main contact.

Per-cycle business spend

Hidden gem

Aggregated spend for each business in the current dashboard date range.

Where
Members table › Total Spent column
How
Adjust the dashboard date range to retotal.

Business orders tab

All historical orders by a single business, with totals and statuses.

Where
Business detail › Orders tab
How
Click the tab; click any order to drill in.

Bulk business operations

Multi-select to delete or update many businesses at once.

Where
Members table › row checkboxes
How
Check rows, use the bulk action bar.

Member CSV export

Download your entire member list as CSV for outside tools or backup.

Where
Dashboard › Import / Export › Export Members
How
Click Export; CSV downloads in your browser.

Storefront

12 features

Public chamber storefront

Each chamber gets a public site at /{chamberSlug}: hero, featured events, sponsor leaderboard, browse links.

Where
Public — /{chamberSlug}
How
Share the URL with prospective sponsors; design comes from Brand Kit and Event/Storefront Styling.

Events listing page

Browse every active event with category chips and search.

Where
Public — /{chamberSlug}/events
How
Visitors filter by category and click into an event detail page.

Event detail with sponsor purchase flow

Full event page with description, sponsorship cards (Reserve or Add to Cart), and leaderboard.

Where
Public — /{chamberSlug}/{eventSlug}
How
Sponsors click a card to add to cart, quick-reserve, or open the sponsorship detail page.

Sponsorship detail page

Deep page for a single sponsorship with full benefits, availability, and quantity remaining.

Where
Public — /{chamberSlug}/{eventSlug}/{sponsorshipSlug}
How
Direct-linkable from emails, social, or a sponsor pitch.

Sponsorships browse page

Cross-event grid of every active sponsorship with event and category filters.

Where
Public — /{chamberSlug}/sponsorships
How
Filter and sort to find what's available.

Packages public page

Public package detail with bundle pricing and one-click add-to-cart.

Where
Public — /{chamberSlug}/packages/{packageSlug}
How
Linkable from a sponsor email; sponsors purchase the bundle as a single line item.

Products catalog

E-commerce catalog distinct from sponsorships — merch, paid memberships, services.

Where
Public — /{chamberSlug}/products
How
Browse, filter by category, sort by newest / popular / price; click into a product page.

Quick reserve

Hidden gem

Bypass the cart entirely and reserve a sponsorship in one click (reservation mode only).

Where
Storefront sponsorship cards
How
Click 'Reserve' on a sponsorship card; an order is created immediately with quantity 1.

Sponsor leaderboard on storefront

Toggleable on event pages, the storefront home, the sponsor account, the dashboard, or as a standalone page.

Where
Dashboard › Settings › Leaderboard
How
Pick which of the 5 surfaces to show it on, choose scoring rules, save.

Storefront announcement bar

Site-wide banner for time-sensitive notices and promos.

Where
Dashboard › CMS › Widgets › Announcement Bar
How
Compose the message, pick a style (info / warning / promo), schedule on/off dates.

Custom header & footer

Per-chamber header and footer widget editors.

Where
Dashboard › CMS › Widgets › Header / Footer
How
Edit links, social icons, copyright text. Changes apply to every public page.

Accessibility widget

Hidden gem

Optional WCAG accessibility overlay (font sizing, contrast, motion reduction) on the public storefront.

Where
Dashboard › Settings › Accessibility
How
Toggle the widget on; preview on the live storefront.

Sponsor Account

8 features

Sponsor account dashboard

Logged-in sponsor home: business card, leaderboard rank, quick links to orders, first-rights, and team.

Where
Public — /{chamberSlug}/account
How
Sponsors sign in to land here.

Sponsor order history

Paginated orders with status badges, totals, and item summaries (aggregated across all reps of the business).

Where
/{chamberSlug}/account/orders
How
Sponsors filter by status and click into any order.

Self-serve invoice / receipt

Printable order receipt with line items, payment info, and cancellation buttons.

Where
/{chamberSlug}/account/orders/{id}
How
Print or save as PDF from the browser.

Self-serve order cancellation

Hidden gem

Sponsors can cancel an entire order or individual line items where eligibility allows.

Where
/{chamberSlug}/account/orders/{id} › Cancel buttons
How
Eligibility is checked server-side based on payment mode, status, and time since order.

Sponsor first-rights tracker

Live progress on every reserved sponsorship — claimed vs. remaining.

Where
/{chamberSlug}/account/first-rights
How
Click any allocation to add it straight to the cart.

Sponsor team management

Add coworkers from the same business with admin / purchaser / viewer roles. Admin-only.

Where
/{chamberSlug}/account/team
How
Invite by email, pick a role, set who's the primary contact.

Sponsor profile editor

Edit personal contact info, password, and email notification preferences. Locks to read-only during a View As session.

Where
/{chamberSlug}/account/profile
How
Update fields and save.

Sponsor packages page

Hidden gem

Private member-only packages assigned specifically to that business.

Where
/{chamberSlug}/account/packages
How
Click 'Add package to cart' to claim.

Cart & Checkout

6 features

Persistent cart

Cart persists across sessions in localStorage (Zustand store).

Where
/{chamberSlug}/cart
How
Add items from any storefront page; the cart icon keeps a live count.

Stripe checkout (online mode)

Sponsors pay by card via Stripe Checkout. Funds route to the chamber's connected Stripe account.

Where
/{chamberSlug}/checkout
How
Pick 'Pay now', complete card details in the embedded Stripe flow.

Reservation checkout (no payment)

Sponsors claim sponsorships without payment — Chamberly invoices them outside the platform.

Where
/{chamberSlug}/checkout
How
Available when the chamber's payment mode is 'Reservation' or 'Both'. One-click reserve.

Coupon code entry at checkout

Apply a discount code with live validation and total recalculation.

Where
Checkout › coupon input
How
Type the code; total updates instantly. Server validates before order creation.

Server-side cart validation

Hidden gem

Cart contents revalidated server-side before order creation — prevents overselling and price-tampering.

Where
POST /api/cart/validate (invoked silently)
How
Runs automatically at checkout; surfaces clean errors if items went out of stock mid-session.

Order confirmation page

Success screen with order number, print/save receipt link, and next-step CTAs.

Where
/{chamberSlug}/checkout/success
How
Auto-redirected after payment or reservation.

CMS & Content

9 features

Block-based page editor

Build static pages (about, contact, FAQ) from drag-and-drop blocks — hero, CTA, testimonials, FAQ, text, images.

Where
Dashboard › CMS › Pages
How
Pick a template (blank / hero / standard), add blocks, set SEO fields, publish.

Custom homepage takeover

Hidden gem

Mark a CMS page as the homepage and it replaces the default storefront landing layout entirely.

Where
Page settings › 'Is Homepage' toggle
How
Toggle on; the page renders at /{chamberSlug}.

Blog post editor

Rich-text blog posts with featured image, categories, tags, scheduling, drafts, SEO, and auto-computed reading time.

Where
Dashboard › CMS › Blog
How
Click 'New post', write, add metadata, schedule or publish.

Blog categories & tags

Two-level taxonomy with public landing pages per category and tag.

Where
Dashboard › CMS › Blog › Categories / Tags
How
Create, then assign on individual posts.

Media library

Folders, upload management, alt text, and copy-URL for use in any block.

Where
Dashboard › CMS › Media
How
Drag files in, drop into folders, click an asset to copy its URL.

Custom navigation menus

Build header and footer menus with internal pages, external links, and nested groups.

Where
Dashboard › CMS › Menus
How
Add items, drag to reorder/nest, assign to header or footer.

Product catalog editor

Manage standalone products (non-sponsorship): images, variants, categories, stock.

Where
Dashboard › CMS › Products
How
Create products, set prices, assign categories, publish.

Product categories

Taxonomy for organizing the product catalog.

Where
Dashboard › CMS › Products › Categories
How
Create categories, assign products.

Theme editor

Global colors, fonts, and layout primitives applied across CMS pages.

Where
Dashboard › CMS › Theme
How
Adjust tokens; live preview shows the result.

Email

15 features

Email hub

Snapshot of templates, automations, send volume, and shortcuts to compose/test.

Where
Dashboard › Email
How
Open the hub; jump to compose, templates, automations, log, or settings.

Visual block email composer

Drag-and-drop email builder with 15 block types (text, image, button, divider, spacer, etc.).

Where
Dashboard › Email › Compose
How
Add blocks, configure each, preview, send or schedule.

HTML email mode

Hidden gem

Raw HTML editor with live preview for advanced templates.

Where
Compose › toggle HTML mode
How
Paste HTML, preview, send.

Merge tags

Dynamic placeholders like {{first_name}}, {{business_name}}, {{order_total}} for personalization.

Where
Composer › Insert merge tag
How
Pick a tag from the dropdown; it inserts at your cursor.

Targeted recipient picker

Three modes: all members, hand-picked businesses, or by criteria (purchased event X, tier, first-rights status, min spend).

Where
Composer › Recipients panel
How
Pick a mode, configure filters; the live recipient count updates as you go.

Scheduled broadcasts

Queue a campaign for any future date/time (minimum 5-minute lead).

Where
Composer › Schedule for later
How
Toggle 'Schedule', pick date/time, send.

Transactional template editor

Edit the system templates that fire for orders, invitations, password resets, first-rights reminders, etc.

Where
Dashboard › Email › Templates
How
Click a template, edit subject and body (visual or HTML), save.

Reset templates to defaults

Hidden gem

One-click revert of all customized templates back to the platform defaults.

Where
Dashboard › Settings › Data
How
Click 'Reset email templates'; the operation is logged.

Email automations

Trigger-based sends (order placed, event reminders, first-rights expiring soon).

Where
Dashboard › Email › Automations
How
Toggle existing automations on/off; click to edit timing, recipients, content.

Automation recipes gallery

Pre-built automation templates — welcome series, post-purchase, win-back, expiration reminders.

Where
Dashboard › Email › Automations › Recipes
How
Click a recipe, customize delay and targeting, activate.

Email log

Searchable history of every send: status, recipient counts, timestamps, opens, bounces.

Where
Dashboard › Email › Log
How
Browse 25 per page; filter by status.

Custom sender domain

Send from your own domain (e.g. mail.yourchamber.com) instead of the default Chamberly domain.

Where
Dashboard › Email › Settings › Domain
How
Enter your domain, follow the CNAME/SPF/DKIM instructions, verify.

Open & click tracking

Toggle open and click tracking per send type.

Where
Dashboard › Email › Settings
How
Toggle tracking on/off for transactional or marketing sends independently.

Test send

Fire a test version of any template or campaign to yourself before broadcasting.

Where
Dashboard › Email › Test
How
Pick the template, enter a recipient, send.

One-click unsubscribe

Hidden gem

Compliant unsubscribe link in every outbound; preference center is hosted automatically.

Where
Email footer › unsubscribe link
How
Recipients click the link; the platform updates their preferences instantly.

Communications

5 features

Announcements (banners)

Site-wide banners with info / warning / promo styling. Per-surface toggles (storefront, event pages) and dismissibility.

Where
Dashboard › Communications › Announcements
How
Create, configure visibility/dismiss behavior, publish.

Promotions (CTA cards)

Sidebar CTA cards with custom color, button, priority ordering, and sponsor targeting.

Where
Dashboard › Communications › Promotions
How
Create a card, pick a target audience (all / specific / criteria), set priority.

Targeted notifications

In-app notifications to sponsors. Same 3-mode targeting as email (all / specific / criteria).

Where
Dashboard › Communications › Notifications
How
Compose, target, optionally attach a link, send.

Unified notification bell

Single inbox in the header that merges platform→chamber and chamber→sponsor notifications, with unread badge.

Where
Header › bell icon
How
Click to open; tabs separate platform and chamber notifications; mark read individually or all at once.

Criteria targeting (purchases, tier, first-rights, spend)

Hidden gem

Build audience filters across multiple dimensions: purchased event X, exposure tier, first-rights status, or minimum spend.

Where
Anywhere with the targeting panel (email, notifications, promotions)
How
Pick 'By criteria', stack filters, preview the matching audience count.

Reports

8 features

Reports hub

Cards with sparklines, mini-donuts, and top leaderboard, each linking into a full report.

Where
Dashboard › Reports
How
Glance at the cards, click any to drill in.

Revenue report

Monthly trend chart, per-event breakdown, and CSV export.

Where
Dashboard › Reports › Revenue
How
Adjust the date range, browse the table, export.

Event performance report

Per-event fill rate, revenue, and sponsorship counts.

Where
Dashboard › Reports › Events
How
Click any event for a deeper drill-down.

Sponsor summary report

Ranked list of sponsors by spend with scatter plot visualization.

Where
Dashboard › Reports › Sponsors
How
Browse the table; sort by any column.

First-rights utilization report

How much of each first-rights allocation has actually been claimed.

Where
Dashboard › Reports › First Rights
How
Donut shows aggregate; table breaks it down per sponsorship.

Sponsor leaderboard

Standalone leaderboard page; rules are configurable (spend, count, weighted by tier).

Where
Dashboard › Reports › Leaderboard
How
Set the date range and year filter; copy embed URL if showing on a screen.

Per-event drill-down

Hidden gem

Detailed report for a single event's revenue, fill, and sponsor mix.

Where
Dashboard › Reports › Event Detail › [event]
How
Link from the Event Performance report or open directly.

CSV export on every report

Download any report's underlying data as CSV.

Where
Each report › Export button
How
Click Export; file downloads in your browser.

Brand Kit & Styling

5 features

Brand Kit

Single home for logo, colors, typography, social links, and OG image. Logo upload auto-extracts a palette.

Where
Dashboard › Brand Kit
How
Upload your logo; tweak the auto-suggested colors; pick fonts; save.

Logo color extraction

Hidden gem

When you upload a logo during onboarding or in the brand kit, primary/secondary colors are auto-suggested from the image.

Where
Brand Kit / Onboarding › Logo upload
How
Drop the logo; review the extracted swatches; adjust if needed.

Event page styling (50+ options)

Global per-chamber styling for event pages: border radius, section order, colors, typography, spacing — stored in JSONB so the schema never blocks design changes.

Where
Dashboard › Settings › Styling › Events
How
Adjust controls in the left panel; the live preview updates on the right.

Sponsorship page styling

Per-chamber styling controls for sponsorship detail pages.

Where
Dashboard › Settings › Styling › Sponsorships
How
Same pattern as event styling — controls on the left, preview on the right.

Reset styling to defaults

Hidden gem

Roll back any depth of customization without losing other tokens.

Where
Styling editor › Reset
How
Click reset on a section or the whole theme.

Settings

10 features

General settings

Chamber name, contact, timezone, slug, and slug-availability checker.

Where
Dashboard › Settings › General
How
Edit fields and save. Slug uniqueness is validated as you type.

Stripe Connect

Connect a chamber's own Stripe account via OAuth so funds route directly to them.

Where
Dashboard › Settings › Stripe
How
Click Connect, complete Stripe OAuth, return to Chamberly.

API keys

Generate and revoke API keys for headless or scripted integrations.

Where
Dashboard › Settings › API Keys
How
Create, copy the secret immediately (shown once), revoke any time.

AI connectors

Configure and showcase AI integrations (ChatGPT, Claude, MCP clients) that can act on the chamber.

Where
Dashboard › Settings › AI Connectors
How
View connected agents, copy install URLs, manage scopes.

Accessibility settings

Toggle and configure the accessibility widget shown on the storefront.

Where
Dashboard › Settings › Accessibility
How
Toggle on/off, tweak controls, preview live.

Leaderboard configuration

Where the leaderboard appears (5 surfaces), what scoring rule it uses, public visibility, anonymization.

Where
Dashboard › Settings › Leaderboard
How
Toggle per-surface visibility; pick scoring (spend, count, weighted); save.

Event categories

Create the categories used across event filters on storefront and dashboard.

Where
Dashboard › Settings › Event Categories
How
Add, reorder, edit, delete categories.

Cancellation & refund policy

Default refund percentage, cancellation rules, and customer-facing policy text.

Where
Dashboard › Settings › Cancellation
How
Configure defaults; the policy text shows at checkout and in receipts.

Data maintenance tools

Hidden gem

One-shot ops: cleanup expired first-rights, recalculate sponsorship stock, reset email templates.

Where
Dashboard › Settings › Data
How
Pick an operation, confirm; jobs run asynchronously.

Payment mode (online / reservation / both)

Chamber-wide setting controlling whether sponsors pay through Stripe, claim without payment, or both.

Where
Dashboard › Settings › General › Payment Mode
How
Pick the mode; reservation works with no Stripe connection at all.

Team

3 features

Team management

Invite staff with roles (org_manager, chamber_staff, sponsor) and manage permissions.

Where
Dashboard › Team
How
Click 'Invite member', enter email, pick a role, send.

Role-based permissions

Hidden gem

Five-tier role hierarchy (sponsor, chamber_staff, org_manager, platform_support, platform_billing).

Where
Enforced in middleware and every API
How
Assigned on invite; UI elements and routes are gated automatically.

Resend team invitation

Hidden gem

Resend an expired or lost invite without re-creating it.

Where
Team detail › member row
How
Click 'Resend invite'.

Onboarding

4 features

5-step onboarding wizard

Org details → Brand Kit (with color extraction) → Stripe Connect (skippable) → First Event → First Sponsorship.

Where
Dashboard › Onboarding (auto-redirect on first login)
How
Complete each step, or skip to a later one and come back.

Skippable Stripe step

Hidden gem

Reservation mode is a first-class option — the Stripe step explains why and lets you skip it.

Where
Onboarding › Step 3
How
Click Skip; the platform remains fully functional in reservation mode.

Sample homepage seed

Hidden gem

On finish, the wizard seeds a CMS homepage so the storefront looks lived-in immediately.

Where
Onboarding › final step
How
Automatic; you can edit the generated page afterward.

Getting Started checklist

Persistent dashboard card tracking publish, import, sponsorship count, team members, sponsors, and styling.

Where
Dashboard home
How
The card hides itself once every task is complete.

Annual Rollover

2 features

Annual rollover wizard

Clone last year's events, sponsorships, and first-rights into the new year — with date shifting and a dry-run preview.

Where
Dashboard › Rollover
How
Pick a date range, preview changes, confirm; review the post-run analytics.

First-rights propagation on rollover

Hidden gem

Optionally carry forward last year's first-rights holders so renewing sponsors keep priority.

Where
Rollover wizard › Step 2
How
Toggle propagation in the preview; affected sponsors are listed.

Import / Export

4 features

CSV importers (members & sponsorships)

Upload a CSV, map columns, dry-run preview, then process in the background.

Where
Dashboard › Import / Export
How
Download the template, fill it, upload, map, preview, run.

Import job tracker

Hidden gem

Live progress card on the dashboard while an import is running.

Where
Dashboard home
How
Appears automatically during imports; disappears when done.

CSV templates

Pre-formatted templates per import type, downloadable so column headers always match.

Where
Import / Export › Download template
How
Click the template button before assembling your file.

Exports (orders, members, sponsorships, settings)

CSV exports for every major resource, plus a QuickBooks-formatted variant for orders.

Where
Dashboard › Import / Export › Export tab
How
Pick a resource, optionally filter, click Export.

Subscription & Billing

7 features

Plan & usage meter

Current plan tier with usage meter (events/sponsorships vs. plan limits) and a comparison table.

Where
Dashboard › Settings › Account
How
See where you are; click a tier to upgrade or downgrade.

Add-ons

Buy premium capabilities á la carte (extra events, advanced analytics, white-label).

Where
Dashboard › Settings › Account › Add-ons
How
Toggle add-ons on; billing portal handles the proration.

Stripe billing portal

Direct deep-link into Stripe's hosted customer portal for invoices and payment methods.

Where
Dashboard › Settings › Account › Billing Portal
How
Click 'Open Billing Portal'; opens in a new tab.

Invoice history

Past invoices with download links — no Stripe login required.

Where
Dashboard › Settings › Account › Billing History
How
Click any invoice to download a PDF.

Trial banner & countdown

Persistent dashboard banner with days remaining and a one-click upgrade CTA during the trial.

Where
Dashboard (top of every page during trial)
How
Click 'Subscribe' to go straight to plan selection.

Past-due restriction

Hidden gem

When a subscription is past_due or canceled, only the billing page is reachable until it's resolved.

Where
Enforced in middleware
How
Any dashboard route redirects to Settings › Account.

Tier feature gating

Hidden gem

Pro-tier features (packages, automations, Stripe payments, dynamic messaging, leaderboard) are gated by middleware with upgrade prompts.

Where
Enforced in middleware
How
Visiting a gated route redirects to Settings › Account with the feature surfaced.

Dashboard Home & UX

8 features

Personalized dashboard

Greeting, date-range picker, stats cards (revenue, sponsorships, members, events), quick actions, recent orders, upcoming events, and leaderboard.

Where
Dashboard › Home
How
Change the date range to retotal every card and sparkline.

Date-range picker (cycle aware)

Today / Last 7 / Last 30 / This Month / Last Month / Custom — affects every card and sparkline.

Where
Dashboard home › top-right
How
Pick a preset or custom range; everything retotals.

Command palette (⌘K / Ctrl+K)

Hidden gem

Global search and quick-actions. Use prefixes (e:, s:, m:, o:) to scope search to events, sponsorships, members, or orders.

Where
Anywhere in the dashboard
How
Press Cmd+K (Mac) or Ctrl+K (Windows). Type or pick an action.

Light / Dark / System theme

Three-way theme toggle; preference persists.

Where
Header › sun/moon/monitor icon
How
Click to cycle through modes.

Sidebar navigation (role-aware)

Collapsible sidebar that hides links you don't have permission to see.

Where
Dashboard layout › left rail
How
Collapse with the hamburger icon on smaller screens.

Breadcrumbs

Hierarchy under the header that lets you walk back up any nested route.

Where
Dashboard › below header
How
Click any segment.

Skip-to-content accessibility link

Hidden gem

Keyboard-only link that jumps focus past the header to main content.

Where
App root (focus-visible on Tab)
How
Press Tab at page load; press Enter to jump.

Quick actions bar

Horizontal row of large action tiles for the most common creates (event, sponsorship, member, package, automation).

Where
Dashboard home
How
Click any tile to jump straight into the creation flow.

Authentication

6 features

Password sign-in

Classic email/password authentication backed by Supabase Auth.

Where
/(auth)/login
How
Enter email and password; on success, redirect to the original page.

Magic-link login

Passwordless email-link sign-in.

Where
/(auth)/login › Magic Link tab
How
Enter email; click the link in the email to sign in.

Email OTP login

Six-digit code sent to email for passwordless sign-in.

Where
/(auth)/login › OTP tab and /verify-otp
How
Request a code; enter it on the verify page.

Password reset flow

Self-serve reset via email link.

Where
/(auth)/forgot-password → /reset-password
How
Enter your email; click the link; set a new password.

Sponsor join (storefront sign-up)

Sponsor-facing account creation scoped to a specific chamber.

Where
/{chamberSlug}/join
How
Enter business details and password; verify email.

Business invitations

Token-based invites to join a business account. Invites carry the assigned role and link directly to a setup page.

Where
Sent via email; accepted at /invite/{token}
How
Click the link, set your password, you're in.

View As

3 features

View As / impersonation

Hidden gem

Admins can step into any sponsor's account to debug or support. A persistent banner makes the simulated session impossible to forget.

Where
Dashboard header › View As menu (admin only)
How
Pick a user; the app rerenders from their perspective. Exit with the banner button.

Server-side simulated cart

Hidden gem

During View As, the admin's real cart isn't touched — the simulated cart lives server-side under a separate session.

Where
Behind the scenes
How
Automatic; exit View As and your own cart is exactly where you left it.

View-As audit log

Hidden gem

Every View As session is logged with start/end timestamps and acting admin.

Where
Audit trail in the database
How
Surfaced in the simulation_orders table and admin telemetry.

AI & MCP

4 features

MCP server (Model Context Protocol)

Hidden gem

Any MCP-compatible agent (Claude, custom) can read and write to your chamber via /api/mcp with a Bearer token.

Where
POST /api/mcp
How
Generate an API key in Settings › API Keys; configure your MCP client with the URL and key.

ChatGPT app integration

Hidden gem

A dedicated MCP endpoint plus OAuth handshake so ChatGPT users can manage events, sponsorships, and orders conversationally.

Where
/api/chatgpt + /api/oauth/* + /.well-known/openai-apps-challenge
How
Install the Chamberly app inside ChatGPT, authorize via OAuth, ask in natural language.

Embeddable ChatGPT widgets

Hidden gem

Pre-built widget bundles (events list, event detail, revenue, broadcast composer, sponsor cart, etc.) that render inside ChatGPT app surfaces.

Where
apps/chamber/widgets
How
ChatGPT app loads the relevant widget when a tool call returns rich data.

Smart starter benefits

Hidden gem

New chambers get a curated benefit library so adding sponsorships isn't a blank-canvas problem.

Where
Settings › Benefits
How
Remove the defaults you don't want; they're auto-replaced as you write your own.

OAuth Provider

3 features

OAuth 2.0 authorization server

Hidden gem

Chamberly acts as an OAuth provider so third-party apps and AI agents can authenticate users with PKCE.

Where
/api/oauth/authorize, /api/oauth/token, /api/oauth/register
How
Register a client, send users through /authorize, exchange the code at /token.

OAuth discovery endpoints

Hidden gem

Standard well-known endpoints (oauth-authorization-server, oauth-protected-resource) for auto-discovery by AI clients.

Where
/.well-known/oauth-authorization-server, /.well-known/oauth-protected-resource
How
Point your client at the discovery URL; everything else is auto-configured.

Scoped tokens (mcp:read, mcp:write)

Hidden gem

Issued tokens carry scopes so you can grant read-only or read-write access.

Where
Consent screen during /authorize
How
Apps request scopes; users approve or decline.

Demo & Playground

3 features

Live demo chamber

Pre-seeded chamber (rebranded as Derek Northbridge's demo) accessible without sign-up. Time-limited per session.

Where
/demo
How
Click the demo link from the marketing site or any CTA.

Playground one-click login

Hidden gem

Auto-signs you into a shared demo viewer account so you skip account creation.

Where
/playground
How
Visit the URL; you're redirected straight into the dashboard.

Nightly demo reset (cron)

Hidden gem

Cron job that clears test orders and reverts edits so the demo chamber always looks fresh.

Where
Vercel cron → /api/cron/demo-reset
How
Runs automatically; clears NO-ACTION FKs before deleting chambers safely.

Platform Admin

9 features

Master admin dashboard

Separate /admin app for platform operators: chambers, users, billing, promotions, alerts, notifications, CMS.

Where
/admin (marketing app)
How
Sign in with platform credentials at /admin/login.

Chamber CRUD (platform)

Create, view, edit, suspend, and delete chambers from the platform layer.

Where
/admin/chambers
How
Manage tiers, status, settings overrides per chamber.

Platform billing control

Override subscriptions, issue refunds, manage plan changes outside Stripe's UI.

Where
/admin/billing
How
Billing-role admins only.

Platform-wide users management

User search, password reset, and direct account editing across all chambers.

Where
/admin/users
How
Search by email; click into a user to manage.

Promotions (platform)

Hidden gem

Create promo campaigns: trial extensions, discount codes for plans, special offers.

Where
/admin/promotions
How
Configure target chambers, expiration, and message.

System alerts publisher

Hidden gem

Push maintenance windows or policy updates as a dashboard banner that every chamber sees.

Where
/admin/alerts
How
Compose and publish; clears from dashboards automatically when expired.

Cross-chamber notifications

Hidden gem

Send platform→chamber notifications that land in the unified bell.

Where
/admin/notifications
How
Pick recipient chambers, compose, send.

Marketing CMS

Full CMS for the marketing site itself: pages, blog, products, media, menus, theme, widgets.

Where
/admin/cms
How
Same block-based editor as chamber CMS, scoped to the platform marketing site.

Communication templates (platform)

Hidden gem

Edit the master templates used for SMS, push, and in-app messaging defaults.

Where
/admin/communication-templates
How
Edit, preview, save; chambers inherit defaults.

Automations & Webhooks

6 features

Stripe payment webhook

Hidden gem

Handles checkout.session.completed and other Stripe events to finalize orders and adjust stock.

Where
POST /api/webhooks/stripe
How
Configured once during onboarding; you don't have to touch it.

Stripe billing webhook

Hidden gem

Listens for subscription lifecycle events (renewal, cancel, upgrade).

Where
POST /api/webhooks/stripe-billing
How
Automatic; updates the chamber's subscription state.

Resend email webhook

Hidden gem

Tracks delivery, opens, clicks, bounces, complaints into the email log.

Where
POST /api/webhooks/resend
How
Automatic.

Inngest background jobs

Hidden gem

Event-driven and cron-based jobs: order confirmation emails, expiration reminders, demo reset, import processing.

Where
/api/inngest
How
Configured via code; no UI required.

Rivenly CRM contact sync

Hidden gem

Push profile and business changes to a connected Rivenly CRM for downstream automations.

Where
POST /api/external/rivenly/*
How
Configure the integration in Rivenly; events fire automatically.

Rivenly site analytics

Hidden gem

Privacy-friendly pageview tracking fired from middleware — captures visitor_id, session_id, device, country, UTMs.

Where
Middleware (every public page)
How
No client JS; runs on the edge.

Developer / APIs

8 features

Public read API

Hidden gem

Anonymous JSON endpoints for events, sponsorships, products, and blog posts.

Where
/api/public/*
How
GET the endpoint; returns published items only.

Authenticated REST API

Hidden gem

Full CRUD for sponsorships, events, members, orders, packages, coupons — secured by API key or OAuth token.

Where
/api/* (most resources)
How
Send your API key in the Authorization header; mutate as needed.

Storefront APIs

Hidden gem

JSON endpoints powering the public storefront for events, sponsorships, announcements, orders.

Where
/api/storefront/*
How
Used by the storefront UI; also callable by trusted clients.

Health check

Hidden gem

Lightweight liveness endpoint that returns 200 if the app is reachable.

Where
GET /api/health
How
Hit it from your uptime monitor.

Internal revalidation hook

Hidden gem

Trigger ISR revalidation of public pages after content changes.

Where
POST /api/internal/revalidate
How
Called internally after CMS publishes.

Sitemap & robots.txt

Auto-generated sitemap.xml and a robots.txt that disallows /dashboard, /admin, /api, /cart, /checkout.

Where
/sitemap.xml, /robots.txt
How
Submit the sitemap to Google Search Console.

Open Graph + JSON-LD

Dynamic OG tags, Twitter cards, and JSON-LD structured data for events, products, and blog posts.

Where
Page metadata everywhere
How
Automatic on every public page; improves social share cards and search snippets.

Multi-tenant isolation (RLS)

Hidden gem

Every chamber-scoped table is filtered by chamber_id with Postgres Row-Level Security. Cross-tenant access is impossible.

Where
Database
How
Enforced automatically; no app-level checks required.
SOMETHING MISSING?

If you found a feature here that surprised you, that's on us for not telling you about it.

We'd rather you know everything we've built than over-promise on what's coming. If a feature you need isn't on this list, send a note — it might already exist under a different name, or it might be the next thing we ship.

Ask about a feature