Notification email templates
How Strata sends agent and system emails on behalf of your organization, and how each user can shape their own agent notifications.
System emails (admin data export ready, organization onboarding welcome, agent finished) all go out through Azure Communication Services (ACS) via sendTransactionalEmail. That single function powers every Strata-originated email — they all come from the same AZURE_COMM_SENDER address.
The sender identity
All system emails come from the address configured in AZURE_COMM_SENDER, typically mail.kronisys.com for managed Strata deployments. Branded invite emails (sent from Invitations) use the same sender.
This is deliberate. An agent run finishes at 6 AM and sends its output by email — that email arrives from mail.kronisys.com, not from the user's own mailbox (firstname.lastname@yourcompany.com). The user did not press send; a scheduled process did. Putting the user's email on the From line would be misleading and would break SPF/DKIM/DMARC alignment for the recipient.
Receiving a "Quarterly report" email from mail.kronisys.com rather than from your colleague is the right behavior — it tells the recipient this is automated and originated from your Strata tenant.
What the emails look like
Every email on this page uses one dark design: a near-black background with light text, the Strata logo at the top, and a footer with the copyright line and a link to strata.kronisys.com. There is no light version, and the design doesn't switch with the recipient's light or dark mode. Action buttons are white with dark text. Some mail apps recolor messages in dark mode; the emails are built to stay dark through that, and the logo is drawn in HTML rather than as an image, so it shows even when images are blocked.
- Classic Outlook for Windows may still apply its own dark-mode colors.
- The Gmail app shows the email inverted (light, but readable) for a non-Google account added to it, such as an Outlook or Microsoft 365 account.
- If you print one and your printer drops background colors, the light text prints on white paper.
- Email you send from chat or an agent through your connected Outlook is your own message and doesn't use this design.
Agent finished templates
Every scheduled agent can be configured to email its output (or just its errors). The wiring lives in the agent form → Advanced settings → Notifications, which sets when to email, the Send to address and whether the output is included; CC, BCC and the subject and message templates are no longer in the form, and an agent saved with them keeps them. Once an agent finishes a run, sendAgentNotification builds the message from:
- To —
cfg.email_toif set, otherwise the agent owner's email. - CC —
cfg.email_cc(comma-separated, optional). - BCC —
cfg.email_bcc(comma-separated, optional). - Subject —
cfg.subject_templatewith placeholders filled, or a server default. - Body —
cfg.body_templaterendered as markdown with placeholders, or a server default. - Include output —
cfg.include_output(default true) controls whether the agent's full text output is appended to the body when no custom template is set.
Subject defaults
When subject_template is empty, Strata picks a subject from the run's outcome:
- Successful run:
Your <agent name> report is ready - Failed or timed-out run:
<agent name> couldn't finish its run
NoteThrottled runs (rate-limited or transient AI outage) do not send a notification email. A throttled run with a cron schedule defers ~15 minutes and re-fires, so emailing a "problem" would contradict the retry. Throttled runs are also skipped for inbox items.
Body defaults
When body_template is empty and Include output is on, the body is the agent's full text output rendered through markdown-to-email HTML.
When the agent fails, the body opens with a red-bordered PROBLEM block showing the error message, followed by the output (if available and Include output is on).
Above the body, every agent email lists the run's Status, Duration, and Run at time. It ends with the note This report was generated by an AI agent. Verify critical information before acting on it. A text color set in the output or in body_template is kept only if it is readable on the dark background; otherwise that text uses the normal text color. The three status colors agents use (green for on track, red for overdue, amber for at risk) are shown in brighter versions that read on the dark background.
Available placeholders
Both the subject template and the body template support these tokens, case-insensitive:
| Placeholder | Resolves to |
|---|---|
{agent.name} | The agent's display name. |
{agent.id} | The agent's UUID. |
{status} | finished successfully, timed out, or failed. |
{elapsed} | Run duration, e.g. 12.4s. |
{output} | The agent's text output (up to 12,000 characters). |
{error} | The error message on failed runs (up to 4,000 characters). |
A typical custom subject: [Strata] {agent.name} — {status}
A typical custom body:
Hi team — {agent.name} {status} in {elapsed}.
{output}
— Strata
The subject field accepts up to 200 characters; the body up to 4000.
Send on every finish vs. errors only
The agent form's When to email choice drives two server flags:
- always →
email_on_finish: true,email_on_error_only: false. Sends on success AND failure. - errors only →
email_on_finish: false,email_on_error_only: true. Sends only onfailedortimeoutruns.
"Errors only" is the safety pattern for high-volume agents — you do not want a happy-path email every hour, but you absolutely want to know when something breaks.
Where users configure these
Users turn an agent's email on, and choose when it sends and to whom, from:
- The agent form when creating (Agents → Create agent → Advanced settings → Notifications).
- The same form when editing (the agent's page or its row menu → Edit → Advanced settings).
Admins do not have to configure templates per-agent — defaults work. The templates are exposed for teams that want consistent branding ("Hi team — your report is in") or want to wrap the output in surrounding context.
Org-wide template defaults
Strata does not currently expose org-wide default subject and body templates from the admin console. Every agent uses its own templates (or the server defaults if blank). If your organization wants standardized agent emails, ask each user to copy the same template strings into their own agents, or publish a reusable agent template under Organization → Agents with the templates already filled in — every agent deployed from that template inherits them.
System emails Strata sends
A non-exhaustive list of the emails admins should know about:
- Onboarding welcome — sent to the admin who completes onboarding. Subject:
Welcome to Strata. - Invitation — sent when an admin sends an invite from Invitations. Subject:
You're invited to Strata at <organization name>. - Admin data export ready — sent when an admin runs a data export covering one or more users. Subject:
[Strata] Admin export ready — N user(s). The email carries a SAS download link that expires in 24 hours. - User data export ready — sent when a user runs their own data export from Settings. Subject:
Your Strata data export is ready. Carries a 24-hour SAS download link. - Trial ending — sent to your organization's billing contact as a self-serve trial nears its end. Subject:
Your Strata trial ends <date>. It states the date the card on file is charged and links to Billing. A matching in-app notice also lands in every admin's inbox (the billing contact is often a finance alias, so the reminder reaches the people who actually decide). If no billing contact is on file, the email is skipped and Kronisys ops is alerted; the in-app notice still goes out. - Teams setup requested — internal ticket to
support@kronisys.comwhen an org requests the Teams extension. Subject:[Strata] Teams setup requested: <organization>. - Org deletion request — internal ticket to
OPS_NOTIFY_EMAIL(orsupport@kronisys.comwhen unset) when an admin requests organization deletion. Subject:[Strata] Deletion request: <organization>. - Billing ops alerts — internal-only notices to Kronisys ops (
OPS_NOTIFY_EMAIL) when a cleared payment is reversed ([Strata] Payment reversed (…): <organization>) or an invoice is past due with no billing contact to dun ([Strata] Past due, no billing contact: <organization>). These never reach your organization's members. - Invoice past due — sent to your organization's billing contact (or an admin, when no billing contact is on file) when an invoice is past due. Subject:
Your Strata invoice is past due. Links to Billing. - Model retirement — sent to each admin who can manage AI models (Access admin panel and Manage AI models) in an organization a model retirement affects, 60, 30 and 14 days before the date and on the day, alongside a matching inbox notice. Subject:
<model> retires on <date>(on the day,<model> retired on <date>). It names the replacement, says what Strata will switch on the date, and links to Review models. It carries counts only, never an agent's or template's name. See Model retirement. - Organization deletion approved — sent to every active admin when Kronisys approves an organization deletion. Subject:
[Strata] Deletion of <organization> approved — scheduled for <date>. - Usage request answered — sent to a member when an admin approves or declines their request for more usage, at the address they sign in with. Subject:
Your usage limit was raised to <amount>orYour request for more usage was declined. It says what changed (an approval applies within a minute and stays their limit until an admin changes it; after a decline they can ask again whenever they need to) and links to Settings → Usage. An approval is always a raise: Strata refuses one at or below the member's current limit, so this email never reports a cut as a raise. It never carries the reason the member gave, and a matching notice lands in their inbox. No admin is emailed or notified when a request is filed or answered: requests wait on the Usage and Billing pages. - Agent finished — covered above.
All use sendTransactionalEmail and the same dark design (see What the emails look like). None of them put the user's personal email on the From line.
Deliverability tips
When recipients in your domain are receiving Strata emails to spam or having them quarantined:
- Verify SPF on your domain includes the sender domain's authorized senders. For managed Strata, the sender is
mail.kronisys.com; your domain's SPF does NOT need to include Kronisys directly because the sender is the Kronisys domain, not yours. Your recipients' SPF check passes if the Kronisys SPF is healthy (which it is by configuration). - DKIM alignment is handled at the ACS sender level — there is no DKIM key for you to publish unless you operate your own ACS sender domain.
- DMARC — if your domain's DMARC policy is
p=rejectwith strict alignment, recipients may quarantine because the From-domain ismail.kronisys.com, not your domain. This is expected — agent emails are inherently from a different domain. - For recipients in your domain who block third-party senders by policy, add
mail.kronisys.com(or your custom ACS sender) to the allowed-sender list.
If a high percentage of agent emails are being quarantined in your organization, contact support@kronisys.com to discuss running a custom sender domain for your tenant.
What can go wrong
| Failure | What it means |
|---|---|
sendTransactionalEmail: no valid recipient | The agent's email_to is empty AND the owner has no email on file. Set an explicit recipient. |
AZURE_COMM_CONNECTION_STRING not configured | The deployment lacks the ACS connection string. Contact Kronisys support. |
AZURE_COMM_SENDER not configured | The deployment lacks the sender address. Contact Kronisys support. |
| Recipient never receives the email | Check spam, then check the agent's run record in Usage → user billing profile to confirm the run finished. Then check whether cfg.email_on_finish / cfg.email_on_error_only actually applies to this run's status. |
Placeholder appears unfilled in the email (e.g. literal {status} in the subject) | Typo in the template — placeholder names are case-insensitive but must match exactly. |
| Wrong From address | Verify AZURE_COMM_SENDER in your deployment environment. There is no per-org sender override. |
See Agents overview for the agent form, Agent notifications for the user-facing template UX, and Admin data export for the ACS-delivered export email.