Skip to main content

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, domain
  • primaryContactEmail, 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:

AccordionWhat it is
Merchant managementEditable. Outbound mail to merchant contacts (snippet, onboarding, ongoing comms).
Finance assistantRead-only. Customer enquiry receipt when a shopper submits the finance enquiry form.
Monitoring and automationsRead-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.

RowMeaning
FromSender for every mail in the category (Merchant management: FinMatch Support)
Reply-ToReply address (Merchant management: FinMatch Merchant Support; may be empty on some alerts)
BCCSelf-copy for the Gmail Sent (audit) label

Templates​

Editable categories (Merchant management) show Templates.

ColumnMeaning
NameOperator-facing name. Edit loads the row into the form.
KeyOptional stable id (header-snippet, …)
Default recipientsToken list used as To
StatusActive 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).

FieldMeaning
Template nameRequired 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 templateSubject with tokens
Body templateBody with tokens
Template is activeUnchecked 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).

  1. 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.
  2. While the request runs, the button shows Saving... and is disabled. A second click is ignored.
  3. 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.

  1. The heading returns to Create template. An in-progress Edit template: is abandoned: the next Save template is a create (POST), not an update.
  2. Template name, Template key (optional), Subject template, and Body template clear.
  3. Default to tokens (comma/newline separated) is restored to {{primaryContactEmail}}, {{technicalContactEmail}} (the same placeholder string).
  4. Template is active is checked.

Reload​

Click Reload next to Reset. The read is merchant-api GET /admin/email-templates.

  1. 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.
  2. 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.