Skip to main content

Enders: Detailed Feature Guide

Automate routine tasks by creating trigger-based rules that execute actions on conversations, such as sending notifications, running Auto QA, setting topics, adding comments, and more. This article is automatically maintained (enders).

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

  1. 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

  1. Click + Create Ender in the top-right corner.

  2. Enter a name for the Ender.

  3. Optionally assign a team.

  4. Configure the trigger, conditions, and actions (see sections below).

  5. Use the Activate toggle to enable or disable the Ender.

  6. 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.

Use Search by itself to match the whole conversation, including its transcript, comments, and summaries. On New summary added, Search alone is evaluated again for every new summary and may repeat actions while the conversation still matches. Add Summary prompt to check only the newly added summary.

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.

  • Paired Search checks summary text only. Phone numbers and emails are searched as summary text. Recognized field-prefixed queries (client:, partner:, customer:, клієнт:, партнер:) are not supported in the pair. Use words or quoted phrases from the summary.

  • Pair Summary prompt with Search to inspect the content of that same triggering summary. Select at least one prompt; the Ender runs when the new summary uses any selected prompt and its content matches the search.

  • The pair works only with the New summary added trigger and needs exactly one Search condition with a non-empty query and exactly one Summary prompt condition. Neither condition can be negated (NOT). Otherwise the editor shows an error and Save stays disabled until you fix the conditions. Other conditions can still be added and must also match.

  • Search with Summary prompt checks summaries as they are added. It cannot run on historical conversations. Open Conversations is also unavailable for the pair because it has no triggering summary.

  • With Summary prompt alone, 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.

For a paired Ender, independently matching summaries can each add a comment. While a notification is pending, the same conversation and prompt do not queue another notification for the same Ender action and recipient. Overlapping groups include only pairs that are not already pending; after delivery, that pair can notify again.

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 POST or PUT. POST is the default; select PUT when 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 localhost or private/internal IP addresses are rejected for security.

The host name is checked again each time a request is sent, including test sends and retries. Every address the host name resolves to must be public; if any of them is private or internal, or the name cannot be resolved, the request is not sent. Each request then goes only to one of those checked addresses.

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. If you add a Host header, its value is sent as is; the connection and HTTPS certificate check still use the host from the Webhook URL.

  • 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, and X-Webhook-Signature headers so the receiver can verify authenticity. The signing secret is stored masked and can be revealed with the eye icon.

Keep these delivery rules in mind:

  • Redirects are not followed. A redirect response (3xx) counts as a completed delivery, but the payload does not reach the redirect target. Use the endpoint's final URL.

  • Requests go straight to the destination, not through an outbound proxy. For self-hosted installations, the server must be able to reach the endpoint directly.

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:

  1. Pick a conversation from the list (drawn from the Ender's current filters) or switch to manual entry to type a specific conversation ID.

  2. 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.

  3. 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 the destination host no longer resolves to public addresses when you click Send Test, the result chip shows a failure without a status code and nothing is sent.

When the Ender pairs Search with Summary prompt, the conversation list is not available because the pair matches only newly added summaries. Type a conversation ID to preview the payload instead.

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:

  1. Open the Ender you want to run.

  2. Click the three-dot menu in the top-right corner and select Run Historical.

  3. Select a start date and end date to define the range.

  4. The dialog shows the estimated number of matching sessions.

  5. 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. It is unavailable for Enders that pair Search with Summary prompt, because that pair checks summaries only as they are added.

Duplicating an Ender

  1. In the list view, click the duplicate icon next to the Ender you want to copy.

  2. Confirm the duplication.

  3. A new Ender opens in the editor pre-filled with the original's configuration. The duplicate is created as inactive by default.

  4. 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 caused by its own earlier action on that conversation, either directly or through other Enders. Concretely:

  • If Ender A produces an event that triggers Ender B, events caused by B's run cannot trigger A again. This stops a chain such as A → B → A before A runs a second time.

  • Other matching Enders can still run — for example, A can trigger B, and B can trigger C, provided that Ender has not already contributed to the event that would trigger it.

  • Independent events (new uploads, agent scoring, user-written comments, external system updates) trigger all matching Enders as usual, including Enders that ran on earlier updates to the conversation.

This protection is automatic and applies to all triggers and actions — there is no setting to configure. Chains between Enders remain supported; an Ender cannot trigger itself again through its own chain of changes.

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 caused by its own earlier actions on that conversation, directly or through other Enders. Independent updates can trigger it again. See Self-Triggering Protection above for details.

  • 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.

Did this answer your question?