WebToffee Logo
WebToffee Logo
  • Home
  • Plugins
  • Shopify apps
  • Bundles
  • Resources
    • Blog

      Explore expert guides, how-tos & insights to grow your eCommerce business.

    • Info Library

      Explore short reads on WordPress, eCommerce & privacy topics.

    • Infographics

      Easy-to-share visuals that explain eCommerce and privacy concepts.

    • Customer Stories

      Read inspiring stories of our customers and their successful business.

    • Customer Testimonials

      See what customers say about using WebToffee tools and plugins.

  • Help
    • Documentation

      Get started with step-by-step guides for our WordPress & Shopify solutions.

    • Frequently Asked Questions

      Find quick answers to commonly asked questions about our solutions.

    • Support

      Reach out for plugin setup, technical issues, licenses, or billing help.

    • Free Plugin Documentation

      Setup guides for all our free WordPress plugins to help you get started.

Login
cart 0

Attaching PDF Invoices with WooCommerce Order Emails

Last updated on July 11, 2025

This article details adding a PDF invoice with WooCommerce customer order emails and configuring the print button in order emails. Attaching a PDF invoice with the order email is an exciting feature. It allows both the customer and the seller to have a legal record of the sale and the amount owed. The WooCommerce PDF Invoices, Packing Slips, Delivery Notes, and Shipping Labels plugin allows one to attach a PDF invoice depending upon the pre-chosen order status. Selecting multiple order statuses triggers more than one email with a PDF attachment.

Pre-requisite

  1. Invoice enabled from the General Settings tab.
  2. Have the company and address information filled out before customizing the invoice.

Steps to attach automated emails with customer order emails

  1. Navigate to Invoice/Packing > Invoice > General from the WordPress dashboard.
  1. In the General tab, scroll down to the Automate invoice creation option.
  2. Select order statuses for automated invoice creation.
Automate invoice creation option
Automate invoice creation option
  1. Move to the Attach invoice PDF to selected WooCommerce emails option.
  2. Select email classes to attach the invoice PDF.
Attach invoice PDF to WooCommerce emails
Attach invoice PDF to WooCommerce emails
  1. Ensure that the selected email classes match the order statuses selected under the Automate invoice creation option.
Ensuring order statuses and email types match
Ensuring order statuses and email types match
  1. Click on Update Settings at the end of the page to update the new changes.

For example, if a store owner selects ‘Completed Order’ as the email class for PDF invoice attachment, and this email class matches the order status ‘Completed’, then when an order reaches the Completed status, an email with the PDF invoice attachment will be sent to the customer. The image below shows a sample email with the attached PDF invoice.

Sample WooCommerce customer order email with an invoice attached
Sample WooCommerce customer order email with an invoice attached

Configuring print button access for users

The default settings permit only logged-in users to print invoices from their order email. Store owners can configure the print button access, by following the below steps:

  1. Navigate to Invoice/Packing > General Settings > General from the WordPress dashboard.
  2. Under the Advanced options section, head to the Print button access for option.
  3. Select the preferred user type,
    • Logged in users – Allows only logged-in users to print invoice using the print button in order emails.
    • All users – Allows all users, including those who are not logged in, to print the invoice using the print button.
Navigating to Print button access for option
Navigating to the Print button access for option
Choosing All users from the Print button access for option
Choosing All users from the Print button access for option
  1. Click on Update Settings to save changes.

Use Case

  1. Store owner allows only ‘Logged-in users’ to access the print button in order emails.. A guest user makes a purchase. The user will receive an order email with a Print Invoice button in it. When the user tries to print the invoice, they will be redirected to the ‘My Account’ page, where they can register as a new user. Once they have completed the registration, users can log in to their account and print the invoice from the order email.
Print button access for logged in users alone
Print button access for logged in users alone
  1. The store owner grants the print button access to ‘All users’. A guest user makes a purchase. The user will receive an order email with a ‘Print Invoice’ button in it. The user can print the invoice document using the ‘Print Invoice’ button.
Print button access to all users
Print button access to all users
📚

Discover More:

  • Adding UBL Invoices to Order Emails
  • Auto Generate Invoices for Past Orders
  • Adding a Custom Logo to Invoices

Tagged pdf invoice, woocommerce invoice

Avatar

Written by

Hema

