Eventnetic – Event Tickets, Booking and Calendar

Description

Eventnetic turns a WordPress site into a box office. Create an event, decide what a
ticket costs and how many there are, put the booking form on a page, and take the
money. Nothing else has to be installed and there is no account to open anywhere.

It is a plugin for events rather than appointments: people buy a ticket for a date,
not a slot with a member of staff. A cinema showing a film on five Sundays, a venue
with a support act and a headliner, a workshop with eight benches and a deposit up
front: that is the shape it is built around.

The plugin is free with no cap on how many events you run or how many tickets you
sell, and Eventnetic takes no cut of the money.
If you later add a card gateway, that company charges its own processing fee, but
nothing comes to us per ticket. You can see it running before you install anything.

Why Eventnetic is different

  • Standalone. No WooCommerce, no page builder, no form plugin, no calendar plugin underneath it.
  • No per-ticket fee, ever. Not in the free plugin and not on a paid plan.
  • Your data, your server. Customers, bookings and money stay in your own database.
  • One screen, not twelve settings pages. Lists that filter and sort, a calendar, and forms that tell you what is wrong before you save.
  • No theme can break the booking form. It renders inside a shadow root, so the theme’s CSS cannot reach into it and it cannot reach out.

✨ Features

Events

  • Unlimited events, tickets, bookings and customers. Nothing is capped.
  • Single-day, multi-day and full-day events
  • Capacity per event, counted as bookings arrive, and it refuses to drop below what is already sold
  • Status per event, open or closed or cancelled, with the reason shown to the visitor
  • Events at a venue, online, or both, with a joining link and password released a set number of minutes before the start
  • A timezone per event, for when one of them is somewhere else
  • Categories with colours, venues and staff, all reusable across events
  • A cover image, a colour and a gallery per event
  • Duplicate an event; delete in bulk
  • One click builds the WordPress page for an event with the booking form already on it
  • An admin calendar with month, week and day views: drag an event to another day, click a day to create one
  • schema.org Event data on the page, so search engines read the date, the venue and the price

Tickets and pricing

  • Several ticket types per event, in the order you want them
  • Each type either draws on the event’s capacity or holds a quota of its own
  • A sale window per ticket type: when it goes on sale and when it stops
  • Minimum and maximum per order
  • Deposits per ticket type, a percentage or a fixed amount, with the balance left owing on the order
  • Ask each attendee for their own name, email and phone, per ticket type
  • 151 currencies, with symbol position, thousands and decimal separators, and 0 to 4 decimal places
  • A ticket type that has already sold cannot be deleted by accident

The booking form

  • A step at a time: date, tickets, your details, attendees, payment, confirmation. A step that means nothing for an event is not shown.
  • Prices are quoted by the server. Nothing the browser says about money is believed.
  • Tickets are held while somebody is checking out, with a countdown, and released if they wander off
  • Guest booking, with no WordPress account needed
  • Pay a deposit or pay in full, whichever you make the default
  • Sold out and booking-closed states that say why
  • Find my booking by code and email: status, amount due, ticket codes, the joining link for an online event, Add to Google Calendar and an .ics file
  • Customers can cancel their own booking, if you switch it on. It is off until you do.
  • Rate limiting, a honeypot and a minimum fill time as standard, plus optional Google reCAPTCHA v3 or Cloudflare Turnstile

Bookings and the door

  • A bookings list with search and filters: booking status, payment status, event, date, category, booked between two dates
  • Take a booking by hand from the desk, choosing what was paid and how
  • A door list per event: search by code, name, email or phone; filter by date, ticket type and who is already inside
  • Check people in by typing a code or with a keyboard-wedge barcode scanner. One code is one seat, and it is used once.
  • A booking is marked as arrived once its last seat is in
  • CSV export of bookings and of attendees, honouring whatever you have filtered
  • Customer records built as bookings arrive; a customer who has bookings cannot be deleted by accident
  • A payments screen: record a payment, refund it, void it, and read the transaction log for any order

