Open Admin Portal → Workspace → Email Templates.📷Screenshot: Email Templates list — system names + entity types email-templates_list.png
Edit a seeded template. Click PLACEMENT_NOTICE (or any seeded row). Change the subject and body to your house voice. Keep the system_name unchanged — it's the identifier the one-click record actions use.
Use placeholders in subject + body with double curly braces: {{to_first_name}}, {{placement_role}}, {{order_name}}. The editor extracts every token on save into the Detected placeholders read-out below the body editor; mis-typed tokens show as unrecognised so you can fix them.📷Screenshot: Email Template editor — subject, body, detected placeholders email-templates_editor.png📷Screenshot: Detected placeholders panel below the body editor email-templates_placeholders.png
Available placeholder entities:
sender — current user: first/last/full name, email, phone, job title
recipient — auto-resolved Person from the record
tenant — workspace name
person — explicit Person picker (Phase 5 dynamic)
organisation — name, email, phone, address
placement — role, job, site, supervisor, employer org, start/end date, daily start/finish, working days, status, pay_rate, award (NAME and CODE)
order — name, PON, status, due date, start, end, description, assigned to
Build a new template. Click New. Name it clearly; set a system_name (UPPER_SNAKE) only if you want it to appear as a one-click action on the record header. Set entity_type to lock it to a record type; leave blank for free-compose use.
Group-only templates. Set Scope → Group only + pick a User Group; only members will see this template in the composer + one-click surfaces.
Refresh seeded templates after a platform upgrade. Run php artisan email-templates:seed --sync on the server. Existing seeded rows are force-rewritten to the platform's current canonical body; operator-created rows are left untouched.
📷Screenshot: Email templates — how to use email-templates_2.png