Emails
Admin → Emails (https://admin.finmatch.io/emails/).
The page lists every email-sending path. Expand a category accordion for From / Reply-To, templates, and (for read-only categories) system entries with trigger and endpoint. Subtitle: Every email-sending path in the platform. Expand a category to see its configuration. Empty states: No templates yet. Use the form below to create one. and No system entries.
Available tokens
Available tokens sit above the accordions. Subtitle: Use tokens in Subject/Body and default recipients of merchant-management templates. Use them in Subject/Body and default recipients of merchant-management templates:
merchantId,companyName,environmentName,domainprimaryContactEmail,technicalContactEmail,headerSnippet
Wrap each name in double curly braces in the template, matching the chips on the Emails page.
Categories
Accordions come from merchant-api GET /admin/email-config. If that
call fails, the page falls back to one editable accordion: Merchant
management. If the call succeeds with an empty category list, the
page shows No email categories returned by the API.
Typical live categories:
| Accordion | What it is |
|---|---|
| Merchant management | Editable. Outbound mail to merchant contacts (snippet, onboarding, ongoing comms). |
| Finance assistant | Read-only. Customer enquiry receipt when a shopper submits the finance enquiry form. |
| Monitoring and automations | Read-only. Alert mail from GitHub workflows or admin endpoints. |
The first accordion opens by default. Read-only rows show a read-only badge. Categories themselves are not created from this UI.
Pinned settings
Pinned settings on a category are shown on the page. Subtitle: All emails in this category are sent with the values below. They are not configurable from this UI. They are not configurable from this UI.
| Row | Meaning |
|---|---|
| From | Sender for every mail in the category (Merchant management: FinMatch Support) |
| Reply-To | Reply address (Merchant management: FinMatch Merchant Support; may be empty on some alerts) |
| BCC | Self-copy for the Gmail Sent (audit) label |
Templates
Editable categories (Merchant management) show Templates.
| Column | Meaning |
|---|---|
| Name | Operator-facing name. Edit loads the row into the form. |
| Key | Optional stable id (header-snippet, …) |
| Default recipients | Token list used as To |
| Status | Active or Inactive |
Empty state: No templates yet. Use the form below to create one.
Create template
Create template is the editor under the table. When you click Edit, the heading becomes Edit template: plus the row name. Sender is pinned for all merchant-management templates (no sender dropdown).
| Field | Meaning |
|---|---|
| Template name | Required display name |
| Template key (optional) | Stable id; leave blank to let the API assign one |
| Default to tokens (comma/newline separated) | To list, usually {{primaryContactEmail}} and {{technicalContactEmail}} |
| Subject template | Subject with tokens |
| Body template | Body with tokens |
| Template is active | Unchecked rows stay Inactive in the table |
Placeholders: Header snippet, header-snippet, {{primaryContactEmail}}, {{technicalContactEmail}}, FinMatch header snippet for {{companyName}}, Email body with tokens. Wrap { tokens in backticks on this menu page so MDX does not parse them.
Save template writes the row. Reset and Reload sit next to it. See Reset and Reload.
Save template
Click Save template on Create template or Edit template.
The write is merchant-api POST /admin/email-templates (new) or
PUT /admin/email-templates/:id (edit).
- Empty Template name alerts Template name is required. and does not send. Empty subject alerts Subject template is required. Empty body alerts Body template is required.
- While the request runs, the button shows Saving... and is disabled. A second click is ignored.
- Success: Template saved. The list reloads, then the editor
runs the same restore as Reset (heading Create template,
default To tokens restored). Failure alerts the API
message, or Failed to save template. The button returns to Save template.
Reset
Click Reset on Create template or Edit template. This is a local form restore. It does not call the API and does not alert.
- The heading returns to Create template. An in-progress Edit
template: is abandoned: the next Save template is a create
(
POST), not an update. - Template name, Template key (optional), Subject template, and Body template clear.
- Default to tokens (comma/newline separated) is restored to
{{primaryContactEmail}}, {{technicalContactEmail}}(the same placeholder string). - Template is active is checked.
Reload
Click Reload next to Reset. The read is merchant-api
GET /admin/email-templates.
- Success has no alert. The accordion list re-renders from the API, then the editor runs the same restore as Reset (heading Create template, default To tokens restored). Unsaved edits in the form are discarded.
- Failure alerts the API
message, or Failed to reload templates. The form and list stay as they were.
First paint of the page uses the same templates GET (together with
GET /admin/email-config). If that combined load throws, the category
container shows Failed to load: plus the error (or Unknown
error). Config-only failure is quieter: the page falls back to one
editable Merchant management accordion and still tries to load
templates.
System entries (read-only)
Read-only categories list System entries (read-only) instead of an editor. Empty state: No system entries. Columns: Name, From, To, Reply-To, BCC. A To cell may show Override env var when the recipient comes from Cloud Run config.
Rows operators see today:
- Customer enquiry receipt (Finance assistant) — trigger/source is the Finance Assistant enquiry send path.
- Generic monitoring alert (Monitoring and automations) — GitHub
merchant-config monitoring via
POST /admin/send-monitoring-alert. - Per-merchant config drift regression — same workflow; template send with fallback to the generic alert endpoint.
Trigger, Endpoint, and Source lines sit under the Name cell when the API provides them. Empty state: No system entries.
What this page is not
The Emails page shows what is configured to send. The actual sent
copy is on the Gmail Sent (audit) labels. See
Audit via Gmail labels.