Skip to content
GPLWP Guides

How to customize printable documents in WooCommerce

WooCommerce Time About 30–60 minutes 7 steps Updated 2 Nov 2026

WOOCOMMERCE
The short answer

WooCommerce does not provide a full built-in system for branded invoices, packing slips and labels. Use a document plugin, then customise its templates or hooks; for bulk fulfilment, a visual builder is faster and safer than editing PHP and CSS by hand.

The route
  1. 01Decide which documents you need
  2. 02Choose your document method
  3. 03Set the basic document details
  4. 04Customise the layout manually
  5. 05Build and preview each document
  6. 06Test printing and bulk fulfilment
  7. 07Use a visual builder for speed

What you need

  • A WooCommerce store with products and at least one test order
  • Administrator access to WordPress
  • A child theme or custom-code plugin for manual changes
  • Your logo, business details and required invoice information

Decide which documents you need

List the documents your team actually prints: invoices, packing slips, pick lists, delivery notes, address labels or credit notes. Decide which ones customers can download, which ones staff print, and whether documents should be attached to order emails.

Invoices may be legal documents, so confirm the required business details, tax information, numbering and date format with your accountant or local tax authority. WooCommerce’s documentation specifically warns that invoice layouts should follow local tax requirements.

Choose your document method

WooCommerce itself does not give you a complete branded document system for these outputs. Use a document or PDF invoice extension that supports the document types you need, or customise an extension already installed on the site.

Check that it supports PDF generation, customer downloads, email attachments, order-page printing and bulk actions if your fulfilment team needs them. Some extensions provide separate settings for invoices, packing slips, delivery notes and labels.

Set the basic document details

Open the extension’s document settings and enter your store name, address, contact details, logo, tax information, invoice numbering and date format. Set the order statuses that should generate documents and decide whether PDFs are attached to customer or admin emails.

Do not assume that changing the current company details will rewrite old invoices. Some extensions warn that previously generated documents may be affected by later setting changes, so keep records if your invoices must remain historically accurate.

Customise the layout manually

If you are comfortable with PHP and CSS, use the extension’s template override system rather than editing files inside wp-content/plugins. Copy the relevant template into your child theme or a supported override folder, then change the HTML, table structure and styles there. The exact folder is extension-specific; for example, WooCommerce’s PDF Invoice documentation uses wp-content/themes/YOUR_THEME/pdf_templates/template.php.

Where the extension provides hooks, add custom content through a child theme or custom plugin instead of changing templates. WooCommerce Print Invoices and Packing Lists documents hooks such as wc_pip_styles, wc_pip_before_header and wc_pip_after_customer_addresses. Never copy hook names from one document plugin into another.

The drawback is maintenance. Plugin updates can change templates, PDF libraries often support only part of normal CSS, and a small PHP error can stop document generation. Table-based layouts are commonly required by PDF renderers such as DOMPDF.

Build and preview each document

Add the fields your staff or customers need, such as order number, invoice number, billing and shipping addresses, SKU, variation data, quantities, prices, tax, shipping, payment method, customer notes and return instructions. Keep packing slips focused on picking and packing rather than showing unnecessary payment details.

Generate a document from a real test order and preview it before printing. Check long product names, multiple pages, refunds, tax lines, missing addresses, special characters, product variations and orders with many items. A saved layout is not proof that the PDF will print correctly.

Test printing and bulk fulfilment

Print or save PDFs from the order screen and test the paper size, margins, logo quality, page breaks, label alignment and duplex settings. Confirm that the right document is attached to the right email and that customers can access downloads from the thank-you page or My Account when enabled.

For several orders, filter the order list by status or by whether documents have already been printed, then use the extension’s bulk action. Print a small batch first. A common Friday-afternoon failure is duplicate packing slips caused by re-running a bulk action without checking which orders were already processed. WooCommerce’s documentation recommends filtering orders before bulk printing where the extension supports it.

Use a visual builder for speed

If you need several document types, branded layouts, custom fields and bulk printing without maintaining PHP templates, use Flexible Printing. Its drag-and-drop editor is designed for invoices, packing slips and labels, with dynamic order data, document previews, branding controls and bulk printing.

This is the fast route for fulfilment teams: choose a document, arrange the fields, add your logo and colours, preview it with a real order, then print a batch. Keep the manual route when your documents are simple, your current extension already works, or you have a developer who needs precise template and hook control.

The fast route

Let Flexible Printing do it

Drag-and-drop branded invoices, packing slips, and labels with bulk printing; ideal for fulfillment teams needing flexible layouts.

Get Flexible Printing

Sources

  1. woocommerce.com /document/woocommerce-pdf-invoice-setup-and-customization/?u…
  2. woocommerce.com /document/wt-pdf-invoices-suite/?utm_source=openai
  3. woocommerce.com /document/woocommerce-print-invoices-packing-lists-developer…
  4. woocommerce.com /document/woocommerce-print-invoice-packing-list/?utm_source…

Questions

Can WooCommerce customise invoices without a plugin?
Not as a complete built-in system for branded invoices, packing slips and labels. WooCommerce provides order data and email templates, but document generation, PDF downloads, packing slips and bulk printing normally come from an extension. If one is already installed, you can customise its templates or hooks; otherwise install a document extension before trying to create these outputs.
Should I edit the plugin template directly?
No. Direct edits inside the plugin folder can be lost during an update. Use the extension’s documented template override folder, a child theme or a custom plugin. The exact path differs between extensions, so confirm it in that extension’s documentation rather than assuming that a template path from another PDF invoice plugin will work.
Why does my PDF layout look different from the preview?
PDF generators support a smaller set of CSS than a normal web page, and many use table-based layouts. Unsupported fonts, flexbox rules, external images, long text and page breaks can change the result. Use supported fonts, simple tables and explicit spacing, then test a real order with long names and several line items before production printing.
Can I add custom order fields to a packing slip?
Usually, but the method depends on the document extension and how the field is stored. A visual builder may expose the field as dynamic order data; a code-based extension may require a template variable, filter or action. Confirm the field’s available data source and test orders where the field is empty, short and unusually long.
Is a visual document builder better than manual code?
It is faster when you need multiple document types, branded layouts, previews and bulk printing, especially if nobody on the team maintains PHP and PDF CSS. Manual templates are still fine for a simple invoice or a developer-controlled workflow. Choose the visual route when reducing template maintenance matters more than having direct code-level control.