Email and Messages
Message templates
Set the subject and text of the emails your clients receive, per business, per event and per language, with details filled in for each send.
Message templates are the words your clients read when a document reaches them: the subject line and body of the email that carries an invoice, a reminder, a receipt or a credit note. Each business keeps its own templates, so a design studio and a consulting firm under one account can sound different. Templates are stored as data with variables, and the business, client and document details are filled in when each message is sent.
How templates are organised
A message template belongs to one business and is chosen by three things:
| Part | What it means |
|---|---|
| Event | Why the message is sent, for example document_sent, reminder, receipt or credit_note_issued. |
| Channel | How it is delivered: email at launch; whatsapp, telegram and sms when other channels arrive. |
| Language | The language of the text. Each business and client has a messaging language, which defaults to the country's language. |
For each combination you can keep several templates and mark one as the default. When a message goes out, the default template for that business, event, channel and language is used.
Every template has:
- a subject (for email; channels such as SMS have no subject);
- a body, the text of the message;
- the variables in the text, which are replaced with real values for each send.
Variables
Variables let one template serve every client. They come from the business, the client and the document being sent, and they are filled in at send time, so the same "invoice sent" template works for every client and every invoice of that business.
Templates are data, not code. They cannot run scripts or fetch anything; they only hold text and the variables to fill in.
What is always added
Some parts of a client email are not in your template, because they keep every message safe and useful:
- the pay page or document link, so your client can open and pay online;
- the PDF attachment, when attaching the PDF is on for the business, client or document;
- the footer that follows your plan's branding ("Powered by Free Invoice Automation" on Free, none on Team);
- on platform email, the report link that every platform email carries.
Edit a template in the web app
Open Settings > Templates and numbering
Choose the business at the top of the app first. Its templates are listed by event and language.
Pick the event and language
For example the message sent with a new invoice, in English. Open the default template or create a new one.
Write the subject and body
Use variables for anything that changes from client to client or from document to document, instead of typing it in.
Save and mark it as default
The default template is used for every new send of that event and language. Documents already sent keep the message they were sent with.
Check it in a send preview
Open any document and click Send. The preview shows your template with the real values filled in, before anything is sent.
Templates through the API
Message templates are managed with List message templates and Upsert a message template. POST /v1/message-templates creates a template; PATCH /v1/message-templates/{id} changes one.
curl -X POST "https://api.freeinvoiceautomation.com/v1/message-templates" \
-H "Authorization: Bearer $FIA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: tmpl-acme-sent-en" \
-d '{
"business_id": "0193f2a1-7c4e-7b9a-9f10-3c2d1e0a4b51",
"event": "document_sent",
"channel": "email",
"language": "en",
"subject": "Your invoice from Acme Studio",
"body": "Hello, please find your invoice attached. You can pay online using the link below. Thank you for your business.",
"is_default": true
}'{
"data": {
"id": "0193f2c8-1d2e-7f3a-8b4c-5d6e7f8a9b0c",
"business_id": "0193f2a1-7c4e-7b9a-9f10-3c2d1e0a4b51",
"event": "document_sent",
"channel": "email",
"language": "en",
"subject": "Your invoice from Acme Studio",
"is_default": true,
"created_at": "2027-01-05T09:30:00Z"
}
}To see what a client will receive, call Preview a send on a document: it returns the rendered message without sending it. Template management is not on the MCP tool list; your assistant uses your templates automatically when it calls preview_send and send_document.
Templates in reminders
Reminder sequences (January 2027) are built from steps, and each step has a channel and a message template. That is how a gentle note three days before the due date and a firmer one a week after it can say different things. Edit those templates the same way, under the reminder event.
PDF templates are separate
Message templates control the email. The look of the document itself (layout, colours, fonts, labels, footer, paper size) is a PDF template, managed with List PDF templates and Upsert a PDF template. See PDFs and templates.
Rules and edge cases
- Per business. Templates never cross businesses. Copy a template to another business by creating it there.
- Sent messages do not change. Editing a template affects future sends only. Each past send stays in the message log with its recipient, subject, sender and status.
- Language follows the client. If a client has a language set, its template is used; otherwise the business language is used.
- No ads. Client emails never carry ads, affiliate links or sponsors, whatever the template says around them.
- One send per event. A template change never causes a message to be sent again; each send is unique per document, event and channel.
Errors
| Code | When |
|---|---|
validation_failed | A required field is missing, or the event, channel or language is not recognised. |
permission_denied | Your role lacks templates.manage. |
business_out_of_scope | You cannot reach the business you named. |
not_found | The template id does not exist in your account. |
Permissions
| Action | Permission key |
|---|---|
| List, create and edit message templates | templates.manage |
| List PDF templates | documents.view |
| Create and edit PDF templates | templates.manage |
By default Owner, Admin and Editor have templates.manage. See Roles and permissions.