---
title: "Building Notification Workflows with Notification Center"
slug: "building-notification-workflows-notification-center"
updated: 2026-06-02T21:48:46Z
published: 2026-06-02T21:48:46Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://help.userflow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Building Notification Workflows with Notification Center

# Building Notification Workflows with Notification Center

Notification Center lets you build automated workflows that send notifications when specific Userflow events occur. You can send notifications to Slack channels, email addresses, or both—without writing any code.

## What is Notification Center?

Notification Center is a visual workflow builder where you:

1. **Choose an event** that triggers the notification (for example, "Flow Completed")
2. **Add conditions** to filter which events should send notifications (optional)
3. **Select destinations** where notifications should be sent (Slack channels, email addresses, or both)
4. **Customize the message** that gets sent, including dynamic user and company attributes
5. **Test the workflow** before activating it

Notification Center is **multi-channel** by design—it's not specific to Slack. You can use it to send email notifications, Slack notifications, or both, and support for additional channels (like Microsoft Teams) may be added in the future.

## Before you start

To use Notification Center with Slack, you need to:

1. **Connect the Slack integration** first → See: [Connecting Slack to Userflow](/userflow/docs/connecting-slack-to-userflow)
2. **Have the right role permissions:**
  - **Create/delete workflows:** Owner, Admin
  - **Enable/disable/update workflows:** Owner, Admin, Editor

## Creating your first workflow

### Step 1: Name your workflow

1. Go to **Settings** > **Notification Center**
2. Click **Create a workflow**
3. Enter a **name** for your workflow (e.g., "Trial Signup Flow Completed")
4. Optionally, add a **description** to help your team understand what this workflow does

### Step 2: Select an event

Choose the event that will trigger this notification.

Open the **Select event** dropdown and choose from the events Userflow is already receiving for your account. The dropdown lists Userflow's built-in events (the activity Userflow tracks automatically) alongside any custom events you're actively sending.

A custom event only works as a trigger if Userflow is genuinely receiving it. Typing a name into the event field does not create an event—if nothing in your product is sending that event, it stays empty and the workflow never fires. To trigger on something Userflow doesn't track automatically, set the event up first (for example, through the event tracker or your Userflow.js installation) and tie it to a real action in your app, then select it here.

**Example:** If you want to notify your team every time someone completes your "Product Tour" flow, select **Flow Completed** as the event.

### Step 3: Add conditions (optional)

Conditions let you filter which events trigger notifications. You can add two types of conditions:

#### Event attribute conditions

Filter based on properties of the event itself.

**Example:** Only send notifications when the "Product Tour" flow is completed (not other flows):

- Condition: `flow_name` equals `Product Tour`

**Note:** Not all events have event attributes, so some events may not expose any additional properties to filter on.

#### User and company attribute conditions

Filter based on properties of the user or company associated with the event.

**Examples:**

- Only notify when the user's `lifecycle_stage` is `Lead`
- Only notify when the company's `plan` is `Enterprise`
- Only notify when the user's `signup_date` is within the last 7 days

You can add multiple conditions. All conditions must be true for the notification to be sent.

### Step 4: Choose destinations

Select where you want notifications to be sent. You can choose:

- **Email** - Send to one or more email addresses
- **Slack** - Send to one or more Slack channels
- **Both** - Send to both email and Slack

#### Adding an email destination

1. Click **Add destination** > **Email**
2. Enter the email address
3. Repeat to add more email addresses

#### Adding a Slack destination

1. Click **Add destination** > **Slack**
2. Select a channel from the dropdown (only **public channels** are shown)
3. Repeat to add more channels

**Note:** You can only select from public channels in your connected Slack workspace. Private channels are not supported.

**Tip:** You can send the same notification to multiple destinations—for example, send to both a Slack channel and an email list.

### Step 5: Customize your message

For each destination you've added, you'll configure the message content.

#### Email message settings

- **Subject line** - The email subject
- **Message body** - The email content (supports rich text formatting)

#### Slack message settings

- **Message** - The message text that will appear in Slack (supports rich text formatting)

