How to Create Delivery Note PDFs (Proof of Delivery) for WooCommerce

A delivery note travels with the goods and comes back signed: it lists what was delivered, without prices, and has a block where the recipient confirms the number of parcels, the date and their signature. For a shop with its own drivers, local deliveries or business customers it is the proof of delivery that settles every “it never arrived” discussion. With PDF Invoice for WooCommerce + Drag and Drop Template Builder (plugin slug pdf-for-woocommerce, by add-ons.org) you make it in ten minutes by copying the packing slip template, and the plugin generates one for every completed order, emails a copy to the customer and merges a whole delivery run into one PDF for the driver. The packing slip guide covers the warehouse documents and the shipping label guide the parcel label.

Video tutorial

1. Delivery Note vs. Packing Slip

Packing slipDelivery note
PurposeInside the parcel: what was packedHanded over with the goods: what was delivered, signed by the recipient
Who signsPacker / checker (internal)The recipient (proof of delivery)
Extra fieldsPacked by, checked byDelivery note number, delivery date, parcels, “received in good condition”, name, date, signature, a tick column per line
Generated atProcessingCompleted (the order is marked complete when it leaves for delivery)
Who gets itThe warehouseThe driver (bulk PDF), the customer (email + My Account), the signed copy goes back to the office

2. Build the Delivery Note Template

The built-in packing slip already has the logo, the addresses and the order table, so the fastest way is to copy it. The builder has no duplicate button, but Export and Import do the same job.

Step 1: Export the packing slip

Open PDF Templates → WooCommerce Packing Slip Template and click the Export icon in the toolbar (the arrow next to Templates). A JSON file with the whole layout is downloaded.

The packing slip template in the builder with the Export icon highlighted in the toolbar
Toolbar → Export: the layout is saved as a JSON file.

Step 2: Import it into a new template

Go to PDF Templates → New Template, click the Import icon, upload the JSON file and click Import template. Name the template Delivery Note.

The Import template dialog with the exported packing-template.json selected
Import → choose the exported file → Import template.
The imported packing slip layout in a new template named Delivery Note
The copy, renamed. From here on only the texts change.

Step 3: Title and delivery note number

Click the PACKING SLIP text and replace it with:

DELIVERY NOTE                                  ← 22 px bold
No: DN-8448 · Date: August 28, 2026
The title Text element selected with DELIVERY NOTE and the DN number merge tag in the Editor panel
The title block with the delivery note number derived from the order number.

Step 4: Delivery date

The driver writes the actual delivery date by hand, so replace the Payment method line with Delivery date: ______________. Keep the order number, shipping method, phone and email: the driver needs them on the doorstep.

The Payment method text replaced by a blank Delivery date line
A blank line for the delivery date.

Step 5: Signature block

Scroll to the footer. Replace the Packed by / Checked by line with the proof-of-delivery line:

Received in good condition   Parcels: ______   Name: __________________   Date: __________   Signature: ______________________
The footer Text element selected with the Received in good condition line, parcels, name, date and signature blanks
The signature block: parcels, name, date, signature.

And replace the last line with the terms, in 10 px:

Please count the parcels and check the goods before signing. Shortages or damage must be noted on this
delivery note and reported within 48 hours to [email protected]. Goods remain the property of
Yee Add-ons until paid in full.
The terms Text element selected with the 48-hour claim rule and the retention of title clause
The terms line.

Step 6: Tick column instead of prices

The order table shows SKU, product and quantity (the packing slip already switched images, descriptions and totals off). The price column cannot be removed in the table options, so turn it into an empty tick column for the recipient: open Settings PDF and set Custom CSS to:

