Appearance
Email Automations
Six moments in the quote lifecycle trigger a notification. Where and how you configure them depends on your site:
- Voxel-powered sites configure everything — in-app notifications and email, together — in Voxel → Settings → App Events. See Voxel App Events below.
- Everywhere else, each notification has an editable subject and body under Quote Requests → Settings, and can be switched off individually. See The plugin's own email settings.
| Notification | Sent to | When |
|---|---|---|
| New Request | Admin, vendor (multi-vendor mode), and customer confirmation | A request is submitted |
| Quote Ready | Customer | Status changes to Quoted |
| Status Update | Customer + admin | Status changes to In Progress, Completed, or Cancelled |
| Quote Decision | Vendor + admin | The customer accepts or declines |
| Vendor Contact Details | Customer | The customer accepts — the only way a guest customer without an account receives the vendor's contact info |
On Voxel-powered sites: Voxel App Events
If your site runs Voxel, every notification above is registered as a Voxel App Event — configure it from Voxel → Settings → App Events, in the same place as every other Voxel notification on your site. Each event gives you:
- An in-app notification, shown in Voxel's own notification bell, for any recipient with a WordPress account.
- An email, with its own editable subject and message.
Both can be turned on or off independently, and both support Voxel's dynamic tags — type @quote( in the editor to see everything available:
| Tag | Value |
|---|---|
@quote(:entry_reference) | The request reference, e.g. QR-7K3M9P — use this anywhere a customer or vendor sees the request |
@quote(:entry_id) | The internal record number. Prefer the reference above for anything customer-facing |
@quote(:quote_amount) | The vendor's quoted amount |
@quote(:quote_note) | The vendor's note alongside the amount |
@quote(:quote_items) | The requested items as linked titles |
@quote(:quote_items_text) | The requested items as plain text — no links, for email designs that render every link as a button |
@quote(:form_details) | Every submitted form field as "Label: value" lines |
@quote(:vendor_name) / @quote(:vendor_email) | The vendor |
@quote(:customer_name) / @quote(:customer_email) | The customer |
@quote(:status) / @quote(:status_reason) | The new status and the vendor's cancellation reason |
@quote(:decision) | "accepted" or "rejected" |
@quote(:dashboard_link) | Link to the customer's dashboard |
@quote(:vendor_dashboard_link) | Link that drops the vendor straight into that request on their own dashboard |
@quote(:calendar_link) | Downloads the request as a calendar file — works for guest customers too |
@quote(:vendor_phone) / @quote(:vendor_whatsapp_link) | The vendor's number, and a WhatsApp link to it |
@quote(:accept_url) / @quote(:reject_url) | The one-click decision links |
Guests still get every email
Most quote requests come from visitors without an account, and Voxel's own event system only notifies real accounts. This plugin sends its own guest-safe version of each email alongside Voxel's, so nothing changes for customers without a login — they simply never get an in-app notification, since there's no account for one to belong to.
Nothing is lost if you'd customized the old templates
Switching a site to Voxel doesn't touch your previous settings — they stay in the database, just no longer used. The Quote Requests → Settings screen collapses them behind a "Show previous email settings (inactive)" toggle so you can copy over any wording you'd customized into Voxel's editor.
On other sites: the plugin's own email settings
Without Voxel, each notification has an editable subject and body under Quote Requests → Settings, and each can be switched off. Bodies support HTML (<strong>, links, etc.); subjects are plain text.
The Quote Ready email
The workhorse. It carries the amount, the note, the items, the customer's own request details, and one-click Accept / Decline buttons that work without an account. Two lines adapt to the recipient automatically:
- Customers with an account get "view and manage your quote requests online" linking to the dashboard page.
- Customers without one get "Register here using this same email address…" linking to your registration page.
Whichever doesn't apply is removed from the email — any template line whose variable resolves to nothing is dropped automatically.
Replying to this email reaches the vendor and admin directly ("Replies Go to the Vendor" setting), so customers can ask questions before deciding.
Template variables
| Variable | Value |
|---|---|
{quote_items} | The requested items as linked titles |
{quote_items_text} | The requested items as plain text, without links |
{form_details} | Every submitted form field as "Label: value" lines |
{quote_amount} | The vendor's quoted amount |
{quote_note} | The vendor's note alongside the amount |
{vendor_name} | Vendor name (or vendor profile title — see Multi-Vendor Mode) |
{vendor_email} | Vendor email |
{accept_button} / {reject_button} | Styled one-click decision buttons |
{accept_link} / {reject_link} | The same secure links as plain URLs |
{dashboard_link} / {register_link} | The account-aware links described above |
{vendor_dashboard_link} | Link that drops the vendor straight into that request on their own dashboard |
{calendar_link} | Downloads the request as a calendar file — works for guest customers too |
{vendor_phone} / {vendor_whatsapp_link} | The vendor's number, and a WhatsApp link to it |
{consents} | Privacy / Terms confirmations with links |
{status} / {status_reason} | New status and the vendor's cancellation reason (Status Update email) |
{decision} | "accepted" or "declined" (Quote Decision email) |
{entry_reference} | The request reference, e.g. QR-7K3M9P — use this anywhere a customer or vendor sees the request |
{entry_id} / {entry_link} | The internal record number, and a link to the right view for the recipient. Prefer {entry_reference} for anything customer-facing |
| form fields | Every form field by its key, e.g. {full_name}, {phone_number} |
The variables panel under each template shows exactly which are available there, including your own form fields.
Templates you'd customized are updated for you
The default templates used to identify a request by its record number (#{entry_id}). On update, saved templates using that pattern are switched to {entry_reference} automatically — including the Voxel App Event subjects. {entry_id} still resolves, so nothing breaks if you were using it deliberately as a record number.
Deliverability
The plugin sends through wp_mail(), so it works with any SMTP plugin (FluentSMTP, WP Mail SMTP, …) — strongly recommended so the quote emails reliably reach customers.

