Enders
Overview
Enders are automation rules that perform actions on conversations when specific events occur. Each Ender follows a simple "if this, then that" pattern: you define a trigger (the event that starts the automation), optional conditions (filters that narrow which conversations qualify), and one or more actions (what the Ender does when triggered).
Use Enders to automate repetitive tasks such as sending notifications when new conversations arrive, running automated quality assessments, categorizing conversations by topic, or adding conversations to a reviewer's to-do list.
Who Can Access Enders
Enders require the Enders / Automation Management permission. Users without this permission cannot view, create, or manage Enders.
The Run Historical action and the webhook Preview / Send Test actions additionally require the Conversations View permission.
How It Works
Opening Enders
Open Enders from the main navigation.
The Enders list shows all your automation rules with their name, creator, last edit date, active status, team, and labels.
Browsing and Filtering the List
Use the search bar at the top to filter Enders by name.
Filter by team or labels to narrow the list.
Switch between Active and Archived tabs to view current or archived Enders.
Filter selections are remembered between visits.
Creating an Ender
Click + Create Ender in the top-right corner.
Enter a name for the Ender.
Optionally assign a team.
Configure the trigger, conditions, and actions (see sections below).
Use the Activate toggle to enable or disable the Ender.
Click Save.
Configuring the Trigger
In the if section, select a trigger from the Trigger when dropdown:
Trigger | When it fires |
New conversation added | When a new conversation is ingested |
Conversation is updated | When an existing conversation receives an update from the connected system |
Conversation is added or updated | Combines both of the above |
New scoring added | When a conversation receives a new quality score |
New comment added | When a comment is added to a conversation |
New summary added | When a conversation summary is generated (for example, a CSAT summary or other AI-powered summary) |
The selected trigger determines which condition filters are available. Some filters are only available with specific triggers:
Filter | Available with trigger |
CSAT (Enter, Exit) | New summary added |
Intensity (Enter, Exit) | New summary added |
Summary prompt | New summary added, Conversation is updated, Conversation is added or updated |
Reviewed by | New scoring added |
Review scores | New scoring added |
Commented by | New comment added |
Each of the CSAT and Intensity filters only matches when the triggering summary is of the same type — an Intensity-filtered Ender will not fire when a CSAT summary arrives, and vice versa. Pick the filter that matches the summary you want to react to.
Summary prompt filter
Use the Summary prompt filter to make the Ender act only when the triggering summary was generated by one of the summarisation prompts you select. This is useful when you maintain several summarisation prompts and want different actions (for example, sending a webhook or running categorisation) to run only for specific summaries.
The picker lists active summarisation prompts only — archived prompts are not selectable.
Matching is based on the prompt that produced the triggering summary, so older summaries already attached to the conversation do not cause false matches.
The Summary prompt filter cannot be combined with a search-query filter in the same Ender.
When you use Open Conversations to preview matching conversations, the Summary prompt filter is dropped from the preview because it applies to the triggering summary, not to conversations as a whole.
Adding Conditions
After selecting a trigger, click condition to add filters that narrow which conversations the Ender acts on. Available filters include agent, tags, topics, direction, duration, language, and many others. Some filters are trigger-specific — see the trigger-specific filters table above for details.
You can add multiple conditions. Only conversations matching all conditions will trigger the Ender's actions.
Use the Open Conversations button to preview which conversations currently match your conditions in the Conversations view.
Trigger and Filter Compatibility Warnings
Certain trigger and filter combinations can cause an Ender to never fire. The system displays warnings in the edit view and a warning icon in the list view when it detects these situations:
Topics filter with "New conversation added" trigger — Topics are assigned after ingestion by a categorisation action (another Ender). When a new conversation arrives, it has no topics yet, so the filter will not match. Use the "Conversation is updated" or "Conversation is added or updated" trigger instead.
Negative (NOT) filters with update triggers — Negative filters (such as "NOT tag_X") cannot detect state transitions on conversation updates. The system cannot distinguish between a value that will appear later and one that is permanently absent. This warning does not apply to topics, tags, queue name, campaign name, partners, or CRM statuses, because these filter values are typically known before processing begins and work correctly with negative logic.
Stable-data filters with update triggers — Filters on data that rarely changes after ingestion (such as termination reason, queue name, or campaign name) will cause the Ender to trigger on every update. Consider using the "New conversation added" trigger instead. This warning only appears when all selected filters are stable-data filters; adding a dynamic filter (such as tags) suppresses it.
Unsupported filters for the current trigger — If an Ender uses filters that are not supported by its selected trigger (for example, a CSAT filter on a conversation trigger instead of "New summary added"), a warning appears: "This Ender uses filters not supported for the current trigger type." Change the trigger or remove the unsupported filters to resolve it.
When trigger or filter compatibility issues are detected, a warning icon appears next to the Ender's name in the list view with the tooltip: "This Ender may require reconfiguration. Open it to see details." This reconfiguration icon only appears for active, non-archived Enders — deactivated or archived Enders do not show it. The unsupported-filters warning icon appears regardless of the Ender's active or archived status.
Configuring Actions
In the then section, choose one or more actions for the Ender to perform. Click the + button below the action list to add more actions. Each action runs in sequence. To remove an action, click the X button next to it.
Send Notification
Sends an email notification to specified recipients. Select internal users or type external email addresses directly. Choose a delivery frequency: immediately, or grouped at 1-hour, 8-hour, or 24-hour intervals.
Expand the Advanced — include in email panel to control which sections appear in the email body. Each section has its own checkbox:
Topics — conversation topics/categories.
Summary — the conversation summary.
QA scores — scorecard scores.
CSI — the Customer Satisfaction Index value for the conversation.
A chip next to the panel title shows how many sections are currently selected out of the total. By default, Topics, Summary, and QA scores are included, and CSI is not. The CSI section is rendered only when the conversation actually has a CSI value — if the conversation has no CSI, or your organization does not use CSI at all, the email omits the CSI line even when the checkbox is on. Other sections behave the same way: a section is included in the email only when there is data to show.
Auto QA (Rules)
Runs rule-based automated quality assessment using a selected scorecard. After choosing a scorecard, you can open the default scores dialog to pre-set specific scores and optional comments for individual scoring points. Enable Post Score to publish the result automatically.
Auto QA (Gen AI Based)
Runs generative AI-powered quality assessment. Requires a Gen AI provider API key in your organization's settings. Select a scorecard and a Gen AI prompt. You can configure which scoring points to evaluate: Full Mode evaluates all points, while Partial Mode lets you choose specific points. Set a default score (N/A, Max, or Min) for points that are not evaluated.
Summary
Generates an AI-powered conversation summary using a selected Gen AI prompt. Requires a Gen AI provider API key in your organization's settings. If the selected prompt has been archived, the action cannot run until a valid prompt is chosen.
Set Topics
Runs topic categorisation on the conversation. Select which categories to apply — you can choose individual categories, or use the quick-select options: All Categories, All Categories (Rules), or All Categories (LLM). Use the label filter to narrow the list by category labels. If any LLM-based categories are selected, you must also choose a Gen AI prompt.
Add Comment
Automatically adds a text comment to the conversation. Enter the comment text in the provided field.
Add to the Todo List
Adds the conversation to a reviewer's to-do list. Configure:
Supervisors — select one or more reviewers.
Delivery interval — how often conversations are delivered (1, 2, 3, or 7 days).
Weekdays — when using a daily interval, choose which days of the week to deliver.
Skip scored sessions — exclude conversations that have already been scored.
Randomization — optionally enable random sampling with a target number (absolute count or percentage) and choose whether to randomize per agent or overall.
Webhook
Sends conversation data to an external URL over HTTP. The webhook editor is split into three tabs: Destination, Request Body, and Preview.
Destination
HTTP Method — choose
POSTorPUT.POSTis the default; selectPUTwhen your endpoint expects it (for example, a system that updates records with PUT). The chosen method applies to every delivery, including the Send Test action in the Preview tab. All other settings — authentication, custom headers, signing, timeout, and retries — behave the same for both methods.Webhook URL — the endpoint to send data to. Must be a valid HTTP or HTTPS URL pointing to a publicly reachable host. URLs that target
localhostor private/internal IP addresses are rejected for security.
You can also use conversation-specific placeholders in the path or query string, for example https://example.com/tickets/{{additional_info.ticket_system_id}}. Placeholders use JSONata expressions evaluated against the standard webhook payload, so both {{additional_info.ticket_system_id}} and {{$.additional_info.ticket_system_id}} work. Placeholder values are percent-encoded before substitution, and placeholders are not allowed in the scheme, host, credentials, port, or fragment.
Before upgrading an existing installation, review saved webhook URLs containing literal {{ or }}. A balanced {{...}} sequence is interpreted as a placeholder after this feature is enabled; percent-encode literal braces as %7B and %7D when placeholder evaluation is not intended.
Authentication — choose No Authentication, Basic Authentication (username and password), or Token Authentication (token or API key).
Headers — add custom request headers as name/value pairs using Add header. Both fields must be filled in for a header row to be saved; empty rows are ignored.
Delivery Behavior:
Timeout — request timeout in seconds (1–30, default 15).
Retry Attempts — number of retries on failure (0–10, default 3).
Webhook signing — toggle on to sign each delivery with a shared secret. When enabled, every request includes the
X-Webhook-Id,X-Webhook-Timestamp, andX-Webhook-Signatureheaders so the receiver can verify authenticity. The signing secret is stored masked and can be revealed with the eye icon.
Request Body
Switch between Standard Payload and Custom Mapping:
Standard Payload — choose which sections to include in the default JSON body:
Include session data (basic info, agent, team)
Include conversation summaries
Include conversation topics/categories
Include scorecard scores
All sections are included by default.
Custom Mapping — define a JSONata expression to fully reshape the outgoing payload. The editor opens pre-filled with the equivalent of the standard payload, which you can edit freely.
Click Validate to check the expression. Validation parses the expression and evaluates it against an empty payload — it fails if the expression is invalid, errors at runtime, or returns anything other than a JSON object (for example, a scalar or array). Custom mapping has runtime limits: $eval() and user-defined function declarations are disabled, but $parseJson() is available for parsing JSON strings.
If you switch back to Standard Payload but the custom mapping is still set to a non-default expression, saving the Ender prompts for confirmation before the custom mapping is discarded.
Preview
Use the Preview tab to verify how a real conversation will look when sent to your endpoint:
Pick a conversation from the list (drawn from the Ender's current filters) or switch to manual entry to type a specific conversation ID.
Click the play icon to Preview — the rendered JSON payload appears in the read-only viewer, and the preview also shows the fully resolved destination URL for that conversation.
Click Send Test to deliver the previewed payload to the configured URL right away. The result chip shows success or failure with the status code; click it to open Webhook test details with the response headers and response body (long bodies are truncated).
If a placeholder points to a missing or empty value, the preview and delivery fail before anything is sent so you can fix the configuration instead of sending a malformed URL.
Activating and Deactivating
Toggle the Activate switch in the edit view to enable or disable an Ender.
In the list view, use the toggle in the Enabled column to quickly activate or deactivate an Ender.
Archived Enders cannot be activated. Unarchive them first.
If an Ender uses a Gen AI prompt that has been archived, you cannot activate it until the prompt issue is resolved. A warning dialog explains which prompts are affected.
Version History
When editing an existing Ender, the right panel shows the History of saved versions. Click any version to view its configuration. The editor becomes read-only when viewing a past version. Select the Current version to return to the latest saved state and resume editing.
Running on Historical Conversations
You can retroactively apply an Ender to conversations that already exist:
Open the Ender you want to run.
Click the three-dot menu in the top-right corner and select Run Historical.
Select a start date and end date to define the range.
The dialog shows the estimated number of matching sessions.
Click Run to execute.
The maximum number of sessions per historical run is 20,000. If more sessions match, narrow the date range or add more filters.
Run Historical requires that the Ender is saved (no unsaved changes) and that you have the Conversations View permission.
Duplicating an Ender
In the list view, click the duplicate icon next to the Ender you want to copy.
Confirm the duplication.
A new Ender opens in the editor pre-filled with the original's configuration. The duplicate is created as inactive by default.
Modify the name and configuration as needed, then click Save.
Archiving and Deleting
Archive: Click the archive icon in the list view. Archived Enders stop running and move to the Archived tab. You can unarchive them later, but they remain inactive — toggle Activate to start them again.
Unarchive: Switch to the Archived tab and click the unarchive icon, or click Unarchive in the edit view banner.
Delete: Only archived Enders can be deleted. Switch to the Archived tab and click the delete icon. Deletion is permanent and cannot be undone.
Labels
Enders are automatically labeled based on their action types: Notification, Scoring, AutoQA, Summary, Categorisation, Comment, TODO, and Webhook. You can also add custom labels from the list view to organize Enders by purpose or project.
Conversations Without Transcript Text
Some conversations arrive with no transcript content — for example, uploaded calls that were too short or too small to be transcribed. These still carry metadata (agent, direction, duration, caller information, and so on) and can still trigger Enders, but individual actions that need transcript text will not run on them.
When an Ender fires on a conversation with no transcript text:
Action | Behavior on empty conversations |
Send Notification | Runs normally |
Add Comment | Runs normally |
Add to the Todo List | Runs normally |
Webhook | Runs normally |
Set Topics — rule-based or manual categories | Runs normally |
Summary | Skipped |
Auto QA (Gen AI Based) | Skipped |
Set Topics — Gen AI (LLM) categories | Skipped (rule-based selections in the same action still run) |
Skipped actions produce no session activity entry and no scorecard, summary, or topic result for that conversation. Actions earlier or later in the same Ender continue to run — the skip only affects the transcript-dependent action itself.
Self-Triggering Protection
Some actions produce new events on the conversation they act on — for example, Add Comment creates a comment event, Set Topics and Summary update the conversation, and Auto QA actions add scores. Without protection, an Ender whose trigger matches its own output could re-fire on the event it just produced, creating a loop.
To prevent this, an Ender is skipped when it would fire on an event that its own actions produced. Concretely:
If Ender A runs an action on a conversation and that action produces a new event, Ender A will not fire again on that specific event.
Other Enders that match the same event still fire normally — a comment added by Ender A can still trigger Ender B watching for new comments.
Events not produced by any Ender (new uploads, agent scoring, user-written comments, external system updates) trigger all matching Enders as usual.
This protection is automatic and applies to all triggers and actions — there is no setting to configure. You do not need to worry about accidentally chaining an Ender into itself, but you should still design chains between multiple Enders carefully, because cross-Ender chains are not blocked.
Important Notes
An Ender can have multiple actions that run in sequence on each matching conversation.
Gen AI-based actions (Auto QA, Summary) are only available when a Gen AI provider API key is configured in your organization's settings. Set topics is always available for rule-based categories; LLM-based categories additionally require a Gen AI provider.
Trigger and filter warnings are guidance, not hard blocks — you can still save an Ender with a warned configuration, but it may not produce the expected results.
The negative-filter exemption for topics relies on a categorisation action running on a compatible trigger. If categorisation is not configured, negative topic filters may also not match as expected.
An Ender will not re-trigger itself on events produced by its own actions. See Self-Triggering Protection above for details on how this affects Enders that add comments, set topics, generate summaries, or run Auto QA.
Summary, Auto QA (Gen AI Based), and the Gen AI (LLM) part of Set Topics are skipped on conversations that have no transcript text. Other actions on the same Ender continue to run. See Conversations Without Transcript Text above.