Writes for WebToffee. Other than writing, you can find me spending free time playing football with my kids.

  1. Frank

    April 3, 2025

    how to add another email address in cc?

    Reply
    • Sanjai Valsan

      April 7, 2025

      Hi Frank,
      Thank you for reaching out.
      Our plugin specifically focuses on attaching a PDF copy of the invoice to the WooCommerce order emails—it doesn’t handle email recipient settings directly.
      However, WooCommerce itself does allow you to configure email recipients for certain order statuses. You can check this by going to WooCommerce > Settings > Emails, then selecting the email type (like New Order or Cancelled Order) to edit its settings. From there, you can add additional email addresses in the Recipient(s) field using commas to separate multiple addresses.

      Reply
  2. Abhishu

    June 17, 2024

    Hello I have tried all these settings but pdf are not attached in emails

    Reply
    • Sanjai Valsan

      June 18, 2024

      Hi Abhishu,
      Thank you for reaching out!
      It looks like you need some technical assistance to resolve this issue. Kindly contact our customer support team for further assistance.

      Reply
  3. Bea

    June 10, 2024

    Hello,

    Does this also work with WPML? I have already purchased the webtoffee invoices plugin. This seems a perfect add-on.
    I have installed it, but cannot find how to translate the e-mail texts.

    Reply
    • Sanjai Valsan

      June 11, 2024

      Hi Bea,
      Thank you for reaching out!
      Yes, the WebToffee’s WooCommerce PDF Invoices, Packing Slips, and Credit Notes plugin is compatible with WPML. For detailed instructions on how to translate strings using the WPML plugin, please refer to this article.

      Reply
  4. Gary

    August 30, 2023

    How can i change “Print Invoice” to “Print Quotation” in my account > order page?

    Reply
    • Hema

      September 7, 2023

      Hello Gary

      Thanks for reaching out. Presently the plugin doesn’t offer any options to do so. However, you can use the code snippet mentioned in this article to achieve it.

      Reply
  5. Bruno

    April 30, 2023

    Is there any possibility to send the invoice manually? For example, connected to “Customer invoice / Order details”.

    Reply
    • Hema

      May 9, 2023

      Hello Bruno,

      Thanks for reaching out. Yes, Invoices can be sent manually from the orders edit page. From the orders action section, choose the action as Email invoice / order details to customer and click on Update.

      Reply
  6. 张林

    January 3, 2023

    I enabled the feature of “Attach invoice PDF for selected order statuses” followed the instructions, but I didn’t found PDF invoice in the order complete mail except a link of “print invoice”.
    Are there any prerequisites or limitations for this feature?

    I use mailpoet (https://www.mailpoet.com/) to delivery emails.

    Reply
    • Mike

      January 4, 2023

      Hi there,

      According to our understanding, the MailPoet plugin doesn’t allow attaching documents along with their emails. It’s already stated on their plugin page.

      If you switch the “Switch all site’s email with” option located on the Advanced tab of the MailPoet plugin settings to “The default WordPress sending method”, the attachments will work fine.

      Reply

Got any query? Please leave a comment or reach out to our support

Cancel reply

Your email address will not be published. Required fields are marked *

Product icon

WooCommerce PDF Invoices, Packing Slips, Delivery Notes and Shipping Labels

Get free plugin

On this page

  • Pre-requisite
  • Steps to attach automated emails with customer order emails
  • Configuring print button access for users
  • Use Case

Get started with your WebToffee plugin!

Your plugin will be downloaded in a few seconds...

All you need to do is add the plugin to your WordPress website.

To install and activate the plugin, view our installation guide.

download now
Webtoffee
Facebook
Twitter
Youtube
Linkedin
WordPress

We develop awesome WordPress and WooCommerce plugins and Shopify apps to help build successful online businesses.

© 2025 WebToffee. All rights reserved.

Our plugins

  • GDPR Cookie Consent
  • PDF Invoices & Packings Slips
  • Product Import Export Plugin
  • User & Customer Import Export
  • Import Export Suite
  • Sequential Order Numbers
  • Smart Coupons for WooCommerce
  • URL Coupons for WooCommerce
  • PayPal Express Checkout
  • Stripe Payment Gateway
  • Subscriptions for Woocommerce
  • WooCommerce Product Feed & Sync Manager
  • PrintNode for PDF Invoices
  • Order, coupon, subscriptions for WooCommerce
View more +

Get Started

  • Plugins
  • Testimonials
  • Customer Stories
  • Affiliates
  • We're hiring

Help & Support

  • Installation Guides
  • Documentation
  • Documentation (Basic)
  • Info Library
  • Infographics
  • FAQ
  • Support

Company

  • About Us
  • Terms & Conditions
  • Privacy Policy
  • Cookie Policy
  • Refund Policy
  • Support Policy

© 2025 WebToffee. All rights reserved.

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. However you may visit Cookie Settings to provide a controlled consent.
Cookie settingsReject allAccept all
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of the basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website, to store user preferences and provide you with content and advertisements that are relevant. Such cookies will be stored on your browser but only upon procuring consent.

You will also have the option to opt-out of these cookies should you want to. But opting out of some of these cookies may have an effect on your browsing experience as per the descriptions elucidated against the respective categories below.

Necessary
Always Enabled
The cookies defined under this category are absolutely essential for the website to function. Hence they are loaded by default irrespective if user consent.
CookieDescription
__cfruidCloudflare sets this cookie to identify trusted web traffic.
__stripe_midStripe sets this cookie cookie to process payments.
__stripe_sidStripe sets this cookie cookie to process payments.
cookielawinfo-checkbox-advertisementSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
cookielawinfo-checkbox-analyticsSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Analytics" category .
cookielawinfo-checkbox-necessarySet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Necessary" category .
cookielawinfo-checkbox-preferencesThis cookie is set by the GDPR Cookie Consent plugin to check if the user has given consent to use cookies under the "Preferences" category.
CookieLawInfoConsentRecords the default button state of the corresponding category & the status of CCPA. It works only in coordination with the primary cookie.
PHPSESSIDThis cookie is native to PHP applications. The cookie is used to store and identify a users' unique session ID for the purpose of managing user sessions on the website. The cookie is a session cookie and is deleted when all the browser windows are closed.
viewed_cookie_policyThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not a user has consented to the use of cookies. It does not store any personal data.
Analytics
Analytics cookies help us understand how our visitors interact with the website. It helps us understand the number of visitors, where the visitors are coming from, and the pages they navigate. The cookies collect this data and are reported anonymously.
CookieDescription
_gaThis cookie is installed by Google Analytics. The cookie is used to calculate visitor, session, campaign data and keep track of site usage for the site's analytics report. The cookies store information anonymously and assigns a randomly generated number to identify unique visitors.
_ga_BQH8MSKD4MThis cookie is installed by Google Analytics.
_gat_gtagIdentification code of website for tracking visits.
_gidThis cookie is installed by Google Analytics. The cookie is used to store information on how visitors use a website and helps in creating an analytics report of how the website is doing. The data collected including the number visitors, the source where they have come from, and the pages visited in an anonymous form.
_hjAbsoluteSessionInProgressHotjar sets this cookie to detect the first pageview session of a user. This is a True/False flag set by the cookie.
_hjFirstSeenHotjar sets this cookie to identify a new user’s first session. It stores a true/false value, indicating whether it was the first time Hotjar saw this user.
_hjidHotjar cookie. This cookie is set when the customer first lands on a page with the Hotjar script. It is used to persist the random user ID, unique to that site on the browser. This ensures that behavior in subsequent visits to the same site will be attributed to the same user ID.
_hjIncludedInPageviewSampleHotjar sets this cookie to know whether a user is included in the data sampling defined by the site's pageview limit.
_hjIncludedInSampleThis cookie is set to let Hotjar know whether that visitor is included in the sample which is used to generate heatmaps, funnels, recordings, etc.
_hjIncludedInSessionSampleHotjar sets this cookie to know whether a user is included in the data sampling defined by the site's daily session limit.
_hjSessionUser_1376571No description
_hjTLDTestTo determine the most generic cookie path that has to be used instead of the page hostname, Hotjar sets the _hjTLDTest cookie to store different URL substring alternatives until it fails.
CONSENTYouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
has_recent_activityThis cookie is used to signal to the code repository website if the user has browsed other website resources during the current session.
tk_aiGathers information for our own first-party analytics tool about how our services are used. A collection of internal metrics for user activity and is used to improve user experience.
tk_lrThis cookie is set by the JetPack plugin on sites using WooCommerce. This is a referral cookie used for analyzing referrer behavior for Jetpack.
tk_orThis cookie is set by the JetPack plugin on sites using WooCommerce. This is a referral cookie used for analyzing referrer behavior for Jetpack.
tk_qsGathers information for our own first-party analytics tool about how our services are used. A collection of internal metrics for user activity and is used to improve user experience.
tk_r3dThe cookie is installed by JetPack. Used for the internal metrics for user activities to improve user experience.
Advertisement
Advertisement cookies help us provide our visitors with relevant ads and marketing campaigns.
CookieDescription
_fbpThis cookie is set by Facebook to deliver advertisements when they are on Facebook or on a digital platform powered by Facebook advertising after visiting this website.
frThe cookie is set by Facebook to show relevant advertisements to the users and measure and improve the advertisements. The cookie also tracks the behavior of the user across the web on sites that have Facebook Pixel or Facebook social plugin.
VISITOR_INFO1_LIVEA cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSCYSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devicesYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-idYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
Preferences
Preference cookies are used to store user preferences to provide them with content that is customized accordingly. This includes the language of the website or the location of the visitor.
CookieDescription
_gh_sessThis cookie is used to preserve users' states across page requests.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
CookieDurationDescription
_hjSession_137657130 minutesNo description
_octo1 yearNo description available.
_zendesk_authenticatedpastNo description
_zendesk_sessionsessionNo description available.
_zendesk_shared_sessionsessionNo description available.
edd_wp_session12 hoursNo description available.
logged_in1 yearNo description available.
m2 yearsNo description available.