Dashboard Tour

BetterSuite ships two dashboards — an owner dashboard for one-time configuration and an ops console for day-to-day operations. This is a tour of both.

Last updated May 19, 2026

There are two dashboards in BetterSuite, and they exist at different URLs because they serve different jobs.

DashboardURLWho uses itWhat it's for
Owner Dashboardbettersuite.io/dashboardThe business owner and a small group of adminsOne-time and infrequent configuration — billing, branding, integrations, custom domains, audit log. You probably touch it weekly, not daily.
Ops Console<your-slug>-admin.bettersuite.io (or your custom admin domain on Pro+)Dispatchers, support staff, fleet managers, accountantsDay-to-day operations — running trips, fulfilling orders, paying drivers, moderating reviews, handling support tickets. This is where the working day happens.

The split exists because the two audiences want very different things. The owner wants a clean settings surface — open it, change one thing, leave. Operators want a live, dense, dispatch-oriented UI that survives an eight-hour shift. Trying to make one screen do both is how the platform-admin world ends up with bloated, slow-to-learn UIs.

When to use which

  • "How do I change my plan?" → Owner Dashboard → Billing
  • "A driver isn't getting matched" → Ops Console → Taxi → Dispatcher
  • "I want to add another admin who can change billing" → Owner Dashboard → Settings → Team permissions
  • "I want to add a dispatcher who can run the live map" → Ops Console → Staff
  • "Stripe webhook URL needs updating" → Ops Console → Management Common → PSP Accounts
  • "Refund this order" → Ops Console → (vertical) → Orders → detail → actions
  • "Approve this driver's KYC" → Ops Console → KYC → Applications

Rule of thumb: if it's a setting that applies to the whole tenant once, look in the owner dashboard. If it touches an individual order, account, or shift, look in the ops console.

Owner Dashboard — bettersuite.io/dashboard

You sign in at bettersuite.io/login with the email and password you set during registration. The dashboard is server-rendered Next.js — fast to load, no app to install.

The sidebar is a single flat list (in this order):

Dashboard (home)

A status read-out. Shows your subscription plan and current-cycle usage, an "Operations summary" card with the cities, countries, and regions you operate in, and a checkout banner if you've just finished a billing change. If your onboarding wizard isn't complete (specifically, plan selection), this page redirects you back to /onboarding.

Billing

Your subscription plan, the verticals it covers, the card on file, invoices, and the renewal date. Plan changes (upgrade, downgrade, cancel) live here. Self-serve upgrades take effect immediately; downgrades schedule at the end of the cycle. Add-on usage (extra regions, AI usage) shows up here in real time.

Branding

Logos (light, dark, square, favicon), primary color, accent color, neutral palette, and typography. Changes save as draft until you click Publish. Publishing pushes to a CDN-backed theme cache (~30s propagation) and re-renders email templates. See Branding for the full token model.

Custom Domains

Map your own domains to each app — passenger, driver, vendor, admin console. Each row shows DNS status, certificate status, and a copy-to-clipboard target CNAME. See Custom Domains for the DNS recipe.

Connected Apps

The mobile-app registration surface. This is not an integrations catalog — it's where you declare the iOS / Android apps you publish under your own App Store / Play Console accounts. The bundle IDs you enter here get surfaced in your tenant's /.well-known/apple-app-site-association and /.well-known/assetlinks.json files, which Apple and Google fetch from your verified domains to prove domain ↔ app ownership. That's what makes Universal Links and passkeys work against your branded apps.

PSP credentials, KYC providers, SMS gateways, and the rest of the integrations catalog don't live here — they're in the Ops Console (see Management Common below).

Store Release

Pro+ only. Kick off the build pipeline that ships your branded passenger / driver / vendor apps to the App Store and Play Store under your own developer account. Below Pro, this page shows the upgrade prompt and a preview of the flow.

AI Providers / AI Features / AI Usage

Three related screens for the BYOK AI surface:

  • Providers — paste API keys (Anthropic, OpenAI, Google, or self-hosted). Set a monthly spend cap.
  • Features — toggle which AI features are on (support-chat suggestions, marketing copy drafts, etc.) and pick which provider routes which feature.
  • Usage — last 30 days of spend, per feature, per provider.

See AI Providers.

API Keys

Create and revoke server-to-server API keys for the GraphQL endpoint. Per-key rate limit profile, expiry, and (Enterprise) scopes. See API Keys for the developer-facing story.

Sign-in & Auth

Tenant-wide auth policy: passkey requirement, session length, MFA, password complexity. Changes apply to all team members on their next login.

Migrations

The data-migration runner. It's a database-to-database tool that connects to a legacy app's MySQL/MariaDB and writes the rows into BetterSuite's Postgres. Exactly one provider ships today: legacy_ridy_taxi, for first-generation TypeORM-style self-hosted taxi platforms — see Migrating from a Legacy Ridy Taxi Platform for the full playbook. Uber Fleet, Yelo, and other SaaS-only competitors are not supported sources — leaving those is a relaunch with manual driver re-onboarding rather than a data migration. Each migration has a [id] detail view with runs, dry-run results, and per-phase status.

Support

Open a ticket to the BetterSuite team — these route to us, not to your own customers. Each ticket has its own thread under [ticketId]. New tickets via /support/new.

Settings

A small sub-hub:

  • Passkeys — enroll a passkey for your own account.
  • Team permissions (Owner only) — choose what your tenant admins can see and do in the owner dashboard (billing, custom domains, API keys, audit log). This controls access to this dashboard. Adding people who run trips or fulfill orders is done in the ops console under Staff, not here.
  • Open Admin Console — a single button that resolves to your <slug>-admin.bettersuite.io URL (or your verified custom admin domain). Most owners deep-link to it from here once and bookmark it after.

