CentraPoint

Guides

Email & templates

How CentraPoint sends emails to your customers, how to use your own SMTP server, read the email log and customise every email template.

On this page

Overview#

CentraPoint emails your customers on your behalf: invoices, receipts, reminders, subscription notices, debit order agreements and customer portal codes. Under Settings → Email you choose how these are sent, change what they say, and see every message that went out.

Settings → Email tabs
TabWho can use itPurpose
ConfigurationAdminsYour own SMTP server, sender identity, signature and footer, test sends.
TemplatesAdminsEdit, preview, test, disable or reset each customer email.
LogsStaff and adminsEvery email sent for your account, with content, status and Resend.

Who sends your emails#

Default: sent by CentraPoint#

Unless you set up your own server, customer emails go through CentraPoint's mail server. The sender shows your company name with CentraPoint's address (for example "Acme Hosting via CentraPoint" <no-reply@…>), which keeps SPF and DKIM valid. Replies go to your company email, and the company name comes from the same page (your account name if it is empty): both are under Settings → Company settings.

Your own SMTP server#

To send customer emails from your own domain, fill in Settings → Email → Configuration and tick Send customer emails through my own SMTP server.

SMTP and sender fields
FieldNotes
SMTP hostA hostname, e.g. smtp.example.co.za. Required before you can enable your own server.
Port1–65535. Default 587.
Use SSL/TLS from the startImplicit TLS, usually port 465. Port 465 always uses implicit TLS. Leave it off for port 587: the connection is upgraded with STARTTLS when the server offers it.
UsernameLeave empty for a server that does not need authentication.
PasswordStored encrypted and never shown again. Leave blank to keep the saved one, or tick Remove the saved password. Required when enabling with a username.
From nameDefaults to your company name.
From emailAn address your server may send as. Required to enable, unless the username is itself an email address (it is then used).
Reply-to emailWhere customer replies go. Defaults to your company email.

Emails CentraPoint sends to your own users (password resets, invitations, EFT proof-of-payment notices, referral rewards, two-factor and email verification) always come from CentraPoint, so a broken SMTP server never locks your staff out.

Testing the connection#

Tests use the saved settings, so save first. Both are in the Test card:

  • Test connection connects to your server and signs in (25-second limit), then reports success or the server's error.
  • Send test email sends a short message to your own user address through the saved SMTP server, even before you enable it. It appears in the log as "SMTP test".

The Status card shows which server currently sends customer emails: your server (host:port), CentraPoint, or nobody (no mail server configured, in which case emails are logged as skipped).

