---
title: Create and manage flows
source: https://docs.newrelic.com/docs/pathpoint/create-manage-flows
---

> #### 💡 PREVIEW
>
> We're still working on this feature, but we'd love for you to try it out!
>
> This feature is currently provided as part of a preview program pursuant to our [pre-release policies](https://docs.newrelic.com/docs/licenses/license-information/referenced-policies/new-relic-pre-release-policy).

This page covers the updated version of Pathpoint. For the generally available version, see [Introduction to New Relic Pathpoint](https://docs.newrelic.com/docs/new-relic-solutions/business-observability/intro-pathpoint).

A flow is the unit you build in Pathpoint: one business journey, broken into stages, levels, steps, and the signals that report their health. This page covers how to build a flow in the UI, manage it once it exists, and plan its design.

## Build a flow [#build-a-flow]

### Create a flow [#create-a-flow]

To create a new flow, click **+ Add a flow** in the top right of the **Flows** page. In the **Create a flow** dialog, choose **Blank flow** to build a new flow from scratch, or **Import a flow** to create one from an existing JSON configuration.

#### Blank flow [#blank-flow]

The **Pathpoint flow** dialog creates the flow in the account you currently have selected. Fill in the following fields:

-   **Flow name** (required): The name displayed on the flow and on the **Flows** page.
-   **Category** (optional): A business category to help organize your flows, such as E-commerce or Onboarding.
-   **Description** (optional): A short description of the flow, such as "Purchase flow for mobile app."
-   **Refresh data every**: How frequently the flow refreshes its health data. Choose 1, 5, 10, 15, or 30 minutes. Defaults to 1 minute.

Click **Save** to create the flow. This opens it in draft mode, where you'll build out the structure of your journey.

#### Import a flow [#create-from-json]

If you already have a flow configuration as JSON, you can create a flow from it instead of building one by hand. This is useful for moving a flow between accounts, restoring one from version control, or starting from a configuration a colleague exported.

Drag a JSON file into the input field, click **Upload JSON**, or paste the JSON directly, and edit it in place if you need to.

Under **Select what to import**, choose how much of the configuration to bring across:

-   **Structure only**: Imports the stages, levels, and steps, without signals or KPIs. Use this to reuse a flow's shape without inheriting its signals.
-   **Everything**: Imports the structure along with its signals and KPIs.

Click **Save** to create the flow.

> #### 💡 NOTE
>
> If the configuration includes signals you don't have access to, those signals are added to the flow but stay hidden from you, and a **Missing signals** indicator appears at the top of the affected stages. A user with access to those signals sees them and can edit how the flow uses them.

To get the JSON for a flow you've already built, open it and select **View as code** from the **...** menu. See [View as code](https://docs.newrelic.com/docs/pathpoint/flow-view#view-as-code).

### Add and configure stages [#add-and-configure-stages]

Draft mode opens with a stage, level, and step already scaffolded. Click on the stage name to rename it.

To add a new stage, click the **+** icon on a stage header and select **Add a stage**.

To add a KPI directly to a stage, click the **+** icon and select **Add a KPI**. See [KPIs](https://docs.newrelic.com/docs/pathpoint/kpis) for more details.

To configure a stage, click the gear icon on the stage header and select **Adjust settings**. Stage settings include:

-   **Stage link** (optional): Add a URL to provide additional context for the stage, such as a dashboard or document.
-   **Stage shape**: Set the visual shape of the stage to reflect its role in the journey: None, Start, Connect, or Stop.
-   **Health setup**: Choose how the stage health is determined:
    -   **Rollup of all levels**: The stage status reflects the most severe status across all its levels. Use this when you want the stage to react as soon as any level has trouble.
    -   **Alert policy and conditions**: Set up custom alert policies and conditions to determine the health status of the stage. This method lets you define specific conditions that trigger stage health status changes based on alert states. Use this when you want the stage to turn critical based on a stage KPI breaching a threshold.

To delete a stage, click the gear icon and select **Delete**.

### Add and configure levels and steps [#add-and-configure-levels-and-steps]

To add a level, click **+ Add a level** at the bottom of a stage. Levels are automatically numbered based on their position in the stage.

To add a step to a level, click the **+** icon inside the level. To rename a step, click on the step name and type directly.

To configure a step, click the **...** menu on the step and select **Settings**. Step settings include:

-   **Step link** (optional): Add a URL to provide additional context for the step, such as a dashboard or document.
-   **Status configuration**: Choose how the step health is determined:
    -   **Exclude step from level status**: When checked, the step still displays its own health but doesn't contribute to the level's health rollup.
    -   **Rollup the worst status**: The step health reflects the most severe status of any signal. Optionally enable **Apply only when** to set a threshold before the status change takes effect.
    -   **Rollup the best status**: The step health reflects the best status of any signal.
    -   **Included signals**: Select which signals are included in step status determination. Defaults to all signals. Signals defined via queries are not included if queries are present.

To add signals to a step, click **+ Add signals** inside the step. This opens the **Select signals** overlay, where you can browse and select the signals that determine the health of the step.

#### Select signals manually [#select-signals-manually]

Use the **Entities** or **Alerts** tab depending on the type of signal you're looking for, then browse or search for signals by name. Check the box next to a signal to add it to the step. To remove a signal, uncheck it in the table or click the **x** next to it in the **Selected signals** list.

#### Use dynamic filters [#use-dynamic-filters]

Instead of selecting signals one by one, you can use filters to dynamically target a set of signals. Dynamic filters determine the signals in scope each time the flow loads. This is useful when your signal set may change over time.

To use a dynamic filter, apply your desired filter criteria and click **Add this filter**. The filter definition is added to the **Selected signals** list along with any signals currently matching it.

To remove a dynamic filter, click the **x** next to the filter definition in the **Selected signals** list.

> #### ⚠️ IMPORTANT
>
> Dynamic filters cannot be edited after creation. To change a filter, remove it and recreate it.
>
> Dynamic filters also can't target alert conditions (`domain = 'AIOPS' AND type = 'CONDITION'`). To include an alert condition in a step, [select it manually](#select-signals-manually) instead.

To delete a step, click the **...** menu and select **Delete**. To delete a level, click the **x** icon next to the level.

### Save and edit a flow [#save-and-edit-a-flow]

When you're done building, click **Save** in the top right to save your changes and exit draft mode. To abandon your changes instead, click **Discard changes**.

To come back to a saved flow, click **Edit** in the top right of the Flow view. Your changes stay in draft until you save them.

In draft mode you can update the flow's stages, levels, steps, and signals using the same actions described in [Add and configure stages](#add-and-configure-stages) and [Add and configure levels and steps](#add-and-configure-levels-and-steps) above.

To manage noise when editing a large flow, use the **Collapse all** toggle in the top right to hide all signals and show only the flow structure. This makes it easier to focus on stages, levels, and steps without the distraction of individual signals.

When you're ready, click **Save** in the top right to save your changes and return to the Flow view.

### Resolve editing conflicts [#resolve-editing-conflicts]

More than one person can edit a flow at the same time. If someone else saves while you're still editing, a **You're editing an older version** dialog appears when you try to save. It names the person who saved and gives you two options:

![A screenshot showing the You're editing an older version dialog with Preview changes and Cancel options.](https://docs.newrelic.com/images/pathpoint-editing-conflict.webp "You're editing an older version")

-   **Preview changes**: Shows you their version so you can decide how to proceed.
-   **Cancel**: Returns you to draft mode with your changes intact.

In preview, a banner gives you three ways forward:

![A screenshot showing the You're previewing the latest version banner with Exit preview, Overwrite changes, and Accept changes and refresh options.](https://docs.newrelic.com/images/pathpoint-preview-conflict.webp "Previewing the latest version")

-   **Exit preview**: Returns you to draft mode with your changes intact.
-   **Overwrite changes**: Saves your version, replacing theirs.
-   **Accept changes and refresh**: Discards your changes and loads their version.

> #### 💡 TIP
>
> The API applies the same check through the flow's `version` field. See [Update a flow](https://docs.newrelic.com/docs/apis/nerdgraph/examples/nerdgraph-pathpoint-flows/#update-flow).

## Create and manage flows programmatically [#programmatically]

As well as building flows in the UI, you can create and manage them as code:

-   **NerdGraph**: Create, read, update, duplicate, and delete flows through the API. See [NerdGraph tutorial: Create and manage Pathpoint flows](https://docs.newrelic.com/docs/apis/nerdgraph/examples/nerdgraph-pathpoint-flows).
-   **Terraform**: Manage flows as infrastructure-as-code, so your Pathpoint setup lives in version control alongside the rest of your configuration. See the [`newrelic_pathpoint_flow`](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/resources/pathpoint_flow) resource.

To get the code for a flow you've already built, open it and select **View as code** from the **...** menu. That gives you the Terraform configuration for the flow, along with the NerdGraph mutations and query that create, update, and read it. See [View as code](https://docs.newrelic.com/docs/pathpoint/flow-view#view-as-code).

## Duplicate a flow [#duplicate-a-flow]

To duplicate a flow, click the **...** menu on any row of the **Flows** page and select **Duplicate**.

This opens the **Duplicate a flow** dialog. You can update the following before saving:

-   **Flow name** (required): Defaults to the original name with "Copy" appended.
-   **Select an account**: The account to create the duplicate in. Defaults to the current account, so use this to copy a flow into a different account.
-   **Category**: Inherited from the original flow.
-   **Description**: Inherited from the original flow.
-   **Refresh data every**: Inherited from the original flow.

Choose what to duplicate:

-   **Add Structure (stages, levels, steps)**: Copies the stages, levels, and steps only, without signals or KPIs.
-   **Everything (structure, signals, flow KPIs)**: Copies the structure along with its signals and KPIs.

> #### ⚠️ IMPORTANT
>
> KPIs aren't copied if you duplicate a flow into a different account.

Click **Save** to create the duplicate.

## Manage a flow [#manage-a-flow]

In the **General settings** tab you can update a flow's core properties, keep your team connected to it, and delete it.

### Update flow settings [#update-flow-settings]

Click **Edit** to update the following properties:

-   **Flow name**: The name displayed on the flow and on the **Flows** page.
-   **Category**: The business category associated with the flow.
-   **Description**: A short description of the flow.
-   **Refresh data every**: How frequently the flow refreshes its health data.

This tab also shows who created the flow and when, and who last edited it.

### Contacts [#contacts]

Add emails or Slack channels to keep your team connected to this flow. Click **Add contact** to add a contact.

### Links [#links]

Add runbooks, repositories, and other relevant documents to provide additional context for the flow. Click **Add links** to add a link.

### Delete a flow [#delete-a-flow]

To delete a flow, click **Delete flow** in the bottom right of General Settings. You can also click the **...** menu on any row of the **Flows** page and select **Delete flow**.

> #### ⚠️ CAUTION
>
> Deleting a flow is permanent and cannot be undone.

## Plan a flow [#plan-a-flow]

Before you build a flow, it helps to plan its design, work through some examples, and think about which signals to use.

**Design a flow**

A flow models a business journey, and its stages represent the higher-level phases that make up that journey. Before you build anything, work out what your business process is and how you'd describe it in sequence. It often helps to look at how other organizations in a similar industry model theirs:

-   Hotel or hospitality
-   Cruise line or airline
-   Rideshare
-   Consumer packaged goods
-   Online marketplace
-   General retail
-   Quick-service restaurant
-   Mining, construction, oil, gas
-   Digital streaming media
-   Online news media
-   Retail or commercial banking
-   Insurance
-   Talent management

    Within an industry, it's often useful to model more than one flow. In insurance, for example, you might model purchasing a policy and filing a claim as separate flows. Depending on how your organization is structured, you might also separate home insurance from auto, or consumer from commercial. Start with a simple flow of four or five stages, then break it down or add to it later. Stage names are generally non-technical: they may be industry specific, but they should be understood by any C-level or VP in the organization.

    Focus first on the stages a user or process moves through. Brainstorming a high-level flow is often the hardest part, but a complete business journey usually contains more than is obvious when you're looking at the services and infrastructure that run it.

**Stage examples**

These flows show how three industries break a journey into stages:

| Industry            | Flow description       | Stages                                                                                                                                                       |
| ------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Hotel (hospitality) | Guest booking and stay | - Browse available rooms - Book a room - Check in and stay - Check out                                                                                       |
| Online marketplace  | Basic purchase journey | - Browse available products - Add to and manage products in a cart - Complete a purchase - Receive or return a purchase - Manage notifications and marketing |
| Rideshare           | Book and take a ride   | - Book a ride - Get assigned a driver - Start a ride - End a ride - Pay - Provide feedback                                                                   |

**Step examples**

Steps bridge the gap between the abstraction of stages and the detail of signals. Stages are meant to be understood by higher-level stakeholders, while steps are often more technical or operations specific. A step doesn't need to map to one specific signal. Signals are where you connect to the underlying telemetry.

These steps break down three stages of the rideshare flow above:

| Flow::Stage         | Steps                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------- |
| Rideshare::Book     | - Login - Search - Set pickup - Set destination - Select ride type - Payment option - Confirm ride |
| Rideshare::Payment  | - Payment initiation - Payment processing - Verification - Payment confirmation                    |
| Rideshare::Feedback | - Initiate feedback request - Receive user feedback - Aggregate ratings                            |

**Select relevant signals**

Focus on stages and steps first, then find signals for them. Working top-down lets you think in terms of what matters to the business process before you go looking for low-level telemetry, and it helps you prioritize which signals to capture. Pathpoint lets you select any entity or alert condition as a signal, which can make the choice daunting. We recommend working in this order:

1.  Journey-critical front-end transactions or SLIs that directly impact revenue or customer experience.

2.  Journey-critical back-end transactions or SLIs that directly impact revenue or customer experience.

3.  Journey-critical third-party services, often obtained through Synthetics.

4.  The overall health of the most important services in each step.

5.  Support infrastructure and platforms relevant to each step, such as load balancers, container services, managed databases, or messaging systems.

    For a login step, for example, you might consider:

6.  The JavaScript error rate for the login page action.

7.  The overall latency for the login page action.

8.  SLIs related to back-end transactions for authenticating.

9.  Back-end transactions or services related to user lookup.

10. The health of databases used for storing user information.

11. The health of a load balancer sitting in front of the authentication service.

12. The health of a Redis cache holding user state information.

    The goal is to provide signals that are reasonably independent of each other, so that when an alert event occurs you can deduce the likely problem from what turns red.

## Access permissions [#access-permissions]

What you can do in Pathpoint depends on three things: your user type, the permissions your role grants you, and the accounts you have access to.

### Role-based access control [#role-based-access-control]

Pathpoint has its own capability in the permissions list, under **New Relic One**. It's account-scoped, so a user's Pathpoint access applies to the accounts their role covers.

> #### ⚠️ IMPORTANT
>
> Only [full platform users](https://docs.newrelic.com/docs/accounts/accounts-billing/new-relic-one-user-management/user-type) get all of the Pathpoint permissions below. Basic and core users don't, so their access stays limited regardless of the role they're assigned.

The **Pathpoint** capability has three permissions:

| Permission | Grants access to                                                                                   |
| ---------- | -------------------------------------------------------------------------------------------------- |
| **Read**   | Viewing flows and their health data                                                                |
| **Modify** | Creating flows and editing existing ones, including their stages, levels, steps, signals, and KPIs |
| **Delete** | Deleting flows                                                                                     |

To grant these permissions, an organization admin adds them to a [custom role](https://docs.newrelic.com/docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial/#roles) and assigns that role to a group. To find the roles UI, go to **[one.newrelic.com](https://one.newrelic.com/all-capabilities)**, click the [user menu](https://docs.newrelic.com/docs/accounts/accounts-billing/general-account-settings/intro-account-settings), then go to **Administration > Access management > Roles**.
