
Events & Tickets runs the evening from the first booking to the last guest
through the door. It was built for clubs, bars and party promoters — the people
for whom an event is a door, a list, and a queue outside — and it has since been
used for seated dinners, concerts, conferences and weddings, because they are
the same problem wearing different clothes.
Nothing is capped and nothing is metered. There is no per-ticket fee, no
external service to sign up for, no account to create, and no telemetry. Your
guest list lives in your own database, on your own server.
It speaks six languages, and it brought them with it
English, French, Spanish, Portuguese, German and Arabic — not a promise that
somebody will translate it one day, but six finished catalogues in the download.
Install it and it is already in your language.
It works the language out for itself. Whatever WordPress is set to, the
plugin follows — and it follows by language rather than by locale, so pt_BR,
pt_PT and pt all land on Portuguese and ar_DZ, ar_MA and ar_SA all land
on Arabic. A site in a language it does not have falls back to French rather than
serving a screen that is half one language and half another. If you would rather
say it outright, there is one setting: Settings Language.
Everything is translated, not just the buttons. The booking form the guest
fills in, the emails they receive, the words printed on the ticket itself, the
door station held at the entrance, and the admin screens you work in. Dates too —
the month and the weekday come out of the plugin’s own catalogue rather than
WordPress’s, so a French ticket does not print September under a French
heading on an English site.
Arabic really is Arabic. The screens, the emails and the booking form read
right to left. And the ticket — which is a drawn image, not a web page — is drawn
with an Arabic typeface that travels with the plugin, with the letters joined the
way Arabic joins them and the line put in reading order. A time, a price, a table
number or a ticket reference still runs the other way inside the sentence, as it
should. Most plugins that claim Arabic print a row of disconnected letters
backwards on the one thing the guest actually holds.
The language travels with the booking. A guest who booked in Spanish gets
their ticket in Spanish — including a ticket re-sent months later, from a screen
you are reading in French. And your own words stay yours: event titles, venue
names, payment instructions and the success message are your text, and the plugin
will not rewrite them.
Who it is for
- Clubs, bars and late-night venues
- Party and concert promoters
- Seated dinners, galas and weddings
- Conferences, seminars and school evenings
- Associations and community groups
- Anyone taking bookings by card, by transfer, by WhatsApp or in cash
Set an event up by answering questions
Creating an event opens an assistant, and the assistant is the shortest way to
describe a night that exists. It starts with a drawing rather than a form:
fifteen kinds of event, from a standing club night to a banquet, a theatre, a
podium in I or in T, a stadium, a classroom. You point at the one that looks
like your room.
From there every answer decides the next question, and nothing is asked twice.
Are seats numbered? Then how is the room laid out — tables in rows, rows of
chairs, or no order at all? How many rows, how many tables to a row, how many
chairs to a table? Are there levels — a balcony, a terrace, a gallery? Which
parts are sold at which price? How are you paid, and what should somebody who
pays by transfer be told? Does the ticket leave immediately, or once you have
assigned the places yourself? Who chooses the place — the guest, or you?
The panel on the right draws the room while you answer, and shows the prices as
the booking page will show them and the line the ticket will print. When you
finish, the event is ready to sell: places, zones, prices, payment, delivery.
The assistant owns nothing. It adds no setting of its own and keeps no
column of its own — it fills in the panels that already held each answer, and
every one of them stays editable field by field afterwards. An assistant that
knows something the editor does not is a second source of truth, and this
plugin has already paid that bill. For the same reason it refuses to rebuild
the room of an event that already has bookings: it will not renumber a table
somebody has already been sold.
The room is an inventory, and a zone is an interval of it
Say the room once — six rows of eight tables, ten chairs a table, plus a
balcony — and the plugin numbers every place in it. A zone then claims a slice
of that inventory: tables 1 to 5, rows A to C, the whole balcony. It
invents nothing, so nothing can be sold twice and nothing is quietly lost:
whatever no zone claims is named on screen as unclaimed rather than forgotten.
A price category is not a zone. A category has a name and a price, and several
zones can share it — Premium is Premium on the left balcony and on the right.
The booking page sells the categories; the ticket prints the zone, because
the zone is what somebody reads at the door.
Each zone also says what it controls: access only — a standing area where
nobody has a seat — or exactly where each person sits. One event can hold all
three at once: a standing floor, a seated balcony, and a numbered block.
And if you want to draw the room instead of describing it, the builder is
there: drag tables and rows onto a plan, rectangle-select or shift-click,
align, space evenly, nudge with the arrow keys, place a stage, a bar, a door.
The plan you draw is the plan the guest picks from, and the plan you watch on
the night.
Every guest is a person, not a number
A booking for five asks for five names, and each one gets their own ticket with
its own QR code. One code cannot let five people in, and the door knows who is
standing in front of it.
The booking form also knows what is left while it is being filled in —
counted against what the page was rendered with, what the lines above it have
already taken, and what somebody else is taking in another browser at the same
moment. An option with nothing left is greyed out rather than removed, so
nobody’s choice is ever changed behind their back. The real guarantee is not in
the browser, where it could never be: the event is locked, the places are
recounted and the booking is refused at the moment of writing.
Tickets that look like tickets
Each one is drawn at 100 x 250 mm, 300 dpi, with the QR engraved into the
artwork, and delivered as a PDF by email. Mail servers strip attachments more
often than they admit, so every message also carries a download link for each
guest.
The ticket studio takes your own artwork if you have some — upload it, generate
colour variations, and move every printed field where you want it on a visual
field map — and generates a design for you in the colour of your choice if you
would rather not think about it.
The door works
Open the check-in station on any phone — no app to install. Point it at a
ticket and it answers in one screen: valid, already used, or not for tonight.
Counters update live, several phones can scan the same event at once, and when
the venue’s wifi gives up — it will — there is a printable roll-call list with
every guest and every ticket number on it.
The plan says who is actually in the room. A place that has been sold and a
place whose guest has walked through the door are two different facts, and only
one of them moves all evening: a guest who has scanned turns green, carries a
tick and pulses, and a table whose whole party has arrived wears a green ring.
Payment on your terms
Two ways, and neither is the lesser one.
Take the money yourself: a booking arrives pending, you confirm it however you
actually get paid — bank transfer, WhatsApp, cash at the office — and the
tickets go out the moment you do. Nothing is ever issued for money you have not
received. What the guest is told about paying is your own text, written per
event, because offline that text is the payment.
Or let the card do it: add your own Stripe key and the guest pays on Stripe’s
page, comes back confirmed, and gets their tickets without you touching
anything. Their places are held while they pay and released on their own if
they walk away, so the same seat is never sold twice. The money goes straight
from the guest to your own Stripe account — this plugin is never in between,
and takes nothing.
What the free plugin does
Everything below is in this plugin. There is nothing to unlock.
- Unlimited events and unlimited tickets. No cap, no per-ticket fee.
- Six languages in the box — English, French, Spanish, Portuguese, German
and Arabic, detected from your site or chosen in one setting, covering the
admin, the booking form, the emails, the ticket artwork and the door station,
with right-to-left layout and real Arabic shaping on the printed ticket. - Event assistant — fifteen drawn archetypes, one question at a time, and a
live preview of the room, the prices and the printed line. - Event editor — three steps to create one, then panels to refine it:
information and details, prices and places, registration window, description,
artwork. - Room builder — describe the room in numbers or draw it: tables, rows,
levels, a stage, multi-selection, alignment, even spacing, arrow-key nudging. - Zones and price categories — a zone is an interval of the room, a category
is a name and a price that several zones can share. - Organizers library — name, logo, colours, contact. Reused across events.
- Venues library — address, capacity, notes. Reused across events.
- Public booking page — one shortcode,
[bitforgenet_registration]. Asks
for the name of every person coming, shows what is still available as the
form is filled in, respects capacity and the registration window, and
confirms on screen. If no page carries the shortcode, the plugin shows the
form itself rather than leaving a dead link. - Bookings screen — search, filter by event and status, confirm payment,
add an internal note, resend an email, cancel, or enter a booking by hand. - Seating and the floor — every zone on one screen while the evening fills,
a booking seated by hand or placed for you, sold against arrived, and a
ticket that will not print until every guest on it has a place. - Moving somebody who already holds a ticket — the screen states the three
consequences, the buttons stay dead until you typeedit place, the old
ticket stops working at the door and a second email goes out. - Personal QR tickets — one per guest, rendered as a PDF, sent by email
with a download link alongside. - Ticket studio — your own artwork, colour variations, and a visual field
map for every printed field. - Door check-in station for any phone, opened with a per-event door code,
with live counters and multi-station scanning. - Printable roll-call list for the evenings the network fails.
- Discount codes, with their own limits.
- Card payment with Stripe — the guest pays on Stripe’s own page and comes
back with their booking confirmed. Their places are held while they pay and
released on their own if they never finish. The money goes straight from the
guest to your own Stripe account — this plugin is never in between and takes
nothing. - Team notifications — a new booking can be copied to as many colleagues as
you like, not just one address. - CSV export with a column picker — bookings or guests, one event or all,
every field the plugin holds, and it remembers what you ticked. - Tools and data — a system check that tells you why a ticket or an email
did not arrive, a test-ticket email, a database check, and an
archive-and-clear that copies every booking into archive tables before
emptying the live ones, behind a one-time code sent to an address you
nominate. - Searchable archive of everything that has been cleared.
- Activity log — who did what, and when.
- A Help screen inside the plugin — the whole guide, on the screen where
you are stuck, linking to the screens it talks about. Open to anyone who can
see the plugin at all, because the person who most needs it is the one on the
door at midnight. - Delete-all-data on uninstall, if you tick it. Off by default.
Nothing is held back
There is no paid edition of this plugin. The assistant, the room builder, the
ticket studio, the price categories, the discount codes and card payment are
all here, in the plugin you just installed. Nothing is capped, nothing is
metered, and no screen ends in an offer.
Reporting a security issue
If you find something, write to the address on
https://bitforgenet.dev/ and it will be looked at, fixed and credited here by
name unless you would rather not be. Please test against your own installation
rather than somebody else’s.
Thank you to Alik for the two issues fixed in 1.2.1.
Privacy
The plugin stores what a booking needs — names, email address, phone number —
in your own database, on your own server. Email goes out through WordPress,
which means through whatever mail service your site already uses. There is no
account to create with us and no telemetry: nothing is ever sent to BitForge
Network.
External services
The plugin uses one external service, and only if you set it up yourself.
Stripe — used only when you enter a Stripe secret key under Settings
Payments and turn card payment on for an event. Until then no connection to
Stripe is ever made.
When a guest chooses to pay by card, the plugin asks Stripe to open a payment
page and …
Screenshots

