Email & notifications
Every email Easy Invoice sends — invoice notification, quote notification, payment receipt, reminder — has its own template under Settings → Email.
Email types (free)
| Type | When it fires | Default subject |
|---|---|---|
| General settings | Sender name & address used as the From for all emails. | n/a |
| Invoice Available | When you click Send to Client. | Invoice {invoice_number} from {company_name} |
| Quote Available | When you click Send to Client on a quote. | Quote {quote_number} from {company_name} |
| Quote Accepted | When the client clicks "Accept" on the public quote. | Quote {quote_number} accepted |
| Quote Declined | When the client clicks "Decline". | Quote {quote_number} declined |
| Payment Received | After a payment is recorded as completed. | Payment received for {invoice_number} |
| Payment Reminder | Daily cron (easy_invoice_payment_reminder) for pending-bank / pending-cheque. | Payment reminder: {invoice_number} |
Pro adds extra templates — receipt PDF email, recurring invoice notice, partial payment receipt, etc. See All Pro features.
Editing a template
For each template you can set:
- Enable — turn the template on or off entirely.
- Recipient — defaults to the client; can override (e.g. send admin a copy).
- Subject — supports merge tags.
- Heading — H1 inside the body.
- Body — full HTML, supports merge tags.
Save, then Send a test from the General tab to your own address.
Merge tags
The most common merge tags (resolved in EmailManager::*placeholders — includes/Services/EmailManager.php:448–543):
Invoice context
| Tag | Replaced with |
|---|---|
{invoice_number} | Full invoice number, e.g. INV-0042. |
{invoice_date} | Invoice issue date. |
{due_date} | Due date. |
{invoice_total} | Currency-formatted total. |
{invoice_url} | Public link to the invoice. |
{invoice_status} | Payment status (paid / unpaid / pending). |
Quote context
| Tag | Replaced with |
|---|---|
{quote_number} | Quote number. |
{quote_date} | Issue date. |
{expiry_date} | Quote validity end. |
{quote_total} | Total. |
{quote_url} | Public link. |
{accept_url} / {decline_url} | One-click accept / decline links. |
Payment context
| Tag | Replaced with |
|---|---|
{payment_amount} | Currency-formatted amount. |
{payment_date} | Date the payment was recorded. |
{payment_method} | Gateway label. |
{transaction_id} | Reference. |
Client context
| Tag | Replaced with |
|---|---|
{client_name} | First + last (or display name). |
{client_first_name} | First name only. |
{client_email} | Email. |
{client_address} | Multi-line address. |
Site context
| Tag | Replaced with |
|---|---|
{company_name} | From Settings → Company. |
{company_address} | same. |
{company_email} | same. |
{site_url} | home_url(). |
Add custom merge tags via the
easy_invoice_settings_email_placeholdersfilter — see Hooks & filters.
Best practices
- Keep the subject short and personal:
{invoice_number} from {company_name}is enough. - Add a clear CTA in the heading: "Pay invoice {invoice_number}".
- In the body, always include
{invoice_url}so clients can pay immediately. - For Pro reminders, vary the tone: friendly first, firmer at +7 days, escalation at +14 days.
Deliverability
WordPress's wp_mail uses PHP's mail() by default — which most hosts hide behind throttles or spam filters. Use SMTP for anything past 10 emails / day.
Recommended:
- WP Mail SMTP plugin → connect to SendGrid, Postmark, Mailgun, Amazon SES, or Gmail.
- Add SPF, DKIM, and DMARC records to your domain.
- Test with mail-tester.com.
If emails don't arrive, see Troubleshooting → Email not arriving.
Pro: Email Enhancements
Pro adds: per-template reply-to email, brand-colour controls (header / button / accent), invoice PDF as attachment, partial payment receipt template, recurring invoice notice template, deposit invoice notice template, and the full payment-reminder cadence (before / on / after due).
Unlock email Pro →Cron-driven emails
| Hook | Frequency | Purpose |
|---|---|---|
easy_invoice_payment_reminder | daily | Free: pending-bank / pending-cheque reminder. |
easy_invoice_send_payment_reminders | daily | Pro: full cadence (before / on / after due). |
easy_invoice_quote_expiration_check | daily | Auto-expire stale quotes; sends optional notice. |
easy_invoice_recurring_cron | every 2 minutes | Generates new recurring invoices and sends notice. |
easy_invoice_pro_process_subscriptions | daily | Subscription invoice generation. |
If WP-Cron is broken, none of these run — see Troubleshooting → WP-Cron isn't running.
Where to go next
- 🧾 Invoices — sending invoices.
- 📝 Quotes / estimates — quote-related emails.
- 💳 Payments — receipt & reminder context.
- 💎 Pro features overview — Email Enhancements details.