One of the things I enjoy about organizing WordCamp is finding ways to make the event better—not just for attendees, but also for the volunteers working behind the scenes.
For WordCamp Philippines 2026, I wanted to improve one of the most important parts of the event experience: registration and check-in.
Instead of manually searching for attendees, checking their names against a list, and then preparing their badges, I wanted something much simpler:
Scan a QR code → check in the attendee → print their badge.
That idea eventually became CampTix Check-In, a self-hosted WordPress plugin I built specifically for WordCamp Philippines.
The problem with the usual check-in process
WordCamp uses CampTix to manage ticket registrations and attendee information. It works well for managing registrations, but I wanted a dedicated interface for the actual event-day check-in process.
The goal was to have something that volunteers could use without needing to navigate the WordPress admin interface or deal with a complicated workflow.
I also wanted the system to be independent from WordCamp.org itself.
Because WordCamp.org doesn't allow third-party plugins to be installed, I created a separate WordPress site dedicated to check-in. The system could then pull attendee information from the WordCamp site through the REST API or import it from a CampTix CSV export.
This gave me a local copy of the attendee information that we could use during the event.
Building CampTix Check-In
I started building the plugin around the basic check-in workflow.
The plugin includes:
- An attendee dashboard with live check-in statistics
- Attendee search and filtering
- CSV and REST API synchronization with CampTix
- QR code generation and email delivery
- Camera-based QR code scanning
- Check-in status and timestamps
- Manual attendee management
- Printable name badges
- A configurable printer endpoint
The QR codes are also signed using HMAC-SHA256. This means the system can verify that a QR code was actually generated by the system and hasn't been modified or forged.
The basic flow became:
CampTix → Sync attendees → Send QR codes → Attendee arrives → Scan QR → Check in
The scanner runs directly in the browser using a camera, with visual and audio feedback for successful, duplicate, or invalid scans.
At this point, the system was already working pretty well.
But there was one missing piece.
I wanted the badge to print automatically
The scanner could check someone in.
The system could display their badge.
But I didn't want volunteers to have to click through another screen and manually print every badge.
The ideal experience was:
Scan the QR code, and the badge automatically prints.
This was the part I wasn't sure how to solve.
And this is where Jerico came in.
Enter Jerico and the missing piece
A couple of weeks before WordCamp Philippines, Jerico, Arvin John, and I were co-working at Jerico's office.
We were doing a few things together, including working on a laptop and going through some preparations for WordCamp. At some point, I mentioned that I was building a QR check-in system and that I wanted to experiment with automatically printing attendee badges after someone checked in.
Jerico immediately got interested.
As he later wrote in his own blog post "Jerico's blog post about the QR Check-in Auto-Printer" , he had already built something similar for an inventory system and knew that the concept was possible.
He quickly put together a proof of concept using a small thermal printer he had available.
The idea was surprisingly simple.
My check-in system would send the attendee's badge information to an HTTP endpoint. Jerico's side would receive that request and take care of printing the badge.
Instead of trying to make the WordPress site communicate directly with a printer, we separated the two systems.
CampTix Check-In → HTTP request → Local print server → Thermal printer
This turned out to be a much cleaner solution.
Jerico also made the printer endpoint configurable in the plugin, so we could change the destination without having to modify the code during the event.
That became the final piece that turned the check-in system into an actual registration workflow.
Testing a printer from my house
One of my favorite parts of this project was that we didn't even need to be in the same place to test it.
Jerico exposed his printer through an HTTP endpoint.
I could trigger a print request from my own location, and a physical sticker would come out of the thermal printer sitting in his office.
It was one of those moments where a simple idea suddenly became very real.
I could scan an attendee, send the badge information over the internet, and watch an actual badge being printed somewhere else.
That's when I knew we could make this work at WordCamp.
The hardware
For the event, we used a small thermal label printer setup.
The idea was intentionally simple and inexpensive. Jerico used a tablet running Ubuntu as the printer server, connected directly to the thermal printer through USB.
The printer server ran:
- Ubuntu
- CUPS
- A small web server
- Firefox in kiosk mode
The setup was designed to be as close to plug and play as possible.
When the tablet boots, it automatically logs in, starts the print server, opens Firefox in kiosk mode, and waits for print requests.
The organizers also prepared a second printer as a backup, because the last thing we wanted was for a broken printer to stop registration.
What happens when an attendee arrives?
The final workflow looked like this:
1. Attendee receives their QR code
The system generates a unique, signed QR code and sends it to the attendee via email.
2. Attendee arrives at registration
They show the QR code on their phone or a printed copy.
3. Volunteer scans the QR code
The volunteer opens the QR Scanner on a tablet or phone.
4. The system verifies the QR code
The QR payload is decoded and the HMAC signature is checked.
5. The attendee is checked in
The system records the check-in timestamp.
6. Badge information is sent to the printer
The check-in system sends the attendee's badge information to the configured printer URL.
7. The badge prints
A few seconds later, the attendee has a physical name badge.
So the entire experience becomes:
Scan → Check in → Print → Hand over the badge
The badge itself contains information such as the attendee's name, company, WordPress.org username, social handle, and website, depending on the configured fields.
Seeing it work with 400+ attendees
The real test, of course, wasn't the proof of concept.
It was the actual event.
And it worked.
During WordCamp Philippines, we were able to use the QR check-in and automatic printing workflow for 400+ attendees.
There was something really satisfying about standing at registration and seeing the process happen repeatedly:
Scan. Beep. Check in. Print.
And then seeing the printed badges being worn around the venue.
What started as an idea on a co-working day had become a working registration system used by hundreds of people.
Why I built it instead of using an existing solution
There are already plenty of event registration and check-in systems out there.
But one of the reasons I enjoy WordCamp is that it gives us an opportunity to experiment and build things ourselves.
I wanted a system that was:
- Self-hosted
- Built with WordPress
- Compatible with CampTix
- Simple enough for volunteers to use
- Flexible enough to work with different hardware
- Not dependent on installing plugins on WordCamp.org
- Easy to modify for future WordCamps
CampTix Check-In became exactly that.
The plugin stores attendee information locally and can synchronize from the official CampTix data using either CSV import or the WordCamp REST API.
It also has a fallback: if the configured printer endpoint is unavailable, the badge can still fall back to the normal browser printing workflow.
What's next?
Of course, there are still things I would like to improve.
For version 2, I would love to make the system even more self-contained.
One possibility is turning the printer server itself into the complete registration station.
The tablet already has a camera, so theoretically it could:
Scan QR → Check in locally → Print badge
without depending on the internet during registration.
Attendee data could be synchronized to the device before the event, and check-in data could be synchronized back to CampTix afterward.
That would also make it possible to run multiple independent registration stations.
It's something I'd love to experiment with at a future WordCamp.
More than just a plugin
Looking back, CampTix Check-In wasn't really just a plugin project.
It was a collaboration.
I built the check-in system, but the automatic printing part wouldn't have happened without Jerico.
What I originally thought was the missing piece of the project—printing—turned out to be something that Jerico was already experimenting with.
He didn't just help me fix a problem. He helped turn the idea into something we could actually use in production.
And that's one of the things I love about the WordPress community.
You can mention an idea while working together, someone says, "Yeah, we can probably do that," and suddenly you're building a weird little system involving WordPress, QR codes, REST APIs, tablets, HTTP requests, thermal printers, and a lot of experimentation.
Then, a few weeks later, it's printing badges for hundreds of people.
That's WordCamp.
Try it yourself
CampTix Check-In was built for WordCamp Philippines 2026, but I've made the project available as a WordPress plugin so it can potentially be adapted for other WordCamps and events.
The project is licensed under GPLv2 or later, consistent with WordPress plugin licensing.
The source code and documentation are available on GitHub:
CampTix Check-In: https://github.com/jhimross/camptix-checkin
And a huge thanks to Jerico Aragon for helping me solve the final—and probably most fun—piece of the puzzle: automatic badge printing.
Now I'm already thinking about version 2.