> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.todaytixgroup.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.todaytixgroup.com/_mcp/server.

# Sales Calendar

Powered by TodayTix provides automated sales reporting for every event on the platform. Reports are delivered by email and updated in the partner portal, so you always have a reliable picture of how your event is performing — without manual data pulls or spreadsheets.

The sales calendar is an interactive dashboard in the partner portal that presents the same data as the email reports in a visual calendar layout, powered by the same source. Where the emails deliver a daily snapshot, the sales calendar lets you explore the data yourself: zoom into a single day, compare across weeks, follow the advance position, and drill down into the dimensions that matter most.

Use the sales calendar to:

- **Run marketing meetings** — the visual layout looks impressive on screen and makes trends immediately obvious
- **Investigate individual performances** — drill into any day to see exactly what happened, broken down by channel, retailer, section, ticket type, performance or hour
- **Track the advance** — see where the event stood on any date, not just what sold on it
- **Track the season total** — every sale into the whole run to date, with today's figure climbing as sales land
- **Compare against benchmarks** — every figure outside Season carries automatic comparisons: last week, last year and a 90-day average on the day grids, last month, last year and a 12-month average on the year grid
- **Present to stakeholders** — the calendar is a strong visual format for board meetings, investor updates, and producer briefings

## Prerequisites