Emails and automation

  • A workflow builder rather than a fixed set of emails: pick a trigger, add actions, test each one
  • 15 triggers, including booking created, status changed, payment received, refunded, attendee checked in, event starts, event ends, date cancelled, date reopened and customer created
  • Time offsets on triggers, so a reminder can go three days before the event or an hour after it ends
  • Filters on triggers, so a workflow only runs for the status or payment method you mean
  • Around 60 merge placeholders across event, booking, customer and attendee, each with a sample
  • One-click links in your own email to approve, reject or cancel a booking without logging in
  • Three workflows are set up on install: booking confirmation, payment received and booking cancelled
  • A queue screen showing what is planned, what ran, what failed and what can be retried
  • Mail through wp_mail or your own SMTP server

Payments

  • Pay at the door with no gateway and no account: cash, a card machine at the venue, or a bank transfer you mark as paid by hand
  • Your own wording for the payment instructions the customer sees
  • Orders with lines, totals, what is paid and what is still due
  • Refunds, voids, and rules enforced on the server so an order cannot be overpaid or over-refunded
  • Drag the payment methods into the order the customer sees them in

Putting it on the site

  • Five shortcodes: [eventnetic_booking], [eventnetic_events], [eventnetic_calendar], [eventnetic_my_bookings], [eventnetic_thank_you]
  • The same five as Gutenberg blocks, in their own block category
  • The same five as Elementor widgets, in their own widget category
  • A calendar with month, week, day and list views, rendered on the server, so it is readable by search engines and works with JavaScript off
  • An event catalogue with search, category filters and a “from” price

Design and the technical side

  • Named appearance styles with eight colour tokens and three layout tokens, eight presets to start from, and a style you can pick per shortcode
  • Every widget mounts in a shadow root, so no theme can break it and it cannot leak styles out
  • Assets load only on pages that actually have a widget on them
  • A REST API under eventnetic/v1, and around 85 actions and filters for extending it
  • Translation ready, with RTL support
  • A setup wizard, a checklist, and a system information panel that checks cron, folders and PHP extensions
  • Uninstall removes its tables, its options and its uploads folder. Nothing is left behind.

⭐ Eventnetic Pro

The free plugin is not a trial and does not expire. Eventnetic Pro
adds features rather than lifting a cap:

  • Seat maps: draw the room once and reuse it. Rows, tables, stands and standing areas, numbered any way you like. Seats belong to the date, so A7 sells again next week.
  • PDF tickets and QR codes: a printable pass per seat, attached to the confirmation email.
  • Card payments: Stripe, PayPal, or hand the checkout to WooCommerce.
  • Discount codes: percentage or fixed, scoped to certain tickets, with limits and a date range.
  • Taxes: percentage or fixed, scoped to a venue, a category or an event.
  • Invoices: gapless numbering series, editable templates, issued when the money arrives.
  • Waiting lists: offers only the places that actually came free, and the offer expires.
  • Repeating dates: one class, ten Tuesdays, each with its own capacity and door list.
  • Price per date: a different price, quota or sale window on the dates that need one.
  • Custom booking fields: thirteen field types, conditional logic and file uploads.
  • Zoom: meetings and webinars, a separate room per date.
  • SMS, WhatsApp, Telegram and webhooks: the same workflow builder, more ways to reach people.

Free and Pro, side by side.

External services

Eventnetic works without contacting anything outside your site. Two features, both
switched off until you configure them, call a third party:

Google reCAPTCHA is used only if you switch bot protection on under
Settings Integrations Bot protection and choose Google, which needs a site
key and a secret key from your own Google account. Two things then happen, and both
stop the moment the setting is switched back off:

  • A page carrying the booking form loads https://www.google.com/recaptcha/api.js
    into the visitor’s browser. This is how the check is made, and there is no way
    to run reCAPTCHA without it. Google may set cookies and will see the visitor’s
    IP address and the page they are on.
  • When the form is submitted, the token their browser produced is sent from your
    server to https://www.google.com/recaptcha/api/siteverify, together with your
    secret key and the visitor’s IP address, and Google answers whether it looks
    like a person. Nothing else is sent.

