Email Templates

Availability: Free + Pro. Free ships a template for every Free email (claims, listings, reviews and reminders). Pro adds templates for credits, needs and responses, leads, saved-search alerts, the digest and moderator reassignment. The full lists are at the end of this section.

One Free template, Listing Verify Email, is configurable but cannot currently send: its only trigger is the guest-submission email-verification path, which has been switched off since guest submission was removed. It is listed in the Email Templates screen and can be previewed and test-sent, but no listing on any install reaches the state that fires it. So every other Free template can reach a customer, and this one cannot.

Every customer-facing email - listing approved, review received, helpful-vote milestone, draft reminder, claim accepted - is rendered from a themeable PHP template with a shared header/footer, a unified token palette, and a single notifications class that pipes data into the template. Themes override templates the WooCommerce way: copy the file into {theme}/wb-listora/emails/ and edit.

Email - listing-approved template rendered in a desktop mail client

What it is

Plugins that hardcode emails ship inconsistent designs across notifications. Listora's email system is a small design system in its own right:

  • Shared partials - templates/emails/parts/header.php and parts/footer.php are included by every template, so the wordmark, color palette, GDPR footer, and unsubscribe link all live in one place.
  • Tokenized palette - Notifications::get_palette() resolves the colors once per send (primary, success, warning, danger, neutral, text, text_muted, bg_alt, border, white). Templates read $colors['primary'], never hardcoded hex.
  • Variant resolver - each event picks a tone (success / warning / danger / neutral) via Notifications::resolve_variant(), applied to the header band and CTA button. Templates carry no conditional color logic.
  • Plain-text fallback - phpmailer_init AltBody filter generates a text version so clients that prefer plain text still get a readable message.
  • GDPR-friendly footer - marketing emails ($is_marketing = true) carry an $unsubscribe_url; transactional emails skip it.
  • Theme overrides - every template runs through wb_listora_locate_template(); drop a file at {theme}/wb-listora/emails/{name}.php and it wins over the plugin's copy.
  • WPML / Polylang ready - every string is wrapped in __() against the plugin text domain; make-pot extracts them.

The Free templates (in wb-listora/templates/emails/):

claim-approved, claim-rejected, claim-submitted, draft-reminder, listing-approved, listing-expired, listing-expiring-soon, listing-pending-admin, listing-rejected, listing-renewed, listing-reported, listing-submitted, listing-verify-email, review-helpful, review-received, review-reminder, review-reply.

Pro adds (in wb-listora-pro/templates/emails/):

credits-low, credits-purchase-refunded, credits-refunded, digest, lead-notification, listing-paused, listing-resumed, moderator-reassigned, need-approved, need-expired, need-match, need-pending-mod, need-rejected, need-response, need-updated, response-accepted, response-closed, response-rejected, saved-search-alert. See Pro Emails for what triggers each one.

How you use it

As a site owner - change the wording

  1. Go to Listora > Settings > Notifications.
  2. Click Edit template on the email you want to change.
  3. Edit the Subject and Message, using the placeholders listed under the fields.
  4. Click Preview to see it with sample details, and Send test email to send it to yourself.
  5. Click Save Changes.

See Notifications Settings for the full walkthrough. The logo, footer text and sender name are not settings. Change them in code with the wb_listora_email_logo_url, wb_listora_email_footer_text and wb_listora_email_from_name filters.

As a developer - theme override

Themes shipping a directory layout often want their own email skin:

  1. Copy the template you want to change from the plugin (e.g. wp-content/plugins/wb-listora/templates/emails/listing-approved.php) to your theme: wp-content/themes/{your-theme}/wb-listora/emails/listing-approved.php.
  2. Edit the copy. Variables passed in (documented at the top of every template):
  • $site_name, $site_url, $logo_url, $footer_text
  • Per-event: $listing_title, $listing_url, $author_name, $dashboard_url, …
  • $colors (palette array), $variant (success / warning / danger / neutral)
  • $is_marketing, $unsubscribe_url (GDPR fields)
  1. Save. The next outbound email of that type uses your override.

Filter hooks for non-template tweaks

  • wb_listora_email_subject (filter) - modify any subject. Event-scoped variant: wb_listora_email_subject_{event}.
  • wb_listora_email_content (filter) - modify the rendered HTML body. Event-scoped: wb_listora_email_content_{event}.
  • wb_listora_email_recipients (filter) - add CC/BCC; e.g. send admin a copy of every approval.
  • wb_listora_email_headers (filter) - modify wp_mail() headers (Reply-To, custom X-headers).
  • wb_listora_email_logo_url / wb_listora_email_footer_text (filter) - programmatic overrides for the header logo + footer text.

Settings & options

Setting Location Default Notes
Email on or off Settings > Notifications, the switch on each row On A switched-off email is not sent
Subject and message Settings > Notifications > Edit template Built-in text Leave blank to keep the built-in text
Preview Settings > Notifications > Preview - Uses your saved wording, sends nothing
Test send Settings > Notifications > Send a test email - Any email, any address
Logo, footer text, sender name Filters only Site name and no logo wb_listora_email_logo_url, wb_listora_email_footer_text, wb_listora_email_from_name

Template lookup order (Free + Pro share the same locator):

  1. {stylesheet}/wb-listora/emails/{name}.php
  2. {template}/wb-listora/emails/{name}.php (parent theme)
  3. Plugin default

Related