Skip to main content
Built-in analytics, free on every plan

Read the panel. Not the person.

A visit to your schedule moves a counter: which day, which kind of device, which source, which country. It never writes down who. That is not a privacy setting you switch on, it is the shape of the data.

Total views, all time

12,480

Selected range

1,757 +18.4%

Daily views, last 30 days

Devices in range

Mobile 1,109
Desktop 559
Tablet 71
Unknown 18

Sample schedule. Four device counters, because the stored row has four: desktop, mobile, tablet and unknown.

Page views Devices Traffic sources Referrer domains UTM tags Countries Top events Social clicks Per schedule Appearances

The intake

Three gates before the needle moves.

A raw hit count is a vanity number. Everything below runs on every request, in this order, before anything is added up.

01

Is it a browser?

110 crawler signatures

Search crawlers, SEO tools, link unfurlers and AI scrapers are matched by name and dropped. A request with no user agent at all is treated the same way, because real browsers always send one.

02

Does it act like one?

Two header checks

Every real browser sends an Accept-Language header and asks for specific content types. A request with no Accept-Language, or one that will accept any content type rather than a specific one, does not count.

03

Counted already today?

10 views a day, per visitor

The same visitor tops out at ten counted views per schedule per day. The tally is keyed on a hash and expires at midnight, so it resets on its own.

Then the counter moves

Free

One counter goes up on the schedule's row for today, and if the visit was to an event page, one on that event's row too. What makes the dedup work is a hash of the IP address salted with the date, so it changes every midnight and cannot be walked back to an address. The hash lives in the cache, never on the row. Your own visits as the owner or a team member are not counted, and neither are views through an embedded calendar.

The instruments

Nine dials, and a dial for the range.

Every reading below is on the free plan, on the tab that opens first.

Views over time

A line for the range you picked, grouped daily, weekly or monthly. Weekly is the one that stops a single quiet Tuesday from looking like a trend.

Devices

Desktop, mobile, tablet and unknown, worked out from the user agent. If two thirds of your traffic is a phone, your listing had better read well on a phone.

Traffic sources

Eight buckets: direct, search, social, email and other, plus newsletter, boost and promo when the link you shared says so.

Referrer domains

The top ten domains sending you traffic, by name. Useful for finding the local listings site you did not know was carrying you.

UTM tags

Top ten values for source, medium and campaign, each counted separately, so a poster QR code and a Facebook post can be told apart.

Visitor countries

A country-level split of where the views came from, resolved from a lookup file the app ships with. Country only, never a city.

Top events

Your ten most-viewed events for the range. This is the reading that tells you which show the interest is actually landing on.

Views per schedule

Run more than one schedule and each gets its own bar with its total for the range, so you can see which one is carrying the other.

Social link clicks

Clicks on the social links in your schedule settings, split by platform. Clicks leaving your page, counted the same careful way as views arriving.

The tenth dial is the range

Free

Seven positions, and every reading on the page follows the one you pick: last 7 days, last 30, last 90, this month, last month, this year, all time. Pick a month that has closed and the comparison figure holds still instead of drifting under you. Every range except all time also shows the change against the stretch before it: the previous 7, 30 or 90 days, the month before, or last year.

This month

1,043

Vs previous

+9.1%

One row

This is the whole record. One row a day.

Most analytics keeps a line per visitor and adds it up later. This keeps the total and never keeps the line. Here is a schedule's last three days, column for column.

Three days of a schedule's stored view counters. Four device columns, one date, one schedule, and nothing else. The total is added up when you read it, not stored.
Day Desktop Mobile Tablet Unknown Total
Jul 28 27 53 3 1 84
Jul 27 24 49 3 1 77
Jul 26 30 60 4 1 95

There is no visitor column, no session, no name, no email and no page-by-page trail, so the question "who was that" has nowhere to land. Sources are stored the same way, one line per day per bucket, and a source line holds a domain at most.

Three of the matching source rows for the same day.
Day Source Domain Views
Jul 28 direct - 38
Jul 28 search google.com 19
Jul 28 social instagram.com 14

Want names? Ask for them. People who follow your schedule hand over a name and an email on purpose, and you can write to them from the newsletter tool: ten emails a month on Free, a hundred on Pro, a thousand on Enterprise, counted per recipient.

Where they came in

Eight doors, and you know which one.

Five of the buckets are worked out from where the visit arrived from: direct, search, social, email, and other for everything else. Three are set by the link itself, so a newsletter, a boosted post and a promo code link land in their own bucket rather than blurring into social.

  • A link tag beats guesswork: if the link says newsletter or boost, that wins over the referring site.
  • Visits from your own pages are read as direct rather than counted as a referral to yourself, custom domain included.
  • Under the buckets sit the top ten referrer domains by name, and the top ten UTM source, medium and campaign values.

Sources, selected range

Direct 604
Search 391
Social 328
Newsletter 181
Email 96
Boost 88
Promo 41
Other 28

Sample schedule. Three of these eight only appear because the link carried a tag.

Money and doors

Two more tabs, once you are selling tickets.

Views are the free half of the story. Sales and arrivals are the other half. Both tabs are there on every plan, and both start counting on the free plan, which sells 25 paid tickets a month per schedule and scans them at the door for nothing. Pro at five dollars a month takes the cap off and adds the promo codes and boosts two of the rows below come from.

Revenue

Free

Revenue for the range, split by currency when you sell in more than one. Conversion rate is paid sales against views. Revenue per view is shown only when the money is all in one currency, because averaging two currencies together would be a lie.

  • /Discount given away through promo codes, and a line per code.
  • /Your ten highest-earning events for the range.
  • /Boost funnel: spend, impressions, clicks, views and sales in one row.
  • /Newsletter funnel: sent, opens, clicks, views and sales.

