WooCommerce Order Barcodes - WordPress Plugin
Generates a unique barcode for each order on your site - perfect for e-tickets, packing slips, reservations and a variety of other uses.

Plugin Features
The plugin simplifies the process of generating unique barcodes for orders within WooCommerce. By seamlessly integrating barcode functionality into the system, users can efficiently manage and track orders with ease. This feature-rich tool caters to e-commerce businesses looking to streamline their order processing workflows effectively.
Enhancing the user experience, the plugin automates the generation of barcodes for each order placed on the WooCommerce platform. This automation reduces manual tasks and minimizes the margin of error, ensuring accuracy in order fulfillment processes. With this capability, businesses can boost operational efficiency and enhance overall productivity.
Moreover, the plugin offers customization options, allowing users to tailor the appearance and format of the generated barcodes to align with their brand identity. This flexibility empowers businesses to maintain a consistent visual language across their order management system, reinforcing brand recognition and customer trust.
In addition to facilitating internal operations, the plugin also enhances customer service by providing quick and reliable order tracking. Customers can easily access their order information by scanning the barcode, enabling transparency and promoting user satisfaction. This feature contributes to a positive shopping experience and fosters customer loyalty.
Furthermore, WooCommerce Order Barcodes compatibility with various devices and platforms ensures accessibility and convenience for both businesses and customers. Whether accessing order details from a desktop or a mobile device, users can seamlessly interact with the barcode system, enhancing usability and flexibility. This adaptability caters to the diverse needs of modern e-commerce environments.
Overall, the plugin serves as a valuable asset for businesses seeking to optimize their order management processes within the WooCommerce ecosystem. With its comprehensive features, automation capabilities, and customization options, it empowers users to streamline operations, enhance customer experience, and drive business growth effectively.
Specifications:
| Release date: | 11-10-2020 | |
| Last updated: | 03-10-2026 | |
| Type: | Paid | |
| License: | GPL | |
| Subject: | Specific for WooCommerce | |
| Compatibility: | W5.x W6.x | |
| Includes: | Plugin | |
| Language packs: |
|
|
| Developer: | WooCommerce Plugins | |
| Rating: | ||
Share with your friends!
Guide to Setting Up and Using WooCommerce Order Barcodes
WooCommerce Order Barcodes is not about decorating emails with a nice-looking QR code. It solves a specific operational problem: linking a WooCommerce order to a unique scannable code so staff can quickly find it, verify it, or move it to the required status. In this guide, we will look at how to fit the plugin into your store workflow, choose the right code type, create a scanning page, test the result, and understand the limitations before your team starts scanning real orders.
This article is written as a practical guide, not a reworded product listing. First, we will separate suitable use cases from unsuitable ones, then walk through installation, settings, the scanning page, an example of checking an order at entry or pickup, troubleshooting common issues, and choosing alternatives if you need a more advanced warehouse or ticketing workflow.
One point is especially important to understand up front: the plugin creates one code per order. It does not turn every cart item into its own product barcode, and it does not replace a full warehouse picking system. For order pickup, reservations, simple e-tickets, and code-based order verification, that is often enough. If you need to scan every individual item, manage complex batches, warehouse bins, or picking audits, you may need a different tool.
Where the Plugin Is Actually Useful
WooCommerce Order Barcodes works best anywhere an order needs a quick, verifiable identifier. The customer places an order, WooCommerce creates the order record, the extension adds a unique code, and staff can then use that code as a shortcut to order verification. In that setup, the code becomes the bridge between the customer email, the order in the admin panel, and the real-world action that happens on site.
The common use cases are easy to understand and do not require complex integration. A store offering local pickup can ask the customer to show the email with the code, then the staff member scans it on an internal page and sees the order details. A small event organizer can use the code as an order-level electronic pass. A team printing invoices or packing slips can keep the code next to the order and open the correct WooCommerce record faster.
The plugin is especially useful when the process comes down to one question: "Does this order exist, and what status is it in?" If staff only need to find the order, mark it as completed, record entry or exit, and avoid typing the order number by hand, the extension handles that job in a fairly straightforward way. The real value here is not the code image itself, but the reduction in manual searching and order number entry errors.
Who This Approach Works For
This plugin is worth considering for WooCommerce store owners who already have a clear operational scanning point. That might be a pickup counter, an event entrance, a reservations desk, a packing station, or an internal page used by staff. If your team does not have a place where the code is actually scanned, the impact will be much smaller: the customer will see the code, but the business process will not become more reliable.
- Stores with local pickup where it is important to match the order to the customer quickly.
- Event organizers who need simple order-level check-in.
- Teams that want to open orders with a scanner instead of searching manually in the admin panel.
- Booking and reservation sites where confirming the order itself is enough, rather than each individual line item.
- Stores that print order documents and want to add a quick identifier.
When Not to Start With This Solution
If you need to scan every product inside the order, verify quantities line by line, manage warehouse bins, print EAN/UPC codes for the product catalog, or pick orders by item, one code per order is too blunt an instrument. In that case, it makes more sense to look at solutions with product barcodes, order picking, scan logs, manual picking workflows, or integration with PDF documents.
You should also not expect a QR code to automatically open the right link and perform an action on its own without an internal form in between. The documentation specifically notes that scanning in Order Barcodes essentially enters a value into a form field on the shortcode page. The scanning page itself then performs the action. That is perfectly fine for a controlled internal workflow, but it is not a good fit if you want a public QR code that sends the customer to a separate dynamic page without staff involvement.
What to Check Before Installation
You do not need to design a complex architecture before installing the plugin, but there are several checks worth doing in advance. They save time because most scanning issues do not show up during installation. They show up when the first staff member tries to use a phone, scanner, or scanning page with a real order.
Site and Extension Compatibility
Check the requirements on the official product page and in the WooCommerce documentation. The plugin has requirements for WordPress, WooCommerce, and PHP, and the product page also shows declared compatibility with current WooCommerce features, including order storage in custom tables. This article intentionally does not lock in specific version numbers because they change. In practice, the more important rule is this: before installing, verify the requirements on the product page and test everything on a copy of the site.
If the store already uses High-Performance Order Storage, custom statuses, custom My Account templates, email plugins, or image optimization, start with a staging check. Order Barcodes is tied to orders, emails, the "My account" page, the order details template, and code images. Any extension that changes those areas can affect the final output.
Staff Permissions
The internal scanning form is available to users with the manage_woocommerce capability. In most cases, that means an administrator or shop manager. If a separate staff role handles event entry or order pickup, review what permissions you can safely give that role. Do not grant full admin panel access just for scanning. It is better to create a separate process: a separate page, a separate role, a limited set of actions, staff training, and a manual order-change log in WooCommerce.
The Physical Scanning Workflow
The scanner itself should behave predictably. USB scanners usually work like a keyboard: they enter the code string into the active field and often send Enter afterward. With a phone or tablet, the process depends on the scanner app you choose: some apps simply copy the result, some can return the input directly to the form, and some require a manual tap. That is why you should prepare a test order, a test email, and the actual device the staff member will use before launch.
Practical check: if the scanner can enter the code into a regular text editor and send Enter afterward, it will most likely work smoothly on the scanning page as well. If it only opens a link or leaves the result in a separate app, you will need to adapt the process.
Emails and Printing
The plugin shows the code in order emails and on the order details page in the customer account. That is convenient, but it also means you need to test your email templates. If you use an email builder, custom HTML templates, third-party SMTP, automatic HTML minification, or external image optimization, send a test email to several email services and check the print view. A QR code that looks fine in the admin panel is not automatically guaranteed to be readable in the customer's email.
Installation and a First Safe Check
Installation is standard for Woo Marketplace extensions: automatic connection through your WooCommerce.com account or manual ZIP upload through Plugins and Add New Plugin. This article does not cover purchasing, licensing, or activation workarounds. For a real site workflow, what matters is something else: install the extension on a test copy, activate it, create a new order, and confirm that the code appears where you expect it to.
After activation, do not jump straight into changing the appearance and colors. First, verify the basic code generation flow. Create a test product with a simple price, place a test order in a safe and convenient way, open the order in the admin panel, and confirm that the plugin added a code. Then open the order email and the order page in the customer account. This lets you separate core functionality from later configuration changes.
Minimum Verification Sequence
- Activate the plugin on a site copy or in a non-public test environment.
- Create a new test order after activating the extension.
- Open the order in the WooCommerce admin panel and confirm that the code is displayed.
- Check the order email in a regular email client.
- Open the order in the customer account and make sure the code is visible and does not overlap the order details.
- Only after that should you move on to choosing the code type, colors, and the scanning page.
There is one important detail about older orders: the documentation says that existing orders do not receive codes retroactively by default. To generate a code for an older order, you need to open that order page in the admin panel, and the code will be generated when it loads. This is not a bulk migration, so if you have a large archive, decide in advance whether you really need to code older orders or whether it is enough to start with new ones.
Detailed Configuration After Installation
The main settings are located in WooCommerce > Settings > General, in the Order Barcodes section. The documentation confirms two key settings: the code type and the colors. That may not seem like much, but those choices determine whether the code will be easy to scan in your actual workflow.
Choosing the Code Type
The plugin supports five types: Code 39, Code 93, Code 128, Data Matrix, and QR Code. The documentation divides them by practical use: the linear formats Code 39, Code 93, and Code 128 are suited to standard USB scanners, while Data Matrix and QR Code are usually better for digital scanners and mobile devices. So the question "Which type is best?" cannot be answered in the abstract. It has to be tied to the device, scanning distance, printing method, and workflow.
| Scenario | What to Try First | How to Test It |
|---|---|---|
| Pickup counter with a USB scanner | Code 128 or another supported linear format | The scanner enters the string into the form field and sends Enter without a manual click. |
| Entry check with a phone | QR Code or Data Matrix | The staff member scans the code from the customer's email and quickly transfers the string into the form. |
| Printing on invoices or slips | A type that remains reliably readable after printing and copying | Print a test document, scan it from the working distance, and repeat on a different printer. |
| Mixed workflow: phone and USB | Test QR Code and Code 128 on real devices | Choose the option that produces fewer staff errors, not the one that looks nicer. |
Colors and Contrast
Color settings may look cosmetic, but for barcodes they affect reliability. The lower the contrast, the greater the risk that the email, printout, or scanner will distort the image. For your initial setup, use the simplest possible option: a dark code on a light background. You can add brand colors later if testing shows the code remains reliably readable.
Do not change the code type and colors without testing future orders. The documentation says that changing the settings affects only future codes, while already generated ones stay the same. That makes sense: the code may already be in customer emails and may already be printed. If you change the code type after testing, create a new order and test that one, not an older record.
What to Add Only When Necessary
Order Barcodes itself does not come with a long list of switches, but additional layers often appear around it: custom email templates, PDF invoices, a separate staff page, access roles, customer account styling. Add those pieces one at a time. Start with the basic code, then the scanning page, then the email, then the printed document. If you enable everything at once, it will be difficult to understand where the problem came from.
How to Safely Roll Back a Questionable Setting
If staff start reporting scanning errors after you change the code type, switch new orders back to the previous type, create a new test order, and compare the two scenarios. Older orders will not change, so do not judge based on emails that were already sent. If the issue is color-related, restore high contrast and test the email, printout, and scanner again. If the problem is tied to a third-party email template, temporarily switch back to the default WooCommerce template and send a new test email.
How the Order - Code - Scanner Action Flow Works
The main strength of the plugin is its simple chain. A new order gets a unique code. The code appears in emails and order details. A staff member opens an internal page with the [scan_barcode] shortcode. When the code is entered into the form, the plugin finds the related order and performs the selected action. This workflow is especially convenient when speed matters more than manually reviewing every field in detail.
But that same simplicity creates limitations. The code is not, by itself, a full public ticket with complex access logic. It does not replace a warehouse system, it does not track every order line, and it does not magically integrate with an external turnstile. It is an internal order identifier that works inside WooCommerce and the scanning page.
Four Actions on the Scanning Page
The scanning form can perform four actions: look up the order, mark the order as complete, record check-in, and record check-out. You can choose the action in the form, or predefine it with a shortcode parameter. For example, for an event entrance it can be convenient to create a separate page where the action is already preset:
[scan_barcode action="checkin"]
For a packing table, a separate page with order lookup and no automatic completion may be more useful. For local pickup, the complete action can make sense, but only if your workflow truly treats handing the order to the customer as final completion. Do not use order completion as a universal "scan worked" button if there can still be shipping, returns, additional payment, or manual verification after the scan.
Why AJAX Matters for Queue Flow
The documentation notes that actions are performed via ajax, so the page does not reload after each scan. That may not seem important when handling a single order, but at an event entrance or a local pickup counter it becomes critical. Staff scan the code, see the result, and move on to the next person without waiting for a full page reload or losing form focus.
What Matters About the Scanning Itself
The scanner should not be treated as a separate automation system. In the context of Order Barcodes, it enters the code string into a form field. If you scan a QR code with a phone and the app only shows the result, the staff member may need to paste it into the form or use a keyboard-style scanner app. If a USB scanner is configured like a keyboard and sends Enter, the process is usually faster.
That is why you should test not just the code itself, but the entire path: the customer's email on a specific phone, screen brightness, protective glass, distance to the scanner, the active form field, automatic Enter, and the result on the page. The problem is often not the plugin. The device may be scanning correctly but failing to send the string to the place where the plugin expects it.
The Scanning Page and Staff Roles
The internal scanning page is the central part of a real deployment. It does not need to be a public-facing page. It is better to create a normal WordPress page, keep it away from casual visitors, insert the shortcode, and give access only to staff who are actually allowed to work with orders.
Separate Pages for Different Actions
You can use a single shortcode without parameters and let the staff member choose the action in the form. But in a real work environment, it is often better to create several pages. For example, "Order Verification" only looks up the order, "Event Entry" immediately performs check-in, and "Local Pickup" moves the order to completed. This approach reduces the risk of a staff member choosing the wrong mode in a rush.
- For entry control, use a page with
[scan_barcode action="checkin"]if the order should be marked as checked in. - For exit tracking or pass return, use
[scan_barcode action="checkout"]if your scenario truly requires an exit mark. - For a packing table, keep lookup so the staff member can review order details before changing the status manually.
- For handing over a paid order, use complete only after confirming that it does not break your shipping, returns, and notification workflow.
How to Train Staff
The instructions for staff should be shorter than the instructions for the administrator. They need to know where to open the page, which device to scan with, what result counts as success, what to do if there is an error, and when not to scan again. Explain separately that repeated scanning may change the order state again if the workflow allows it. For busy scenarios, it is useful to keep a printed cheat sheet nearby with three statuses: found, already processed, and permission or code error.
Launch rule: first, one staff member tests the process with several test orders, then two staff members repeat it on different devices, and only after that should the page be used in a live customer flow.
Custom Code Output in a Template
The documentation shows a PHP call for manually outputting the order code in a template. Use it only if you understand where the order object is available and how to edit the template safely through a child theme or your own mini-plugin. Do not insert code into the WooCommerce core, a theme without a child theme, or the extension files themselves.
<?php
if ( function_exists( 'WC_Order_Barcodes' ) && ! empty( $order_id ) ) {
echo WC_Order_Barcodes()->display_barcode( $order_id );
}
?>
After making that change, check the order in the customer account, the email, the print view, and the cache. If the code does not appear or triggers a template error, roll back the change through version control or remove the snippet from the child theme. For most stores, the plugin's standard output is enough, and manual output is only needed for a non-standard order template or a separate document.
How to Choose a Mode for Pickup, Events, or Bookings
The same technology can produce very different results depending on the process. For local pickup, the key task is matching the order and moving it to completed. For an event, the priority is fast check-in without slowing down the line. For bookings, you need to understand whether one order equals one service or whether a single order may contain multiple guests, resources, or time slots.
Local Pickup and Order Handover
In a pickup workflow, the code works as a quick way to open the order. The customer shows the email, the staff member scans the code, sees the order contents and customer name, and then hands over the items. If pickup means the order is fully fulfilled, you can use the complete action. If a separate payment check, deposit return, signature, or delivery of another part of the order is still required afterward, it is better to keep lookup and change the status manually.
One important detail: the Completed status in WooCommerce means the order is fulfilled and requires no further action. If the store uses integrations with shipping, accounting, or email notifications, automatic completion at scan time may trigger side effects. So before launch, do not test only the scanning screen. Test the emails, webhooks, integrations, and reports as well.
Events and Electronic Passes
For a small event, you can set up a QR Code, include it in the order email, and use a check-in page at the entrance. The staff member scans the code, the order is marked as checked in, and the details appear on screen. This workflow works best when one order corresponds to one visit or one group that can be verified as a whole.
If you need every ticket within one order to have its own code, the official documentation points to integration with WooCommerce Box Office. In that case, separate ticket barcodes are created for the tickets, and the scanning workflow shifts from the order level to the ticket level. That is a different level of granularity, and it needs to be chosen before tickets are sold, not after customers have already received their emails.
Bookings and Reservations
For bookings, the code works well as order or reservation confirmation. For example, the customer books a reservation, receives an email with a code, and the staff member verifies it on site. If you have a complex resource grid, several participants in one order, or partial check-in, one order barcode may not be enough. In that case, you need to look at what data the booking plugin creates and whether you need a separate tool for the participant, resource, or ticket.
Practical Example: Verifying an Order at Entry or Pickup
Let us walk through a specific scenario. A store sells workshop tickets as a standard virtual WooCommerce product. The customer receives an order email with a code. At the entrance, a staff member opens the internal page, scans the code from the email, and marks the order as checked in. This setup works if one order equals one admission pass, or if staff also verify the number of attendees in the order details.
Goal
The goal is to keep the staff member from searching for the order manually by last name or copying the order number by hand. After scanning, they should see the order details and a clear result: the order was found, the entry was recorded, and the customer can be admitted or the issue needs review.
Preparation
Before launch, WooCommerce and WooCommerce Order Barcodes should already be installed, a test product should already exist, a test order should already be placed, and a page with the shortcode should already be prepared. For the entry scenario, we will use:
[scan_barcode action="checkin"]
The page should be accessible only to a staff member with the appropriate permissions. On the staff member's phone or tablet, verify in advance that site login works, the form field keeps focus, the scanner app behaves correctly, and mobile internet is fast enough. For a USB scanner, test input in a standard field and automatic Enter.
Steps
- Open the internal scanning page in the browser on the staff device.
- Open the test customer email with the code, or print it out.
- Scan the code and wait for the result to appear on the page without a reload.
- Check the name, order contents, and status shown on the result screen.
- Open the order in the admin panel and confirm that the mark matches the selected action.
- Repeat the test with another order and with an invalid code so the staff can see both outcomes.
Verifying the Result
A successful test should show more than just "code scanned." It should show the linked order with the correct details. If check-in or complete changes the order state, review the order notes log and the order list. If you use email notifications on status changes, check that the customer is not receiving an extra message that does not match your workflow.
A Real-World Flow Detail
If the customer shows the email on a dim screen, with reduced brightness, or as a forwarded screenshot, the QR code may be harder to read. That is not always a plugin error. Prepare a fallback path: manual entry of the full string, order lookup by email or order number, or a separate staff role that can open the order and make a decision. The fallback path should not be faster than the main path, or staff will stop scanning and go back to manual search.
Checking the Result After Configuration
After configuration, it is important to test not just one page but the entire chain. The code may look fine in the admin panel but fail to appear in the email. The email may look fine in one client but fail in print. The scanning page may work for an administrator but show an error for a staff member with a different role. So the verification process should follow the same route a real order will take.
New Order Path
Create a new order after your final configuration. Open it in the admin panel and check the code. Open the email on a computer and on a phone. Open the customer account. Scan the code from the screen and from a printout. If you use multiple actions, test each one with a separate test order so the results do not get mixed together.
Old Order Path
If you want to use the plugin for orders created before installation, open one older order in the admin panel and see whether the code appears. Do not promise your staff that the entire archive is already ready for scanning. For a large historical process, it is better to prepare a list in advance of the orders that will actually be scanned and verify them manually in the admin panel.
Print and PDF Checks
If the code needs to appear in a printed document, do not test only through the browser. Test through the actual tool your team uses. Enable background graphics printing if the preview does not show the code. Check the size on a standard printer, the contrast after copying, and readability from the working distance. Do not shrink the code for compactness until you confirm that the scanner reads it reliably in the worst conditions.
Order Statuses, Emails, and Side-Effect Control
WooCommerce Order Barcodes operates close to one of the most sensitive areas in a store: order statuses. For the customer, the status shapes emails, expectations, and access to products. For the store owner, the status affects fulfillment, reports, shipping integrations, accounting exports, and internal tasks. That is why you cannot choose a scanning action just because the label sounds convenient. You need to understand what will happen after the scan in your specific workflow.
When Lookup Is Safer Than Complete
The lookup action only shows the order details. It is the calmest mode for initial testing, staff training, and workflows where the staff member needs to make a decision after reviewing the order. For example, at a pickup counter, the staff member may see that the order is paid, but one item is not ready yet. If the page immediately ran complete, the order could move to its final state too early. Lookup keeps control with the person and reduces the risk of bad automation.
Complete should be used only where scanning truly equals order completion. In a small store, that might mean handing a paid order to the customer. In a digital business, it might mean confirming that the service has already been delivered. But if the Completed status sends an email to the customer, closes a task in a CRM, or pushes data to an external system, test those chains first. Sometimes it is better to keep lookup and add a short internal rule: "After verification, click Complete in the order manually."
Check-In and Check-Out as Separate Logic
Check-in and check-out should not be mixed with normal shipping. They behave more like marking attendance or recording passage through a control point. For an event, check-in means "the person has arrived." For a time-based service, check-out may mean "the person has left" or "the reservation has ended." If your team does not actually use exit tracking as a real action, do not create a checkout page just for completeness. Extra modes confuse staff and increase the number of mistaken scans.
In staff training, it helps to separate the actions by meaning. Lookup - view. Complete - finish the order. Check-in - mark entry. Check-out - mark exit. If those meanings still sound too similar in your process, then the process is not yet ready for automated actions and you should start with lookup.
Emails After a Status Change
A status change can affect email notifications. In WooCommerce, the Completed status is often treated as the final fulfillment state. If the customer receives an "order completed" email immediately after scanning at an event entrance, that may be fine. If they receive the same email before the actual order handoff, it creates confusion. That is why your test flow should always include not just the staff screen but the customer's inbox as well.
Check admin notifications separately too. Some stores use statuses as signals for the warehouse, shipping, or an operator. If scanning changes the status, internal emails or tasks may fire again. It is better to discover that on a test order than during a live event or pickup shift.
How to Write an Internal Procedure
A good procedure for Order Barcodes fits on one page. It does not need to explain the WooCommerce architecture. The staff member needs concrete answers: which page to open, which device to scan with, what result counts as success, what to do if there is an error, when to call an administrator, and which actions are forbidden. For example, forbid staff from scanning the same code again "just in case" if repeating the action could change the order state.
- Create a separate short URL or internal browser bookmark for each mode.
- Save the site login on the staff device in advance and make sure the session does not expire mid-shift.
- Document the fallback path: manual order lookup, checking the customer's email, marking the paper list, contacting an administrator.
- Do not let staff change plugin settings during an event or a pickup shift.
- After the first shift, collect real errors: poor screen brightness, no network, wrong status, the scanner does not send Enter, the email has no image.
Mini Audit Before Public Launch
Before using the plugin with real customers, run a small audit. Take three test orders: a new order, an old order, and an order in a non-standard state. Check where the code appears for each one, how it scans, what result the staff member sees, and what changes in the admin panel. Then repeat the process on the device that will actually be used at the workstation. If even one step requires improvisation, update the procedure or simplify the mode.
Readiness criterion: a staff member should be able to process a test order without access to the plugin documentation, without administrator help, and without guessing which button to click after scanning.
Common Problems and Troubleshooting
Most issues with WooCommerce Order Barcodes fall into five groups: the code did not appear, the code cannot be read, the scanning page does not accept input, the action does not run because of permissions or security, or the result changes the order in an unexpected way. Troubleshooting is best done from the top down, without jumping straight into code in functions.php.
The Code Did Not Appear on the Order
Symptom: a new order has no visible code even though the plugin is active. Possible cause: the order was created before activation, the order page was never opened in the admin panel, there is a template conflict, or the extension is not working correctly in the current environment. What to check: create a new order after activation, open it in the admin panel, then check the email and customer account. For an older order, open its order page in the admin panel, because the documentation describes code generation when an existing order is loaded.
How to fix it: if a new order gets a code but an old one does not, the problem is not the base installation. You simply need to decide which older orders actually need preparation. If the new order also has no code, temporarily disable extensions that modify orders, emails, and account templates, and repeat the test on staging.
The Code Does Not Show in Gmail or the Customer Email
Symptom: the code exists on the order but is not visible in the email. Possible cause: the email client blocks external images, the email passes through a proxy, the email template has been modified, or an optimization service changes the image. The documentation specifically mentions Gmail settings for external images and issues related to proxy-loaded images.
What to check: open the email in several clients, enable image display, and compare the default WooCommerce template to your custom template. How to fix it: first return to the default display path and high code contrast. If the problem is related to hosting or a proxy, contact hosting support with a specific image URL and the exact request time.
The Code Is Missing in Print Preview
Symptom: the code is visible on screen but disappears when printing or in preview. Possible cause: the print tool is not outputting background graphics, or document styles are hiding the image. What to check: enable background graphics printing, try another browser, and save to PDF. How to fix it: do not start by editing templates. First confirm that the problem is in the print settings. If the code is needed on permanent documents, it is better to use a dedicated PDF or packing slip process and test that separately.
The Code Looks Broken or Distorted
Symptom: the barcode lines have gaps, the QR code looks damaged, or the scanner reads it unreliably. Possible cause: image optimization, server-side image processing settings, or Imagick. The documentation explicitly states that Imagick optimization may distort codes. What to check: temporarily disable the image optimizer for testing, compare the code before and after, and test another code type and the default colors.
How to fix it: exclude code images from optimization or disable the conflicting server-side processing after checking with your host. If the code has already been sent to customers and scans poorly, do not change settings blindly. Create a new test order after the change and test only the new codes.
Permission Error During Scanning
Symptom: the staff member sees an insufficient permissions or permission denied message. Possible cause: the user does not have manage_woocommerce, or the security check fails because of the environment. The documentation includes filters for changing nonce and capability checks, but that should not be the first step for a typical store.
What to check: log in as an administrator and repeat the scan. Then check the staff role. If the administrator can scan successfully but the staff member cannot, the problem is almost certainly permissions. How to fix it: configure the role deliberately or ask a developer to review the capability setup. Do not disable the nonce and do not give access to all users without evaluating the risk. If you need a snippet, it should live in a child theme or mini-plugin and be tested on staging.
The Scanner Enters the Code but No Action Happens
Symptom: the string appears in the field, but the order is not found or the button does not trigger anything. Possible cause: the scanner is not sending Enter, the app is not returning input to the browser, the code was not entered fully, or the form lost focus. What to check: paste the full string manually and click the button. If it works manually, the problem is in the device or app. How to fix it: configure the scanner to send Enter, use a keyboard-style app on the phone, or train staff to press the button after input.
Safe Improvements and Customization Limits
The plugin offers several extension points, but not every request should be solved with code. The safest improvements are to separate pages by action, limit access by role, avoid changing the code type without testing, exclude the code from aggressive image optimization, and output the code in the necessary template through the documented call. Riskier ideas include disabling the nonce, granting scanning rights to all users, changing the data encoded in the code, and automatically completing orders without reviewing the workflow.
If you need to change the string encoded into the barcode, or adjust size, color, and padding at the code level, start by looking for current documentation and the changelog. A third-party changelog aggregator mentions filters for the code string and image parameters, but this article does not build instructions on an unofficial fragment without full context. It is better to assign that kind of customization to a developer who can verify the current plugin version and test the result on a copy of the site.
Small Improvements Without Code
- Create separate pages for lookup, check-in, and complete so staff do not choose the action manually during a live customer flow.
- Add the internal page to a private admin menu or an internal instruction, but do not place it in public navigation.
- Use high-contrast colors and do not shrink the code in emails and documents until the print test is complete.
- Test the scanning page on the same device and in the same browser your staff will actually use.
- Prepare a manual fallback: search for the order by email, order number, or customer name if scanning is temporarily unavailable.
When You Need a Developer
You need a developer if you want to output the code in a non-standard part of the theme, change scanning permissions, tie scanning to a custom role, modify the data encoded in the code, create a separate document, or integrate scanning into an external workflow. These tasks affect both security and order state. A bad implementation can allow the wrong users to see orders or change statuses.
WooCommerce Order Barcodes FAQ
Does the plugin create a code for every product in the order?
No. According to the documentation, Order Barcodes creates one code per order. If you need to encode every order line, product SKU, EAN/UPC, or a line-by-line picking workflow, look for a solution with product barcodes and order picking.
Can I use a QR Code instead of a standard barcode?
Yes. The available types include QR Code and Data Matrix, as well as the linear formats Code 39, Code 93, and Code 128. The right choice depends on the scanning device. For phones, QR Code or Data Matrix is usually more convenient. For USB scanners, a linear code is often the better fit.
Why did changing the code type not affect older orders?
That is expected. The documentation says that changing the settings affects future codes, while previously generated ones stay the same. Test the new type on a new test order.
Do I need to give staff administrator rights?
Not necessarily, and usually not. The form requires the manage_woocommerce capability, but the exact role needs to be planned separately. If the standard roles do not fit, it is better to have a developer configure the capability carefully than to give full access to the site.
Can I scan with a phone?
Yes, but the workflow depends on the app. Some apps only display the result, while fast operation requires input into the form field and ideally automatic Enter. That is why you should test the exact phone and app before launch.
Why is the code visible on screen but not printing?
A common reason is that background graphics printing is disabled, or the print preview tool handles it differently. First check the print settings and another browser, then start troubleshooting the template or PDF plugin.
Is the plugin suitable for a large warehouse?
Only if the warehouse mainly needs to open the order by code. For line-by-line verification, partial picking, storage bins, product barcodes, and picking logs, it is better to look at dedicated barcode solutions.
Should I immediately change permissions or disable the security check with a snippet?
No. First check the user role, the scanning page, and the device. A nonce or permissions snippet should be the last step after troubleshooting, and only on a copy of the site, because it affects the security of order access.
When WooCommerce Order Barcodes Is a Good Choice
This plugin is worth using if you need a clear order-level code that appears in emails and order details, and your staff will scan it on an internal page. It works well for local pickup, simple check-in, bookings, and fast internal verification workflows. Its strength is the short chain of "order - code - form - action," not complex warehouse automation.
Before launch, verify the product requirements, compatibility with your current extensions, the code type, staff permissions, emails, printing, and the real scanning device. If the process works on test orders without manual workarounds, you can move it into production. If testing already shows that you need a separate code for each ticket, product barcodes, a scan log, or line-by-line picking, it is better to compare alternatives right away instead of stretching a simple tool into the wrong use case.
When the core logic fits your store, move on to the installation file and test the plugin on a site copy: download the installation file. After installation, do not skip the test order, because that is what will show whether the plugin behavior matches your real pickup, entry, or order verification workflow.