/* Price column becomes an empty "delivered" tick column */
th.table-r, td.table-r { font-size: 0; color: #ffffff; width: 70px; }
The Settings PDF panel with the Custom CSS that blanks the price column
Settings PDF → Custom CSS. Delete the rule inherited from the packing slip and paste this one.

Click Save. Use the Preview button to check the result with the sample order.

The finished Delivery Note template: title with DN number, delivery date line, addresses, order table with tick column, notes and signature block
The finished template with the sample order.

3. Generate a Delivery Note for Every Completed Order

Go to WooCommerce → Settings → PDF → Add new PDF:

The PDF setting for the delivery note: label Delivery note, template Delivery Note, file name delivery-note-DN-8448, status Completed, attachments Completed order and Order details, My Account download for completed orders
The delivery note setting.
FieldValueWhy
Enable this PDFtickedNothing is generated while it is off.
LabelDelivery noteButton label in the admin and in My Account.
PDF TemplateDelivery NoteThe template from section 2.
PDF Namedelivery-note-DN-8448e.g. delivery-note-DN-1796.pdf
Enable when order statusCompletedMark the order complete when it leaves for delivery; the note is generated at that moment.
Attachment toCompleted order, Order detailsThe customer receives an unsigned copy with the “order complete” email; you can re-send it from the order screen.
Allow My Account invoice downloadOnly for specific order statuses → CompletedThe customer can download it again later.
The PDF settings list with the Delivery note row
The delivery note next to the other documents.

4. Print the Delivery Notes

One order

Open a completed order: the PDF box lists the Delivery note with Download, Preview and Regenerate. Print it, give it to the driver, and file the signed copy when it comes back.

The PDF box on the order screen with Invoice, Packing slip, Picking list, Shipping label, Warranty certificate, Return form and Delivery note entries
The PDF box of a completed order with the Delivery note entry.
The generated delivery note for order 1796: DELIVERY NOTE DN-1796, delivery date line, bill to and ship to Harbor Coffee Co. in Seattle, three items with an empty tick column, the customer note and the signature block
The generated delivery note for order #1796.

A whole delivery run

In WooCommerce → Orders filter on Completed, tick the orders on today’s run, choose Download PDF – Delivery note in the bulk actions and click Apply. One PDF with one delivery note per order is downloaded in list order; print it and the driver has the run sheet.

The Orders list filtered on Completed with the PDFs column showing the Delivery note links
Orders → Completed.
Three completed orders ticked and the bulk action Download PDF - Delivery note selected
Bulk actions → Download PDF – Delivery note.
Page 1 of the merged delivery notes PDF
The merged PDF: one delivery note per page, ready for the driver.

The customer’s copy

The unsigned copy is attached to the Your order is now complete email and listed in My Account → Orders and on the order page.

My Account Orders list with a Delivery note button next to the completed orders
My Account → Orders: the Delivery note button.
The My Account order page with the Delivery note download link
The order page lists the delivery note.

5. Tips

  • Signed copy: scan or photograph the signed note and attach it to the order as a note (Order notes accept text only; upload the file to the Media library and paste its link).
  • Partial deliveries: the recipient ticks the lines that arrived; for a back-order, duplicate the template as “Delivery note – part 2” and regenerate after editing the order.
  • Driver details: add a line Driver: __________ Vehicle: __________ under the delivery date, or print the driver name from an order meta field with .
  • Scannable number: add a Barcode element with DN-8448 so the signed copies can be scanned back into the office.
  • Pick-up orders: use conditional logic in the setting to generate the note only for a given shipping method, or create a second setting for a counter receipt.
  • Regenerate: after editing the template, click Regenerate on an order; the bulk download always renders fresh.

6. Frequently Asked Questions (FAQ)

Can the delivery date be filled automatically?

Merge tags print the order date and the date the PDF is generated; the actual handover date is written by hand, which is also what the signature refers to.

Why generate it at Completed and not at Processing?

Processing means paid and still in the warehouse (packing slip, picking list, label). Completed is the moment the goods leave; use a custom status such as “Out for delivery” if you want the note earlier and tick that status instead.

Does the customer see prices?

No. The table shows SKU, product and quantity; the invoice carries the prices.

Can the recipient sign on a tablet?

The PDF is static. Print it, or use the Text input and Signature elements under Forms to add fillable fields and collect the signature in a PDF reader.

Is the bulk PDF sorted?

It follows the order of the Orders list; sort the list by date or use the search before ticking the orders.