{"id":1896647,"date":"2019-10-18T13:19:45","date_gmt":"2019-10-18T17:19:45","guid":{"rendered":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/using-qr-codes-with-event-tickets-plus\/"},"modified":"2025-07-25T10:41:18","modified_gmt":"2025-07-25T14:41:18","slug":"using-qr-codes-with-event-tickets-plus","status":"publish","type":"post","link":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/using-qr-codes-with-event-tickets-plus\/","title":{"rendered":"QR Codes and Ticket Check In"},"content":{"rendered":"\n<iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/VEJAbkReo9I?si=fTSlVnukha3QnKFQ\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n\n\n\n<p>One of the most useful added features of <a href=\"https:\/\/theeventscalendar.com\/product\/wordpress-event-tickets-plus\/\" target=\"_blank\" rel=\"noreferrer noopener\">Event Tickets Plus<\/a>, is the ability to check in attendees to your events via QR code.<\/p>\n\n\n\n<p>These scannable codes are&nbsp;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.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:var(--global-palette8)\">\ud83d\udca1 The Event Tickets Plus App is available for sites running <a href=\"https:\/\/theeventscalendar.com\/products\/wordpress-event-tickets\/\">Event Tickets Plus<\/a> alongside Event Tickets.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-server-requirements\">Server Requirements<\/h2>\n\n\n\n<p>The QR code feature in <strong>Event Tickets Plus<\/strong> relies on your server\u2019s ability to dynamically generate images. To function properly, your server must have the <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ed1111\" class=\"has-inline-color\">GD<\/mark> PHP extension<\/strong> installed and enabled. This is a standard PHP library responsible for image processing tasks.<\/p>\n\n\n\n<p>If the GD extension is missing or disabled, QR codes will not be generated, and you may see a broken image or an error where the QR code should appear. This is a server-side requirement, not something controlled directly by WordPress or our plugin.<\/p>\n\n\n\n<p>Most hosting providers include this extension by default. However, if you experience issues with QR codes not displaying, we recommend checking your server\u2019s PHP configuration on <em>wp-admin &gt; Tools &gt; Site Health<\/em>. The Status tab shows a critical issue section if the GD library is not installed.<\/p>\n\n\n\n<p>If that&#8217;s your case, please contact your hosting provider and let them know that <strong>WordPress<\/strong> requires the <strong>GD library installed and active<\/strong>.<\/p>\n\n\n\n<p>For reference, the WordPress Hosting Team maintains a list of recommended PHP extensions here: <a class=\"\" href=\"https:\/\/make.wordpress.org\/hosting\/handbook\/handbook\/server-environment\/#php-extensions\">WordPress Server Environment Requirements<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"etp-app\">Event Tickets Plus App<\/h2>\n\n\n\n<p>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&nbsp;API key and start scanning your tickets.<\/p>\n\n\n\n<p>Download the app from:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.theeventscalendar.eventticketsplus\" target=\"_blank\" rel=\"noopener noreferrer\">Google Play Store<\/a>&nbsp;&#8211; for Android devices<\/li>\n\n\n\n<li><a href=\"https:\/\/itunes.apple.com\/us\/app\/event-tickets-plus\/id1395674797?ls=1&amp;mt=8\" target=\"_blank\" rel=\"noopener noreferrer\">App Store<\/a>&nbsp;&#8211; for iOS devices<\/li>\n<\/ul>\n\n\n\n<div style=\"background: #f3f3f3; border: 1px solid #aaa; padding: 0.6rem 1rem;\"><strong>Please note:<\/strong> You will need our&nbsp;<strong>Event Tickets<\/strong> and <strong>Event Tickets Plus <\/strong>plugins installed in <strong>versions 4.7.5<\/strong> and above in order for the Event Tickets Plus App to work with your site.<\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"set-up\">Setting up the App<\/h3>\n\n\n\n<p>Once the app is installed on your device, you can connect to the app in one of two ways:<\/p>\n\n\n\n<ol class=\"wp-block-list has-white-background-color has-background\">\n<li>Navigate to your site&#8217;s <strong>WP Admin &gt; Tickets &gt; Settings &gt; Integrations<\/strong> tab and under Event Tickets Plus App, you&#8217;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.<br><img loading=\"lazy\" decoding=\"async\" width=\"1164\" height=\"678\" class=\"wp-image-1954174\" style=\"width: 500px;border-width:1px;\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-12.49.01-PM.png\" alt=\"\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-12.49.01-PM.png 1164w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-12.49.01-PM-300x175.png 300w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-12.49.01-PM-1024x596.png 1024w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-12.49.01-PM-768x447.png 768w\" sizes=\"auto, (max-width: 1164px) 100vw, 1164px\" \/><\/li>\n\n\n\n<li>On your device, you will see the below screen. If you have scanned the QR code, you&#8217;ll see the information pre-populated. If you are setting it up manually, you can do so here.<br><img loading=\"lazy\" decoding=\"async\" width=\"470\" height=\"1024\" class=\"wp-image-1954175\" style=\"width: 150px;border-width:1px\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-12.52.52-PM.png\" alt=\"\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-12.52.52-PM.png 470w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-12.52.52-PM-138x300.png 138w\" sizes=\"auto, (max-width: 470px) 100vw, 470px\" \/><br>It&#8217;s important to note that the URL only works with <code>https:\/\/<\/code><\/li>\n\n\n\n<li>Once that information is in place, you&#8217;ll be ready to check in your attendees by scanning their ticket&#8217;s QR codes!<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-offline-check-in-capability\"><strong>Offline Check-In Capability<\/strong><\/h2>\n\n\n\n<p>One of the newest features of the Event Tickets Plus App is the ability to check in attendees even when you don&#8217;t have an internet connection. This is perfect for outdoor venues, remote locations, or areas with spotty cell service.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How it Works:<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Before you go offline:<\/strong> Open the app while connected to the internet. The app will automatically sync your events and attendee information to your device.<\/li>\n\n\n\n<li><strong>While offline:<\/strong> You can check in any attendees whose tickets were included in your last sync. The app will show a small banner at the top letting you know you&#8217;re offline and when your last sync occurred.<br><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"472\" height=\"1024\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Offline-472x1024.png\" alt=\"\" class=\"wp-image-1966088\" style=\"width:383px;height:auto\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Offline-472x1024.png 472w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Offline-138x300.png 138w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Offline-768x1665.png 768w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Offline-709x1536.png 709w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Offline-945x2048.png 945w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Offline.png 1179w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/figure>\n\n\n\n<p>3. <strong>When you&#8217;re back online: <\/strong>The app automatically syncs all your offline check-ins with your website. You&#8217;ll see your attendee lists update accordingly in your WordPress admin.<\/p>\n\n\n\n<p><strong>Important Notes:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You need <strong>both<\/strong> The Events Calendar and Event Tickets Plus for offline functionality to work.<\/li>\n\n\n\n<li>You can only check in attendees whose tickets were synced <strong>before<\/strong> you went offline.<\/li>\n\n\n\n<li>If someone purchases a ticket <strong>after<\/strong> your last sync, you won&#8217;t be able to check them in until you sync again.<\/li>\n\n\n\n<li>While offline, the app can only show basic errors (like &#8220;Attendee Not Found&#8221; for tickets not in your synced data).<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"472\" height=\"1024\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Attendee-Not-Found-472x1024.png\" alt=\"\" class=\"wp-image-1966087\" style=\"width:358px;height:auto\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Attendee-Not-Found-472x1024.png 472w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Attendee-Not-Found-138x300.png 138w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Attendee-Not-Found-768x1665.png 768w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Attendee-Not-Found-709x1536.png 709w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Attendee-Not-Found-945x2048.png 945w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2024\/07\/ETP-App-Attendee-Not-Found.png 1179w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/figure>\n\n\n\n<p class=\"has-theme-palette-8-background-color has-background\">\ud83d\udca1 Tip: If you&#8217;re in an area with weak or intermittent internet service, consider turning on airplane mode and working entirely offline. This prevents failed connection attempts that could cause check-in errors.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-events-calendar\">Connecting to a site with The Events Calendar<\/h2>\n\n\n\n<p>If you are using The Events Calendar, in combination with Event Tickets and Event Tickets Plus, you&#8217;ll see all of your events listed in the app. Additionally, you&#8217;ll have access to attendee numbers, event details, and all of your attendee lists.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69fb694cf344a&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large is-resized has-custom-border wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"468\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.05.35-PM-1-468x1024.png\" alt=\"\" class=\"has-border-color has-theme-palette-3-border-color wp-image-1954178\" style=\"border-width:1px;width:170px\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.05.35-PM-1-468x1024.png 468w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.05.35-PM-1-137x300.png 137w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.05.35-PM-1.png 474w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>It&#8217;s important to note that you won&#8217;t be able to check in attendees until the time of your event by default. You can toggle this setting on under <strong>Tickets &gt; Settings &gt; Integrations<\/strong> 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.<br><\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69fb694cf3801&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-full is-resized has-custom-border wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"372\" height=\"820\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.04.30-PM.png\" alt=\"\" class=\"has-border-color has-theme-palette-3-border-color wp-image-1954176\" style=\"border-width:1px;width:170px\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.04.30-PM.png 372w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.04.30-PM-136x300.png 136w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"event-tickets\">Connecting to a site with only Event Tickets<\/h2>\n\n\n\n<p>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.<br><\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69fb694cf3b2f&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-full is-resized has-custom-border wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"308\" height=\"668\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.13.10-PM.png\" alt=\"\" class=\"has-border-color has-theme-palette-3-border-color wp-image-1954179\" style=\"border-width:1px;width:170px\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.13.10-PM.png 308w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/Screen-Shot-2022-09-19-at-1.13.10-PM-138x300.png 138w\" sizes=\"auto, (max-width: 308px) 100vw, 308px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>If you&#8217;ve never worked with QR codes before, you might have some questions about how to get started with using these for your events. We&#8217;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&nbsp;tickets at your events. Let&#8217;s get started!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"understanding_qr_codes\">Understanding QR Codes<\/h2>\n\n\n\n<p>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 <a href=\"https:\/\/en.wikipedia.org\/wiki\/QR_code\" target=\"_blank\" rel=\"noopener noreferrer\">QR codes<\/a>&nbsp;as being similar to UPC barcodes in functionality, though their&nbsp;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&nbsp;even payment information for mobile transactions.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2017\/06\/tec_qr_code.png\" alt=\"Example of a QR code\"><br>Example of a QR code.<\/p>\n\n\n\n<p>To scan QR codes at your events, you&#8217;ll need a mobile device with a camera (such as a smartphone or tablet) and our Event Tickets Plus App.<\/p>\n\n\n\n<p class=\"has-text-color has-background\" style=\"color:#141827;background-color:var(--global-palette8)\">\ud83d\udca1 If attendees report that the QR code is showing as a \u201cbroken image link icon\u201d, 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\u2019t show in the email.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create_qr_user\">Creating a New User for Scanning QR Codes<\/h3>\n\n\n\n<p>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&#8217;d like to have another member of staff check in attendees without giving them full access to your WordPress site&#8217;s backend? In that case, you can create a new user account with <strong>Contributor<\/strong> permissions, which will prevent edit access to&nbsp;your events, posts, or pages while still allowing attendees to be checked in. Here&#8217;s how to set that up on your site.<\/p>\n\n\n\n<p>As always, you&#8217;ll want to begin by logging into your WordPress dashboard using your administrator credentials. Once you&#8217;ve successfully logged in, highlight the <strong>Users<\/strong> menu item in the WordPress sidebar and click <strong>Add New<\/strong> to open the new user creation form.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter has-custom-border\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2017\/06\/new_qr_user.png\" alt=\"Creating a new user for scanning QR codes with Event Tickets Plus\" class=\"has-border-color has-theme-palette-3-border-color\" style=\"border-width:1px\"\/><\/figure><\/div>\n\n\n<p>Enter a username and email address for your new user (you can leave the remaining text fields blank). You&#8217;ll also want to click the <strong>Show password<\/strong> button and note the password for the new account. Lastly, in the <strong>Role<\/strong> drop-down menu, select the <strong>Contributor<\/strong> role. Click <strong>Add New User<\/strong> once you&#8217;re finished, and the new user will be added immediately to your site. If you selected the check box for <strong>Send User Notification<\/strong>, an email will be sent to the address you provided to confirm the creation of this new account.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2017\/06\/contributor_sidebar.png\" alt=\"Limited selection of sidebar items for the Contributor user role\"\/><\/figure><\/div>\n\n\n<p>When your Contributor user account logs into the site, they&#8217;ll see a limited selection of menu items available to them, and they won&#8217;t be able to edit or delete any existing events in your database.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">GDPR Compatibility<\/h2>\n\n\n\n<p>The Event Tickets Plus app is not storing any user-related information, and it is GDPR compatible. The information that&#8217;s displayed in the app is coming from the connected site, which has the appropriate GDPR tools.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-useful-snippets-customizations\">Useful snippets\/customizations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Hiding Attendee Information for the APP<\/h3>\n\n\n\n<p>We understand that, for some cases, it&#8217;ll be important not to display the attendee information on the scan result or within the events screen of the app.<\/p>\n\n\n\n<p>For that, we have created <a href=\"https:\/\/gist.github.com\/juanfra\/6ad04fcf9e1a358c5a2e5cca31516cf6\" target=\"_blank\" rel=\"noreferrer noopener\">this snippet<\/a> that you can add to your site&#8217;s functions.php theme file, or using <a href=\"https:\/\/wordpress.org\/plugins\/code-snippets\/\">Code Snippets<\/a> plugin:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php \/\/* Do NOT include the opening php tag\n\nadd_filter(\n\t&#039;rest_request_after_callbacks&#039;,\n\t&#039;tec_tickets_maybe_hide_attendee_information_for_app&#039;,\n\t10,\n\t3\n);\n\n\/**\n * Maybe hide information for the ET+ APP.\n *\n * @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.\n *                                                                   Usually a WP_REST_Response or WP_Error.\n * @param array                                            $handler  Route handler used for the request.\n * @param WP_REST_Request                                  $request  Request used to generate the response.\n *\n * @return WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.\n *                                                                   Usually a WP_REST_Response or WP_Error.\n *\/\n\nfunction tec_tickets_maybe_hide_attendee_information_for_app( $response, array $handler, \\WP_REST_Request $request ) {\n\tif ( empty( $request-&gt;get_header( &#039;App-version&#039; ) ) ) {\n\t\treturn $response;\n\t}\tif ( &#039;\/tribe\/tickets\/v1\/attendees&#039; === $request-&gt;get_route() ) {\n\t\t\/\/ Hide the attendee information from the attendee endpoint.\n\t\t$response = tec_tickets_hide_attendee_information_attendee_endpoint( $response, $handler, $request );\n\t}\tif ( &#039;\/tribe\/tickets\/v1\/qr&#039; === $request-&gt;get_route() ) {\n\t\t\/\/ Update QR response, hiding the attendee information\n\t\t$response = tec_tickets_hide_attendee_information_qr_endpoint( $response, $handler, $request );\n\t}\tif ( &#039;\/tribe\/events\/v1\/events&#039; === $request-&gt;get_route() ) {\n\t\t\/\/ If you want to hide Events for the APP, or do something with this endpoint.\n\t}\treturn $response;\n}\n\n\/**\n * Hide the attendee information from the attendees endpoint.\n *\n * @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.\n *                                                                   Usually a WP_REST_Response or WP_Error.\n * @param array                                            $handler  Route handler used for the request.\n * @param WP_REST_Request                                  $request  Request used to generate the response.\n *\n * @return WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.\n *                                                                   Usually a WP_REST_Response or WP_Error.\n *\/\n\nfunction tec_tickets_hide_attendee_information_attendee_endpoint( $response, array $handler, \\WP_REST_Request $request ) {\n\tif ( empty( $response-&gt;data&#x5B;&#039;attendees&#039;] ) ) {\n\t\treturn $response;\n\t}\n\tforeach ( $response-&gt;data&#x5B;&#039;attendees&#039;] as &amp;$attendee ) {\n\t\t$attendee&#x5B;&#039;title&#039;] = &#039;Hidden Name&#039;;\n\t\t$attendee&#x5B;&#039;email&#039;] = &#039;email@domain.com&#039;;\n\t\t$attendee&#x5B;&#039;payment&#039;]&#x5B;&#039;currency&#039;] = &#039;&#039;;\n\t\t$attendee&#x5B;&#039;payment&#039;]&#x5B;&#039;date&#039;] = &#039;&#039;;\n\t\t$attendee&#x5B;&#039;payment&#039;]&#x5B;&#039;price&#039;] = &#039;Unavailable&#039;;\n\t\t$attendee&#x5B;&#039;information&#039;] = &#x5B;];\n\t\t$attendee&#x5B;&#039;information&#039;]&#x5B;&#039;Information&#039;] = &#039;The attendee information is private. For more information please contact the site administrator.&#039;;\t}\n\treturn $response;\n}\n\n\/**\n * Hide the attendee information from the QR endpoint.\n *\n * @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.\n *                                                                   Usually a WP_REST_Response or WP_Error.\n * @param array                                            $handler  Route handler used for the request.\n * @param WP_REST_Request                                  $request  Request used to generate the response.\n *\n * @return WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.\n *                                                                   Usually a WP_REST_Response or WP_Error.\n *\/\n\nfunction tec_tickets_hide_attendee_information_qr_endpoint( $response, array $handler, \\WP_REST_Request $request ) {\n\tif ( empty( $response-&gt;data&#x5B;&#039;attendee&#039;] ) ) {\n\t\treturn $response;\n\t}\t\n\n\t$response-&gt;data&#x5B;&#039;attendee&#039;]&#x5B;&#039;title&#039;] = &#039;Hidden Name&#039;;\n\t$response-&gt;data&#x5B;&#039;attendee&#039;]&#x5B;&#039;email&#039;] = &#039;email@domain.com&#039;;\n\t$response-&gt;data&#x5B;&#039;attendee&#039;]&#x5B;&#039;payment&#039;]&#x5B;&#039;currency&#039;] = &#039;&#039;;\n\t$response-&gt;data&#x5B;&#039;attendee&#039;]&#x5B;&#039;payment&#039;]&#x5B;&#039;date&#039;] = &#039;&#039;;\n\t$response-&gt;data&#x5B;&#039;attendee&#039;]&#x5B;&#039;payment&#039;]&#x5B;&#039;price&#039;] = &#039;Unavailable&#039;;\n\t$response-&gt;data&#x5B;&#039;attendee&#039;]&#x5B;&#039;information&#039;] = &#x5B;];\n\t$response-&gt;data&#x5B;&#039;attendee&#039;]&#x5B;&#039;information&#039;]&#x5B;&#039;Information&#039;] = &#039;The attendee information is private. For more information please contact the site administrator.&#039;;\n\treturn $response;\n}\n<\/pre><\/div>\n\n\n<p>You can also find this snippet <a href=\"https:\/\/gist.github.com\/juanfra\/6ad04fcf9e1a358c5a2e5cca31516cf6\" target=\"_blank\" rel=\"noreferrer noopener\">on Github<\/a>. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Disabling the &#8220;Events&#8221; functionality on the APP<\/h3>\n\n\n\n<p>In some other cases, we understand that it&#8217;s possible that you&#8217;ll need to hide the &#8220;Events&#8221; functionality from the APP.<\/p>\n\n\n\n<p>In order to disable the &#8220;Events&#8221; functionality on the APP we have also created <a href=\"https:\/\/gist.github.com\/juanfra\/a11936a15e1da39c291cb8e92994aa9b\" target=\"_blank\" rel=\"noreferrer noopener\">this snippet<\/a> that you can add to your site:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php \/\/* Do NOT include the opening php tag\n\nadd_filter(\n\t&#039;rest_request_after_callbacks&#039;,\n\t&#039;tec_tickets_maybe_disable_events_for_app&#039;,\n\t10,\n\t3\n);\n\n\/**\n * Maybe disable events for the ET+ APP.\n *\n * @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.\n *                                                                   Usually a WP_REST_Response or WP_Error.\n * @param array                                            $handler  Route handler used for the request.\n * @param WP_REST_Request                                  $request  Request used to generate the response.\n *\n * @return WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.\n *                                                                   Usually a WP_REST_Response or WP_Error.\n *\/\n\nfunction tec_tickets_maybe_disable_events_for_app( $response, array $handler, \\WP_REST_Request $request ) {\n\tif ( empty( $request-&gt;get_header( &#039;App-version&#039; ) ) ) {\n\t\treturn $response;\n\t}\tif ( &#039;\/tribe\/events\/v1\/events&#039; !== $request-&gt;get_route() ) {\n\t\treturn $response;\n\t}\t$response = new WP_REST_Response(\n\t\t&#x5B;\n\t\t\t&#039;code&#039;    =&gt; &#039;rest_no_route&#039;,\n\t\t\t&#039;message&#039; =&gt; &#039;No route was found matching the URL and request method.&#039;,\n\t\t]\n\t);\t$response-&gt;set_status( 404 );\treturn $response;\n}\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p><strong>Using Code Snippets: <\/strong>If you need help understanding how to use code snippets, you can check our guide on <a href=\"https:\/\/staging.theeventscalendar.com\/knowledgebase\/k\/best-practices-for-implementing-custom-code-snippets\/\" target=\"_blank\" rel=\"noreferrer noopener\">using custom code snippets<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"summing_up\">Summing Up<\/h2>\n\n\n\n<p>With your QR code scanning application installed on your device of choice&nbsp;and your Administrator or Contributor account(s) set up and ready to go, all that&#8217;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.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>On the device that you&#8217;ll be using to check in attendees, launch your default web browser.<\/li>\n\n\n\n<li>From the web browser you just launched, log in to your site&#8217;s WordPress dashboard using an account with sufficient permissions. (If you don&#8217;t wish to use your administrator account for this task, you can create a new account with limited permissions using <a href=\"#create_qr_user\">the steps outlined above<\/a>.)<\/li>\n\n\n\n<li>Open the Event Tickets Plus app and ready your device&#8217;s&nbsp;camera to begin scanning.<\/li>\n\n\n\n<li>Ensure that the QR code that you wish to scan is clean, undamaged, and held at a sufficient distance for your device&#8217;s camera to focus. Scan the code.<\/li>\n\n\n\n<li>The app will update, and you&#8217;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).<\/li>\n<\/ol>\n\n\n\n<p><strong>Troubleshooting: <\/strong>if you are unable to check in attendees, you might want to <a href=\"https:\/\/staging.theeventscalendar.com\/knowledgebase\/k\/rest-api-check-in-for-event-tickets-plus-app\/\" target=\"_blank\" rel=\"noreferrer noopener\">take a look at the following pos<\/a>t.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p>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&#8217;t hesitate to pay us a visit over at&nbsp;<a href=\"https:\/\/theeventscalendar.com\/support-forums\/\">our help desk<\/a> if you should have any lingering questions&#8211;we&#8217;re more than happy to assist!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the most useful added features of Event Tickets Plus, is the ability to check in attendees to your events via QR code. These scannable codes are&nbsp;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&#8230;<\/p>\n","protected":false},"author":34,"featured_media":1955565,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_swpsp_post_exclude":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"ep_exclude_from_search":false,"footnotes":""},"categories":[88],"tags":[64],"stellar-product-taxonomy":[155,156],"class_list":["post-1896647","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tickets","tag-qr","stellar-product-taxonomy-event-tickets","stellar-product-taxonomy-event-tickets-plus"],"acf":[],"taxonomy_info":{"category":[{"value":88,"label":"Ticketing"}],"post_tag":[{"value":64,"label":"QR"}],"stellar-product-taxonomy":[{"value":155,"label":"Event Tickets"},{"value":156,"label":"Event Tickets Plus"}]},"featured_image_src_large":["https:\/\/images.theeventscalendar.com\/kb\/uploads\/2023\/02\/social-share-1024x538.png",1024,538,true],"author_info":{"display_name":"jaimem","author_link":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/author\/jaimem\/"},"comment_info":0,"category_info":[{"term_id":88,"name":"Ticketing","slug":"tickets","term_group":0,"term_taxonomy_id":88,"taxonomy":"category","description":"","parent":61,"count":83,"filter":"raw","term_order":"0","cat_ID":88,"category_count":83,"category_description":"","cat_name":"Ticketing","category_nicename":"tickets","category_parent":61}],"tag_info":[{"term_id":64,"name":"QR","slug":"qr","term_group":0,"term_taxonomy_id":64,"taxonomy":"post_tag","description":"","parent":0,"count":8,"filter":"raw","term_order":"0"}],"_links":{"self":[{"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1896647","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/comments?post=1896647"}],"version-history":[{"count":33,"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1896647\/revisions"}],"predecessor-version":[{"id":1966275,"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1896647\/revisions\/1966275"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/media\/1955565"}],"wp:attachment":[{"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/media?parent=1896647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/categories?post=1896647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/tags?post=1896647"},{"taxonomy":"stellar-product-taxonomy","embeddable":true,"href":"https:\/\/staging.theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/stellar-product-taxonomy?post=1896647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}