Skip to main content

How Email Subscriptions Work

Understanding the flow helps you configure subscriptions effectively. Here’s the process Fabius follows when deciding whether to send an email notification:
  1. Analysis Completion: An Analysis Configuration successfully finishes running on an interaction (e.g., a call transcript is scored, next steps are extracted from a document). This generates an Analysis Result.
  2. Subscription Matching: Fabius checks all active Email Subscriptions. For each subscription, it evaluates its filters against the interaction that was just analyzed:
    • Attendee Filter: This is the primary filter configured directly on the subscription itself.
      • If the subscription’s “Attendees” list is empty, this filter automatically passes (meaning the subscription applies regardless of who was involved in the interaction).
      • If the “Attendees” list contains one or more users, Fabius checks if at least one of those specified users was an attendee on the original call (or potentially the owner/creator of the document/email). If there’s a match, the filter passes. If none of the specified attendees were involved, the subscription does not trigger for this specific analysis result.
    • (Advanced) Configuration Filters: While not set on the subscription itself, the original Analysis Configuration might have its own Filter Template or Score Eligibility Questions that already prevented the analysis from running in the first place. Subscriptions only trigger for analyses that actually completed.
  3. Email-Level Filtering: If the subscription’s filters pass, Fabius evaluates the Email Filter configured on the template:
    • Email Filters determine whether an email should be sent at all based on aggregate conditions
    • These filters can evaluate scores across all fields (e.g., “any score ≤ 3” or “average score > 7”)
    • They can check for field presence (e.g., “has field ‘Competitor Mentioned’”)
    • Complex logic with AND/OR conditions is supported
    • If the email filter evaluates to false, no email is sent - the process stops here
  4. Recipient Determination: If both subscription and email-level filters pass:
    • If the subscription is configured to send to a specific email address, that address is used.
    • If the subscription is configured to send to a Fabius User, the system retrieves the email address associated with that user’s profile.
  5. Content Assembly:
    • Fabius looks up the Email Template associated with the Analysis Configuration that triggered the analysis. This template dictates what information (which field results) and formatting goes into the email body and subject.
    • For each score field in the template, if a Field-Level Filter Template is configured, Fabius evaluates it:
      • Filter templates use Go template syntax, for example: {{if and .HasScore (lt .Score 3)}}true{{end}}
      • Each score field can have its own filter template
      • The field is only included if the filter evaluates to “true”
      • Non-score fields (text, values) are always included if selected in the template
    • If ALL score fields are filtered out and no other content fields exist, the email is not sent
    • The system populates the template with the specific scores, values, and interaction details from the current Analysis Result, respecting any filter rules.
  6. Email Sending: The assembled email is sent to the determined recipient address.
  7. Delivery Record: Fabius logs that an email was sent for this specific Analysis Result and Subscription.
By understanding this flow, you can combine Analysis Configurations, their linked Email Templates, and targeted Email Subscriptions to create powerful, automated notification workflows.