Skip to content

Developer reference

Customise customer email templates safely

Override WooCommerce-style PressFlow emails while preserving private access and current event data.

PressFlow 1.25.3 · 2 min read

Guide source reviewed for PressFlow 1.25.1.

Start with WooCommerce → Settings → Emails for subjects, headings, enablement and additional content. Use a template override only when the shop needs a deeper layout change.

Email IDs

Print-job IDs are pfw_customer_action, pfw_customer_production, pfw_customer_date, pfw_customer_dispatch and pfw_customer_message. Quote IDs are pfw_quote_received and pfw_quote_offer.

Print-job subject/heading placeholders include {site_title}, {order_number} and {job_id}. Quote templates use {site_title} and the applicable {quote_number}. Do not assume a job-only placeholder works in a quote email.

Override paths

Copy the relevant current plugin template into your child theme, retaining its relative path under woocommerce:

your-child-theme/woocommerce/emails/customer-print-job.php
your-child-theme/woocommerce/emails/plain/customer-print-job.php
your-child-theme/woocommerce/emails/customer-quote.php
your-child-theme/woocommerce/emails/plain/customer-quote.php

These templates are loaded with wc_get_template() and the plugin template directory as the fallback. This override mechanism applies to these emails; it is not a generic override loader for the directly included configurator template.

Available template context

Job templates receive $email, $order, $item, $event, $email_heading, $additional_content, $sent_to_admin and $plain_text. Quote templates receive $email, $quote, $type and the normal heading/content/plain flags. Copy the exact current template rather than constructing an email from unrestricted item metadata.

The HTML job template uses PFW_Customer_Email::lines($order, $item, $event) for a small allowlisted public payload, and the guarded workspace URL. Preserve this distinction: internal flags, staff notes, artwork bytes, activation records and arbitrary snapshot fields should not be exposed in customer emails.

Keep woocommerce_email_header / woocommerce_email_footer where appropriate, escape text and URLs, retain current-proof/workspace access links and test both HTML and plain output. Private guest links are deliberate access credentials; do not add them to unrelated recipients or public tracking URLs.

Queue behavior

Notifications follow committed changes and can coalesce/supersede older events. Demo orders are suppressed. Disabled messages are not retry failures. The classes keep their per-job template content even when WooCommerce's global email block editor is enabled; do not assume a new global block email design replaces this payload automatically.

After customising, test each event type against an account job and a guest job, current/changed proof, date, delivery/collection, message and revised quote. Verify retries do not issue duplicate decisions/offers. Keep mail-provider credentials outside templates.

Related: Printer email guide, Data/security, Testing.

Example files

Reference examples for adapting to your shop. PHP examples are not plugin installers; review the guide and replace sample IDs before using them.

Need a hand?

Contact the PressFlow team with details of what you are trying to do.