#### Using dynamic variables

You can inject dynamic user and company attributes directly into your messages using variable placeholders.

**Example message:**

```plaintext
A user just completed the Product Tour!

User: {{user_email}}
Company: {{company_name}}
Subscription: {{company_plan}}
Customer since: {{company_created_at}}
```

**Available variables:** Any custom attribute you've set up in Userflow via your Userflow.js installation, plus standard attributes like:

- `{{user_id}}`
- `{{user_email}}`
- `{{user_name}}`
- `{{company_id}}`
- `{{company_name}}`

To add a variable:

1. Type `{{` in the message field
2. Select the attribute from the dropdown
3. Close with `}}`

Variables will be replaced with actual values when notifications are sent.

### Step 6: Test your workflow

Before activating your workflow, test it to make sure notifications are sent correctly.

1. Click the **Test** button at the top of the workflow editor
2. Userflow will send a sample notification to all configured destinations
3. Check your Slack channel and/or email inbox to verify the message appears correctly

**Note:** Test notifications use placeholder data for variables (e.g., `user@example.com`, `Acme Corp`) since no actual event has occurred.

### Step 7: Activate your workflow

Once you're satisfied with your testing:

1. Click **Save** to save the workflow
2. Toggle the workflow status to **Active**

Your workflow is now live. Whenever the configured event occurs and all conditions are met, Userflow will send notifications to the destinations you specified.

## Managing workflows

### Viewing all workflows

Go to **Settings** > **Notification Center** to see a list of all workflows.

For each workflow, you'll see:

- Workflow name
- Status (Active, Inactive, Draft)
- Last modified date
- Who created it

### Editing a workflow

1. Click on a workflow from the list
2. Make your changes
3. Click **Save**

**Note:** Changes to an active workflow take effect immediately.

### Enabling or disabling a workflow

Toggle the **Active/Inactive** switch on any workflow to turn it on or off without deleting it.

**Use case:** Temporarily disable a workflow during maintenance or testing, then re-enable it later.

### Deleting a workflow

1. Click on a workflow
2. Click the **Delete** button
3. Confirm the deletion

**Warning:** Deleting a workflow is permanent and cannot be undone.

## Common workflow examples

### Notify a channel when users complete onboarding

**Event:** Flow Completed

**Conditions:**

- `flow_name` equals `Onboarding Flow`

**Destination:** Slack - `#product-team`

**Message:**

```plaintext
🎉 New user completed onboarding!

User: {{user_email}}
Company: {{company_name}}
Plan: {{company_plan}}
```

### Alert customer success when NPS detractors respond

**Event:** Question Answered

**Conditions:**

- the question comes from your NPS flow (for example, `flow_name` equals `Global NPS`)
- the answer (`nps_score`) is less than or equal to `6`

**Destination:** Slack - `#customer-success`

**Message:**

```plaintext
⚠️ NPS Detractor Alert

User: {{user_email}}
Company: {{company_name}}
Score: {{nps_score}}
Feedback: {{nps_comment}}
```

### Send a daily digest email of all flow completions

**Event:** Flow Completed

**Conditions:** (none - send for all flows)

**Destination:** Email - `product-team@company.com`

**Message:**

```plaintext
Subject: Daily Flow Completion Digest

Flow: {{flow_name}}
User: {{user_email}}
Completed at: {{completed_at}}
```

**Note:** This will send one email per flow completion. For true daily digest functionality, you would need to use a separate tool or custom integration to batch these.

## Notification Center vs. Custom Alerts

You may be wondering how Notification Center differs from the Custom Alerts feature (Settings > Alerting).

**Custom Alerts** are designed for performance monitoring—they fire when a flow's metrics drop below a threshold (e.g., completion rate falls below 50%).

**Notification Center** sends notifications based on individual user activity—every time a specific event occurs.

Both features can send notifications, but they serve different purposes:

| Feature | Use for | Triggered by |
| --- | --- | --- |
| **Notification Center** | Real-time user activity alerts | Individual user events (e.g., one user completes a flow) |
| **Custom Alerts** | Performance monitoring | Metric thresholds (e.g., completion rate drops) |

