{"id":361265,"date":"2026-09-02T13:56:18","date_gmt":"2026-09-02T13:56:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/2kevents-event-tickets-and-door-check-in\/"},"modified":"2026-10-22T19:38:28","modified_gmt":"2026-10-22T19:38:28","slug":"bitforgenet-guest-tickets","status":"publish","type":"plugin","link":"https:\/\/it.wordpress.org\/plugins\/bitforgenet-guest-tickets\/","author":23537276,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.15.7","stable_tag":"1.15.7","tested":"7.1.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Events Calendar, Tickets & Registration with QR Check-in","header_author":"BitForge Network","header_description":"Professional event, registration, ticketing and door check-in system. Custom events with organizers, venues and line-ups, per-event registration, manual or automated payment validation, unique QR tickets rendered onto designer templates, PDF delivery by email, and live access control at the gate.","assets_banners_color":"6c727a","last_updated":"2026-10-22 19:38:28","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ko-fi.com\/bitforgenet","header_plugin_uri":"https:\/\/bitforgenet.dev\/plugins\/bitforgenet-guest-tickets\/","header_author_uri":"https:\/\/bitforgenet.dev\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":851,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.8":{"tag":"1.0.8","author":"bitforgenet","date":"2026-09-02 13:56:00","revision":3678117},"1.0.9":{"tag":"1.0.9","author":"bitforgenet","date":"2026-09-02 20:20:09","revision":3678620},"1.10.0":{"tag":"1.10.0","author":"bitforgenet","date":"2026-09-14 19:05:09","revision":3695814},"1.10.1":{"tag":"1.10.1","author":"bitforgenet","date":"2026-09-16 22:36:21","revision":3699294},"1.11.0":{"tag":"1.11.0","author":"bitforgenet","date":"2026-09-20 12:56:01","revision":3704270},"1.12.18":{"tag":"1.12.18","author":"bitforgenet","date":"2026-09-29 20:30:11","revision":3719808},"1.13.12":{"tag":"1.13.12","author":"bitforgenet","date":"2026-10-04 18:59:01","revision":3727726},"1.14.4":{"tag":"1.14.4","author":"bitforgenet","date":"2026-10-11 17:54:52","revision":3739908},"1.15.7":{"tag":"1.15.7","author":"bitforgenet","date":"2026-10-22 19:38:28","revision":3760451},"1.2.0":{"tag":"1.2.0","author":"bitforgenet","date":"2026-09-05 14:52:39","revision":3682551},"1.2.1":{"tag":"1.2.1","author":"bitforgenet","date":"2026-09-05 15:12:40","revision":3682567},"1.2.2":{"tag":"1.2.2","author":"bitforgenet","date":"2026-09-07 17:37:11","revision":3685341},"1.8.7":{"tag":"1.8.7","author":"bitforgenet","date":"2026-09-12 23:43:59","revision":3693196},"1.9.0":{"tag":"1.9.0","author":"bitforgenet","date":"2026-09-13 01:24:51","revision":3693236},"1.9.1":{"tag":"1.9.1","author":"bitforgenet","date":"2026-09-13 21:33:28","revision":3694209}},"upgrade_notice":{"1.15.7":"<p>A page of their own for every booking, guest cancellation, refunds, invoices\nand credit notes, your own email texts, and questions for your guests. New\ncolumns and two new tables: back up first. Guest cancellation and invoices\nstay off until you turn them on.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3697091,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3697091,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500-ar.png":{"filename":"banner-1544x500-ar.png","revision":3704268,"resolution":"1544x500","location":"assets","locale":"ar","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3704268,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-ar.png":{"filename":"banner-772x250-ar.png","revision":3704268,"resolution":"772x250","location":"assets","locale":"ar","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3704268,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.8","1.0.9","1.10.0","1.10.1","1.11.0","1.12.18","1.13.12","1.14.4","1.15.7","1.2.0","1.2.1","1.2.2","1.8.7","1.9.0","1.9.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3694201,"resolution":"1","location":"assets","locale":"","width":1520,"height":639},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3719801,"resolution":"10","location":"assets","locale":"","width":1568,"height":677},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3719801,"resolution":"11","location":"assets","locale":"","width":1280,"height":900},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3719801,"resolution":"12","location":"assets","locale":"","width":1280,"height":960},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3719801,"resolution":"13","location":"assets","locale":"","width":1568,"height":676},"screenshot-14.png":{"filename":"screenshot-14.png","revision":3727725,"resolution":"14","location":"assets","locale":"","width":1350,"height":1063},"screenshot-15.png":{"filename":"screenshot-15.png","revision":3727725,"resolution":"15","location":"assets","locale":"","width":1600,"height":1375},"screenshot-16.png":{"filename":"screenshot-16.png","revision":3727725,"resolution":"16","location":"assets","locale":"","width":1600,"height":1250},"screenshot-17.png":{"filename":"screenshot-17.png","revision":3727725,"resolution":"17","location":"assets","locale":"","width":1600,"height":1250},"screenshot-18.png":{"filename":"screenshot-18.png","revision":3727725,"resolution":"18","location":"assets","locale":"","width":1600,"height":1250},"screenshot-19.png":{"filename":"screenshot-19.png","revision":3727725,"resolution":"19","location":"assets","locale":"","width":1800,"height":1140},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3694201,"resolution":"2","location":"assets","locale":"","width":1520,"height":639},"screenshot-20.png":{"filename":"screenshot-20.png","revision":3727725,"resolution":"20","location":"assets","locale":"","width":1753,"height":669},"screenshot-21.png":{"filename":"screenshot-21.png","revision":3727725,"resolution":"21","location":"assets","locale":"","width":1153,"height":513},"screenshot-22.png":{"filename":"screenshot-22.png","revision":3739907,"resolution":"22","location":"assets","locale":"","width":1624,"height":1256},"screenshot-23.png":{"filename":"screenshot-23.png","revision":3739907,"resolution":"23","location":"assets","locale":"","width":1697,"height":532},"screenshot-24.png":{"filename":"screenshot-24.png","revision":3739907,"resolution":"24","location":"assets","locale":"","width":1500,"height":634},"screenshot-25.png":{"filename":"screenshot-25.png","revision":3739907,"resolution":"25","location":"assets","locale":"","width":1656,"height":994},"screenshot-26.png":{"filename":"screenshot-26.png","revision":3739907,"resolution":"26","location":"assets","locale":"","width":1697,"height":717},"screenshot-27.png":{"filename":"screenshot-27.png","revision":3739907,"resolution":"27","location":"assets","locale":"","width":1400,"height":1530},"screenshot-28.png":{"filename":"screenshot-28.png","revision":3739907,"resolution":"28","location":"assets","locale":"","width":1697,"height":1768},"screenshot-29.png":{"filename":"screenshot-29.png","revision":3760450,"resolution":"29","location":"assets","locale":"","width":1536,"height":3566},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3694201,"resolution":"3","location":"assets","locale":"","width":1520,"height":639},"screenshot-30.png":{"filename":"screenshot-30.png","revision":3760450,"resolution":"30","location":"assets","locale":"","width":1440,"height":516},"screenshot-31.png":{"filename":"screenshot-31.png","revision":3760450,"resolution":"31","location":"assets","locale":"","width":1920,"height":1010},"screenshot-32.png":{"filename":"screenshot-32.png","revision":3760450,"resolution":"32","location":"assets","locale":"","width":1924,"height":1854},"screenshot-33.png":{"filename":"screenshot-33.png","revision":3760450,"resolution":"33","location":"assets","locale":"","width":1242,"height":962},"screenshot-34.png":{"filename":"screenshot-34.png","revision":3760450,"resolution":"34","location":"assets","locale":"","width":1924,"height":2646},"screenshot-35.png":{"filename":"screenshot-35.png","revision":3760450,"resolution":"35","location":"assets","locale":"","width":1924,"height":2594},"screenshot-36.png":{"filename":"screenshot-36.png","revision":3760450,"resolution":"36","location":"assets","locale":"","width":1044,"height":2856},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3694201,"resolution":"4","location":"assets","locale":"","width":1520,"height":639},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3694201,"resolution":"5","location":"assets","locale":"","width":1520,"height":479},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3694201,"resolution":"6","location":"assets","locale":"","width":1520,"height":639},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3694201,"resolution":"7","location":"assets","locale":"","width":1520,"height":639},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3694201,"resolution":"8","location":"assets","locale":"","width":1552,"height":660},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3694201,"resolution":"9","location":"assets","locale":"","width":1552,"height":651}},"screenshots":{"1":"The event assistant. Fifteen kinds of night, drawn rather than listed \u2014 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.","2":"The room builder. Describe the room in numbers \u2014 rows, tables to a row, chairs to a table, levels \u2014 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.","3":"Prices &amp; 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.","4":"The booking page. One shortcode on any page. It asks for the name of every person coming \u2014 five names for a booking of five \u2014 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.","5":"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.","6":"The door check-in station. A web page on any phone, opened with a per-event door code \u2014 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.","7":"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 \u2014 with the minute and the entrance they came in by.","8":"The control room. Every event, what has sold, what is still waiting on a payment, who has arrived \u2014 and the shortcode for the event you are looking at, ready to paste.","9":"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.","10":"Dates that repeat. One event, every Friday: each date keeps its own bookings, capacity and door. Change one date, this one and the following, or all of them \u2014 a date somebody has booked is never moved with the others.","11":"The guest chooses the date. A series shows its dates on the booking page, and the one chosen travels to the emails, the ticket and the calendar file.","12":"The door works one date at a time. A ticket for another Friday is refused as \"Not tonight\", and the screen says which date it is for.","13":"Online and hybrid events. Every guest gets a personal join link that goes through your site and is checked when clicked, so the meeting link can change at any time. You choose who gets it, and when the room opens.","14":"The agenda, month view. Every date of every event in its day, each with its own state; switch to compact, large or list, go to a date, keep only some events or one category.","15":"The agenda as a grid of cards. The picture on top, the price, the state, the category, a button to book \u2014 and add to my calendar, and share.","16":"The page of an event. Your theme's look or the Classic one: the path from the list of events, the picture, the date and the place, the categories, the booking form below. Each date of a series has its own page.","17":"A category's page. Its picture, its words and only its events \u2014 the agenda filtered for it, with the categories under it.","18":"A venue's page. The address, the map, the website, a few words, and the events to come there.","19":"Your own agenda. Every state, drafts included, what the site shows and what it hides, how full each night is. Drag a night to another day; change several at once.","20":"Cards and colours. Rows or a grid, the size of the pictures, the corners and the colour of each state, with a sample that changes as you choose.","21":"Categories. A tree of families, each with a colour, a picture and its own page; ticked on each event.","22":"A full date keeps its guests. Under \"sold out\", the waiting list: a name, an email, how many places. A freed place is held for the first in line.","23":"The waiting list of each date: who waits, in which order, whose place is held until when. Offer a place by hand, take somebody off, export.","24":"Sale dates and a minimum. An early bird whose sale has ended stays on the page, greyed, with the reason; a group category says its minimum.","25":"On each category: on sale from, until, and the minimum per booking \u2014 and the event's own waiting list, beside it.","26":"Reminders, per event: the site's, its own, or none; and the link where guests can review the event the morning after.","27":"A reminder the day before, in the guest's language: the night, the venue and the way there.","28":"Messages to participants. Choose who, write once, see it as they will, send yourself a test, then send in batches. Nothing tracks who opens it.","29":"The guest's own page, opened by the signed link in every email: where the booking stands, each guest and their ticket \u2014 one who left with a refund \u2014 the invoice and its credit note, and what happened when.","30":"A guest cancels, if you allow it: a question first, with what it means. Their places go back on sale; a payment is not refunded on its own.","31":"A booking and its money, in one word: paid, awaiting payment, cancelled but paid, refunded \u2014 and how much was given back.","32":"Refunds, on a booking's screen: by card through Stripe or recorded when made elsewhere, for the guests who leave or an amount alone. Below, the invoice and its credit note.","33":"An invoice, when you turn them on: your name and legal details, the categories sold, VAT included at your rate, and the answers marked for the invoice.","34":"The words of an email, in each language: the subject, the title and the first paragraph, previewed as a guest will receive it. The plugin writes the rest.","35":"Questions for your guests: a menu for everyone, a child's age only in the Child category, a company asked once per booking for the invoice.","36":"The booking page asks them: the second guest, in the Child category, gets their own question; the questions asked once come before confirming."}},"plugin_section":[],"plugin_tags":[4745,1486,1373,603,4771],"plugin_category":[40,58],"plugin_contributors":[278878],"plugin_business_model":[],"class_list":["post-361265","plugin","type-plugin","status-publish","hentry","plugin_tags-event-calendar","plugin_tags-events","plugin_tags-qr-code","plugin_tags-registration","plugin_tags-tickets","plugin_category-calendar-and-events","plugin_category-user-management","plugin_contributors-bitforgenet","plugin_committers-bitforgenet"],"banners":{"banner":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/banner-772x250.png?rev=3704268","banner_2x":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/banner-1544x500.png?rev=3704268","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/icon-128x128.png?rev=3697091","icon_2x":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/icon-256x256.png?rev=3697091","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-1.png?rev=3694201","caption":"The event assistant. Fifteen kinds of night, drawn rather than listed \u2014 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."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-2.png?rev=3694201","caption":"The room builder. Describe the room in numbers \u2014 rows, tables to a row, chairs to a table, levels \u2014 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."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-3.png?rev=3694201","caption":"Prices &amp; 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."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-4.png?rev=3694201","caption":"The booking page. One shortcode on any page. It asks for the name of every person coming \u2014 five names for a booking of five \u2014 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."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-5.png?rev=3694201","caption":"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."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-6.png?rev=3694201","caption":"The door check-in station. A web page on any phone, opened with a per-event door code \u2014 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."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-7.png?rev=3694201","caption":"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 \u2014 with the minute and the entrance they came in by."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-8.png?rev=3694201","caption":"The control room. Every event, what has sold, what is still waiting on a payment, who has arrived \u2014 and the shortcode for the event you are looking at, ready to paste."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-9.png?rev=3694201","caption":"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."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-10.png?rev=3719801","caption":"Dates that repeat. One event, every Friday: each date keeps its own bookings, capacity and door. Change one date, this one and the following, or all of them \u2014 a date somebody has booked is never moved with the others."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-11.png?rev=3719801","caption":"The guest chooses the date. A series shows its dates on the booking page, and the one chosen travels to the emails, the ticket and the calendar file."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-12.png?rev=3719801","caption":"The door works one date at a time. A ticket for another Friday is refused as \"Not tonight\", and the screen says which date it is for."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-13.png?rev=3719801","caption":"Online and hybrid events. Every guest gets a personal join link that goes through your site and is checked when clicked, so the meeting link can change at any time. You choose who gets it, and when the room opens."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-14.png?rev=3727725","caption":"The agenda, month view. Every date of every event in its day, each with its own state; switch to compact, large or list, go to a date, keep only some events or one category."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-15.png?rev=3727725","caption":"The agenda as a grid of cards. The picture on top, the price, the state, the category, a button to book \u2014 and add to my calendar, and share."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-16.png?rev=3727725","caption":"The page of an event. Your theme's look or the Classic one: the path from the list of events, the picture, the date and the place, the categories, the booking form below. Each date of a series has its own page."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-17.png?rev=3727725","caption":"A category's page. Its picture, its words and only its events \u2014 the agenda filtered for it, with the categories under it."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-18.png?rev=3727725","caption":"A venue's page. The address, the map, the website, a few words, and the events to come there."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-19.png?rev=3727725","caption":"Your own agenda. Every state, drafts included, what the site shows and what it hides, how full each night is. Drag a night to another day; change several at once."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-20.png?rev=3727725","caption":"Cards and colours. Rows or a grid, the size of the pictures, the corners and the colour of each state, with a sample that changes as you choose."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-21.png?rev=3727725","caption":"Categories. A tree of families, each with a colour, a picture and its own page; ticked on each event."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-22.png?rev=3739907","caption":"A full date keeps its guests. Under \"sold out\", the waiting list: a name, an email, how many places. A freed place is held for the first in line."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-23.png?rev=3739907","caption":"The waiting list of each date: who waits, in which order, whose place is held until when. Offer a place by hand, take somebody off, export."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-24.png?rev=3739907","caption":"Sale dates and a minimum. An early bird whose sale has ended stays on the page, greyed, with the reason; a group category says its minimum."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-25.png?rev=3739907","caption":"On each category: on sale from, until, and the minimum per booking \u2014 and the event's own waiting list, beside it."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-26.png?rev=3739907","caption":"Reminders, per event: the site's, its own, or none; and the link where guests can review the event the morning after."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-27.png?rev=3739907","caption":"A reminder the day before, in the guest's language: the night, the venue and the way there."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-28.png?rev=3739907","caption":"Messages to participants. Choose who, write once, see it as they will, send yourself a test, then send in batches. Nothing tracks who opens it."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-29.png?rev=3760450","caption":"The guest's own page, opened by the signed link in every email: where the booking stands, each guest and their ticket \u2014 one who left with a refund \u2014 the invoice and its credit note, and what happened when."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-30.png?rev=3760450","caption":"A guest cancels, if you allow it: a question first, with what it means. Their places go back on sale; a payment is not refunded on its own."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-31.png?rev=3760450","caption":"A booking and its money, in one word: paid, awaiting payment, cancelled but paid, refunded \u2014 and how much was given back."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-32.png?rev=3760450","caption":"Refunds, on a booking's screen: by card through Stripe or recorded when made elsewhere, for the guests who leave or an amount alone. Below, the invoice and its credit note."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-33.png?rev=3760450","caption":"An invoice, when you turn them on: your name and legal details, the categories sold, VAT included at your rate, and the answers marked for the invoice."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-34.png?rev=3760450","caption":"The words of an email, in each language: the subject, the title and the first paragraph, previewed as a guest will receive it. The plugin writes the rest."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-35.png?rev=3760450","caption":"Questions for your guests: a menu for everyone, a child's age only in the Child category, a company asked once per booking for the invoice."},{"src":"https:\/\/ps.w.org\/bitforgenet-guest-tickets\/assets\/screenshot-36.png?rev=3760450","caption":"The booking page asks them: the second guest, in the Child category, gets their own question; the questions asked once come before confirming."}],"raw_content":"<!--section=description-->\n<p><strong>Events &amp; Tickets<\/strong> runs the evening from the first booking to the last guest\nthrough the door. It was built for clubs, bars and party promoters \u2014 the people\nfor whom an event is a door, a list, and a queue outside \u2014 and it has since been\nused for seated dinners, concerts, conferences and weddings, because they are\nthe same problem wearing different clothes.<\/p>\n\n<p>Nothing is capped and nothing is metered. There is no per-ticket fee, no\nexternal service to sign up for, no account to create, and no telemetry. Your\nguest list lives in your own database, on your own server.<\/p>\n\n<h4>It speaks seven languages, and it brought them with it<\/h4>\n\n<p>English, French, Spanish, Portuguese, German, Italian and <strong>Arabic<\/strong> \u2014 not a\npromise that somebody will translate it one day, but seven finished catalogues in\nthe download.\nInstall it and it is already in your language.<\/p>\n\n<p><strong>It works the language out for itself.<\/strong> Whatever WordPress is set to, the\nplugin follows \u2014 and it follows by language rather than by locale, so <code>pt_BR<\/code>,\n    pt_PT and <code>pt<\/code> all land on Portuguese and <code>ar_DZ<\/code>, <code>ar_MA<\/code> and <code>ar_SA<\/code> all land\non Arabic. A site in a language it does not have falls back to French rather than\nserving a screen that is half one language and half another. If you would rather\nsay it outright, there is one setting: <em>Settings \u2192 Language<\/em>.<\/p>\n\n<p><strong>Everything is translated, not just the buttons.<\/strong> The booking form the guest\nfills in, the emails they receive, the words printed on the ticket itself, the\ndoor station held at the entrance, and the admin screens you work in. Dates too \u2014\nthe month and the weekday come out of the plugin's own catalogue rather than\nWordPress's, so a French ticket does not print <em>September<\/em> under a French\nheading on an English site.<\/p>\n\n<p><strong>Arabic really is Arabic.<\/strong> The screens, the emails and the booking form read\nright to left. And the ticket \u2014 which is a drawn image, not a web page \u2014 is drawn\nwith an Arabic typeface that travels with the plugin, with the letters joined the\nway Arabic joins them and the line put in reading order. A time, a price, a table\nnumber or a ticket reference still runs the other way inside the sentence, as it\nshould. Most plugins that claim Arabic print a row of disconnected letters\nbackwards on the one thing the guest actually holds.<\/p>\n\n<p><strong>The language travels with the booking.<\/strong> A guest who booked in Spanish gets\ntheir ticket in Spanish \u2014 including a ticket re-sent months later, from a screen\nyou are reading in French. And your own words stay yours: event titles, venue\nnames, payment instructions and the success message are your text, and the plugin\nwill not rewrite them.<\/p>\n\n<h4>A calendar of your events, and a page for every one<\/h4>\n\n<p><strong>An agenda your guests can use.<\/strong> One shortcode, one block in the editor or\none Elementor widget, and your events are on a calendar: <em>Compact<\/em> (a dot a\nnight), <em>Month<\/em> (the time and the title in each day), <em>Large<\/em> (the picture of\neach night) and <em>List<\/em>, in rows or as a grid of cards. It shows dates, not\nevents \u2014 every date of a series in its day, each with its own state: open, few\nplaces left, sold out, closed, cancelled. Guests go to a date, keep only the\nevents they care about or one category, add a night to their calendar and\nshare it. The month they open comes with the page; the next one is asked for\nwhen they turn to it. Without JavaScript, it is a list of links search engines\ncan follow.<\/p>\n\n<p><strong>Shaped from one screen.<\/strong> The view it opens on, the views on offer, the\nnumber of nights a day, the pictures and their size, rows or a grid, the\ncorners, the colour of each state, your theme's style or its own \u2014 with a\nsample beside the settings that changes as you choose, before you save.<\/p>\n\n<p><strong>A page for every event, and for every date.<\/strong> One page lists every event to\ncome, and under its address each event has its own: <code>\/events\/opening-night\/<\/code>,\nand <code>\/events\/opening-night\/2026-10-09\/<\/code> for one date of a series. The address\nspeaks your site's language \u2014 <code>\/evenements\/<\/code>, <code>\/eventos\/<\/code>, <code>\/veranstaltungen\/<\/code> \u2014\nand the page wears your theme or the <em>Classic<\/em> look: the picture, the date and\nthe place at the top, the details beside, the booking form below. An event can\nalso live on a page of its own, built with your editor or with Elementor; the\nplugin finds it, and every link then leads there. Links already shared keep\nworking, with a permanent redirect.<\/p>\n\n<p><strong>Categories, venues and organizers, each with a page.<\/strong> Sort events into\nfamilies \u2014 Jazz under Concerts \u2014 each with a colour, a picture and a few words.\nGuests filter the agenda by category, and every category, every venue and every\norganizer has its own page with its own events to come. A venue's page shows\nthe address, the map and the website; an organizer's, the logo and the links \u2014\nnever their email address or phone.<\/p>\n\n<p><strong>Your own agenda, to run the season.<\/strong> Under Events, a calendar for whoever\nruns the events: every state, drafts included, what the site shows and what it\nhides, how full each night is. Year, month, week or list; filters and a search.\nDrag a night onto another day to move it; change the state of one event or of\nseveral at once; start a new event from the day it falls on. A night somebody\nhas booked never moves from there.<\/p>\n\n<p><strong>Found by search engines.<\/strong> Every event page describes its date, its place, its\nline-up and its prices in the structured data search engines read; a date of a\nseries says which series it belongs to, and the page of a series lists every\ndate on sale. Category, venue and organizer pages describe themselves too, and\nevery page carries the breadcrumb from the list of events.<\/p>\n\n<h4>When it is full, when it sells, and what guests are told<\/h4>\n\n<p><strong>A full date keeps the people it would have turned away.<\/strong> Under \"sold out\",\nthe page offers to join the waiting list. When a place comes free \u2014 a\ncancellation, a refund, a payment that ran out, a capacity you raised \u2014 it is\nheld for the first person in line, who gets a link to book it. Nobody else can\nbuy it in the meantime; if they do not book in time, it goes to the next\nperson. Not \"first to click wins\": first in line, for real. How long a place\nis held is yours to set, and shortens on its own close to the date.<\/p>\n\n<p><strong>Each category sells when you say.<\/strong> An early bird that closes on the 1st, a\ndoor price that opens on the day, a table sold by four: sale dates and a\nminimum per booking on each category. A category outside its dates stays on\nthe page, greyed, with the reason, rather than vanishing; the server refuses\nit whatever the browser sends.<\/p>\n\n<p><strong>Reminders that bring people in.<\/strong> The day before and two hours before by\ndefault \u2014 a week before and the morning after if you want them \u2014 in the\nlanguage each guest booked in, with the doors, the address, the online link\nand a fresh link to every ticket. Each one goes once and only once. The\nmorning after thanks them, offers the next date and, if you give one, the link\nwhere they can review your event.<\/p>\n\n<p><strong>Write to everybody who booked.<\/strong> One date or all, one category or all,\nconfirmed, waiting for payment, came in or did not: preview it, send yourself a\ntest, then send. One email per address, in batches your host accepts, with a\nrecord of every one. Nothing tracks who opens it.<\/p>\n\n<h4>After the booking: a page of their own, the money, the paperwork<\/h4>\n\n<p><strong>Every booking has a page of its own.<\/strong> Each email about a booking ends with\na link to the guest's own page \u2014 no account, no password: where the booking\nstands, every guest and their ticket to download, the venue, the way into the\nonline room, the invoice, and what happened when. A guest who has lost their\nemails types the address they booked with and receives the links there; the\npage never says whether an address has booked.<\/p>\n\n<p><strong>Guests can cancel, if you let them.<\/strong> Off unless you turn it on, for the site\nor one event, until 48 hours before the date or the deadline you choose. The\nguest cancels the whole booking from their page, after a question: its tickets\nstop opening the door, its places go back on sale and the waiting list is\nserved. The money stays where it is: refunds are yours to make, in one click.<\/p>\n\n<p><strong>A booking and its money are two facts.<\/strong> A booking is pending, confirmed,\ncancelled or expired; its money is due, paid or refunded. A paid booking you\ncancel keeps its money until you decide \u2014 <em>Cancelled \u2014 paid<\/em> \u2014 and a payment\nthat arrives late never reopens a booking somebody cancelled.<\/p>\n\n<p><strong>Refunds that give the money back.<\/strong> From the booking's screen: by card,\nthrough Stripe, back to the card that paid \u2014 or recorded, when you gave it back\nby transfer or in cash. All of it or part: the guests you tick leave the\nbooking, their tickets stop working and their places go back on sale, and the\nguest is told what was refunded, how, and who is no longer coming. A refund\nhere is money returned, not a word changed on the booking.<\/p>\n\n<p><strong>Invoices and credit notes, when you turn them on.<\/strong> Two series without a gap,\nissued as the money moves: an invoice when a payment is confirmed, a credit\nnote when money goes back. Your name, your legal details, VAT none or included\nin the price, in your site's language; an A4 PDF attached to the email and kept\non the guest's page; every document as a spreadsheet for your accountant. The\nplugin follows your settings, not a tax law: what your invoices must say is\nyours to check.<\/p>\n\n<p><strong>Your words in the emails.<\/strong> The subject, the title and the first paragraph of\neach of the nineteen emails a guest can receive, in each language, with\n    {first_name}, <code>{event}<\/code> and the other words filled in for each guest. Below\nyour words the plugin still writes the evening, the tickets and the links, so\nnothing a guest needs can go missing. Preview it as a guest will see it, send\nyourself a test, and go back to the shipped text in one click.<\/p>\n\n<p><strong>Questions for your guests.<\/strong> A menu, a size, a company to invoice: each\nquestion is asked of every guest or once per booking, in the ticket categories\nit concerns \u2014 a child's age only of the Child category. The answers go to the\nbooking, the export and the team's email, and to the ticket or the invoice when\nyou choose. The server checks them against the category it records, and a\nbooking's answers are erased in one click.<\/p>\n\n<h4>Who it is for<\/h4>\n\n<ul>\n<li>Clubs, bars and late-night venues<\/li>\n<li>Party and concert promoters<\/li>\n<li>Seated dinners, galas and weddings<\/li>\n<li>Conferences, seminars and school evenings<\/li>\n<li>Associations and community groups<\/li>\n<li>Anyone taking bookings by card, by transfer, by WhatsApp or in cash<\/li>\n<\/ul>\n\n<h4>Set an event up by answering questions<\/h4>\n\n<p>Creating an event asks three things first: how guests attend \u2014 at a venue,\nonline, or both \u2014 what it is called and when, and whether it repeats. Then an\nassistant takes over, and it is the shortest way to describe a night that\nexists. It starts with a drawing rather than a form:\nfifteen kinds of event, from a standing club night to a banquet, a theatre, a\npodium in I or in T, a stadium, a classroom. You point at the one that looks\nlike your room.<\/p>\n\n<p>From there every answer decides the next question, and nothing is asked twice.\nAre seats numbered? Then how is the room laid out \u2014 tables in rows, rows of\nchairs, or no order at all? How many rows, how many tables to a row, how many\nchairs to a table? Are there levels \u2014 a balcony, a terrace, a gallery? Which\nparts are sold at which price? Do guests buy a ticket, or simply reply? How\nare you paid, and what should somebody who\npays by transfer be told? Does the ticket leave immediately, or once you have\nassigned the places yourself? Who chooses the place \u2014 the guest, or you?<\/p>\n\n<p>The panel on the right draws the room while you answer, and shows the prices as\nthe booking page will show them and the line the ticket will print. When you\nfinish, the event is ready to sell: places, zones, prices, payment, delivery.<\/p>\n\n<p><strong>The assistant owns nothing.<\/strong> It adds no setting of its own and keeps no\ncolumn of its own \u2014 it fills in the panels that already held each answer, and\nevery one of them stays editable field by field afterwards. An assistant that\nknows something the editor does not is a second source of truth, and this\nplugin has already paid that bill. For the same reason it refuses to rebuild\nthe room of an event that already has bookings: it will not renumber a table\nsomebody has already been sold.<\/p>\n\n<h4>The room is an inventory, and a zone is an interval of it<\/h4>\n\n<p>Say the room once \u2014 six rows of eight tables, ten chairs a table, plus a\nbalcony \u2014 and the plugin numbers every place in it. A zone then claims a slice\nof that inventory: <em>tables 1 to 5<\/em>, <em>rows A to C<\/em>, <em>the whole balcony<\/em>. It\ninvents nothing, so nothing can be sold twice and nothing is quietly lost:\nwhatever no zone claims is named on screen as unclaimed rather than forgotten.<\/p>\n\n<p>A price category is not a zone. A category has a name and a price, and several\nzones can share it \u2014 Premium is Premium on the left balcony and on the right.\n<strong>The booking page sells the categories; the ticket prints the zone<\/strong>, because\nthe zone is what somebody reads at the door.<\/p>\n\n<p>Each zone also says what it controls: access only \u2014 a standing area where\nnobody has a seat \u2014 or exactly where each person sits. One event can hold all\nthree at once: a standing floor, a seated balcony, and a numbered block.<\/p>\n\n<p>And if you want to draw the room instead of describing it, the builder is\nthere: drag tables and rows onto a plan, rectangle-select or shift-click,\nalign, space evenly, nudge with the arrow keys, place a stage, a bar, a door.\nThe plan you draw is the plan the guest picks from, and the plan you watch on\nthe night.<\/p>\n\n<p>= One event, many dates  \u2026<\/p>\n\n<!--section=installation-->\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.8 or later<\/li>\n<li>PHP 7.4 or later<\/li>\n<li>The GD extension, for rendering the tickets<\/li>\n<li>A working mail setup on the site \u2014 an SMTP plugin if your host's mail is\nunreliable<\/li>\n<\/ul>\n\n<h4>Steps<\/h4>\n\n<ol>\n<li>Plugins -&gt; Add New, search for <strong>Events and Tickets<\/strong>, install and activate.\nOr upload the ZIP under Plugins -&gt; Add New -&gt; Upload Plugin.<\/li>\n<li>Open <strong>Events &amp; Tickets -&gt; Settings<\/strong> and set your currency, your From\naddress and your payment instructions.<\/li>\n<li>Open <strong>Events &amp; Tickets -&gt; Tools &amp; data<\/strong>, run the system check, then send\nyourself a test ticket. Do this before your first real booking, not after.<\/li>\n<li>Create your first event with <strong>Events &amp; Tickets -&gt; Events -&gt; New event<\/strong>.\nThe assistant opens on its own and asks what kind of night it is.<\/li>\n<li>Put the booking form on a page with the shortcode\n   [bitforgenet_registration].<\/li>\n<li>On the night, open <strong>Events &amp; Tickets -&gt; Door scanner<\/strong>, note the door code,\nand give the link and the code to whoever is on the door.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"the%20name%20keeps%20changing.%20is%20it%20the%20same%20plugin%3F\"><h3>The name keeps changing. Is it the same plugin?<\/h3><\/dt>\n<dd><p>Yes. Same plugin, same folder, same settings, same data, same updates \u2014 only\nthe name shown in the directory has changed. It was <em>BitForgeNet Guest Tickets\nand Door Check-in<\/em>, then <em>Events and Tickets with QR Check-in<\/em>, and it is now\n<strong>Events Calendar, Tickets &amp; Registration with QR Check-in<\/strong>, because it now has\nthe calendar. On your own screens it is still <strong>Events &amp; Tickets<\/strong>. Nothing to\nreinstall and nothing to reconfigure. It is still published by BitForge\nNetwork, which is what the Author line says, and this is the last renaming.<\/p><\/dd>\n<dt id=\"how%20do%20i%20show%20a%20calendar%20of%20my%20events%3F\"><h3>How do I show a calendar of my events?<\/h3><\/dt>\n<dd><p>Create the events page under <em>Settings \u2192 Event pages<\/em> \u2014 it shows the agenda \u2014\nor put <code>[bitforgenet_agenda]<\/code> on any page, the <em>Events agenda<\/em> block in the\neditor, or the <em>Events agenda<\/em> widget in Elementor. <em>Events \u2192 Agenda settings<\/em>\ndecides how it looks, with a sample beside, and writes a shortcode for one\ncategory, one venue, one organizer, this week, this month or this year.<\/p><\/dd>\n<dt id=\"does%20every%20event%20get%20a%20page%20of%20its%20own%3F\"><h3>Does every event get a page of its own?<\/h3><\/dt>\n<dd><p>Yes, under the events page: <code>\/events\/opening-night\/<\/code>, and one more for each\ndate of a series. The address needs pretty permalinks; on a site with plain\nones, links go through the booking page and everything else works. Prefer to\nbuild the page yourself? Paste the event's shortcode on any page or post \u2014 an\nElementor page included \u2014 and every link leads there instead.<\/p><\/dd>\n<dt id=\"will%20the%20links%20i%20already%20shared%20stop%20working%3F\"><h3>Will the links I already shared stop working?<\/h3><\/dt>\n<dd><p>No. Old booking links, a base you changed, a renamed category: each answers\nwith a permanent redirect to where the page is now.<\/p><\/dd>\n<dt id=\"can%20my%20guests%20see%20only%20one%20kind%20of%20event%3F\"><h3>Can my guests see only one kind of event?<\/h3><\/dt>\n<dd><p>Yes. Give events categories under <em>Events \u2192 Categories<\/em>: guests filter the\nagenda by them, and each category has its own page. A shortcode, a block or a\nwidget can also show one category, one venue or one organizer only.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20an%20event%20is%20full%3F\"><h3>What happens when an event is full?<\/h3><\/dt>\n<dd><p>Guests can join its waiting list from the page. When a place comes free, it is\nheld for the first person in line \u2014 24 hours by default, less close to the\ndate \u2014 and they get a link to book it. Nobody else can buy it meanwhile. You\ncan turn the list off for the site or for one event.<\/p><\/dd>\n<dt id=\"can%20a%20ticket%20category%20go%20on%20sale%20later%2C%20or%20stop%20selling%3F\"><h3>Can a ticket category go on sale later, or stop selling?<\/h3><\/dt>\n<dd><p>Yes. Each category has its own sale dates and a minimum per booking, on the\nevent's <em>Prices &amp; places<\/em> tab. Outside its dates it stays on the page, greyed,\nwith the reason. A booking you add by hand is not held to either.<\/p><\/dd>\n<dt id=\"does%20it%20send%20reminders%3F\"><h3>Does it send reminders?<\/h3><\/dt>\n<dd><p>Yes: the day before and two hours before, by default, to every confirmed\nbooking, in the language it was made in, once each. A week before and a\nthank-you the morning after can be added for the site or for one event. They\nleave with WordPress's own scheduler, which runs when the site is visited.<\/p><\/dd>\n<dt id=\"can%20i%20write%20to%20everybody%20who%20booked%3F\"><h3>Can I write to everybody who booked?<\/h3><\/dt>\n<dd><p>Yes, from <em>Messages<\/em>: choose the event, one date or all, one category or all,\nand who \u2014 confirmed, waiting for payment, came in or did not. Preview it, send\na test to yourself, then send. It goes out in batches your host accepts, one\nemail per address, and records what left. It does not track who opens it.<\/p><\/dd>\n<dt id=\"can%20guests%20find%20their%20tickets%20again%3F\"><h3>Can guests find their tickets again?<\/h3><\/dt>\n<dd><p>Yes. Every email about a booking ends with a link to the guest's own page: the\nbooking, the tickets to download, the invoice, the history. A guest who has\nlost their emails asks for the links on <em>Find my tickets<\/em> and receives them by\nemail \u2014 the page never says whether an address has booked.<\/p><\/dd>\n<dt id=\"can%20a%20guest%20cancel%20their%20booking%3F\"><h3>Can a guest cancel their booking?<\/h3><\/dt>\n<dd><p>If you allow it: it is off until you turn it on, under <em>Settings \u2192 Booking\nform<\/em>, for the site or for one event, with a deadline (48 hours before the date\nby default). The whole booking is cancelled; its places go back on sale and the\nwaiting list is served. A payment is not refunded on its own: you refund it,\nin one click.<\/p><\/dd>\n<dt id=\"can%20i%20refund%20a%20booking%3F\"><h3>Can I refund a booking?<\/h3><\/dt>\n<dd><p>Yes, from its screen: by card through Stripe, back to the card that paid, or\nrecorded when you refunded it some other way. In full or in part; the guests\nyou tick leave the booking and their places go back on sale. The guest always\nreceives an email saying what was refunded.<\/p><\/dd>\n<dt id=\"does%20it%20make%20invoices%3F%20are%20they%20valid%20in%20my%20country%3F\"><h3>Does it make invoices? Are they valid in my country?<\/h3><\/dt>\n<dd><p>It can: turn them on under <em>Settings \u2192 Invoices<\/em>. Invoices and credit notes are\nnumbered in two series without a gap, issued as the money moves, and carry your\nname, your legal details and VAT as you set them. What an invoice must say\ndepends on your country and your business: the plugin follows your settings,\nnot a tax law, so check them with your accountant.<\/p><\/dd>\n<dt id=\"can%20i%20change%20what%20the%20emails%20say%3F\"><h3>Can I change what the emails say?<\/h3><\/dt>\n<dd><p>Yes, under <em>Settings \u2192 Email texts<\/em>: the subject, the title and the first\nparagraph of each email a guest receives, in each language. The rest \u2014 the\nevening, the tickets, the links \u2014 is still written by the plugin, and a\nlanguage you have not written in keeps the shipped text.<\/p><\/dd>\n<dt id=\"can%20i%20ask%20guests%20questions%20when%20they%20book%3F\"><h3>Can I ask guests questions when they book?<\/h3><\/dt>\n<dd><p>Yes, on the event's <em>Prices &amp; places<\/em> tab: a menu, a size, a company to\ninvoice \u2014 of every guest or once per booking, in the categories you choose. The\nanswers are on the booking and in the export, and on the ticket or the invoice\nif you tick it. They can be erased from a booking in one click.<\/p><\/dd>\n<dt id=\"is%20there%20a%20limit%20on%20events%2C%20guests%20or%20tickets%3F\"><h3>Is there a limit on events, guests or tickets?<\/h3><\/dt>\n<dd><p>No. Nothing in this plugin is capped or metered, and there is no per-ticket\nfee. What your server can hold is the limit.<\/p><\/dd>\n<dt id=\"is%20there%20a%20paid%20version%3F\"><h3>Is there a paid version?<\/h3><\/dt>\n<dd><p>Not today. Everything this plugin can do is in the plugin you installed \u2014 the\nassistant, the room builder, the ticket studio, the price categories, the\ndiscount codes and card payment included. No screen ends in an offer.<\/p><\/dd>\n<dt id=\"do%20guests%20need%20an%20account%3F\"><h3>Do guests need an account?<\/h3><\/dt>\n<dd><p>No. A guest fills in the form, receives their tickets by email, and shows the\nQR code at the door.<\/p><\/dd>\n<dt id=\"can%20an%20event%20repeat%3F\"><h3>Can an event repeat?<\/h3><\/dt>\n<dd><p>Yes. Under <em>Information &amp; details<\/em>, set it to repeat every day, week, month or\nyear, on the weekdays you choose, until a date or for a number of dates. It\nstays one event: each date has its own bookings, capacity and door, and the\nguest chooses the date when booking. The <em>Recurring dates<\/em> tab lets you change\none date, the following ones or all of them.<\/p><\/dd>\n<dt id=\"can%20i%20run%20an%20online%20or%20hybrid%20event%3F\"><h3>Can I run an online or hybrid event?<\/h3><\/dt>\n<dd><p>Yes. Choose <em>Online<\/em> or <em>Both<\/em> as the first answer when you create the event,\nand put your meeting link in <em>Information &amp; details<\/em>. Every guest receives a\npersonal link through your site rather than the meeting link itself, so you can\nchange the link at any time, and a cancelled booking stops opening it.<\/p><\/dd>\n<dt id=\"can%20guests%20just%20reply%2C%20without%20paying%3F\"><h3>Can guests just reply, without paying?<\/h3><\/dt>\n<dd><p>Yes. Set a ticket category to RSVP: the place is free and confirmed the moment\nthe guest replies, with a QR ticket or simply their name on the list. When every\ncategory is an RSVP, the booking page becomes an invitation with <em>count me in<\/em>\nand <em>I can't make it<\/em>.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%27s%20name%20appear%20in%20my%20guests%27%20emails%3F\"><h3>Does the plugin's name appear in my guests' emails?<\/h3><\/dt>\n<dd><p>No. The top of every email shows your event and its organizer. There is an\noptional credit line in <em>Settings \u2192 Email<\/em>, off by default.<\/p><\/dd>\n<dt id=\"does%20it%20need%20woocommerce%3F\"><h3>Does it need WooCommerce?<\/h3><\/dt>\n<dd><p>No. It has its own booking form and its own bookings screen, and it works on a\nsite with no shop on it.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20use%20the%20assistant%3F\"><h3>Do I have to use the assistant?<\/h3><\/dt>\n<dd><p>No. It opens when you create an event because that is the fastest way through,\nand you can leave it at any point: every answer it writes is a field you can\nopen and change afterwards. It owns no setting of its own.<\/p><\/dd>\n<dt id=\"how%20do%20i%20describe%20a%20room%20that%20is%20not%20a%20grid%3F\"><h3>How do I describe a room that is not a grid?<\/h3><\/dt>\n<dd><p>Two ways, and they end in the same place. Describe it in numbers \u2014 rows, tables\nto a row, chairs to a table, levels \u2014 or draw it in the builder: drop tables,\nrows, a stage and a bar on a plan, select several at once, align them, space\nthem evenly, nudge them with the arrow keys. Either way the plugin numbers\nevery place and hands them out.<\/p><\/dd>\n<dt id=\"can%20one%20event%20have%20standing%20room%20and%20numbered%20seats%3F\"><h3>Can one event have standing room and numbered seats?<\/h3><\/dt>\n<dd><p>Yes. Each zone says for itself whether it controls access only or where each\nperson sits, so a standing floor, a seated balcony and a numbered block can all\nbelong to the same night.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20a%20zone%20and%20a%20price%20category%3F\"><h3>What is the difference between a zone and a price category?<\/h3><\/dt>\n<dd><p>A zone is a piece of the room \u2014 <em>tables 1 to 5<\/em>, <em>the balcony<\/em>. A category is a\nname and a price, and several zones can share one: Premium is Premium on the\nleft balcony and on the right. The booking page sells the categories; the\nticket prints the zone, because that is what somebody reads at the door.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20room%20after%20people%20have%20booked%3F\"><h3>Can I change the room after people have booked?<\/h3><\/dt>\n<dd><p>You can add to it and change prices. You cannot rebuild it: the assistant\nrefuses to renumber a room that already has bookings, because a table number\nsomebody has already been sold has to keep meaning the same table.<\/p><\/dd>\n<dt id=\"two%20people%20booked%20the%20last%20table%20at%20the%20same%20moment.%20what%20happens%3F\"><h3>Two people booked the last table at the same moment. What happens?<\/h3><\/dt>\n<dd><p>One of them gets it and the other is told, before anything is charged. The form\nshows what is left while it is being filled in \u2014 including what somebody else\nis taking in another browser \u2014 but the guarantee is not in the browser: the\nevent is locked, the places are recounted and the booking is refused at the\nmoment it is written.<\/p><\/dd>\n<dt id=\"can%20i%20move%20somebody%20who%20already%20has%20their%20ticket%3F\"><h3>Can I move somebody who already has their ticket?<\/h3><\/dt>\n<dd><p>Yes, and the plugin treats it as what it is: a re-issue, not an edit. The\nscreen states the three consequences, the buttons stay dead until you type\n    edit place, and then the old ticket stops working at the door and a second\nemail goes out with the new one.<\/p><\/dd>\n<dt id=\"can%20i%20take%20payment%20online%3F\"><h3>Can I take payment online?<\/h3><\/dt>\n<dd><p>Yes, with Stripe. Put your own Stripe secret key in Settings \u2192 Payments and\nturn card payment on for the events you want it on. The guest pays on a page\nhosted by Stripe, no card number touches your site, and the money goes straight\nto your own Stripe account: this plugin is never in between and takes nothing\nper ticket, ever.<\/p>\n\n<p>Until you enter a key, nothing changes and no connection to Stripe is made. A\nbooking arrives pending and you confirm it once you have been paid \u2014 by\ntransfer, by WhatsApp, or in cash \u2014 exactly as before.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20make%20guests%20pay%20by%20card%3F\"><h3>Do I have to make guests pay by card?<\/h3><\/dt>\n<dd><p>No. It is a choice per event, and you can also let a guest reserve now and pay\nlater: they get both buttons. If you would rather nothing be reserved until it\nis paid for, there is a single setting for that. What a guest who pays offline\nis told is your own text, written per event \u2014 offline, that text is the\npayment.<\/p><\/dd>\n<dt id=\"does%20one%20booking%20give%20one%20qr%20code%20for%20everybody%3F\"><h3>Does one booking give one QR code for everybody?<\/h3><\/dt>\n<dd><p>No, and that is the point. A booking for five produces five tickets with five\ndifferent codes, each carrying the name of the person it belongs to.<\/p><\/dd>\n<dt id=\"can%20more%20than%20one%20of%20us%20be%20told%20when%20a%20booking%20arrives%3F\"><h3>Can more than one of us be told when a booking arrives?<\/h3><\/dt>\n<dd><p>Yes. The notification address takes a list, and every address on it is really\ncopied in.<\/p><\/dd>\n<dt id=\"the%20tickets%20are%20not%20arriving.\"><h3>The tickets are not arriving.<\/h3><\/dt>\n<dd><p>The plugin sends through WordPress, so anything that fixes email for the rest\nof your site fixes it here. Run <strong>Tools &amp; data -&gt; System check<\/strong> first: it says\nwhether the failure is in the rendering or in the sending. If your host's mail\nis unreliable, install an SMTP plugin and connect a real mailbox \u2014 it will be\npicked up automatically.<\/p><\/dd>\n<dt id=\"the%20email%20arrives%20but%20the%20pdf%20is%20missing.\"><h3>The email arrives but the PDF is missing.<\/h3><\/dt>\n<dd><p>Your mail server is stripping the attachment. Lower the attachment ceiling in\nSettings; every email already carries a download link per guest, so the guest\nstill gets their ticket.<\/p><\/dd>\n<dt id=\"does%20the%20door%20scanner%20need%20internet%3F\"><h3>Does the door scanner need internet?<\/h3><\/dt>\n<dd><p>It needs to reach your own website, the same as any other page. For the\nevenings when the venue's wifi is not to be trusted, print the roll-call list\nfirst: it carries every guest and every ticket number, and it works on paper.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20install%20an%20app%20on%20the%20door%20phone%3F\"><h3>Do I need to install an app on the door phone?<\/h3><\/dt>\n<dd><p>No. The station is a web page. Open the link in the phone's browser, enter the\ndoor code, and allow the camera.<\/p><\/dd>\n<dt id=\"can%20two%20people%20scan%20at%20once%3F\"><h3>Can two people scan at once?<\/h3><\/dt>\n<dd><p>Yes. Every station checks the same database, so a ticket used at one door is\nalready used at the other.<\/p><\/dd>\n<dt id=\"the%20camera%20stays%20black%20on%20the%20door%20phone.\"><h3>The camera stays black on the door phone.<\/h3><\/dt>\n<dd><p>The page must be served over HTTPS \u2014 browsers refuse the camera otherwise. If\nthe site is already on HTTPS, a security plugin or your CDN is probably sending\na blanket camera policy; the scanner screen re-states its own, so clearing the\nCDN cache usually settles it.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20own%20ticket%20artwork%3F\"><h3>Can I use my own ticket artwork?<\/h3><\/dt>\n<dd><p>Yes. The plugin will generate a design for you in the colour you choose if you\nwould rather not think about it, and the ticket studio on the <strong>Ticket designs<\/strong>\nscreen takes your own artwork instead: upload it, generate colour variations of\nit, and move every printed field where you want it on a visual field map.<\/p><\/dd>\n<dt id=\"can%20i%20clear%20the%20test%20bookings%20before%20going%20live%3F\"><h3>Can I clear the test bookings before going live?<\/h3><\/dt>\n<dd><p>Yes. <strong>Tools &amp; data -&gt; Archive and clear<\/strong> copies every booking, guest, ticket\nand scan into archive tables and then empties the live ones. Events, venues,\norganizers and designs are untouched. It asks for a one-time code sent to an\naddress you set, so it cannot be run by accident.<\/p><\/dd>\n<dt id=\"what%20languages%20does%20it%20come%20in%3F\"><h3>What languages does it come in?<\/h3><\/dt>\n<dd><p>Seven, finished and in the download: English, French, Spanish, Portuguese,\nGerman, Italian and Arabic. Nothing to install and nothing to wait for.<\/p><\/dd>\n<dt id=\"how%20does%20it%20know%20which%20one%20to%20use%3F\"><h3>How does it know which one to use?<\/h3><\/dt>\n<dd><p>It reads the language WordPress is set to, and it reads it by language rather\nthan by locale \u2014 pt_BR, pt_PT and pt all get Portuguese; ar_DZ, ar_MA and ar_SA\nall get Arabic. A site in an eighth language falls back to French rather than\nshowing you half a translation. You can also say it outright under <strong>Settings \u2192\nLanguage<\/strong>, which is the answer when your site is in one language and your guests\nread another.<\/p><\/dd>\n<dt id=\"does%20it%20change%20the%20language%20of%20my%20site%3F\"><h3>Does it change the language of my site?<\/h3><\/dt>\n<dd><p>No. It moves this plugin and nothing else. WordPress, your theme and every other\nplugin keep the language they had.<\/p><\/dd>\n<dt id=\"is%20the%20ticket%20itself%20translated%2C%20or%20only%20the%20screens%3F\"><h3>Is the ticket itself translated, or only the screens?<\/h3><\/dt>\n<dd><p>The ticket itself. A ticket is a drawn image rather than a web page, so it is the\npiece that usually gets left behind \u2014 here the words on it, the date written out\nin full, and the line that says which table or seat all come out in the guest's\nlanguage.<\/p><\/dd>\n<dt id=\"does%20arabic%20work%20properly%2C%20including%20on%20the%20ticket%3F\"><h3>Does Arabic work properly, including on the ticket?<\/h3><\/dt>\n<dd><p>Yes, and that is a real question rather than a polite one. Arabic letters change\nshape depending on what is beside them, and the line reads right to left; the\nimage library that draws tickets does neither by itself, which is why Arabic on a\nticket usually comes out as a row of disconnected letters in the wrong order. The\nplugin joins the letters and orders the line before anything is drawn, and carries\nan Arabic typeface to draw them with. Numbers inside the sentence \u2014 a time, a\nprice, a table number, a ticket reference \u2014 still run the other way, as they\nshould. The screens, the booking form, the emails and the door station are laid\nout right to left too.<\/p><\/dd>\n<dt id=\"a%20guest%20booked%20in%20one%20language%20and%20i%20work%20in%20another.%20which%20one%20do%20they%20get%3F\"><h3>A guest booked in one language and I work in another. Which one do they get?<\/h3><\/dt>\n<dd><p>Theirs. The language a guest booked in is kept with their booking, so their\nticket and their emails go out in it \u2014 including a ticket re-sent months later\nfrom a screen you are reading in French.<\/p><\/dd>\n<dt id=\"are%20my%20own%20event%20titles%20translated%3F\"><h3>Are my own event titles translated?<\/h3><\/dt>\n<dd><p>No, and they should not be. Your event titles, venue names, payment instructions\nand success message are your words; the plugin translates its own and leaves\nyours alone. A venue selling to guests in two languages writes those lines in\nboth.<\/p><\/dd>\n<dt id=\"can%20i%20correct%20or%20add%20a%20translation%3F\"><h3>Can I correct or add a translation?<\/h3><\/dt>\n<dd><p>Yes. The catalogues are ordinary .po files in the plugin's <code>languages<\/code> folder,\nand the template is there beside them. Better still, put the correction on\nhttps:\/\/translate.wordpress.org\/projects\/wp-plugins\/bitforgenet-guest-tickets\/ \u2014\na language pack from there is loaded ahead of the plugin's own files, so your\nwording wins and everybody gets it.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20help%3F\"><h3>Where do I get help?<\/h3><\/dt>\n<dd><p>There is a <strong>Help<\/strong> screen in the plugin itself \u2014 the whole guide, one click from\nwherever you are stuck. The same text is at\nhttps:\/\/bitforgenet.dev\/plugins\/bitforgenet-guest-tickets\/help\/ \u2014 it walks\nthrough a first event, the room, the door and the night itself. Beyond that,\nthe support forum on this page, or contact@bitforgenet.dev<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.15.7<\/h4>\n\n<p>After the booking: what a guest can do on their own, and what the money does.<\/p>\n\n<ul>\n<li><strong>My tickets.<\/strong> Every email about a booking links to the guest's own page \u2014\nsigned, no account: the booking and its state, each guest and their ticket,\nthe venue, the online room, the invoice, the history. <em>Find my tickets<\/em> sends\nthe links to the mailbox and never says whether an address has booked.<\/li>\n<li><strong>A booking and its money, two facts.<\/strong> Pending, confirmed, cancelled,\nexpired or declined; due, paid, refunded or nothing due. <em>Cancelled \u2014 paid<\/em>\nkeeps the money of a cancelled booking; a late payment reopens nothing. The\nold column keeps its old word, so an earlier version reinstalled still reads\nevery booking right.<\/li>\n<li><strong>Guest cancellation<\/strong>, off by default: from their page, after a question,\nuntil a deadline (48 hours by default), for the site or per event. The whole\nbooking; places back on sale, waiting list served, the guest and the team\ntold.<\/li>\n<li><strong>Refunds<\/strong>: by card through Stripe, or recorded when made elsewhere; in\nfull, or for some guests, who leave the booking for a closed one of their\nown. Never more than what is left; the same refund never made twice; an\nemail to the guest every time.<\/li>\n<li><strong>Invoices and credit notes<\/strong>, off by default: two series without a gap, an\ninvoice when a payment is confirmed, a credit note when money goes back for\ngood; A4 PDFs in the site's language, attached to the emails and on the\nguest's page; a spreadsheet export by year. Never deleted with a booking.<\/li>\n<li><strong>Email texts<\/strong>: the subject, the title and the first paragraph of each of\nthe nineteen guest emails, per language, with the words of <em>Messages<\/em>, a\npreview and a test. The shipped text wherever none is written.<\/li>\n<li><strong>Questions for your guests<\/strong>: per guest or once per booking, in the ticket\ncategories they name; checked by the server; on the booking, in the export,\nin the team's email, and on the ticket or the invoice when ticked; erased\nfrom a booking in one click.<\/li>\n<li><strong>The waiting list follows its date<\/strong>: a detached date takes its list with\nit; a cancelled date or event tells everybody waiting.<\/li>\n<li><strong>Fixed<\/strong>: saving <em>Prices &amp; places<\/em> on an event without a room turned table\nnumbers on, and its paid tickets then waited for a table; a booking that\nhad expired, been refunded or declined could keep its table in the counts.<\/li>\n<li><strong>Seven languages<\/strong>, every new screen and email included, and the <em>Help<\/em>\nscreen with a section for each.<\/li>\n<\/ul>\n\n<h4>1.14.4<\/h4>\n\n<p>Full, on sale, reminded: what happens between the booking and the night.<\/p>\n\n<ul>\n<li><strong>Waiting list.<\/strong> On a full date or a sold-out category, guests join the\nlist. A freed place \u2014 cancellation, refund, payment run out, deleted\nbooking, capacity raised \u2014 is held for the first in line, who is sent a link\nto book it; nobody else can buy it meanwhile. Hold time set for the site or\nper event, shorter close to the date. Emails in the guest's language; a\nleave link that asks first. A <em>Waiting list<\/em> screen per date, with \"offer a\nplace now\", remove and CSV export.<\/li>\n<li><strong>Sale dates and minimum per booking<\/strong>, per category, in the event's time\nzone. Closed categories stay on the page, greyed, with the reason; nothing on\nsale shows when sales open. Refused by the server too. A room's parts follow\nthe ticket category of the same name.<\/li>\n<li><strong>Reminders<\/strong>: a week before, the day before, two hours before, and a\nthank-you the morning after with the next date and the organizer's review\nlink. Chosen for the site and per event (a <em>Reminders<\/em> tab). Once each, in\nthe booking's language, with fresh ticket links.<\/li>\n<li><strong>Messages to participants<\/strong>: by date, category and public (confirmed,\nwaiting for payment, came in, did not), with preview, test, batches your\nhost accepts, and a history address by address. No tracking pixel.<\/li>\n<li><strong>Seven languages<\/strong>, every new screen and email included.<\/li>\n<\/ul>\n\n<h4>1.13.12<\/h4>\n\n<p>Being found: a calendar of your events, a page for every one, and what search\nengines read about them.<\/p>\n\n<ul>\n<li><strong>An agenda for your guests.<\/strong> Compact, month, large and list views, the list\nin rows or as a grid of cards; every date of a series in its day, with its\nown state; go to a date, keep some events or one category; add to my\ncalendar and share on every night. A shortcode, a block for the editor and\nan Elementor widget, with the same choices.<\/li>\n<li><strong>Shaped from one screen.<\/strong> Views, nights a day, pictures and their size,\ncorners, the colour of each state, your theme's style or its own \u2014 with a\nlive sample before you save.<\/li>\n<li><strong>A page for every event and every date<\/strong>, under an events page that the\nplugin creates or that you choose; addresses in your site's language; your\ntheme's look or <em>Classic<\/em>; a date picker on a calendar for a series; an event\non a page of its own, found wherever it is, Elementor included; old links\nredirected.<\/li>\n<li><strong>Categories<\/strong>, in a tree, with colours and pictures, chosen on each event;\neach with its own page.<\/li>\n<li><strong>A page for each venue and each organizer<\/strong>, with its events to come \u2014\nnever an organizer's email or phone.<\/li>\n<li><strong>Your own agenda<\/strong> under Events: every state, year, month, week or list,\nfilters and a search; drag a night to move it, change states in bulk, start\nan event from its day.<\/li>\n<li><strong>Search engines<\/strong>: a date of a series names its series, the page of a series\nlists its dates, venues and organizers describe themselves, and every page\ncarries its breadcrumb.<\/li>\n<li><strong>A new name in the directory<\/strong>: <em>Events Calendar, Tickets &amp; Registration with\nQR Check-in<\/em>. Same plugin, same slug, same data.<\/li>\n<li><strong>Seven languages<\/strong>, every new screen and page included.<\/li>\n<\/ul>\n\n<h4>1.12.18<\/h4>\n\n<p>The biggest release since the first: events that repeat, online events,\ninvitations, people and a programme, calendars \u2014 and a door that knows which\nnight it is.<\/p>\n\n<ul>\n<li><strong>Events that repeat.<\/strong> Every day, week, month or year, on the weekdays you\ntick, until a date or for a number of dates. Each date keeps its own\nbookings, capacity, room and door. Change one date, this one and the\nfollowing, or all of them; a date somebody has booked is never moved with\nthe others. Cancel, delete or detach a date \u2014 a detached date takes a copy\nof its room and categories with it.<\/li>\n<li><strong>Guests choose their date<\/strong> on the booking page, and everything they\nreceive \u2014 the emails, the ticket, the calendar file \u2014 carries it.<\/li>\n<li><strong>The door works one date at a time.<\/strong> A ticket for another date is refused\nas \"Not tonight\"; one for another event names its event. The Door screen\nopens on tonight's event. \"Close all stations\" closes every station,\nincluding phones signed in to WordPress, and gates are asked only where\nthere are several.<\/li>\n<li><strong>Online and hybrid events.<\/strong> Every guest gets a personal join link that\ngoes through your site and is checked when clicked, so the meeting link can\nchange at any time. You choose who gets in, and when.<\/li>\n<li><strong>Invitations (RSVP).<\/strong> Any ticket category can be a free reply instead of\na sale, confirmed at once \u2014 with a QR ticket, or just a name on the list.\nAn event made only of replies becomes an invitation page.<\/li>\n<li><strong>People and the programme.<\/strong> Speakers and performers described once and\nused on any event; a line-up on the page and on the ticket; sessions placed\ninside their date.<\/li>\n<li><strong>Add to my calendar, and found by search engines.<\/strong> Apple, Outlook and\nGoogle Calendar from the thank-you page and the first email; every event\npage describes itself in the structured data search engines read.<\/li>\n<li><strong>One assistant.<\/strong> How guests attend comes first, then the name, the date\nand whether it repeats; an online event skips the room.<\/li>\n<li><strong>Your emails, your name.<\/strong> Every email carries your event and its\norganizer, in colours computed to stay readable on your brand colour. The\nplugin's name appears only in an optional credit line.<\/li>\n<li><strong>Seating that holds.<\/strong> Rooms on several named levels keep every place, the\nplan writes \"4\/5\" on every table, and \"Place them for me\" reports what was\nreally saved.<\/li>\n<li><strong>Seven languages, completely.<\/strong> Every screen, email and ticket in English,\nFrench, Spanish, Portuguese, German, Italian and Arabic \u2014 Arabic with its\nsix plural forms.<\/li>\n<li><strong>Fixes<\/strong>, among them: tickets on hosts without mbstring, online events\nsending their tickets, Arabic room and category names, screens saved\nwithout changes changing nothing, the places left on a booking for a later\ndate of a series, and the door's \"Next guest\" button, now full width.<\/li>\n<li><strong>Copyright and licence stated<\/strong>: a copyright notice in the plugin header,\nand the full text of the GNU GPL in <code>LICENSE.txt<\/code>.<\/li>\n<\/ul>\n\n<h4>1.11.0<\/h4>\n\n<ul>\n<li><strong>Italian, the seventh language.<\/strong> A complete catalogue in the download \u2014\nadmin screens, booking form, emails, door station, dates and the words printed\non the ticket. it_IT, it_CH and it all land on Italian.<\/li>\n<li><strong>Settings \u2192 Language<\/strong> lists Italian, and the other six catalogues name it in\ntheir own language.<\/li>\n<li>Directory banners updated to show the seven languages.<\/li>\n<\/ul>\n\n<h4>1.10.1<\/h4>\n\n<ul>\n<li>Removed <code>admin\/views\/event\/pricing.php<\/code>, a tombstone left from the retired\nPricing tab that nothing has called since 1.9.0.<\/li>\n<li>Refreshed the two brand images shipped with the plugin.<\/li>\n<li>Added a donate link to the directory listing. Nothing appears inside\nWordPress: no screen in this plugin ends in an offer, and that has not\nchanged.<\/li>\n<\/ul>\n\n<h4>1.10.0<\/h4>\n\n<ul>\n<li><strong>Six languages, in the download.<\/strong> English, French, Spanish, Portuguese,\nGerman and Arabic. Every screen, the booking form, the emails, the door\nstation and the words printed on the ticket.<\/li>\n<li><strong>The language is worked out from your site<\/strong>, by language rather than by\nlocale: pt_BR, pt_PT and pt all land on Portuguese, ar_DZ, ar_MA and ar_SA all\nland on Arabic. A site in a language the plugin does not have falls back to\nFrench rather than serving half a translation.<\/li>\n<li><strong>New setting: Settings \u2192 Language.<\/strong> Leave it on <em>Follow the site<\/em>, or name\nthe language outright \u2014 for a site in one language selling to guests who read\nanother. The screen says what your site is set to and what the plugin will\nspeak, so there is nothing to guess at.<\/li>\n<li><strong>The language travels with the booking.<\/strong> A guest who booked in Spanish is\nanswered in Spanish, including a ticket re-sent months later from an admin\nscreen in another language, or issued by cron in the middle of the night.<\/li>\n<li><strong>Dates are translated too<\/strong>, out of the plugin's own catalogue rather than\nWordPress's \u2014 so a French ticket does not print \"September\" under a French\nheading on an English site, and a site that has never installed French still\ngets French months.<\/li>\n<li><strong>Arabic is drawn properly on the ticket.<\/strong> The ticket is an image, and the\nlibrary that draws it neither joins Arabic letters nor puts the line in\nreading order. The plugin now does both before drawing, and carries an Arabic\ntypeface to draw with. A time, a price, a table number or a ticket reference\nstill runs the other way inside the sentence.<\/li>\n<li><strong>Right-to-left layout<\/strong> for the admin screens, the booking form, the emails\nand the door station \u2014 the plugin's own containers only, so the rest of your\nsite is untouched. A seating plan is not mirrored: table 1 stays where table 1\nactually is.<\/li>\n<li>The plugin's catalogues are loaded after any language pack from\ntranslate.wordpress.org, so a translator's work always wins over ours.<\/li>\n<\/ul>\n\n<h4>1.9.1<\/h4>\n\n<ul>\n<li><strong>Renamed, and this time for the search rather than for the branding.<\/strong> The\ndirectory ranks the words of a title, so the title is now\n<strong>Events and Tickets with QR Check-in<\/strong> \u2014 the words somebody actually types.\nOn your own screens and in the admin menu it is <strong>Events &amp; Tickets<\/strong>, two\nwords that fit a sidebar. The brand leaves the title: the Author line already\nsays BitForge Network, and a name is not the place to sign your work twice.<\/li>\n<li>The slug, the text domain, the shortcodes, the option keys, the database\ntables and the update path are untouched, exactly as in 1.9.0. Nothing to\nreinstall, nothing to reconfigure.<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>Renamed on screen. The slug, the text domain, the shortcodes, the option\nkeys, the database tables and the update path were all untouched: a label,\nnot a new plugin. (1.9.1, the same day, renamed it again \u2014 see above.)<\/li>\n<li>New icon and new directory banners: a ticket and a QR code, which is what the\nplugin actually is. The QR in the artwork is a real one.<\/li>\n<li>The directory page shows the screens again \u2014 eight of them, from the\nassistant to the door station \u2014 and the description finally covers what was\nadded between 1.2.2 and 1.8.7: the assistant, the room builder, zones as\nintervals of an inventory, price categories, live availability in the booking\nform, arrivals on the plan, re-issuing a place, and team notifications.<\/li>\n<li>The FAQ was rewritten around the questions the last two months produced.<\/li>\n<li><strong>New: a Help screen inside the plugin.<\/strong> The whole guide \u2014 setup, the\nassistant, the room and its zones, payment, tickets, seating, the door, and\nwhat to do when something does not arrive \u2014 on the screen where somebody is\nactually stuck, linking to the screens each sentence talks about. It reads\nnothing and writes nothing, and it needs no capability beyond being able to\nopen the plugin: help only an administrator can read is help the person who\nneeded it could not reach.<\/li>\n<li>Nothing else changes: no database change, no stored setting touched, and no\nexisting screen behaves differently.<\/li>\n<\/ul>\n\n<h4>1.8.7<\/h4>\n\n<p><strong>The team notification field takes more than one address.<\/strong> A team is more than\none person. Separate them however you like \u2014 a comma, a semicolon, a space, one\nper line \u2014 and everybody on the list is copied on guest emails and alerted on\nevery new booking. Before, only the first address was ever used.<\/p>\n\n<p><strong>An empty reply-to now follows WordPress.<\/strong> Left blank it means \"whatever this\nsite uses\" rather than \"nobody\", so replies land in the site's own\nadministration inbox without anybody having to think about it. The from address\nbehaves the same way, and both boxes show you the address they would fall back\nto.<\/p>\n\n<p><strong>Fixed: typing an answer in the assistant left <em>Continue<\/em> greyed out.<\/strong> Every\nkeystroke repainted the panel, but only a full redraw ever drew the buttons \u2014 so\nafter typing the payment instructions the only way to move on was to step back\nand forward again. The answer and the button are drawn together now.<\/p>\n\n<p><strong>The floor plan says who is actually in the room.<\/strong> A seat that is sold and a\nseat whose guest has walked through the door are two different facts, and only\none of them changes all evening. A guest who has scanned their ticket turns\n<strong>green<\/strong>, carries a <strong>tick<\/strong>, and breathes gently; a table whose whole party\nhas arrived wears a green ring. There is an <strong>Already in<\/strong> filter, a key under\nthe plan explaining every colour, and the same story in the simple list for\nanyone who never opens the drawing. The movement stops for anyone whose system\nasks for less motion \u2014 the colour and the tick still say everything.<\/p>\n\n<p><strong>Moving a guest who already has a ticket is no longer an ordinary save.<\/strong> It\nis a reissue, and it does three things at once: the tickets they are holding are\n<strong>voided<\/strong> \u2014 the door refuses those QR codes from that moment \u2014 new tickets are\ndrawn with the new places, and a second email goes out. If they have already\nshown somebody the first one, that is the copy that stops working. So the screen\nnow says all of that in plain words, and the buttons stay dead until you type\n    edit place into the box beside them. Not a checkbox, which the hand ticks\nbefore the eye reads; not a browser dialog, which is dismissed by reflex. The\nsame sentence is checked again on the server, because a rule that only lives in\na browser is not a rule.<\/p>\n\n<h4>1.8.6<\/h4>\n\n<p><strong>The booking form now knows what is left while somebody is filling it in.<\/strong>\nThree things have to agree, and until now only the first was ever asked: the\nnumber the page was drawn with, <strong>the guest rows above this one<\/strong>, and whoever\nelse is booking at the same moment somewhere else. Choose VIP for five guests in\na room that has five, and the sixth row greys VIP out as you reach it \u2014 instead\nof letting you type eight names and refusing the lot at the end.<\/p>\n\n<p><strong>It asks again at the moments a decision is being made<\/strong>: a menu opening, a\nchoice changing, the quantity changing, the tab coming back to the front \u2014 and\non a slow tick in between, never while the tab is hidden. One function answers,\nfor the page and for the live refresh alike, so the two can never disagree. It\nis cached for five seconds and thrown away the instant a booking is written, so\nthe next person to open a menu sees the seat go.<\/p>\n\n<p><strong>The quantity stepper stops at what exists<\/strong>, and a line above the guest rows\nsays how many places are still for sale, counting down as they go.<\/p>\n\n<p><strong>A category that sells out under you is said out loud<\/strong>, on the row it affects,\nand the booking cannot be sent until you have picked another. Your choice is\nnever changed behind your back \u2014 first come, first served, and being told so.<\/p>\n\n<p><strong>Fixed \u2014 and this was the hole underneath all of it: a booking held no place in\nits category until somebody had been sat down.<\/strong> The seat count could only see\nguests who already had a place written against them, and where the organizer\nseats people by hand nobody has one until they do it \u2014 hours or days after the\nguest paid. A VIP zone of forty still reported forty places left after forty\npeople had bought it. Every booking now holds its places from the moment it is\nwritten, whether or not anybody has decided where those people are sitting.<\/p>\n\n<p><strong>None of this is the guarantee, and it does not pretend to be.<\/strong> The booking\nitself is still taken under a lock on the event, counted again, and refused with\na plain sentence if the last place went a second ago. The live form exists so\nthat you are told <em>before<\/em> you have typed eight names rather than after.<\/p>\n\n<h4>1.8.5<\/h4>\n\n<p><strong>Fixed: your event was not selling the price categories you gave the room.<\/strong>\nEvery event is handed a \"Standard admission\" ticket category the moment it is\ncreated, and the room only spoke up when nothing else had \u2014 so you could name\nthree price categories in the assistant, see all three on every screen in the\nadmin, and have the booking page sell one. <strong>The room now decides what an event\nsells whenever it describes it<\/strong>, because it is the thing that actually holds\nthe people. A room category you left at zero borrows the price of the ticket\ncategory of the same name, so nothing silently drops to the base price.<\/p>\n\n<p><strong>The ticket-categories list stops competing.<\/strong> With a room in place it folds\naway on <em>Prices &amp; places<\/em> under <strong>Offers that are not places<\/strong> \u2014 early bird,\nmember, child: a price about <em>when<\/em> or <em>who<\/em> rather than <em>where<\/em>. That is the\njob it is actually for.<\/p>\n\n<p><strong>Fixed: the WordPress footer printed across two tabs.<\/strong> One stray closing tag\nat the foot of two templates closed WordPress's own content wrapper early,\nwhich dropped \"Merci de faire de WordPress votre outil de cr\u00e9ation de contenu\"\ninto the middle of the Ticket and Payment tabs. The test bench now counts\nopening and closing tags in every template, because nobody reads a closing tag\nat the foot of a 120-line file and a machine counts them in a millisecond.<\/p>\n\n<p><strong>The floor plan builder can select more than one thing.<\/strong> Drag a rectangle over\nthe floor and it picks up every part it touches; shift-click adds one;\nCtrl+A takes the lot. Then move them together, line them\nup \u2014 left, centre, right, even gaps \u2014 duplicate them or remove them in one go.\nBefore this, the <em>only<\/em> rectangle gesture in the builder struck seats out: the\nobvious way to grab a row of tables quietly crossed out every chair inside it.\nA rectangle now means whatever the tool means, and striking seats out lives\nwith the strike-out tool where it belongs.<\/p>\n\n<p><strong>The stage is picked up like anything else.<\/strong> It needed its own tool before,\nwhich is not something anybody guesses.<\/p>\n\n<p><strong>More of the builder<\/strong>: arrow keys nudge a selection by 10 cm, or a metre with\nShift. Ctrl+D duplicates,\nDelete removes. The panel now opens on <strong>what you have selected<\/strong>\ninstead of on the template gallery, so clicking a table no longer scrolls its\nown settings out of sight. A part has a <strong>Level<\/strong> field, and the room has a\nname field in the builder.<\/p>\n\n<p><strong>The name of the room is asked at the top of the assistant<\/strong>, where you already\nknow it, instead of sitting in a box at the bottom of a tab.<\/p>\n\n<p><strong>Fixed:<\/strong> the Category column of a guest list showed a dash for every guest who\nbooked a part of the room, because it looked in one module's own table instead\nof asking the question properly.<\/p>\n\n<h4>1.8.4<\/h4>\n\n<p><strong>The assistant describes a room the way you would describe it out loud.<\/strong> You\nsay how many rows of tables and how many tables to a row \u2014 that lays the hall\nout once and numbers every table \u2014 and then each zone claims a stretch of it:\n<em>\"the VIP zone runs from table 1 to table 5.\"<\/em> A zone no longer invents places\nof its own, which is what makes the rest possible: the same table can never end\nup in two zones, and a table you left out of every zone is named on screen\nrather than quietly dropped off the sale.<\/p>\n\n<p><strong>A price category is no longer the same thing as a zone.<\/strong> A category has its\nown name and its own price, and several zones can share one \u2014 Premium is\nPremium whether it is the left balcony or the right. The booking page sells the\ncategories; the ticket prints the <strong>zone<\/strong>, because the zone is what somebody\nactually reads at the door.<\/p>\n\n<p><strong>The payment question is now the whole story.<\/strong> As well as how people pay and\nwhen the ticket goes out, the assistant asks what to tell a guest paying off the\nsite, how many places one booking may take, and whether you need a name for\nevery place or one name for the booking. All four are written into the event.<\/p>\n\n<p><strong>Prices &amp; places shows the room instead of asking for it again.<\/strong> The four\nbuttons \u2014 no places, one gauge, zones, a plan \u2014 and the <em>\"What one person is\ngiven\"<\/em> radio group are gone. Both asked what the assistant had just asked, and\nthe two screens could contradict each other: answer \"tables\" in the assistant,\ntick \"a chair\" here, and the plugin starts selling chairs at a table nobody\nbooked. The tab now <strong>draws the room that exists<\/strong>, says in a sentence what a\nticket will print, and gives you the two ways back \u2014 run the assistant again, or\nopen the builder on what it built.<\/p>\n\n<p><strong>The capacity is counted, not typed.<\/strong> With a room in place, the capacity box\nis replaced by the room's own total. Two boxes for one number always ends the\nsame way: one of them is believed at the door.<\/p>\n\n<p><strong>Fixed: a balcony forgot it was a balcony.<\/strong> A block's level and its control\nwere saved to the database and never read back, so both were lost the first time\nthe room was loaded again.<\/p>\n\n<p><strong>Fixed: a hall of tables came back sold chair by chair.<\/strong> The floor plan\nbuilder never sent the room's grain back when you saved, so a room built around\nwhole tables was rewritten as a room of single seats.<\/p>\n\n<h4>1.8.3<\/h4>\n\n<p><strong>Fixed: finishing the assistant broke the site.<\/strong> It wrote its entry to the\nactivity log with the wrong number of arguments, which PHP answers with a fatal\nerror \u2014 so the last click of the assistant produced a white screen. The test\nbench now reads every logging call in the plugin and checks it passes what the\nlog actually asks for.<\/p>\n\n<p><strong>The assistant walks you through it now.<\/strong> It showed every question at once and\nleft you to work out where the end was. It asks <strong>one question at a time<\/strong>, with\n<strong>Back<\/strong> and <strong>Continue<\/strong> at the bottom and a row of steps along the top showing\nwhere you are, what is behind you, and what is still to come. Continue stays\ngreyed out, with a reason, until the question in front of you has an answer \u2014 a\nbutton that disappears just leaves you looking for it.<\/p>\n\n<h4>1.8.2<\/h4>\n\n<p><strong>Fixed: finishing the assistant said \"Security check failed\".<\/strong> Its form was\nsigned with the name of a different action, which is the same as not signing it\nat all \u2014 so the one button that mattered died at the last step. Every form is now\nchecked against the action it posts, by the test bench, so this cannot come back\nquietly.<\/p>\n\n<h4>1.8.1<\/h4>\n\n<p><strong>The creation wizard stops asking what the assistant asks.<\/strong> It had a \"Tickets\"\nstep wanting a price and a capacity, and then the assistant wanted the same two\nnumbers again \u2014 with the zones and the room that give them meaning. One number\nasked on two screens is how two screens end up disagreeing about it. Creating an\nevent is now three steps, and the last button says what happens next: <em>Set up\nplaces and prices<\/em>.<\/p>\n\n<h4>1.8.0<\/h4>\n\n<p><strong>An assistant that sets up an event by asking about it.<\/strong> Prices, zones,\ncapacity and the moment a ticket goes out are one decision described on four\nscreens, and nobody arriving for the first time can know that. So the assistant\nhas the conversation instead \u2014 starting from a picture of the kind of room you\nare filling, not a word for it \u2014 and writes the answers into the tabs.<\/p>\n\n<ul>\n<li>It opens by itself after you create an event, and there is a button for it on\n<strong>Prices &amp; places<\/strong> whenever you want to run it again.<\/li>\n<li><strong>Every answer decides the next question, and the panel beside it shows the\nconsequence<\/strong>: the room being drawn, the prices a guest will see, and what the\nticket will actually print.<\/li>\n<li>It tells you what each answer settles and why \u2014 <em>\"the ticket carries the table,\nso the chair number is not asked: at a round table it tells nobody anything.\"<\/em><\/li>\n<li><strong>It owns nothing.<\/strong> It adds no setting of its own; everything it decides is\nstill there, field by field, on the tab that always owned it.<\/li>\n<li>It will not quietly rebuild a room for an event that already has bookings \u2014\na place is printed on a ticket the moment it is given out.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<p><strong>One tab for money, capacity and places.<\/strong> The price and the capacity lived on\none screen and the room on another, so you could set a capacity of 500 and then\ndescribe a room holding 380 \u2014 and nothing said so until somebody was turned away\nat the door. They are one decision, so they are now one tab: <strong>Prices &amp; places<\/strong>.\nA place there is whatever your event hands out: a seat, a table, a row, or a\nwhole area.<\/p>\n\n<ul>\n<li><strong>Pricing &amp; capacity is gone.<\/strong> The price, the currency and the capacity moved\nto Prices &amp; places, along with the price categories and the zones.<\/li>\n<li><strong>When &amp; where is now Information &amp; details<\/strong>, and holds what a guest is told\nbefore booking \u2014 including <em>this event serves food or drinks<\/em> and the sponsor\nstrip.<\/li>\n<li>Old links to the removed tab land on Prices &amp; places instead of dropping you\nback at the start.<\/li>\n<\/ul>\n\n<p><strong>Fixed: the back button brought a finished booking form back to life.<\/strong> After\nbooking, pressing Back showed the form still filled in, with the submit button\nstill greyed out and the countdown frozen \u2014 a page that looked broken. A booking\ncould never have been made twice (the server has refused that since 1.3.0), but\nthe page now reloads itself, with an empty form, a live clock and a working\nbutton.<\/p>\n\n<h4>1.6.1<\/h4>\n\n<p><strong>Fixed: named zones were all sold at the price of the event.<\/strong> Give three zones\nthree prices and the booking page offered three zones \u2014 at one price. Worse, the\nbooking was charged that price too, so a zone priced higher than the event was\nsold short and one priced lower was overcharged. The room hands the booking form\na zone carrying its own price; the form then asked a separate question \u2014 <em>what\ndoes this cost?<\/em> \u2014 that nothing was answering for a zone. It answers now.<\/p>\n\n<p><strong>Fixed: deleting a zone moved the bookings of the one below it.<\/strong> Zone\nreferences were rebuilt from their position on every save, so removing the first\nzone renamed the second into it, and a booking already sold pointed at a zone its\nguest never bought. Each zone now carries its own reference.<\/p>\n\n<p><strong>Fixed: a zone of 25 places sold 40.<\/strong> A capacity that did not divide evenly\ninto rows was rounded  \u2026<\/p>","raw_excerpt":"An event calendar and a page for every event. Name every guest, send each a QR ticket, scan them in at the door. Seven languages. No fees.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/361265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=361265"}],"author":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bitforgenet"}],"wp:attachment":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=361265"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=361265"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=361265"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=361265"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=361265"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=361265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}