Reporting and analytics
Share this article
Overview
Open Reporting from the main navigation. The page uses tabs:
- Business performance — summary metrics plus charts for bookings revenue, booking counts by month, bookings by acquisition source and customer type, successful payments by type, and (when viewing This year) a revenue forecast.
- Payouts — transfers initiated to your Stripe Connected account and onward to your bank, with amount, bank/card destination, initiation time, estimated arrival, and status.
- Payments — individual payment transactions for the outfitter, including booking-linked payments and additional payment requests. Quick Pay charges are included and open a dedicated Quick Pay detail view instead of the booking drawer.
- Unpaid balances — scheduled or outstanding balances that have not finished processing yet (for example installment or add-on style flows). Product copy in the app notes that once those items process, they move into the regular Payments report.
Across tabs, clicking a payout opens a side panel with a timeline, details (including payout identifiers and payout destination), and transactions that funded that payout. From payout transactions you can jump to View booking or View Quick Pay when a link applies.
Use Export in the Reporting header (button label depends on localization; functionally export data) to download CSV files for:
- Payments — optionally filtered by due after / due before dates
- Unpaid balances — optionally filtered by created after / created before dates
Exports are generated for the selected outfitter and trigger a file download after the server prepares a URL.
Not in scope of this Reporting area (from this codebase): Paid ads analytics live on a separate Ad reporting page (/paid-ads-reporting), not inside the Reporting tabs. Exact wording of KPI cards is returned by the Mallard Bay metrics service (not hard-coded in this app), so individual card titles and explanations may vary slightly.
Prerequisites
- A selected outfitter — If nothing is selected, the Reporting area prompts you to select an outfitter (this pattern also applies when an internal Mallard Bay user is not impersonating an outfitter).
- Feature access for each tab — In the dashboard code, Business performance, Payouts, Payments, and Unpaid balances are gated independently. Depending on your Mallard Bay plan or account capabilities, some tabs may show an upgrade / paywall state instead of live data.
Using Reporting in the dashboard
Switch between Business performance, Payouts, Payments, and Unpaid balances
Choose the tab you need (desktop shows short helper descriptions under tab labels):
/reportingor/reporting/business-performance— Business performance/reporting/payouts/— Payouts/reporting/payments/— Payments/reporting/unpaid-balances/— Unpaid balances
If the URL path does not match any tab exactly, the first tab (Business performance) is shown by default until you pick another.
Business performance
- Choose how bookings are grouped in time: Booking date (when the booking was created in Mallard Bay) or trip start date (when the trip begins). Changing this swaps which backend metrics drive total bookings revenue, booking count totals, and the monthly/source/customer breakdown charts so they align with either “when you sold it” vs “when the trip occurs.”
- Pick the calendar slice: This year, Last year, or Next year. The chart grid updates to match that window.
- Read the metric cards at the top (including totals and pending bookings payments styled as net revenue in code). Interpretation labels come from Mallard Bay’s metrics API.
Charts shown (titles as in product copy):
- Bookings gross revenue by month
- Bookings count by month
- Revenue forecast — appears only when the range is This year (hidden for Last/Next year in the current UI)
- Bookings gross revenue and count by source (e.g., website flows, send-quote flows, widget, off-platform/offsite classifications as encoded in Mallard Bay’s metrics layer)
- Bookings gross revenue and count by customer type (new vs returning)
- Successful payments net revenue by payment type, and counts by type (card, check, cash, ACH, other as classified on the backend)
Payouts
Scan the listing for amount, currency, status, destination (bank/card label), initiated time, and estimated arrival.
Use Show more to load older payouts (cursor-based paging).
Open any row to see:
- Timeline — status-oriented steps supplied by Stripe / Mallard Bay’s payout modeling (not necessarily raw timestamps in the UI).
- Details — payout identifiers, delivery method, optional description, and pay-to destination.
- Transactions — the charges or transfers that comprise the payout bundle; drill into bookings or Quick Pay from here when exposed.
See also the in-panel note: payouts can take longer at the bank — waiting one to two business days often resolves “missing money” worries.
Payments
- Review the summary metric tiles scoped to this calendar year’s payout-style date window in code (pending totals, failures, failures on completed trips — exact legends from the metrics API).
- Optional: filter rows with the status dropdown, or leave it empty for All statuses.
- Rows show amount, net to outfitter column, status, whether the booking participates in group pay, description, client name derivation from the underlying payment/booking snapshot, and due date.
Click a payment:
- Booking-linked payments open the standard booking details drawer scrolled to highlight the clicked payment request (if applicable) or the payment itself.
- Quick Pay rows open Quick Pay details rather than booking details.
Unpaid balances
- Paginate through amount, status, booking identifier (displayed from the backend booking id column), and created date in the simplified table definition.
- Clicking a row opens the booking details drawer, scrolled to highlight that unpaid-balance row.
Treat this tab as operational collections / scheduled balance visibility; compare with Payments once balances clear.
Export (CSV)
- From Reporting, choose Export / Export data. The control is hidden if no outfitter is selected.
- Select Payments or Unpaid balances.
- Optionally narrow the export with date fields (labeled due after/before for payments or created after/before for unpaid balances — copy marks them optional). Leaving dates empty broadens scope per whatever the Mallard Bay export API interprets without bounds.
- Confirm export; your browser downloads a generated CSV.
Common pitfalls
- Wrong outfitter selected — all queries and exports use the current outfitter context; switching outfits clears in-memory payout pagination state while new data reloads.
- Payments vs payouts — Payments is customer-side transaction history and amounts you’re owed/collecting; Payouts is money batches moving to your Stripe-connected bank/card destination. Timing rarely lines up transaction-for-transaction with guest checkouts.
- Unpaid balances vs Payments — product copy emphasizes that unfinished items stay on Unpaid balances; after processing they belong on Payments. Do not assume “Paid” elsewhere without checking both.
- Revenue forecast disappearance — if you switched to Last year or Next year, the forecast chart intentionally drops out of the grid. Return to This year if you rely on it.
- Booking-date vs trip-date logic — performance charts and totals change materially when you toggle between booking-created vs trip-start grouping; decide which horizon you care about before sharing numbers.
- Internal booking ids on Unpaid balances — that column shows the backing booking identifier returned by the API, not necessarily a friendly trip title; drill into the row for full booking detail.
- Tab unavailable — a locked tab means your outfitter may not have that reporting capability enabled in Mallard Bay, not necessarily that data is absent.
- Support reference — payout details expose Stripe payout identifiers suitable for Stripe or Mallard Bay support threads.
Related workflows
- Bookings (
/my-bookingsand booking drawers reached from Payments / Unpaid balances) — reconcile individual trips, refunds, cancellations, payment plans, and guest communications beside raw reporting. - Quick Pay (
/quick-pay) — standalone payment links reconcile into Payments and can appear inside payout transactions. Quick Pay remains separate from Mallard Bay subscription billing for your SaaS invoice. - Home dashboard — a compact reporting/metrics teaser may surface on Home with View more routing to Reporting when configured for your account.
If something in Reporting does not match your bank or Stripe dashboards, corroborate with Payouts timeline/arrival estimates and Mallard Bay support using identifiers from payout details — the frontend does not display every accounting edge case locally.