---
title: Send Notification Native Action
slug: send-notification-native-action
docTags: 
createdAt: 2025-08-11T11:13:48.000Z
---

The **Send Notification** native action enables you to send actionable email alerts to users and groups. Notifications can include contextual data and provide rich redirection options to help users take immediate action.

## Overview

The Send Notification action allows playbook authors to:

- Send email alerts to specific users or groups
- Include dynamic content using playbook properties and expressions
- Provide clickable links to records, reports, dashboards, or playbooks
- Deliver notifications via email based on user email frequency preferences

## Key Benefits

- **Native Action:** Integrated directly into the playbook builder for streamlined workflow creation.
- **Flexible Recipients:** Send to individual users, user groups, or dynamically reference recipients using expressions.
- **Dynamic Content:** Use playbook properties and expressions to inject contextual information into notification titles and bodies.
- **Click Targets:** Provide direct links to relevant content (records, reports, dashboards, playbooks) in email notifications for immediate action.
- **Email Delivery:** Notifications are automatically sent via email based on user email frequency preferences (default: every 30 minutes).

## Inputs

The Send Notification action requires the following inputs:

### Required Inputs

- **Title:** The notification title/header text displayed in the notification.
  - Can be plain text or include playbook properties/expressions
  - Example: `"Security Alert: ${$event.data.threatType}"`
- **Recipients:** The users or groups who will receive the notification.
  - Can be selected from dropdown (users or groups)
  - Can reference playbook properties (e.g., `$actions.createRecordName.result.assigned-to`)
  - Can use expressions to dynamically determine recipients
  - Supports multiple recipients (array of user/group objects or email addresses)
  - Recipient format:
    - **User/Group objects**: `{ id: "userId", type: "User", name: "John Doe" }`
    - **Email addresses**: String values (e.g., `"user@example.com"`)
    - **Playbook properties**: Reference to upstream action outputs
- **Body:** The notification message content.
  - Can be plain text or include playbook properties/expressions
  - Supports multi-line text
  - Example: `"Record ${$actions.createRecordName.result.tracking-id} has been created and assigned to ${$actions.createRecordName.result.assigned-to}"`

### Optional Inputs

- **Click Target Type:** The type of target to open when the notification is clicked.
  - Options: `"record"`, `"report"`, `"dashboard"`, `"playbook"`
  - If not specified, notification has no click target
- **Click Target ID:** The identifier of the target to open.
  - Format depends on the click target type (see Click Targets section below)
  - Can reference playbook properties or use expressions

## Configuring the Send Notification Action

### Step 1: Basic Configuration

1. Open your playbook in the Turbine Canvas.
2. From the Add Panel, drag and drop the **Send Notification** action into your Canvas.
3. Click on the action block to configure it.
4. Provide a unique **Title** and **Key** for the action:
   - **Title:** The display name for the action (e.g., "Notify Security Team").
   - **Key:** A system-generated unique identifier (editable but must follow naming conventions).
   - **Description:** (Optional) Internal note to describe the purpose of the action.

### Step 2: Configure Notification Details

1. **Notification Title:**
   - Enter the header text for your notification
   - Use the ➕ icon to inject playbook properties or build expressions
   - Example: `"Security Alert: ${$event.data.threatType}"`
2. **Notification Recipients:**
   - Click to open the recipient selector
   - Select users or groups from the dropdown, or
   - Use the ➕ icon to inject a playbook property or expression
   - You can add multiple recipients
   - Recipients can be:
     - Specific users (selected from dropdown)
     - User groups (selected from dropdown)
     - Dynamic references (e.g., `$actions.createRecordName.result.assigned-to`)
     - Email addresses (when using expressions)
3. **Notification Body:**
   - Compose your message using plain text
   - Use the ➕ icon to inject playbook properties or build expressions
   - Supports multi-line text
   - Example: `"Record ${$actions.createRecordName.result.tracking-id} has been created."`

**Example Dynamic Parameters:**

- `${$event.data.recordId}` - Access event data
- `${$actions.actionName.result.tracking-id}` - Access action outputs
- `${$variables.variableName}` - Access playbook variables
- `${$inputs.inputName}` - Access playbook inputs

### Step 3: Configure Click Target (Optional)

The **Click Target** setting defines where users will be redirected when they click on a link in the email notification. This provides contextual access to relevant content within Turbine and allows users to take immediate action.

1. **Target Type**: Select one of the following options:
   - **Application record** (`"record"`)
   - **Report** (`"report"`)
   - **Dashboard** (`"dashboard"`)
   - **Playbook** (`"playbook"`)
2. **Target ID**: Configure based on the selected target type:

### Application Record

Redirects users to a specific record within a selected application.

**Configuration:**

1. **Target Type**: Select **Application record**.
2. **Application**: Use the dropdown to select the target application.
3. **Tracking ID**: Provide the record's tracking ID (not the internal record ID).
   - **Manual entry**: Type the tracking ID
   - **Playbook Property**: Use the ➕ icon to insert a property (e.g., `$actions.createRecordName.result.tracking-id`)
   - **Expression**: Build a dynamic expression