These apply to templated customer emails whichever server sends them (not to the built-in invoice and receipt layouts described below):

  • Signature (HTML): added below the body. Scripts, frames and event handlers are removed when you save.
  • Footer address, Terms URL and Privacy policy URL (URLs must start with http:// or https://): shown in the footer, replacing the default "Sent by CentraPoint on behalf of the merchant" line.

Emails show your company name in the header. On plans with custom branding, the header line and buttons use your primary brand colour.

Email log#

Settings → Email → Logs lists every email sent for your account, newest first, 25 per page: time, recipient, subject, template, status and linked customer.

Email statuses
StatusMeaning
sentAccepted by the mail server.
failedThe server rejected it or could not be reached. Hover or open the entry to see the error.
skippedNo mail server was configured, so nothing was sent.

Filter by recipient or subject text, status, template and date range (South African days). View shows the sender, error, message ID and the rendered email. For a failed or skipped email whose content was stored, Resend sends the same content again (attachments are not kept, so a resent invoice or receipt has no PDF).

Email templates#

Settings → Email → Templates lists the customer emails by category (Payments, Invoices, Subscriptions, Debit orders, Customer portal, Reports, General) with their current subject and status: Default, Amended (you changed it) or Disabled. Templates you have not changed use the CentraPoint default and pick up improvements automatically.

Editing a template#

Open a template to edit it:

  • Subject: up to 300 characters, plain text (line breaks are removed).
  • Body (HTML): up to 200,000 characters. Scripts, frames, forms, event handlers and javascript: links are removed when you save.
  • Placeholders: the placeholders the template supports, as buttons. Click one to insert it at the cursor. In the body, a placeholder ending in Url is inserted as a button.
  • Send this email: untick to disable the template when you save.

The heading above the body is fixed per template and is not editable. The Preview panel renders your unsaved changes with sample values, inside your branded layout, as you type. Send test to me sends the current editor content, with sample values, to your own address; the subject starts with [Test] and the log shows it as "Template test".

Placeholder syntax#

Template tokens
TokenRenders as
{{name}}The value, HTML-escaped. Spaces inside the braces are allowed. Empty or unknown placeholders render as nothing.
{{nameHtml}}Placeholders ending in Html (lineItemsHtml, agreementHtml) insert prepared HTML unescaped.
{{button:urlName|Label}}A call-to-action button linking to the named URL placeholder, with a copy-the-link line below it. When the URL is empty the whole button is left out.
Example body
<p>Hi {{firstName}},</p>
<p>Your {{planName}} subscription renews on {{nextBillingDate}} for {{amount}}.</p>
{{button:portalUrl|Manage subscription}}
<p>Questions? Email {{supportEmail}}.</p>

In the subject, tokens render as plain text, and a button token becomes Label: url. The plain-text version of each email is generated from the HTML automatically.

Disabling and resetting#

  • Disable stops that email from being sent to customers, without changing its content. Enable turns it back on.
  • Reset to default discards your changes: the CentraPoint default is used again, and the template is enabled.

Invoice and receipt emails#

The invoice and receipt emails use a built-in layout until you customise them; once you save a change, your template is used instead. Either way the invoice or receipt PDF is attached (see Tax & PDF documents). Receipts are only emailed when Email customers a receipt when a payment completes is on under Settings → Company settings (on by default), at most once per payment. Invoice emails go to the customer's billing email when set, else their email. A receipt for a customer's payment goes to the billing email when set, else the payer's email, else the customer's email; a payment with no customer goes to the payer's email. Disabling either template stops that email.

Template reference#

Every customer email template, with the placeholders it supports:

Email templates
SlugNameWhen it is sentPlaceholders
welcomeWelcome
General
A customer is created from checkout.customerName, firstName, companyName, supportEmail, portalUrl
payment_confirmationPayment confirmation
Payments
A checkout payment completes (in addition to the receipt).customerName, firstName, companyName, supportEmail, amount, description, reference, paidAt
payment_failedPayment failed
Payments
A subscription or debit order payment fails.customerName, firstName, companyName, supportEmail, amount, description, reason, payUrl
refundRefund issued
Payments
A refund is processed.customerName, firstName, companyName, supportEmail, amount, reference, refundNumber, reason
receiptPayment receipt
Payments
A payment completes and receipts are on. Built-in layout until customised.customerName, firstName, companyName, supportEmail, amount, description, reference, paidAt, invoiceNumber, payerName
payment_reminderInvoice reminder
Invoices
Reminders job, for unpaid and overdue invoices.customerName, firstName, companyName, supportEmail, invoiceNumber, balance, dueDate, dueText, payUrl
invoiceInvoice
Invoices
An invoice is emailed to the customer. Built-in layout until customised.customerName, firstName, companyName, supportEmail, invoiceNumber, total, balance, dueDate, payUrl, lineItemsHtml, notes
subscription_activatedSubscription activated
Subscriptions
A subscription starts (after the first payment or when a trial starts).customerName, firstName, companyName, supportEmail, planName, packageName, amount, frequency, nextBillingDate, trialEndsAt, portalUrl
subscription_trial_endingTrial ending
Subscriptions
A few days before a free trial ends.customerName, firstName, companyName, supportEmail, planName, amount, frequency, trialEndsAt, portalUrl
subscription_renewedSubscription renewed
Subscriptions
A renewal payment succeeds.customerName, firstName, companyName, supportEmail, planName, amount, nextBillingDate
subscription_renewing_soonRenewing soon
Subscriptions
Before an upcoming renewal (reminders job).customerName, firstName, companyName, supportEmail, planName, amount, nextBillingDate, portalUrl
subscription_expiringSubscription expiring
Subscriptions
Before a fixed-term or cancelled subscription ends.customerName, firstName, companyName, supportEmail, planName, endsAt, portalUrl
subscription_past_dueSubscription past due (dunning)
Subscriptions
A renewal fails; sent on each retry.customerName, firstName, companyName, supportEmail, planName, amount, attempt, maxAttempts, payUrl
subscription_cancelledSubscription cancelled
Subscriptions
A subscription is cancelled.customerName, firstName, companyName, supportEmail, planName, effectiveText, reason
subscription_expiredSubscription expired
Subscriptions
A subscription reaches its end date, or expires after failed dunning.customerName, firstName, companyName, supportEmail, planName, portalUrl
subscription_upgradedSubscription upgraded
Subscriptions
The customer moves to a more expensive plan.customerName, firstName, companyName, supportEmail, planName, oldPlanName, amount, frequency
subscription_downgradedSubscription downgraded
Subscriptions
The customer moves to a cheaper plan.customerName, firstName, companyName, supportEmail, planName, oldPlanName, amount, frequency
subscription_pausedSubscription paused
Subscriptions
A subscription is paused.customerName, firstName, companyName, supportEmail, planName
subscription_resumedSubscription resumed
Subscriptions
A paused subscription is resumed.customerName, firstName, companyName, supportEmail, planName, nextBillingDate
mandate_agreementDebit order agreement to sign
Debit orders
Link for the customer to review and sign a debit order mandate.customerName, firstName, companyName, supportEmail, amount, frequency, debitDay, signUrl, expiresAt
mandate_signedDebit order agreement signed
Debit orders
Confirmation, with a copy, after the customer signs the mandate.customerName, firstName, companyName, supportEmail, signedAt, agreementHtml
portal_linkCustomer portal link
Customer portal
Staff or the API email a customer their portal link.customerName, firstName, companyName, supportEmail, portalUrl
portal_otpCustomer portal sign-in code
Customer portal
A customer requests a portal sign-in code.customerName, firstName, companyName, supportEmail, code, minutes
report_deliveryScheduled report
Reports
A scheduled report is delivered to staff (attachment included).reportName, periodText, rowCount, reportUrl, companyName

Common placeholders#

All templates except report_delivery support these four:

Common placeholders
PlaceholderValue
customerNameThe customer's full name (company name when there is no personal name).
firstNameThe customer's first name.
companyNameYour company name (Settings → Company settings, else your account name). Always available.
supportEmailYour company email (Settings → Company settings). Always available.

portalUrl is only filled in while your customer portal is open, so its button disappears when the portal is off. In the editor preview and test sends, any placeholder without a sample value shows as [name].