CoreInto sends every email it needs, from the welcome message to the overdue notices and the staff notices, from a set of templates. This chapter covers how email leaves the server (the server's mail program or an SMTP server), the Mail tab of General Settings, the queue that sends mail after the page is done, Settings > Email Templates with every template CoreInto comes with, the Email Message Log, a client's email history, emails staff write to one client, and mass messages to every client matching a search.
How an email is sent
- Something happens: a client registers, an invoice is created, a ticket is answered.
- CoreInto takes the template for that event, fills in its merge fields, wraps it in your header, signature and footer, and writes the finished email to the email log with the status Waiting.
- The email is put on the job queue. The queue is worked as soon as the page that caused it has been sent to the browser (on PHP-FPM and LiteSpeed the visitor does not wait for the mail server), and again by the automation task
jobs. - If the mail server refuses or cannot be reached, the email stays in the queue and is tried again after 2, 8, 18, 32 and 50 minutes. After six attempts it is marked Failed, with the last error shown in the log.
Nothing waits on the mail server inside a page, so a slow or broken mail server never stops a client from ordering or paying.
The server's mail program or SMTP
General Settings, tab Mail, "Send email with" offers two ways:
| Choice | What it does |
|---|---|
| This server's mail program | Hands each email to the sendmail program of the web server. Nothing to set up; this is what most shared hosting accounts use. Delivery depends on the host's mail set-up and reputation. |
| An SMTP server | Connects to the mail server you name with a username and password. Use this for a mail service such as your own mail host or a transactional email provider. |
For SMTP fill in the host, port (587 by default), security (STARTTLS, TLS from the start, or none for a server on the same machine), username and password. The password is stored encrypted and is never shown again once saved.
Testing the settings
Settings > Email Templates has a card "Test the mail settings" at the top. It shows how email is sent now (the server's mail program, or SMTP with the host) and whether sending is turned off. Type an address and press Send Test: the test message is sent straight away, not through the queue, and the page shows what the mail server answered. "The mail server accepted the test email" means the server took it; check that it arrived and is not in spam. A refusal shows the server's error text so you can correct the settings. Test emails are written to the activity log, not to the email log.
The Mail tab (General Settings)
| Setting | What it does |
|---|---|
| Send email with | The server's mail program, or an SMTP server (see above). |
| SMTP host, SMTP port, SMTP security, SMTP username, SMTP password | The SMTP connection. The password is stored encrypted. |
| Sender name | The name emails come from. Empty means the company name. |
| Sender address | The address emails come from, and the address replies go to unless a template or a support department says otherwise. |
| Signature | Plain text added at the end of every client email, under the message. Staff notices do not carry it. |
| Header of every client email (HTML) | Shown above the message. Empty means your logo (Logo address on the General tab), or the company name when there is no logo. |
| Footer of every client email (HTML) | Shown under the message. Empty means the company name and a link to the client area. |
| Email style (CSS) | Replaces the built-in style of the emails. Leave empty to keep the built-in look. |
| Send a blind copy of every email to | One or more addresses that get a Bcc copy of every client email. Staff notices are not copied. |
| Department for the contact form | Listed for the contact form; messages from the contact form go to the address below, not to a department. |
| Contact form messages go to | The address that receives contact form messages. Empty means the company email address. |
| Show the contact form | Shows the Contact Us page and its link in the footer. |
| Do not send any email | For testing. Every email is written to the log with the status Not sent and the reason "Sending email is turned off in General Settings". Nothing leaves the server. |
Links inside emails (the client area, an invoice, a ticket) use the site address from the installation and the Address style setting on the General tab, so they work in both address styles.
Settings > Email Templates
The page lists every template, grouped by type: General, Users and sign-in, Products and services, Domains, Invoices and payments, Support, Affiliates and Staff notices. Each row shows the title staff see, the subject line, and badges: "changed" when you have edited a built-in text, "made by staff" for your own templates and "not sent" for a template that is turned off. The Turn Off and Turn On buttons on the right switch a template without opening it.
A client can turn off every type except "Users and sign-in" under Account Details in the client area (when the setting "Clients may choose which kinds of email they receive" is on), and staff can do the same on the client's Profile tab. Password, sign-in and email-address messages are always sent.
The editor
Open a template to edit it. The page has:
- Subject and Message (HTML). Your header, signature and footer are added around the message when it is sent, so write only the body. A warning at the top lists any merge field in the text that is not known for this email; it would come out empty.
- A list of merge fields on the right. Click one to insert it where the cursor is.
- "Sender, copies and format": a sender name and address for this template only (empty means the ones in General Settings), Copy to (Cc) and Blind copy to (Bcc) addresses separated by commas (merge fields such as
{{client_email}}are allowed), "Send as plain text only" (no HTML part is made) and "Do not send this email". - Send Me a Test Copy: queues the template, filled with example details (Sara Khan of Example Traders, invoice 2026-0042 and so on), to your own staff email address with "[Test]" in front of the subject. The result is in the email log.
- Reset to Default: shown on a built-in template you have changed. It throws your text away and brings back the text CoreInto comes with.
- Delete: only on templates made by staff. Built-in templates cannot be deleted, only turned off.
- Preview with example details: the saved version, filled with the same example values, shown in a frame under the form. Save first to see a change.
Built-in templates keep their title and type; you change the subject, the message and the sending options. Templates made by staff can also have their title changed. Saving needs the permission "edit email templates"; without it the page is read-only.
Merge fields
A merge field is written {{name}} and is replaced by the value when the email is made. Values are escaped, so text a client typed cannot break the email. Fields whose name ends in _html (such as {{invoice_items_html}}) carry ready-made HTML and are inserted as they are. Two blocks let text depend on a field:
{{#if suspend_reason}}Reason: {{suspend_reason}}{{else}}No reason was given.{{/if}}
{{#unless auto_renew}}Automatic renewal is off.{{/unless}}
{{#if}} shows its text when the field has a value (and is not 0); {{#unless}} shows it when the field is empty. Unknown fields become empty text. Templates run no code.
Every client email can use these fields: company_name, company_url, client_area_url, date, client_id, client_first_name, client_last_name, client_name (the company when there is one, else the person's name), client_company, client_email. Staff notices have company_name, company_url, client_area_url and date, plus the client fields when they are about a client. The tables below list the extra fields of each template.
Custom templates
New Template makes a template of your own. Choose the type (any except Staff notices), a title, a subject and the message. The template gets a name made from its title (such as custom_renewal_offer). A custom template is not sent by any event; staff send it by hand from a client's page (Send Email, "Use an email template") as long as it is not turned off. It has the common client fields.
Disabling a template
Tick "Do not send this email" in the editor, or press Turn Off in the list. The event still happens (the invoice is still created, the service is still suspended); only the email is skipped. Nothing is written to the email log for a skipped email.
Attachments
The editor has no attachment field. Attachments are added by CoreInto itself: with the Invoices setting "Attach PDF invoices to emails" on, the invoice PDF is attached to the new-invoice email, the reminder, the three overdue notices and the payment-received email (the files are kept for 90 days under storage/attachments/pdf). Quote emails carry a link to the quote, not a PDF. The email log entry lists the attachments of an email.
CC and BCC
Three things add copies:
- The template's own Cc and Bcc fields (see the editor).
- Contacts of the client who asked for copies of this type of email (Contacts tab of the client, "Copies of emails"). The billing contact always gets a copy of invoice emails. Contacts never get copies of "Users and sign-in" emails.
- The Mail tab's "Send a blind copy of every email to", for every client email.
Support ticket emails are sent from the department's address with the reply-to set to it, so a reply from the client lands in the department's mailbox.
Templates and languages
Each template has a default text and, when more than one interface language is installed (see Languages), one version per language. The template's page shows a tab for the default text and a tab for each language. Open a language's tab, write the subject and message, and save: that makes the version. Until a version exists the tab shows the default text to start from, and clients in that language receive the default text. Remove This Version takes a language version away. Turning a template off stops every version of it; the preview and Send Me a Test Copy follow the tab you are on.
The client's language (the Profile tab in the admin area, or Account Details in the client area) decides which version they receive. The merge fields themselves (dates, amounts) follow your date format and the client's currency.
Every template CoreInto comes with
Dates in the tables are examples of what the fields hold. All templates below, except the staff notices, also have the common client fields.
General
| Name | Title | Sent when | Extra fields |
|---|---|---|---|
client_signup | Welcome after sign-up | A client registers, orders as a new client, or staff add a client with "Send the welcome email" ticked. Staff can also send it by hand. | none |
order_confirmation | Order received | An order is placed in the store or by staff. | order_number, order_date, order_items_html, order_total, invoice_number, payment_method |
quote_delivery | Quote sent to client | Staff deliver a quote. | quote_number, quote_subject, quote_items_html, quote_total, quote_valid_until, quote_url |
card_expiring | Saved card about to expire | The daily task card-expiry-notices finds a kept card near its expiry. Staff can also send it by hand. | card_type, card_last4, card_expiry |
Users and sign-in
These go to one person (a user), not to the account, and cannot be turned off by the client.
| Name | Title | Sent when | Extra fields |
|---|---|---|---|
email_verify | Confirm email address | A user registers or changes the address they sign in with, when "Ask new users to confirm their email address" is on; also from "Send it again" in the client area. The link works for 48 hours. | user_first_name, user_email, verify_url, verify_hours |
password_reset | Password reset link | Forgotten-password form (link valid for 60 minutes), staff "Email a Password Reset Link" (24 hours), or a new client added by staff without a password (7 days). | user_first_name, user_email, reset_url, reset_minutes, ip_address |
password_changed | Password changed | A password was changed, by the user or through a reset link. | user_first_name, user_email, ip_address |
user_invite | Invitation to an account | Someone without a sign-in is invited to an account by its owner, another user or staff. The link works for 7 days. | inviter_name, invite_url, invite_expires |
email_changed | Email address changed | A user's sign-in address was changed, by the user or by staff. It goes to the old address. | user_first_name, user_email, old_email |
Products and services
| Name | Title | Sent when | Extra fields |
|---|---|---|---|
hosting_welcome | New hosting account details | A hosting account is created on a server. | product_name, service_domain, service_username, service_password, panel_url, server_hostname, server_ip, nameservers_html, next_due_date, recurring_amount, billing_cycle |
server_welcome | New server details | A server product is set up. | product_name, service_domain, service_ip, service_ips, service_username, service_password, panel_url, next_due_date, recurring_amount, billing_cycle |
service_welcome | New service (other products) | A product without a server module becomes active. | product_name, service_domain, next_due_date, recurring_amount, billing_cycle |
license_welcome | New licence key | A licence product is set up (Licensing Manager). | product_name, license_key, next_due_date, recurring_amount, billing_cycle |
service_suspended | Service suspended | A service is suspended, by the daily run or by staff. | product_name, service_domain, suspend_reason, invoice_number |
service_unsuspended | Service back in use | A suspension is lifted. | product_name, service_domain |
service_terminated | Service closed | A service is terminated. | product_name, service_domain |
service_upgraded | Upgrade or downgrade done | A change of product or billing term is carried out. | product_name, old_product_name, service_domain, recurring_amount, next_due_date |
cancellation_received | Cancellation request received | A client asks to cancel a service. | product_name, service_domain, immediate, next_due_date, cancel_reason |
Domains
| Name | Title | Sent when | Extra fields |
|---|---|---|---|
domain_registered | Domain registered | The registrar confirms a registration. | domain, years, expiry_date, nameservers_html |
domain_transfer_started | Domain transfer started | A transfer is sent to the registrar. | domain |
domain_transfer_done | Domain transfer finished | The transfer completes. | domain, expiry_date |
domain_transfer_failed | Domain transfer did not go through | The registrar refuses or the transfer fails. | domain, reason |
domain_renewed | Domain renewed | The registrar confirms a renewal. | domain, years, expiry_date |
domain_renewal_notice | Domain renewal reminder | The task domain-renewal-notices, on the days set in Automation Settings (before expiry). | domain, expiry_date, days_left, auto_renew, renewal_price |
domain_expired | Domain expired | A notice day after expiry (a negative number in the renewal notice days). | domain, expiry_date |
domain_epp_code | Domain transfer code | The client asks for the transfer code on the domain's page. | domain, epp_code |
domain_documents_needed | Documents needed for a domain | A domain whose extension needs documents is ordered. | domain, documents_html |
Invoices and payments
| Name | Title | Sent when | Extra fields |
|---|---|---|---|
invoice_created | New invoice | An invoice is created and sent (renewals by the daily run, orders, quotes accepted, staff "Send"). The PDF is attached to this and the other invoice emails when PDF invoices are on. | invoice_number, invoice_date, invoice_due_date, invoice_total, invoice_balance, invoice_items_html, payment_method, invoice_url |
invoice_reminder | Payment reminder (before due date) | The task invoice-reminders, on the reminder days before the due date. | invoice_number, invoice_due_date, invoice_balance, invoice_url, payment_method |
invoice_overdue_1 | First overdue notice | The first overdue day in Automation Settings. Skipped for clients with "No overdue notices". | invoice_number, invoice_due_date, invoice_balance, invoice_url |
invoice_overdue_2 | Second overdue notice | The second overdue day. | as above |
invoice_overdue_3 | Third overdue notice | The third overdue day. | as above |
payment_received | Payment received | A payment is recorded against an invoice (gateway, kept card or staff). | invoice_number, payment_amount, payment_method, payment_date, transaction_id, invoice_balance_left, invoice_url |
payment_failed | Automatic payment failed | Charging a kept card fails. | invoice_number, invoice_balance, invoice_url, failure_reason |
refund_issued | Refund issued | Staff refund a payment. | invoice_number, refund_amount, refund_to_credit |
credit_note | Credit note issued | Staff issue a credit note. | note_number, note_total, invoice_number, note_items_html |
Support
Support emails are sent from the department's address.
| Name | Title | Sent when | Extra fields |
|---|---|---|---|
ticket_opened | Ticket received (automatic reply) | A ticket is opened by a client, a guest or by email. | ticket_number, ticket_subject, ticket_department, ticket_priority, ticket_url, ticket_message_html |
ticket_reply | Staff reply to a ticket | Staff answer a ticket. | ticket_number, ticket_subject, ticket_status, ticket_department, ticket_url, ticket_message_html, staff_name |
ticket_closed | Ticket closed for no reply | The automatic close after the hours set in Automation Settings. | ticket_number, ticket_subject, ticket_url |
ticket_feedback | Feedback on a closed ticket | A ticket is closed and feedback is asked for. | ticket_number, ticket_subject, feedback_url |
ticket_not_accepted | Email ticket not accepted | An email to a department could not become a ticket (unknown sender, spam filter, limit reached). | ticket_subject, department_email, reason |
Affiliates
| Name | Title | Sent when | Extra fields |
|---|---|---|---|
affiliate_welcome | Affiliate account opened | A client joins the affiliate programme or staff activate them. | affiliate_link, commission_rate |
affiliate_report | Monthly affiliate report | The monthly affiliate-reports task, when "Send affiliates a monthly report" is on. | month, visits, signups, earned, balance |
Staff notices
Staff notices go to every enabled administrator whose role receives that kind of notice (system, account or support notices, chosen on the role), in one email. They are not written to a client's email history, and clients cannot turn them off. New templates of this type cannot be made. Each has admin_url, a link to the record in the admin area, where noted.
| Name | Title | Sent when | Extra fields |
|---|---|---|---|
admin_new_client | New client signed up | A client registers (account notices). | client_country, ip_address, admin_url |
admin_new_order | New order placed | An order is placed (account notices). | order_number, order_total, payment_method, order_items_html, fraud_result, ip_address, admin_url |
admin_payment_received | Payment received | A payment comes in (account notices). | payment_amount, payment_method, invoice_number, transaction_id, admin_url |
admin_new_ticket | New ticket | A ticket is opened. | ticket_number, ticket_subject, ticket_department, ticket_priority, ticket_message_html, admin_url |
admin_ticket_reply | Client replied to a ticket | A client or guest replies. | ticket_number, ticket_subject, ticket_message_html, admin_url |
admin_ticket_assigned | Ticket assigned to you | A ticket is assigned to a staff member; sent to that person. | ticket_number, ticket_subject, assigned_by, admin_url |
admin_cancellation | Cancellation requested | A client asks to cancel a service. | product_name, service_domain, immediate, cancel_reason, admin_url |
admin_module_failed | Automatic action failed | A server or registrar command fails (system notices). | action, item, error, admin_url |
admin_domain_task | Domain needs staff action | A domain needs manual work, for example an extension registered by staff (system notices). | domain, task, details, admin_url |
admin_quote_accepted | Quote accepted | A client accepts a quote online. | quote_number, quote_total, admin_url |
admin_daily_report | Daily automation report | The daily run finishes (system notices). | report_html |
admin_client_changed | Client changed their details | A client changes their profile, when "Email staff when a client changes their details" is on. | changed_fields, user_email, ip_address, admin_url |
admin_contact_form | Contact form message | The Contact Us form is sent; goes to the contact address with the sender as reply-to. | contact_name, contact_email, contact_subject, contact_message_html, ip_address |
admin_password_reset | Staff password reset link | A staff member uses "forgotten password" on the admin sign-in page. | staff_first_name, staff_username, reset_url, reset_minutes, ip_address |
The Email Message Log
Utilities > Email Message Log (/admin/logs/email) lists every email CoreInto has made, newest first, with the date it was queued, the recipient, the subject and the status:
| Status | Meaning |
|---|---|
| Sent | The mail server accepted it. |
| Waiting | In the queue; it is sent at the end of the request or by the jobs task, and after a failure it is retried. |
| Failed | Six attempts failed. Hover over the badge, or open the entry, to read the mail server's error. |
| Not sent | "Do not send any email" was on when the email was made. |
Filter by recipient or subject and by status. Open an entry to see the status with the time it was sent and the number of attempts, the error if any, when it was queued, From, To, Cc and Bcc, the client it belongs to, the template name, the attachments, and the message itself. The message is shown in a sandboxed frame with its own strict content policy, so stored HTML cannot run scripts or load content from outside.
Send Again queues a copy of the email to the same recipients. It makes a new log entry, so the original stays as it was; the action is written to the activity log.
Seeing the log needs the permission "email log".
A client's email history
Each client's page has an Emails tab (Clients > View/Search Clients, open the client, Emails) that lists the emails sent to that account: date, subject, recipient and status, newest first, with links to the log entries. Staff notices about the client are not listed there, because they went to staff.
Clients see their own history under Email History in the client area (/client/emails): the date and subject of each email, and the message when they open one. Emails marked Not sent are hidden from clients. A user of the account needs the permission "See emails sent" to open the page.
The client's data export (Export Data on the summary) includes the date, subject, recipient and status of every email sent to the account.
Emails written by staff to one client
On a client's summary, Send Email opens a page with two choices:
- Use an email template: the welcome email, the saved-card notice, and every template made by staff that is turned on. The template is filled with the client's details and sent to the account's email address, with copies to the contacts who asked for that type. If the template is off or the client turned that type of email off, nothing is sent and the page says so.
- Write a message: a subject and a plain-text message. A blank line starts a new paragraph. The company signature is added at the end. Merge fields work in both the subject and the text; the page lists the ones available (
client_first_name,client_name,client_company,client_email,company_name,client_area_urland the rest of the common fields). The message is sent as a general email, wrapped in your header and footer.
Both are written to the email log with the client's number, so they show on the Emails tab and in the client's Email History, and the action is recorded in the activity log. Sending needs the client summary permission.
Mass messages
Clients > View/Search Clients has a Mass Message button (Message These Clients when a search is active, which carries the search over). The page /admin/clients/mass-mail has two parts:
- Who receives it: the same filters as the clients list, including the advanced ones (see Clients). Count Clients shows how many match. Closed accounts are never included.
- The message: a subject and a plain-text message with merge fields (
client_first_name,client_last_name,client_name,client_company,client_email,company_name,client_area_url), and the tick box "Only clients who agreed to marketing email". Leave it ticked for news and offers; untick it for a service notice every client must receive.
Clients who turned off general emails are always skipped. Each client gets their own email; nobody sees the other recipients. After Send Message the emails are queued and you are taken to the Email Message Log; the result ("queued for 240 clients; 12 turned this kind of email off") is shown at the top and written to the activity log. The message is up to 50,000 characters. Sending needs the permission "mass mail".
For messages sent automatically a set number of days after sign-up, after an order or before a due date, see the Email Marketer in Reports and utilities.
