One of the most useful added features of Event Tickets Plus, and Wallet Plus, is the ability to check in attendees to your events via QR code.

These scannable codes are generated automatically for all ticket purchases or reservations, and each code references a unique URL that can be used to quickly check in guests without needing to manually access your attendees list.

💡 The Event Tickets Plus App will be available and ready to use for sites running Event Tickets Plus or Wallet Plus, alongside Event Tickets.

Event Tickets Plus App

Our Event Tickets Plus App is the easiest and fastest way to check in your attendees directly from your Android or iOS device without the need to log in to your site. Simply install and connect to your site using an API key and start scanning your tickets.

Download the app from:

Please note: You will need our Event Tickets and Event Tickets Plus plugins installed in versions 4.7.5 and above in order for the Event Tickets Plus App to work with your site.

Setting up the App

Once the app is installed on your device, you can connect to the app in one of two ways:

  1. Navigate to your site’s WP Admin > Tickets > Settings > Integrations tab and under Event Tickets Plus App, you’ll see a QR code. You can scan this QR code on your mobile device to set up the app. Alternatively, you can set it up manually by opening the app on your mobile device and following the prompts to enter your API Key and website URL.
  2. On your device, you will see the below screen. If you have scanned the QR code, you’ll see the information pre-populated. If you are setting it up manually, you can do so here.

    It’s important to note that the URL only works with https://
  3. Once that information is in place, you’ll be ready to check in your attendees by scanning their ticket’s QR codes!

Please note you will need to have internet access on your device to check in attendees. For best results, we recommend being connected to a wifi network.

Connecting to a site with The Events Calendar

If you are using The Events Calendar, in combination with Event Tickets and Event Tickets Plus, you’ll see all of your events listed in the app. Additionally, you’ll have access to attendee numbers, event details, and all of your attendee lists.

It’s important to note that you won’t be able to check in attendees until the time of your event by default. You can toggle this setting on under Tickets > Settings > Integrations on your WordPress site, which will allow you to set a time buffer in minutes so that they can start reading QR codes before the actual start time of the event.

Connecting to a site with only Event Tickets

If you have a site with Event Tickets and Event Tickets Plus but do not have The Events Calendar, you will not see any events on your app. You will still have access to all of your attendees and their additional information once you scan their QR code.

If you’ve never worked with QR codes before, you might have some questions about how to get started with using these for your events. We’ve created this guide to walk you through the basics, from understanding what QR codes are to selecting a scanning app to set up permissions for staff to validate tickets at your events. Let’s get started!

Understanding QR Codes

First things first, it might be helpful to understand what a QR code is before beginning to use them with your tickets. You can think of QR codes as being similar to UPC barcodes in functionality, though their usage is typically a bit more complex. While barcodes are used primarily to encode simple numerical values, QR codes can contain a variety of data types, including web URLs, contact cards, and even payment information for mobile transactions.

Event Tickets Plus uses QR codes to embed unique check-in URLs for each ticket in your order database; when the QR code is scanned by a site administrator or another user with sufficient permissions, the URL is accessed, and the ticket is checked in automatically.

Example of a QR code
Example of a QR code.

To scan QR codes at your events, you’ll need a mobile device with a camera (such as a smartphone or tablet) and our Event Tickets Plus App.

💡 If attendees report that the QR code is showing as a “broken image link icon”, it may be related to their email client. Several email clients have a setting for whether to automatically download images in emails. If this is disabled, the QR code won’t show in the email.

Creating a New User for Scanning QR Codes

Since full attendee information is made available to site administrators for editing, reviewing, and export purposes, the administrator role is typically also used for checking in users manually or via QR code. But what if you’d like to have another member of staff check in attendees without giving them full access to your WordPress site’s backend? In that case, you can create a new user account with Contributor permissions, which will prevent edit access to your events, posts, or pages while still allowing attendees to be checked in. Here’s how to set that up on your site.

As always, you’ll want to begin by logging into your WordPress dashboard using your administrator credentials. Once you’ve successfully logged in, highlight the Users menu item in the WordPress sidebar and click Add New to open the new user creation form.

Creating a new user for scanning QR codes with Event Tickets Plus

Enter a username and email address for your new user (you can leave the remaining text fields blank). You’ll also want to click the Show password button and note the password for the new account. Lastly, in the Role drop-down menu, select the Contributor role. Click Add New User once you’re finished, and the new user will be added immediately to your site. If you selected the check box for Send User Notification, an email will be sent to the address you provided to confirm the creation of this new account.

Limited selection of sidebar items for the Contributor user role

When your Contributor user account logs into the site, they’ll see a limited selection of menu items available to them, and they won’t be able to edit or delete any existing events in your database.

GDPR Compatibility

The Event Tickets Plus app is not storing any user-related information, and it is GDPR compatible. The information that’s displayed in the app is coming from the connected site, which has the appropriate GDPR tools.

Hiding Attendee Information for the APP

We understand that, for some cases, it’ll be important not to display the attendee information on the scan result or within the events screen of the app.

For that, we have created this snippet that you can add to your site:

<?php
//* Do NOT include the opening php tag

add_filter(
	'rest_request_after_callbacks',
	'tec_tickets_maybe_hide_attendee_information_for_app',
	10,
	3
);

/**
 * Maybe hide information for the ET+ APP.
 *
 * @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.
 *                                                                   Usually a WP_REST_Response or WP_Error.
 * @param array                                            $handler  Route handler used for the request.
 * @param WP_REST_Request                                  $request  Request used to generate the response.
 *
 * @return WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.
 *                                                                   Usually a WP_REST_Response or WP_Error.
 */