Terms: https://policies.google.com/terms / Privacy: https://policies.google.com/privacy

Cloudflare Turnstile is the same feature with Turnstile chosen instead, and the
same two steps: https://challenges.cloudflare.com/turnstile/v0/api.js is loaded
into the visitor’s browser, and the token is verified from your server at
https://challenges.cloudflare.com/turnstile/v0/siteverify.
Terms: https://www.cloudflare.com/website-terms/ / Privacy: https://www.cloudflare.com/privacypolicy/

Captcha is off when the plugin is installed. Until you turn it on and enter your
own keys, no page loads anything from either service and nothing is sent to them.

Source code

The admin screens and the booking form are a React application, and the files
under react/dist/ that the browser loads are compiled and minified. Both the
source and the toolchain that produces the bundles ship inside this plugin, so
nothing has to be fetched from anywhere to read or rebuild them:

  • react/src/ is our source, TypeScript and TSX, one directory per screen
  • react/package.json is the dependency list and the build script
  • react/package-lock.json pins every dependency, so a rebuild draws the same
    source it was built from
  • react/vite.config.ts and react/tsconfig*.json are the build configuration
  • react/dist/ is the compiled output the plugin loads at runtime

To rebuild react/dist/ from source, from the react directory, run npm ci
and then npm run build. That runs tsc -b && vite build, the same command
that produced the files in this package.