**Note:** The action automatically resolves tracking IDs to record IDs. The format stored is `"appId/recordId"`, but you provide the tracking ID.

### Report

Redirects users to a specific report view for quick data analysis or review.

**Configuration:**

1. **Target Type**: Select **Report**.
2. **Application**: Select the application that houses the report.
3. **Report**: Choose a report from the filtered list associated with the selected application.

**Use Case:** Ideal for summarizing events or redirecting users to reporting dashboards built on historical data.

### Dashboard

Sends users to a specific dynamic dashboard when the notification is clicked.

**Configuration:**

1. **Target Type**: Select **Dashboard**.
2. **Workspace**: Select the workspace containing the dashboard.
3. **Dashboard**: Use the dropdown to choose the destination dashboard.

**Use Case:** Use when visual analysis is required. The dashboard should be shared with the recipients or they must have view access permissions.

**Tip:** Pair this with dashboard-level or runtime filters to offer a more tailored view of the data upon redirect.

### Playbook

Launches or redirects the user to a specific playbook in Turbine.

**Configuration:**

1. **Target Type**: Select **Playbook**.
2. **Playbook**: Select the target playbook from the dropdown.

**Use Case:** Ideal for triggering manual actions, workflows, or enabling users to resume paused automation.

### Step 4: Apply Changes

Click **Apply** to save your configuration and include the action in your automation flow.

## Outputs

The Send Notification action provides the following outputs:

### Success Output

When the notification is sent successfully, the action completes with:

- **Status**: Success
- **Result**: "NotificationSent"

**Note:** The Send Notification action is a fire-and-forget operation. It does not return detailed output data. The action succeeds if the notification is queued for delivery.

### Error Output

If the notification fails to send, the action returns:

- `error`: Error information containing details about why the notification failed.

**Common Error Scenarios:**

- Invalid recipient IDs or email addresses
- Recipients not found or not accessible
- Invalid click target configuration
- Missing required inputs (title, recipients, body)
- Feature not enabled (UserNotifications feature must be enabled)

## How Notifications Are Delivered

Notifications are delivered via email based on user email frequency preferences:

- **Default email frequency**: Every 30 minutes (configurable per user)
- Users can configure their email notification preferences in their user settings
- Email notifications include the notification title and body, with links to the click target (if configured)
- Click targets in email notifications allow recipients to navigate directly to relevant content (records, reports, dashboards, or playbooks)

# In-App Notifications

In addition to email delivery, the Send Notification native action supports in-app notifications, allowing users to receive timely and actionable updates directly within the Turbine interface. In-app notifications surface important information within the product without requiring users to leave Turbine or rely solely on email.

In-app notifications are available within Turbine and are currently generated through the Send Notification native action. Users can configure whether they receive notifications via email, in-app, or both through their profile settings. Notifications are delivered according to those selected preferences.

## Accessing In-App Notifications

In-app notifications are accessible from the Notifications bell icon located in the top-right corner of the Turbine interface, adjacent to the global search icon.

When new notifications are available, a visual indicator (beacon) appears on the bell icon. Clicking the icon opens the Notifications panel.

By default:

- Notifications from the last 7 days are displayed.
- Notifications are scoped to the tenant the user is currently viewing.

# Notification Panel Features

## Read and Unread States

- Unread notifications display a blue indicator dot and a relative timestamp (for example, “37 minutes ago”).
- Clicking a notification marks it as read and redirects the user to the configured click target (if one was specified).
- Each notification includes an ellipsis (⋮) menu that allows users to mark it as read. 
- Users can mark all notifications as read using a single action.

## Tenant Filtering

The Notifications panel supports filtering notifications by tenant.

- Use the **All tenants** dropdown at the top of the panel to:
  - View notifications across all accessible tenants, or
  - Select a specific tenant to view notifications for that tenant
- Tenant selection persists for the duration of the user’s session.
- The default view is scoped to the tenant the user is currently on.

# Grouped Notifications

To reduce noise and keep the Notifications panel organized, related notifications are automatically grouped.

Notifications are grouped when they meet the following criteria:

- They occur
- The ClickTargetId and ClickTargetType are identical.
- The TenantId is identical.

## Grouping behavior:

- The most recent notification in a group is shown at the top.
- Groups display a link such as **“View 3 more updates”**.

Clicking the link expands the group to show all related notifications in reverse chronological order (latest first)

You can:

- Expand or collapse grouped notifications
- Mark an entire group as read
- Mark individual notifications within a group independently

If some notifications within a group are read and others are unread, the group displays a partial unread indicator.

## Use Cases

### Example 1: Notify on Record Creation

**Scenario:** Send a notification to the assigned user when a new record is created.

**Configuration:**