The event assistant. Fifteen kinds of night, drawn rather than listed — pick the one that looks like your room, and every answer from there decides the next question. The panel on the right builds the room as you go, and shows the prices the booking page will show and the line the ticket will print. It refuses to rebuild a room that already has bookings.

The room builder. Describe the room in numbers — rows, tables to a row, chairs to a table, levels — or draw it: drag a stage in, rectangle-select a whole row, shift-click, align, space evenly, nudge with the arrow keys. The plan you draw is the plan the guest picks from and the one you watch on the night.

Prices & places, on one panel. What a ticket will say, how places are given out, the levels, and each part of the room with the price category it is sold as and the first places it hands out. The capacity is counted from the room, not typed beside it.

The booking page. One shortcode on any page. It asks for the name of every person coming — five names for a booking of five — and it knows what is left while the form is being filled in, counting the lines above and the other people booking at the same moment.

The floor, on the night. Every part of the room on one screen, filling in real time, with three facts kept apart: sold, seated, and arrived. The pale bar is what has been sold; the solid one inside it is who has walked in.

The door check-in station. A web page on any phone, opened with a per-event door code — no app to install. Camera, photo or keypad, a live count of who is inside, and one screen per scan: let in, already inside, or not for tonight.

Every ticket issued. One per guest, with its own serial and its own QR code, the place it carries, and whether that guest has walked through the door — with the minute and the entrance they came in by.

The control room. Every event, what has sold, what is still waiting on a payment, who has arrived — and the shortcode for the event you are looking at, ready to paste.

Help, inside the plugin. The whole guide on the screen where you are stuck: a first event in ten minutes, then the assistant, the room, payment, tickets, the night, and what to do when something does not arrive. Every step links to the screen it talks about.