function tec_tickets_maybe_hide_attendee_information_for_app( $response, array $handler, \WP_REST_Request $request ) {
	if ( empty( $request->get_header( 'App-version' ) ) ) {
		return $response;
	}

	if ( '/tribe/tickets/v1/attendees' === $request->get_route() ) {
		// Hide the attendee information from the attendee endpoint.
		$response = tec_tickets_hide_attendee_information_attendee_endpoint( $response, $handler, $request );
	}

	if ( '/tribe/tickets/v1/qr' === $request->get_route() ) {
		// Update QR response, hiding the attendee information
		$response = tec_tickets_hide_attendee_information_qr_endpoint( $response, $handler, $request );
	}

	if ( '/tribe/events/v1/events' === $request->get_route() ) {
		// If you want to hide Events for the APP, or do something with this endpoint.
	}

	return $response;
}

/**
 * Hide the attendee information from the attendees endpoint.
 *
 * @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.
 *                                                                   Usually a WP_REST_Response or WP_Error.
 * @param array                                            $handler  Route handler used for the request.
 * @param WP_REST_Request                                  $request  Request used to generate the response.
 *
 * @return WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.
 *                                                                   Usually a WP_REST_Response or WP_Error.
 */
function tec_tickets_hide_attendee_information_attendee_endpoint( $response, array $handler, \WP_REST_Request $request ) {
	if ( empty( $response->data['attendees'] ) ) {
		return $response;
	}

	foreach ( $response->data['attendees'] as &$attendee ) {

		$attendee['title'] = 'Hidden Name';
		$attendee['email'] = '[email protected]';
		$attendee['payment']['currency'] = '';
		$attendee['payment']['date'] = '';
		$attendee['payment']['price'] = 'Unavailable';
		$attendee['information'] = [];
		$attendee['information']['Information'] = 'The attendee information is private. For more information please contact the site administrator.';

	}

	return $response;
}

/**
 * Hide the attendee information from the QR endpoint.
 *
 * @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.
 *                                                                   Usually a WP_REST_Response or WP_Error.
 * @param array                                            $handler  Route handler used for the request.
 * @param WP_REST_Request                                  $request  Request used to generate the response.
 *
 * @return WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.
 *                                                                   Usually a WP_REST_Response or WP_Error.
 */
function tec_tickets_hide_attendee_information_qr_endpoint( $response, array $handler, \WP_REST_Request $request ) {
	if ( empty( $response->data['attendee'] ) ) {
		return $response;
	}

	$response->data['attendee']['title'] = 'Hidden Name';
	$response->data['attendee']['email'] = '[email protected]';
	$response->data['attendee']['payment']['currency'] = '';
	$response->data['attendee']['payment']['date'] = '';
	$response->data['attendee']['payment']['price'] = 'Unavailable';
	$response->data['attendee']['information'] = [];
	$response->data['attendee']['information']['Information'] = 'The attendee information is private. For more information please contact the site administrator.';

	return $response;
}

You can also find this snippet on Github.

Disabling the “Events” functionality on the APP

In some other cases, we understand that it’s possible that you’ll need to hide the “Events” functionality from the APP.

In order to disable the “Events” functionality on the APP we have also created this snippet that you can add to your site:

<?php
//* Do NOT include the opening php tag

add_filter(
	'rest_request_after_callbacks',
	'tec_tickets_maybe_disable_events_for_app',
	10,
	3
);

/**
 * Maybe disable events for the ET+ APP.
 *
 * @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.
 *                                                                   Usually a WP_REST_Response or WP_Error.
 * @param array                                            $handler  Route handler used for the request.
 * @param WP_REST_Request                                  $request  Request used to generate the response.
 *
 * @return WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.
 *                                                                   Usually a WP_REST_Response or WP_Error.
 */
function tec_tickets_maybe_disable_events_for_app( $response, array $handler, \WP_REST_Request $request ) {
	if ( empty( $request->get_header( 'App-version' ) ) ) {
		return $response;
	}

	if ( '/tribe/events/v1/events' !== $request->get_route() ) {
		return $response;
	}

	$response = new WP_REST_Response(
		[
			'code'    => 'rest_no_route',
			'message' => 'No route was found matching the URL and request method.',
		]
	);

	$response->set_status( 404 );

	return $response;
}

Using Code Snippets: If you need help understanding how to use code snippets, you can check our guide on using custom code snippets.


Summing Up

With your QR code scanning application installed on your device of choice and your Administrator or Contributor account(s) set up and ready to go, all that’s left is to begin the actual task of checking in attendees! Your process may look slightly different depending on your actual setup, but the basic steps should be mostly the same across all platforms.

  1. On the device that you’ll be using to check in attendees, launch your default web browser.
  2. From the web browser you just launched, log in to your site’s WordPress dashboard using an account with sufficient permissions. (If you don’t wish to use your administrator account for this task, you can create a new account with limited permissions using the steps outlined above.)
  3. Open the Event Tickets Plus app and ready your device’s camera to begin scanning.
  4. Ensure that the QR code that you wish to scan is clean, undamaged, and held at a sufficient distance for your device’s camera to focus. Scan the code.
  5. The app will update, and you’ll receive confirmation in the browser if your attendee was checked in successfully (or an error if the code is invalid or has already been scanned).

Troubleshooting: if you are unable to check in attendees, you might want to take a look at the following post.


We hope that this guide gives you all the information that you need to begin using QR codes with your event tickets and start reaping the benefits of faster check-ins! Don’t hesitate to pay us a visit over at our help desk if you should have any lingering questions–we’re more than happy to assist!