- **Title**: `"New Record Created: ${$actions.createRecordName.result.tracking-id}"`
- **Recipients**: `$actions.createRecordName.result.assigned-to`
- **Body**: `"A new record has been created and assigned to you. Please review and take action."`
- **Click Target Type**: `"record"`
- **Click Target ID**: `"${$actions.createRecordName.result.application-id}/${$actions.createRecordName.result.tracking-id}"`

**Result:** The assigned user receives a notification with a direct link to the new record.

### Example 2: Security Alert Notification

**Scenario:** Notify the security team when a high-severity threat is detected.

**Configuration:**

- **Title**: `"Security Alert: ${$event.data.threatType}"`
- **Recipients**: Select "Security Team" group from dropdown
- **Body**: `"A ${$event.data.severity} severity threat has been detected: ${$event.data.description}. Please investigate immediately."`
- **Click Target Type**: `"record"`
- **Click Target ID**: `"${$event.data.applicationId}/${$event.data.recordTrackingId}"`

**Result:** The security team receives an immediate notification with context and a link to the threat record.

### Example 3: MSSP Incident Collaboration

**Scenario:** MSSPs can use the Notification action to notify customers of:

- Active threats or policy violations
- Remediation status updates
- Scheduled or unscheduled service disruptions

**Configuration:**

- **Title**: `"Incident Update: ${$variables.incidentId}"`
- **Recipients**: Use expression to reference customer contact from record: `$actions.getRecordName.result.customer-contact`
- **Body**: `"Your incident ${$variables.incidentId} has been updated. Status: ${$actions.updateRecordName.result.status}. Please review the details."`
- **Click Target Type**: `"report"`
- **Click Target**: Select customer-facing incident report

**Result:** Customers receive timely updates via email, building trust and maintaining transparency.

### Example 4: Dashboard Alert

**Scenario:** Notify stakeholders when key metrics exceed thresholds.

**Configuration:**

- **Title**: `"Alert: ${$variables.metricName} Threshold Exceeded"`
- **Recipients**: Select "Stakeholders" group
- **Body**: `"The ${$variables.metricName} has exceeded the threshold of ${$variables.threshold}. Current value: ${$variables.currentValue}. Review the dashboard for details."`
- **Click Target Type**: `"dashboard"`
- **Click Target**: Select the metrics dashboard

**Result:** Stakeholders receive alerts with direct access to the relevant dashboard for analysis.

### Example 5: Playbook Completion Notification

**Scenario:** Notify users when a playbook completes successfully.

**Configuration:**

- **Title**: `"Playbook Completed: ${$playbook.name}"`
- **Recipients**: Use expression: `$inputs.notifyRecipients`
- **Body**: `"The playbook '${$playbook.name}' has completed successfully. ${$actions.finalActionName.result.summary}"`
- **Click Target Type**: `"playbook"`
- **Click Target**: Select the completed playbook

**Result:** Users receive completion notifications with a link to review the playbook execution details.

## Best Practices

- **Use Dynamic Recipients:** Reference recipients from upstream actions or playbook inputs to make notifications flexible and reusable.
- **Include Context:** Use playbook properties and expressions to include relevant context (record IDs, status, values) in notification titles and bodies.
- **Set Click Targets:** Always configure click targets when possible to provide direct access to relevant content and improve user experience.
- **Test Recipients:** Verify that recipient references resolve correctly, especially when using dynamic expressions.
- **Keep Titles Concise:** Notification titles should be brief and descriptive, as they appear as email subject lines.
- **Use Clear Body Text:** Write notification bodies that clearly explain what happened and what action (if any) is required.
- **Consider Email Frequency:** Be aware that email notifications are batched based on user preferences (default: every 30 minutes). For urgent notifications, consider using other communication channels.
- **Validate Click Targets:** Ensure click targets (especially record tracking IDs) are valid and accessible to recipients.

## Troubleshooting

- **Email Not Received:**
  - Verify recipients are valid users or groups
  - Check that recipients have access to the tenant/account
  - Verify UserNotifications feature is enabled
  - Check user email notification preferences (frequency settings)
  - Verify user email address is configured correctly
  - Check email delivery logs for errors
  - Remember emails are batched (default: every 30 minutes)
- **Click Target Not Working:**
  - Verify click target ID format is correct for the target type
  - For records, ensure tracking ID is valid and record exists
  - Check that recipients have access to the target (application, report, dashboard, playbook)
  - Verify click target type matches the target ID format
- **Invalid Recipients:**
  - Ensure recipient IDs or email addresses are correct
  - Verify recipient references resolve to valid users/groups
  - Check that recipients exist in the tenant/account
- **Expression Errors:**
  - Verify playbook property references are correct (e.g., `$actions.actionName.result.property`)
  - Check that referenced actions have completed successfully
  - Ensure expression syntax is valid
- **Feature Not Enabled:**
  - Ensure UserNotifications feature is enabled for your account
  - Contact support if you believe this feature should be available