Third-party libraries. The compiled bundles also contain open-source
libraries, minified in with our own code by Vite. They are not written by us and
their unminified source is not in react/src/; every one is a published npm
package, pinned in react/package.json and react/package-lock.json and fetched
from https://www.npmjs.com by the npm ci above. The notable ones, with their
public source repositories:

  • React: https://github.com/react/react
  • FullCalendar: https://github.com/fullcalendar/fullcalendar
  • TanStack Query: https://github.com/TanStack/query
  • TanStack Table: https://github.com/TanStack/table
  • TipTap: https://github.com/ueberdosis/tiptap
  • Radix UI: https://github.com/radix-ui/primitives
  • dnd-kit: https://github.com/clauderic/dnd-kit
  • Hugeicons (@hugeicons/*, the source of icon chunks such as MapsLocation01Icon and PaintBoardIcon): https://github.com/hugeicons/hugeicons
  • react-phone-number-input (the flags chunk): https://gitlab.com/catamphetamine/react-phone-number-input
  • react-hook-form: https://github.com/react-hook-form/react-hook-form
  • Zod: https://github.com/colinhacks/zod
  • DOMPurify: https://github.com/cure53/DOMPurify

The full, authoritative list of dependencies is react/package.json; each is a
published npm package under its own OSI-approved licence, with its repository
linked from its page at https://www.npmjs.com.

The PHP is not compiled and is included as written. vendor/ holds Composer’s
generated autoloader only, no third-party PHP libraries.

Licence

Eventnetic is licensed under the GPL, version 2 or later. The JavaScript libraries
listed under “Source code” are each under their own OSI-approved, GPL-compatible
licence (MIT in almost every case), none modified from its published release, and
vendor/ holds only Composer’s generated autoloader. The Geist font files under
react/dist/ come from @fontsource/geist (https://github.com/fontsource/font-files)
under the SIL Open Font License 1.1, which is GPL-compatible.

Screenshots

Blocks

This plugin provides 5 blocks.

  • Booking form
  • Event catalogue
  • Events calendar
  • Find my booking
  • Thank you

Installation

  1. Upload the plugin through Plugins Add New Upload Plugin, or install it from the WordPress plugin directory and activate it.
  2. A short setup asks for the business name, the currency and how you want to be paid, and offers to create the pages the booking form needs.
  3. Create an event under Eventnetic Events, give it at least one ticket type, and publish the page the setup made. If you would rather place it yourself, put [eventnetic_booking event=”12″] on any page, where 12 is the event id.
  4. Add [eventnetic_calendar] to a page if you want a calendar of everything that is coming, and [eventnetic_events] for a catalogue people can search.

Both are also available as blocks and as Elementor widgets.

The documentation is written as short pages you can read in a minute. The ones to start with:

FAQ

What kinds of events is it for?

Cinemas and film clubs, music venues, theatres, comedy nights, conferences, workshops
and classes, guided tours, museums and exhibitions, festivals, meetups, retreats,
tastings, markets and fairs, charity dinners, and anything sold as timed entry. A few
written up in full: a single-screen cinema,
a music venue deciding who pays the booking fee,
a workshop taking money up front,
a three-day conference bought once,
a walking tour with no building and
timed entry for eighteen people on a stair.

What does it work with?

WordPress 6.4 and up, PHP 8.1 and up. The block editor and Elementor are supported out
of the box, and the shortcodes work in any theme or builder that can render one.
Optional, and only when you configure them: Google reCAPTCHA v3, Cloudflare Turnstile,
and your own SMTP server. On Pro: Stripe, PayPal, WooCommerce, Zoom and Twilio. See
integrations.

Does Eventnetic need WooCommerce, a page builder or a form plugin?

No. It is standalone. Everything above happens in Eventnetic itself, with no other
plugin installed. WooCommerce is supported on Pro for people who already run a shop
and want the checkout to go through it, but it is a choice, not a requirement.

Can I take payment without a payment gateway?

Yes, and most people start that way. “Pay at the door” is switched on during setup
and needs no account: cash, a card machine at the venue, or a bank transfer you mark
as paid by hand. See payment methods.

Are there per-ticket fees?

None from us, on any plan. If you add Stripe or PayPal later, they charge their own
processing fee on each transaction, the same as they would anywhere else. Nothing is
taken by Eventnetic. We wrote up what the alternatives actually cost.

What are the limits of the free version?

There is no limit on events, tickets, bookings or customers. The free plugin holds an
event on a single date and takes payment at the door; seat maps, PDF tickets, card
gateways, repeating dates and the rest are on Pro. The
free and Pro page
lists both sides in full.

Does it work with my theme?

Yes. The booking form renders inside a shadow root, so the theme’s CSS cannot reach
into it and it cannot reach out. It looks the same on every theme, and you set its
colours in Eventnetic rather than fighting the theme for them.

Can I check people in at the door?

Yes, in the free plugin. The door list is searchable by name, code, email or phone,
and you check somebody in by typing their code or scanning it with a keyboard-wedge
barcode scanner. One code is one seat and it is accepted once. Pro adds the printable
PDF ticket with a QR code
for the scanner to read.

Does it do assigned seating?

On Pro. You draw the room once, with rows, tables, stands and standing areas, and
reuse it for every event held there. Seats belong to the date rather than the event,
so the same seat can be sold again next week. See seat maps,
or how a room that holds 104 gets built.

Can I sell a class or a season that repeats?

On Pro. A repeating event keeps one page and one set of ticket types, while each date
carries its own capacity, its own bookings and its own door list. There is a
write-up of selling one class across ten Tuesdays.

Can I run online events?

The free plugin handles online and hybrid events: you paste the joining link and
password, and they are released to ticket holders a set number of minutes before the
start. Pro connects Zoom
and creates the meeting or webinar for each date itself.

Do customers need a WordPress account?

No. Guest booking is on by default. Afterwards they find their booking with the code
and the email address they used, on the page carrying [eventnetic_my_bookings].

Is it translation ready?

Yes. Both the PHP and the admin application ship .pot files and load a text domain,
and right-to-left languages are supported.

Does it send my data anywhere?

Not by itself. The plugin sends no analytics, no telemetry and no licence checks, and
it does not call home. Two optional features contact a third party once you configure
them; they are described under External services below.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Eventnetic – Event Tickets, Booking and Calendar” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • First release on the WordPress plugin directory.