Online courses, workshops and training sold through WooCommerce end with a certificate of completion: the student’s name, the course, the completion date, a score, the instructor’s signature and a certificate ID that an employer can verify. With PDF Invoice for WooCommerce + Drag and Drop Template Builder (plugin slug pdf-for-woocommerce, by add-ons.org) the certificate is an A4 landscape PDF generated from the course order: the student and the course come from the order, the completion date, score and instructor from three order meta fields, and the certificate is issued the moment you mark the order Completed, attached to the “order complete” email and kept in My Account. This guide builds it from a blank template. The certificate of authenticity guide and the membership card guide are the sister tutorials.
Video tutorial
1. Enrolment vs. Completion
A course order has two moments. Payment moves the order to Processing: the student is enrolled and gets the receipt. Completion is when you (or your LMS) mark the order Completed: that is when the certificate is generated. Between the two you fill in the completion data as order meta fields: course_completed_on, course_score and course_instructor in this guide. An LMS plugin that writes to the order can fill them for you; otherwise use the Custom Fields box on the order screen.
| Block | Content | Merge tags |
|---|---|---|
| Title | Academy line, “CERTIFICATE OF COMPLETION”, “This is to certify that” | Yee Add-ons + static text |
| Student | Name (large), “has successfully completed the course”, course title, completed on, final score | PIERLUIGI CIPRIANI, Dynamic Field for Elementor Forms Pro, , …meta_key="course_score" |
| Signatures | Instructor and programme director, two columns | , Yee Add-ons |
| Verification | A QR code that opens the order in My Account | https://add-ons.org/my-account/view-order/8448/ inside the Qrcode element |
| Footer | Certificate ID, issuer, issue date, verification contact | CERT-8448, August 28, 2026, https://add-ons.org, [email protected] |
2. Build the Certificate Template
Builder note: a new element is inserted just above the element you drop it on. Create the footer first and drop every other block onto it in reading order.
Step 1: New template, A4 landscape
Go to PDF Templates → New Template and name it Course Certificate. Click Settings PDF, set Orientation to Landscape and add p { margin: 0 0 14px; } under Custom CSS so the lines breathe.


Step 2: Footer
Drag a Text/HTML element into the row, centre it and type in 10 px:
Certificate ID: CERT-8448 · Issued by Yee Add-ons on August 28, 2026 · Verify at https://add-ons.org or [email protected]

Step 3: Title
Drop a Text/HTML element onto the footer, centred:
Yee Add-ons · ACADEMY ← 12 px, letter-spacing 4 px
CERTIFICATE OF COMPLETION ← 34 px bold, colour #b08d3c
This is to certify that ← 14 px

Step 4: Student and course
Drop another Text/HTML element onto the footer, centred:
PIERLUIGI CIPRIANI ← 30 px bold
has successfully completed the course ← 14 px
Dynamic Field for Elementor Forms Pro ← 20 px bold
Completed on · Final score: ← 13 px
On the canvas the sample order prints “Order meta course_completed_on” because it has no such fields; a real course order fills them in.

Step 5: Signatures
Drop a Text/HTML element onto the footer and paste a two-column table in the editor’s Code view:
<table width="100%"><tr>
<td width="50%" align="center">______________________________<br><strong></strong><br>Course instructor</td>
<td width="50%" align="center">______________________________<br><strong>Programme director</strong><br>Yee Add-ons</td>
</tr></table>
Replace the blank lines with Image elements holding scanned signatures if you want the certificate ready to send without a wet signature.

Step 6: Verification QR code
Drop the Qrcode element onto the footer, set its Content to https://add-ons.org/my-account/view-order/8448/, the Width to 80 px and click the centre button under Text align. The code opens the order page in My Account, where the certificate can be downloaded again; an employer who scans it sees the course on a real order. Click Save.


3. Issue the Certificate on Completion
Go to WooCommerce → Settings → PDF → Add new PDF:

| Field | Value | Why |
|---|---|---|
| Enable this PDF | ticked | |
| Label | Course certificate | Button label in the admin and in My Account. |
| PDF Template | Course Certificate | The template from section 2. |
| PDF Name | certificate-CERT-8448 | e.g. certificate-CERT-1820.pdf |
| Enable when order status | Completed | Completed = course finished. Keep virtual course products from auto-completing: untick “virtual” or use a plugin that keeps paid orders in Processing. |
| Attachment to | Completed order, Order details | The certificate rides on the “order complete” email; re-send it any time from the order screen. |
| Allow My Account invoice download | Only for specific order statuses → Completed | Students can download it again for job applications. |

4. Workflow: From Enrolment to Certificate
- The student buys the course: the order is Processing, the receipt goes out, access is granted by your LMS or download.
- When the student finishes, open the order, add the Custom Fields
course_completed_on,course_scoreandcourse_instructor(Screen Options → Custom Fields if the box is hidden), click Update. - Change the status to Completed and update again: the certificate is generated and the “order complete” email delivers it.
The student finds the Course certificate button in My Account → Orders and on the order page.



In the admin, the order screen lists it in the PDF box with Download, Preview and Regenerate.

5. Tips
- LMS integration: if your course plugin can write order meta on completion (or you use a small snippet on its completion hook), set the three fields automatically and complete the order from the same hook: zero manual steps.
- Grades optional: delete the score part if your course has no exam; the tag prints nothing when the field is empty, but the “Final score:” label stays.
- Several courses in one order: the product tag prints the first item; sell one course per order, or create one certificate template per course and use conditional logic on a custom field.
- Design: add a logo with an Image element above the title and a background image (a border or seal) in Settings PDF; the gold colour #b08d3c matches most seals.
- Register: CERT-<order number> is unique and searchable in WooCommerce → Orders; nothing else to maintain.
- Regenerate: after editing the template or the meta fields, click Regenerate on the order; emails attach the stored file.
6. Frequently Asked Questions (FAQ)
Why does the certificate say “Order meta course_completed_on” in the builder?
The sample order has no such field. Preview it for a real course order, or change the sample order in the toolbar.
Can the completion date be filled automatically?
Yes, by any code or plugin that writes order meta; otherwise the Custom Fields box takes ten seconds per student.
Can students download the certificate before I complete the order?
No, and that is the point: the status change is the issuing step. Tick Processing as well only for certificates of attendance that need no completion.
Does the QR code need internet?
Scanning works offline; opening the order link needs a connection and the student’s login, or use CERT-8448 as content for a plain ID.
Can I print it on pre-printed certificate paper?
Yes: remove the title block and background, keep the text positions, and print on the stock; A4 landscape at 100 % scale.