Skip to main content

Selfhost Event Schedule

Run Event Schedule on your own server and your own database. A single-tenant install has no plan tiers, so every Pro and Enterprise feature is switched on.

Selfhost guides

Start with Installation, then add only the integrations you need. Each guide lists the .env keys it requires. If you want to host schedules for other people, each on its own subdomain, follow the SaaS documentation after installing.

Selfhost - Selfhosted deployments only No plan gates

Setting IS_HOSTED=false makes every schedule resolve to the top tier, so the Pro and Enterprise badges you see elsewhere in these docs do not apply to your install: unlimited paid ticket sales, the check-in dashboard, passes, gift cards, installment plans, promo codes, add-ons, the ticket waitlist, custom fields, webhooks, custom CSS, internal and unlisted events, team members, scheduled graphic emails and unlimited newsletters are all available, and the AI features come with them once you add an AI key. The differences run the other way instead, and they are listed below.

Where to start

  1. Install the app. It runs on ordinary PHP hosting: PHP 8.2 or newer, MySQL 5.7 or MariaDB 10.3, a web server whose document root is the public directory, and HTTPS. Create an empty database, upload the release files, set the file permissions, then open your domain: the sign-up page doubles as the first-run setup wizard, and it takes your database details, runs the migrations, writes .env and creates your account. Finish with the cron entry that runs the scheduler every minute. It is not optional: the scheduler drives the queue worker, so without it email and calendar sync quietly stop. Installation
  2. Set up email. Nothing that emails a person works until a mail driver is configured, including password resets, ticket confirmations, booking requests and newsletters. One driver in .env serves the whole instance. Email Setup
  3. Add a way to take payment if you sell tickets, passes, gift cards or paid appointments. Stripe covers all four and collects into the one account whose keys you put in .env; paying each event owner into their own Stripe account takes Stripe Connect, which only runs in SaaS mode. PayPal and Payfast (South African rand only) take ticket orders, through one account for the whole install or through each user's own, and Invoice Ninja needs no .env configuration at all. No platform fee is ever added to a sale. Stripe, PayPal and Payfast
  4. Add an AI key (Google Gemini or OpenAI) if you want AI event import, agenda scanning, translation or auto import. Everything else works without one. AI Setup
  5. Connect calendars. Google and Outlook sync each need your own OAuth credentials in .env; CalDAV needs no server-side configuration, so a schedule can connect one straight away. Google Calendar, Outlook Calendar
  6. Then the optional pieces. Federation lists your public events on eventschedule.com and links each one back to your site, and stays off until you turn it on in the admin panel; Boost runs Meta ads from inside the app, billed to the one Meta ad account you configure, so every campaign spends your money; Google Wallet puts an "Add to Google Wallet" button on every ticket, free registrations included, and needs a Google Wallet issuer account of your own; the admin panel at /admin gives you instance-wide monitoring and settings, and lets you edit any schedule on the install down to its name, path and contact details (the account the setup wizard created is already an instance admin); and the accessibility guide covers what to put in your own accessibility statement.

How a selfhosted install differs

Same codebase either way. IS_HOSTED=false is what selects the middle column.

Area Your own server eventschedule.com
Plans No tiers. Every schedule has every feature. Free, Pro and Enterprise
Schedule addresses Paths under your domain, e.g. yourdomain.com/my-schedule, set in the Path field of a schedule's settings A subdomain, e.g. my-schedule.eventschedule.com, and Enterprise can point its own domain at a schedule
Accounts The setup wizard creates the first account, which becomes the instance admin, then sign-up closes. Set ALLOW_REGISTRATION=true to reopen it. Anyone can sign up
Team members Unlimited The owner only, until Enterprise, which allows up to five members per schedule
Email delivery One mail driver in .env for the whole instance Per-schedule SMTP in the Email Settings tab of a schedule's Integrations section. Hosted only, so that tab is hidden on your install.
Newsletter allowance Unlimited 10 recipients a month on Free, 100 on Pro, 1,000 on Enterprise, and unlimited for a schedule sending through its own SMTP. Each recipient counts as one.
Paid ticket allowance Unlimited 25 paid tickets a month on Free, unlimited on Pro and Enterprise. Free tickets and RSVPs never count.
Payments Stripe collects into the one account whose keys are in .env. PayPal and Payfast can do the same for the whole install, or each user connects their own Each owner connects their own Stripe (through Stripe Connect), PayPal or Payfast account and is paid into it directly
Auto Import An Auto Import section in a schedule's settings imports the events found at its Import URLs once a day, from the scheduler. Import Cities is optional and only filters: an event held in a city that is not on the list is skipped. Needs an AI key. Not available
Updates Settings → App Update compares your installed version against the latest release and applies it in one click, or run php artisan app:update Updated for you
Attribution No "Powered by" footer, but every public schedule page keeps a small Event Schedule chip in the corner, which the license asks you to leave in place. Embedded views do not carry it. Branding is removed on Pro and Enterprise

Beyond selfhosting

The rest of the documentation applies to every deployment: the user guide describes the same screens your install runs.

Event Schedule is released under the Attribution Assurance License, an OSI-approved licence adapted from the BSD licence, which is why the credit chip stays on a selfhosted install. The open source page links the repository, the releases and the license text.

Improve this page on GitHub