- A partner portal account at [portal.poweredbytodaytix.com](https://portal.poweredbytodaytix.com)
- At least one event on sale

## Accessing the sales calendar

1. Log in to the partner portal.
2. Navigate to **Insights > Sales calendar** in the sidebar.
3. Choose an event. The calendar reads one event at a time.

## Choosing what the calendar shows

Four controls sit above the calendar. Together they decide what each date reads, which figure it shows, how wide a window you see, and — in Transactions — which dates are covered.

| Control | What it sets |
|---|---|
| **Report type** | Transactions, Performances, Advance, or Season. |
| **Metric** | The figure every cell shows. The options depend on the report type. |
| **Granularity** | Month grid or year grid. |
| **Date range** | The window the calendar and the headline cards cover. Transactions only. |

![The header controls, with the date-range presets open.](/_fern-files/_img/1bb4ba88c11cff5884e07c5a47fc2863a3557e0e6b129c586eb07ff1bdf8d0af.webp)

### Report types

| Report type | What each date reads |
|---|---|
| **Transactions** | What sold on that date, whenever the performance is. |
| **Performances** | The performances scheduled on that date, and how each one is doing. |
| **Advance** | Where the event stood as at that date — the running position, not the day's takings. |
| **Season** | Every sale into every performance of the run, played or still to come, up to and including that date — a running total. |

### Metrics

| Metric | Transactions | Performances | Advance | Season |
|---|---|---|---|---|
| Tickets | ✓ | ✓ | ✓ | ✓ |
| Gross revenue | ✓ | ✓ | ✓ | ✓ |
| Net revenue | ✓ | ✓ | ✓ | ✓ |
| ATP (average ticket price) | ✓ | ✓ | ✓ | ✓ |
| Capacity (% of seats sold) | — | ✓ | — | — |
| All | ✓ | — | — | — |

Gross and net are separate metrics rather than a toggle — switch between them in the same dropdown. **All** packs gross revenue, net revenue, tickets and ATP into every cell at once, for when you want the whole picture per day rather than one line of it. Switching report type keeps your metric where it still applies and falls back to gross revenue where it doesn't.

Figures render in the event's own market — its currency, number format and timezone — not the viewer's.

### Granularity

**Month** shows a single month as a day grid. **Year** shows all twelve months of the year with quarter subtotals; click any month to drop into its grid.

### Date range

In Transactions, the date-range control sets the window. Pick a preset or choose **Custom** to open the calendar picker:

| Preset | Window |
|---|---|
| Today | Today so far. |
| Yesterday | The whole of yesterday. |
| Last 7 days | The trailing week. |
| Last 30 days | The trailing month. |
| This month | The 1st to today. |
| Last month | The whole of the previous calendar month. |
| Year to date | 1 January to today. |

Every preset resolves against today in the event's market timezone, so a late-night reading doesn't roll over early.

Performances, Advance and Season have no date-range control: Performances groups by performance rather than by transaction date, and Advance and Season read a position rather than a span.

## Transactions view

The default view shows the selected metric by day across a calendar month.

![The transactions view shows daily revenue with comparisons to prior periods.](/_fern-files/_img/bb61115f2011f1629d9088f626a804e3d375decb4fc619b2ce2ef4273e78a5e9.webp)

### What you see

- **Monthly calendar** — the selected metric for each day, with arrows to move month by month
- **Week column** — a subtotal for each week down the right-hand side. On the Tickets metric a toggle appears above it, switching between **Total** (the week summed) and **Avg** (divided by the days with data), so a part-finished week still compares fairly
- **Today** — drawn with a striped background, because the day is only part-way through
- **Comparison indicators** — every day shows the delta versus three benchmarks

### KPI cards

Three summary cards sit above the calendar — **Revenue**, **Tickets sold** and **ATP** — covering whatever range is selected. A line above them names the dates they cover, so the figures are never read as all-time totals.

![KPI cards show revenue, tickets sold, and ATP with period comparisons.](/_fern-files/_img/bfeb6ea3e12e07665a83d21341ffe3be4a3e7277b4d59b47bc7c74654c340a51.webp)

Each card shows the absolute and percentage change against the same three benchmarks as the grid.

## Comparisons and benchmarks

| Comparison | How it's calculated |
|---|---|
| **Last week** (LW) | The same weekday seven days earlier. |
| **Last year** (LY) | 364 days earlier — 52 weeks, so the weekday stays aligned rather than drifting. |
| **90-day average** (90d) | The average of all same-weekday values over the previous 90 days (e.g. the last ~13 Mondays on a Monday). |

Movements smaller than 0.5% read as flat rather than up or down, so day-to-day noise doesn't flicker the arrows.

Over a range longer than 31 days, week-over-week and 90-day comparisons stop meaning much for an aggregated total, so the cards keep only the year-on-year row.

The year grid compares on its own scale: each month reads against last month (LM), last year (LY) and a rolling twelve-month average.

## Data freshness

An **Updated** tag sits beside the headline cards, showing the event's latest ticket sale — as "2 min ago" while it's recent, and as a clock time in the event's market timezone once it isn't. It reads the data, not your clock.

The figures come from a warehouse table that rebuilds every 15 minutes, and the calendar re-reads the trailing week every 10 minutes while the page is open. Worst case, a number is around 25 minutes behind the box office.

Today's figures are marked incomplete, and refunds or late settlement can still move a day for a while after midnight — which is why the recent window is re-read rather than frozen at page load. In Advance, the tag reads **As at** instead: a position at the start of a date is already settled and doesn't move. Season keeps the **Updated** tag, because its today is live: last night's season total plus today's sales so far, re-read on the same timer as Transactions and marked still filling.

## Selecting a range of dates

Drag across the grid to select a span of days. A bar appears along the bottom of the window naming the range and the number of days, with **View breakdown** and **Clear selection**. The headline cards re-read the selection while it's active; `Esc` clears it.

![A selected week, with the selection bar naming the range.](/_fern-files/_img/7f53bb5683805d6f988b4349751976a6711317a1bd24ebe08bb8090fdc56f5a5.webp)

**View breakdown** opens the same drill-down a single day gets, over the whole range. Ranges longer than 92 days can't be broken down — the query returns a row per date and dimension value, and beyond that it would be silently cut short.

## Drilling into a day

Click any day on the calendar to open the daily breakdown — a detailed view of everything that happened on that date.

![The daily breakdown shows KPIs, charts, and a data table for a single day.](/_fern-files/_img/78ac38725e5e4028ffcede18993a4a4e1780bdb5e9840f5192ad48708a5aa8d3.webp)

The drill-down includes:

1. **Comparison context** — the exact dates being used for last week, last year, and 90-day average comparisons
2. **KPI cards** — revenue, tickets, and ATP for this day with all three comparisons
3. **Donut chart** — sales distribution by the selected dimension (e.g. sales channel)
4. **Comparison chart** — the same dimension plotted over time, with two viewing modes
5. **Data table** — tickets sold, revenue and ATP per value, with its share of the day and the same comparison deltas

| Comparison chart mode | What it shows |
|---|---|
| **Same weekday** | All instances of this weekday over the comparison period (e.g. all recent Wednesdays) — best for like-for-like comparison. |
| **Surrounding days** | The calendar days around the selected date — best for spotting daily trends. |

Charts and legends show the ten largest values and fold the rest into a single **Other** band, so a day scattered across dozens of performances still reads.

### Drill-down dimensions

Use the dropdown above the charts to slice the data:

| Dimension | What it shows |
|---|---|
| **Sales channel** | Web, Mobile, portal, Prio, etc. |
| **Retailer** | Individual ticket agents and sales partners. |
| **Ticket type** | Regular, comps, access, discounted, etc. |
| **Days out** | How far in advance tickets were purchased relative to the performance date. |
| **Section** | Revenue and tickets by area of the venue. |
| **Event time** | Which performances the day's sales were for. |
| **Hourly sales** | How the day built, hour by hour. |

**Event time** is only offered for a single day; **Hourly sales** describes one day, so neither appears on a multi-day range.

### Hourly sales

An hour is a position in the day rather than a category, so this option swaps the donut and comparison chart for two readings of the same rows:

![The hourly benchmarks view draws the day's running total against its comparison days.](/_fern-files/_img/ac324b2950eec3ce45a405f93269a60b4aa4ffd72025da43dd0d5e8a0c36172b.webp)

| Reading | What it shows |
|---|---|
| **Benchmarks** | The day's running total for tickets and revenue, drawn against the same weekday last week, the 90-day average and last year — so you can see whether the day is ahead at the hour it has reached. |
| **By hour** | Each hour's own tickets and revenue as bars, with the running total over them. |

The hour still filling is marked incomplete.

## Performances view

Switch the report type to **Performances** to see the same data organized by performance instead of by transaction date.

![The performances view shows each showtime on its calendar date.](/_fern-files/_img/8573c0d0b17fd1747190d6203cda7815003842ff554429487715aa7b04979267.webp)

Each day displays its performances as blocks, each with its start time and the selected metric. Days with more than three performances show the first three with a "+N more" indicator, and the week column still totals the week.

There is no date-range control and no headline cards here — the view groups by performance rather than by a window of transaction dates.

The performances view adds a **Capacity** metric — the percentage of seats sold, shown as a coloured pill — alongside tickets, revenue and ATP.

### Performance drill-down

Click a performance to open its breakdown. It carries:

- A **performance picker** beside the date — read one showtime, several, or all of the day's
- An **occurrence summary** — the performance's headline figures, with tickets split into sold and comps, and day-of sales called out separately
- The same headline cards and breakdowns as a day, minus event time and hourly sales — both of those describe a day, and this is already one performance

![The performance breakdown, with its occurrence summary above the headline cards.](/_fern-files/_img/c4d2690eed3ddb35b5f8cad8c88012f0bfbd3b5c568efbc00766bd1e37ca2af6.webp)

<Note>
The occurrence summary mirrors the content of the after-showtime email, so you can refer back to any previous performance's summary directly in the portal.
</Note>

## Advance view

Switch the report type to **Advance** to read the running position instead of daily takings. Each date shows where the event stood at the *start* of that date, so a date's figures reconcile with that morning's daily sales email.

![The advance view reads the running position as at each date.](/_fern-files/_img/6e6a8cb2dccad7eb44ce90ac3811303acbe5d0d87f4dd1470806c83285cb9bff.webp)

Because every cell is a position rather than a day's trade, the advance grid has no week column, no range selection and no drill-down: a span of positions has nothing to add up, and a position as at a date can't be split by channel or retailer. Comparisons still apply — a position against last week's, last year's and the 90-day average.

## Season view

Switch the report type to **Season** to follow the whole run's running total. Each date shows every sale into every performance of the run — played or still to come — up to and including that date. Where Advance reads the position at the *start* of a date, Season reads it at the *end*, so each date adds its own sales.

Today is live: last night's season total plus today's sales so far. It refreshes on the same timer as Transactions, is marked still filling in both the month grid and the table, and carries the **Updated** tag rather than **As at**. If either half fails to load, the calendar shows its usual load error rather than a partial figure.

Season has no benchmarks for now: no last week, last year or 90-day rows on the cards, the grid or the year grid, and no benchmarks picker on the chart. Like Advance, it has no date-range control and no range selection.

### Season drill-down

Click a Season date to open **Season to {date}** — a breakdown of every sale the event has taken, up to and including that date. Its totals equal the date's cell. Advance dates still open nothing.

It splits by **Sales channel**, **Retailer**, **Ticket type**, **Days out** or **Section**. There is no **Event time** or **Hourly sales** tab: across a whole run, an hour of day has no pace to chart, and a split by performance would list every one ever played. It has no reference dates, no comparison chart and no benchmark columns.

### After a run ends

Once the last performance has played, Season holds at the run's final total on every later date — in the grid, the chart, the year grid and the cards.

## Year view

Switch the granularity to **Year** to see all twelve months at once, with quarter subtotals.

![The year grid shows twelve months and their quarter totals.](/_fern-files/_img/9349697e047e2148b91aab69e4129f55364a409fc2af4ababb73979ea2789fc5.webp)

In Transactions and Performances a month is its dates summed; in Advance a month reads its closing position, and a quarter its closing month. Season reads the same way — a month shows its closing season total and a quarter its closing month — except the current month, which reads today's live figure. Click any month to drop into that month's grid.

## Sharing a view

The calendar keeps its full state in the page URL — report type, metric, granularity, month, date range, and the day or range you have open. Copy the address bar and whoever opens it lands on exactly what you were looking at, provided they have access to the event.

## Next steps

- [After-Showtime Email](/partner-portal/after-showtime-email) — the per-performance email sent 30 minutes after curtain
- [Morning Email](/partner-portal/morning-email) — the daily digest delivered to your inbox automatically
- [Email Attachments](/partner-portal/email-attachments) — detailed PDF and CSV breakdowns per performance
- [Bring Your Own Dashboard](/partner-portal/bring-your-own-dashboard) — build custom charts and visualizations with AI