You can use both features together. For example:

- Use **Notification Center** to notify your CS team every time a user submits an NPS detractor response
- Use **Custom Alerts** to notify your product team if the overall NPS completion rate drops below 20%

## Troubleshooting

### My workflow isn't sending notifications

**Possible causes:**

1. **The workflow is inactive** - Check that the toggle is set to "Active"
2. **The event hasn't occurred** - Verify that the trigger event is actually happening in your product
3. **Conditions are too restrictive** - Review your conditions to make sure they're not filtering out all events
4. **Slack connection expired** - Go to Settings > Integrations > Slack and verify the connection status
5. **The selected Slack channel was deleted or renamed** - Edit your workflow and reselect the channel

**How to debug:**

1. Use the **Test** button to send a sample notification—this bypasses conditions and verifies your destinations work
2. Check the **Logs** tab in Settings > Integrations > Slack to see if any notifications were sent (or failed)
3. Temporarily remove all conditions to see if notifications start working

### Variables aren't being replaced with actual values

**Possible causes:**

1. **The attribute doesn't exist for that user/company** - Not all users have all attributes
2. **The variable syntax is incorrect** - Make sure you're using `{{attribute_name}}` format
3. **The attribute name doesn't match** - Check your Userflow.js installation to verify the attribute names

**Fix:**

1. Go to **Users** in Userflow and look up a test user to see which attributes are actually set
2. Update your workflow to only use attributes that exist
3. Consider adding fallback text in your message

## Best practices

### Start simple, then iterate

Don't try to build complex workflows with multiple conditions right away. Start with:

1. One event
2. One destination
3. A simple message

Test it, make sure it works, then add conditions and additional destinations.

### Use descriptive workflow names

Instead of "Workflow 1" or "Slack notification", use names like:

- "Trial Signup Completed → Product Channel"
- "NPS Detractor Alert → CS Team"
- "Enterprise User Onboarded → Sales Team"

This makes it easier to manage workflows as your list grows.

### Test before activating

Always use the Test button before activating a workflow. This ensures:

- Your destinations are configured correctly
- Your message formatting looks right
- Variables are replaced correctly

### Monitor the logs

Check the Logs tab in Settings > Integrations > Slack periodically to catch any delivery failures early.

### Don't over-notify

Be selective about which events warrant notifications. If your team is getting dozens of Slack messages per hour, they'll start ignoring them.

**Good use of notifications:**

- High-value events (enterprise user signs up, NPS detractor response)
- Exceptions and errors (flow failed to start, missing tooltip target)
- Key milestones (user completes onboarding, reaches activation)

**Bad use of notifications:**

- Every single flow view
- Every button click
- Low-priority informational events

### Route by team, not by event

A common mistake is creating one workflow per event and sending everything to a single #notifications channel. Within a week, the channel becomes noise and people mute it.

Instead, route notifications by who owns the response:

- Sales-relevant signals (enterprise signups, trial-to-paid conversions) → your sales channel
- CS-relevant signals (NPS detractors, support ticket triggers, churn risk events) → your CS channel
- Product-relevant signals (feature usage, flow completion, friction events) → your product channel

Each team gets a channel with signals they can act on. No team is asked to filter through other teams' noise.

### Use conditions to keep volume manageable

Adding conditions is the most effective way to prevent notification fatigue. A few patterns that work well:

- **Threshold conditions** — only notify when an attribute crosses a meaningful value (e.g., `account_arr &gt; 50000`).
- **Time-window conditions** — only notify for recent users (e.g., `signup_date is within the last 7 days`).
- **Combined conditions** — high-value AND high-recency. Most actionable; lowest noise.

### Test variable substitution before going live

Variables silently fail when the underlying attribute isn't set on a user. Always send a Test notification first and confirm every `{{variable}}` in your message resolves to a real value. If you see empty placeholders or raw `{{variable_name}}` in the test, the attribute isn't set — fix the underlying installation or remove the variable from your message template.