Check-ins

Free

The gap between sold and turned up, which is the number nobody has and everybody wants. Scanned codes on the door become an attendance rate, and the shortfall is stated as a no-show rate rather than left for you to subtract.

  • /Tickets sold and tickets checked in, for the range.
  • /Arrival times by hour, in the schedule's own timezone.
  • /Attendance per ticket type, so the cheap tier can be compared with the good one.
  • /A table with a row per event: sold, checked in, rate.

Newsletter funnel, one send

Sent 420
Opened 214
Clicked 63
Views 58
Sales 11

Sample send. Newsletters themselves are free, at ten emails a month; the sales row at the bottom needs tickets on sale, and selling starts free too.

Zero platform fees on anything you sell. How ticketing works

Everything else

The rest of the panel.

Narrow it to one thing

Free

Read all your schedules together, or pick one. With one picked you can narrow again to a single event and read that event's views on their own, which is how you find out whether the poster or the venue was doing the work.

Leave it on all schedules and you also get a per-schedule split, so a quiet second schedule is visible rather than absorbed.

Views you earned elsewhere

Free

Talent and venue schedules get appearance views: the traffic your events pulled while listed on somebody else's schedule, plus which of those schedules sent the most.

Campaigns on the same line

Free

Send a newsletter or run a boost and the views chart gains a second dashed line for the views that campaign brought in, so a spike has an explanation instead of a shrug.

Nothing phones home

Free

There is no third-party analytics service behind this and no analytics script from another company on your schedule page. Counting a view does not set a tracking cookie either: the dedup key is a hash that expires at midnight.

Selfhost it and the numbers never leave your own database. The country lookup reads a file that ships with the app, so even that is a local read. About selfhosting

Reach, in countries

Free

Ten countries, ranked, with a count each. Enough to know whether you are playing to your own town or to a diaspora, and not one field more.

Where they went next

Free

Every social link in your schedule settings is counted when somebody follows it out, split by platform, and behind the same crawler filter and daily cap as a page view. It is the one reading that tells you which channel your audience actually uses.

What it is not: there is no share counter, and no way to see what somebody did after they left. Follow-outs, not footsteps.

Three steps

There is nothing to install and no tag to paste. The panel is already wired.

01

Publish and share the link

The counters start at zero and move on the first real visit. Nothing to switch on, nothing to configure.

02

Tag the links you post

Add utm_source, utm_medium or utm_campaign to a link and its values show up in the UTM lists, so a poster QR code and a Facebook post can be told apart. Newsletter and boost links are tagged for you.

03

Pick a range and read it

Open Analytics, turn the range dial, and read which day, which device, which door and which event.

Free forever. Upgrade when you're ready.

$0
Scheduling, calendar sync, newsletters, and 25 tickets a month
$5/mo
Unlimited tickets, QR check-in, event graphics, and no branding

Zero platform fees on ticket sales. You only pay Stripe's processing fee.

See all plans

Frequently asked questions

What people ask once they realise the panel is already running.

Is analytics included on the free plan?

Yes. Built-in analytics is free on every plan, including selfhosted. Views by day, week or month, the device split, all eight traffic-source buckets, referrer domains, UTM values, country-level locations, social link clicks, top events and the per-schedule split are all on the free plan. The Revenue and Check-ins tabs only need ticket sales, not a plan: selling is free up to 25 paid tickets a month per schedule and scanning them at the door is free too, so both tabs fill in on the free plan. Pro at five dollars a month takes that cap off. Zero platform fees on every plan, free included.

Do you send my visitors to Google Analytics or any other tracker?

No. The app counts views itself, into its own tables in its own database. No third-party analytics service is contacted, no analytics script from another company runs on your schedule page, and counting a view does not set a tracking cookie. On a selfhosted install the numbers never leave your own server, including the country lookup, which reads a database file that ships with the app.

Can I see who visited my schedule?

No, and that is deliberate. A stored row is a schedule, a date and a set of counters, so there is no name, no email, no session and no page-by-page trail to look up. The IP address is never written down. It is hashed with a salt that changes at midnight, and that hash sits in the cache only so the same person is not counted twenty times; the address itself is read once against the country file that ships with the app, and then it is gone. If you want to reach the people who look you up, ask them to follow your schedule: followers give you their name and email on purpose, and you can email them from the newsletter tool.

How accurate are the numbers?

They lean conservative on purpose. Over a hundred known crawler signatures are dropped before anything is counted, along with requests that do not behave like a browser, such as one that sends no Accept-Language header. The same visitor counts at most ten views per schedule per day. Your own visits as the owner or a team member are not counted, and views through an embedded calendar are not counted either. So the figure you read is a floor, not a boast.

How precise are visitor locations?

Country only. The lookup file the app ships with resolves an IP to a country, and that is the whole of what gets stored: a schedule, a date, a two-letter country code and a count. There is no city, no region and no map pin.

Can I look at one schedule, or one event, on its own?

Yes. Pick a schedule to see just its numbers, or leave it on all of them for a combined view with a per-schedule split. With a schedule selected you can narrow further to a single event and read that event's views on their own. Talent and venue schedules also get appearance views: the traffic your events pulled while listed on somebody else's schedule.

Free on every plan

Your panel is wired. It just reads zero.

Take a name, share the link, and watch the first counter move. No tag to paste, no third party, nothing to switch on.

Total views, all time

000,000

A new panel, before anything has visited. Nothing counted yet, and no visitor column waiting to be filled in.

.eventschedule.com
Get started free

No credit card required