There's also an Audit Log page (/dashboard/audit-log) that doesn't appear in the sidebar by default — every admin action against this dashboard is recorded there, searchable by member, action, and date range.

Ops Console — <your-slug>-admin.bettersuite.io

The ops console is a Flutter Web app — heavier first load than the owner dashboard, but designed to stay open all day. The URL is your tenant's slug, hyphen, admin, on bettersuite.io. So a tenant named acme lives at acme-admin.bettersuite.io. If you've configured a verified custom admin domain on Pro+, that URL replaces the default.

Signing in

On first visit you hit tenant discovery — a one-time screen that confirms which tenant this subdomain belongs to. After that you land on the login screen and sign in with your tenant-admin credentials. The ops console authenticates separately from the owner dashboard: a person can have access to one and not the other. Forgotten password recovery is available on the same login screen.

Default route

After login, /dashboard redirects to your first vertical's overview (today that's /dashboard/taxi/overview — over time, the redirect target will match the first enabled vertical). The top bar carries a logo, a notifications bell, language and theme switches, and a profile dropdown.

Verticals

Each enabled vertical (Taxi, Shop, Parking) gets its own section in the sidebar with parallel structure:

VerticalOverviewDispatcherOrdersManagementAccounting
TaxiLive trip + driver countsLive map with drivers, trips in flight, manual assignTrip list + detail (active and archive)Drivers (list, detail, pending verification, create), vehicles (make, model, color), pricing rulesDriver accounting list, payout reconciliation
ShopOrders today, vendor statusLive order queueOrder list + detailVendors (list, detail, create), shop categoriesShop accounting (list, detail)
ParkingActive sessions, lot utilizationLive lot occupancyParking order list + detailPark spots (list, detail, create)Parking accounting

The Dispatcher screens are where ops staff spend most of their day. They're the live, map-centric views with manual override actions for re-assignment, cancellation, and customer / driver / vendor outreach.

Customers

A unified customer surface — list, detail, and create. The detail page shows the customer's orders across every enabled vertical (a customer can have taxi trips, shop orders, and parking sessions all under one account).

Marketing

Three screens:

  • Announcements — push and in-app notifications you create and target by audience.
  • Coupons — campaign-based discount codes with redemption rules.
  • Gift cards — issue or batch-create.

Payouts

Two surfaces:

  • Payout Methods — your tenant's payout configurations (Stripe Connect for drivers, vendors, providers).
  • Payout Sessions — scheduled batch payouts. Sessions are split by recipient type — driver sessions, merchant sessions, provider sessions. Detail view shows individual payouts and statuses.

Management Common

Configuration that applies across verticals:

  • Staff — tenant-admin team members for this console. Create, list, detail, role assignment. Roles include built-in operator / dispatcher / accountant patterns, plus custom roles on Enterprise.
  • Regions — geographic regions and region categories. Used by dispatch and exclusivity pricing.
  • PSP Accounts — payment-service-provider accounts and configurations.
  • SMS Providers — outbound SMS sender configuration (per region).
  • KYC — applications queue, review screen, policies, certification kinds.
  • Cancel Reasons — reusable cancellation reason catalog (by app + actor).
  • Feedback Criteria — rating criteria sets (per vertical).
  • Partnerships — partner-program configurations and commission rules.
  • Tax — tax policies, zones, exemptions, provider configs.

Settings

The ops-console-side settings (distinct from the owner dashboard's Settings):

  • General — basic app preferences.
  • Appearance — theme, density.
  • Login & Security — for your own ops account.
  • Sessions — review and revoke your active sessions.
  • Password — change yours.
  • Notification — which in-app notifications you want.
  • Map — preferred map provider, default zoom.
  • Dispatch — dispatch rules editor.
  • SMS Templates — message bodies per event.
  • Tier — customer tier configuration.

Other top-level features

  • Accounting — admin accounting dashboard, customer accounting view, "wallets by kind" detail.
  • Support — tickets from your own customers (not the BetterSuite team). List + detail.
  • Review Moderation — review queue and moderation policy.
  • User Subscription — subscriber list, subscription plans you sell to your end users, invoices, refunds.
  • Platform Overview — cross-vertical operational snapshot.
  • AI — AI feature surface inside the ops console (separate from the owner-side BYOK configuration).
  • Notifications — your own in-app notification inbox.
  • Notes — operational notes shared with staff.
  • Transfer Ownership — escalation flow to change the tenant owner.

URL patterns and custom domains

When your tenant is provisioned, BetterSuite creates a small family of system subdomains under bettersuite.io:

AppSystem URL (slug = acme)
Passenger / customer app (taxi)acme-rides.bettersuite.io
Driver appacme-drive.bettersuite.io
Shop customer(similar pattern per vertical)
Shop vendor(similar pattern per vertical)
Admin console (this dashboard)acme-admin.bettersuite.io

The owner dashboard is not per-tenant — every tenant shares bettersuite.io/dashboard and is identified by the authenticated session.

On Pro+ plans, the system subdomains can be replaced with verified custom domains. Once verification completes in Owner Dashboard → Custom Domains, the custom URL becomes the canonical surface and the system subdomain stays as a fallback. The "Open Admin Console" button on the Settings page automatically resolves to your verified custom admin domain if present, otherwise the system subdomain.

What's next

  • Plans & Billing — change plan or top up.
  • Branding — own both dashboards visually.
  • Team & Roles — invite owner-dashboard admins (ops-console staff is in the Ops Console itself under Staff).
  • Custom Domains — replace *.bettersuite.io with your own.

Build the foundation once. Expand without limits.

BetterSuite is built for teams who see on-demand as a business — not a feature.