Sales Pipeline

📅 Published on

📝 Last updated

Documentation

»

Sales Add-ons

»

Sales Pipeline

Overview

Sales Pipeline is the CRM deal management tool built into Groundhogg. It lets you track deals through customisable pipelines and stages, manage your sales team’s activity, connect deal events to automation flows, and report on revenue and win rates — all without leaving WordPress.

You can download this add-on from the Groundhogg website or as part of the Plus plan (and above) and install it on your website.

Once installed and activated, a Pipelines menu item appears under the Groundhogg menu in your WordPress admin.

Pipelines

A pipeline is the top-level container that represents a sales process — for example, “New Clients,” “Enterprise Deals,” or “Renewals.” Each pipeline contains stages, and each stage contains deals.

Create a Pipeline

Go to Groundhogg → Pipelines and click New Pipeline. Give the pipeline a title, add your initial stage names, and click Create Pipeline. You will be redirected to the new pipeline’s board view.

Edit a Pipeline

From the pipeline board, click the three dots (⋮) in the top right to access pipeline options. From here you can rename the pipeline, manage products, view reporting, or delete the pipeline.

Delete a Pipeline

Click the three dots (⋮) in the top right of the pipeline and select Delete. Deleting a pipeline also deletes all stages and deals within it.

Stages

Stages represent the steps in your sales process within a pipeline — for example, “Lead,” “Proposal Sent,” “Negotiation,” “Closed.” Deals move through stages as they progress.

Add a Stage

From within a pipeline, click the + icon near the top of the board. Enter the stage name and click Add Stage. The new stage is added to the end of the pipeline.

Reorder Stages

Hover over the top of any stage column to reveal the left and right arrow controls. Click either arrow to move the stage one position in that direction.

Rename or Delete a Stage

Hover over the top of any stage column and click the three dots (⋮) that appear. Select Rename to rename the stage or Delete to remove it.

Deals

A deal represents a sales opportunity. It belongs to a pipeline stage, is associated with one or more contacts, and tracks the key information your team needs to close the sale.

Add a Deal

Hover over the stage you want to add a deal to and click the + Add Deal button that appears. Fill in the deal details:

  • Title — give the deal a name (e.g. what you are selling or the name of the prospect). If left empty, the contact’s name will be used.
  • Contacts — associate one or more existing contacts, or create a new contact directly from the deal.
  • Assigned to — assign an owner (sales rep) to the deal. Changing the deal owner also updates the associated contact’s owner.
  • Projected Close Date — the expected close date for this deal.
  • Priority — High, Medium, or Low.
  • Close Probability — a percentage (0–100) representing the likelihood of closing.
  • Product Interest — what you are selling, at what price, and in what quantity. Products from the pipeline’s product list will auto-fill with their default price.
  • Custom Properties — any custom fields defined for the pipeline.

Edit a Deal

Double-click on any deal card to open the edit panel. All deal fields are editable from here.

Move a Deal

Drag and drop a deal card to move it to a different stage. You can also move deals between pipelines from within the edit panel.

Mark a Deal as Won or Lost

Open the deal for editing. At the top of the panel, next to the deal title, click the thumbs up (👍) to mark the deal as won, or the thumbs down (👎) to mark it as lost. Won and lost deals are removed from the active pipeline board.

Add Notes to a Deal

Open the deal for editing. In the notes section on the right side of the panel, click the + icon to add a new note. Notes are useful for logging call summaries, meeting outcomes, or any information relevant to the deal.

Send an Email to Deal Contacts

Open the deal for editing and click the email icon in the row next to the deal title. This opens a compose window addressed to all contacts associated with the deal. If you are not the account owner, the account owner will be cc’d on the email.

Search and Filter Deals

From the pipeline board, use the controls in the top toolbar to find specific deals:

  • Quick search — click the search icon and type a deal name to filter the board instantly by deal title.
  • Filter — click the filter icon then the + to add filters by deal value, close probability, owner, projected close date, date closed, or date created. Multiple filters can be combined. Click Clear Filters to reset.

Custom Properties

Each pipeline can have its own set of custom properties — additional fields that appear on every deal in that pipeline. To manage custom properties, open a deal for editing and click Add Custom Properties. Enter a property group name, then add individual fields by type (text, number, date, dropdown, etc.). Custom properties are available for use with the {deal_custom_field.field_name} replacement code.

Managing Products

You can add products arbitrarily to any deal as free-text entries. For consistency in names and pricing across your team, you can also define a central product list for each pipeline. Products from the list auto-fill with their default price when selected in a deal, though the price can be overridden for any specific deal.

To edit the product list, click the three dots (⋮) in the top right of any pipeline and select Setup Products. Enter product names and default prices, then click Save Products.

Triggers

The Sales Pipeline add-on includes one funnel trigger: Deal Moved.

Deal Moved

Triggers a flow when a deal is moved to a specific stage or when a deal is marked as won or lost. Configure it with:

  • Run when a deal is moved to… — select a pipeline and then a specific stage, or select Won or Lost as the outcome.

All contacts associated with the deal will enter the flow when the trigger fires.

Actions

The Sales Pipeline add-on includes two funnel actions: Create Deal and Move Deal.

Create Deal

Creates a new deal for the contact in the specified pipeline and stage. Configure it with:

  • Name — the deal title. Leave empty to use the contact’s full name. Merge tags are supported.
  • Pipeline and Stage — where the new deal will be created.
  • Assign to — select a deal owner. Assigning a deal owner also updates the contact’s owner.
  • Close date — either Within a time period (number of days, weeks, months, or years from now) or By a specific date (a fixed date, a contact meta field, or a merge tag resolving to a date).
  • Close probability — percentage chance the deal will close.
  • Priority — High, Medium, or Low.
  • Products — add product name, price, and quantity. Merge tags are supported in all three fields.
  • Notes — any notes to add to the deal at creation.

Move Deal

Moves the contact’s active deal in the specified pipeline to a new stage, or marks it as won or lost. Configure it with:

  • Pipeline — select the pipeline containing the deal to move.
  • Stage — select the destination stage, or select Won or Lost to close the deal.

All active deals in the selected pipeline related to the current contact will be moved. If a deal was created earlier in the same flow using the Create Deal action, that specific deal will be moved instead.

Contact Deals Widget

Every contact record displays a Deals panel showing all deals associated with that contact — their title, pipeline, stage, value, priority, status, and close date. Click any deal to open it for editing directly from the contact record.

Reporting

Each pipeline has a built-in reporting view. To access it, click the three dots (⋮) in the top right of any pipeline and select Reporting.

There is also a global reporting overview available. Reports can be filtered by a forecast range.

The overview shows the following metrics:

  • Revenue — total revenue from won deals in the selected period
  • Deals Won — count of won deals
  • Win Rate — percentage of deals closed as won vs. lost
  • Avg. Deal Size — average value of won deals
  • Avg. Days to Close — average number of days from deal creation to close
  • Sales Velocity ($/day) — revenue generated per day
  • New Deals — count of deals created in the period
  • Deals Lost — count of lost deals

Below the quick stats, charts and tables show:

  • Revenue over time chart
  • Leaderboard — performance rankings by owner
  • Performance table — breakdown by pipeline
  • Forecast Risk — deals segmented by close probability
  • Stage Metrics — deal counts and values by stage
  • Owner Performance — won/lost breakdown by sales rep

Filters

The Sales Pipeline add-on adds six contact filters to Groundhogg’s filter system, available in broadcasts, flows, and the contacts table. Filters can be combined.

FilterDescription
Deal ValueFilter contacts by the value of their deals. Supports numeric comparisons (equals, not equals, less than, greater than, etc.). Optionally scope to a specific pipeline and/or stage.
Close ProbabilityFilter contacts by the close probability percentage set on their deals. Supports numeric comparisons.
Deal OwnerFilter contacts whose deals are assigned to a specific owner or set of owners. Supports “is one of” and “is not one of.”
Projected Close DateFilter contacts by the projected close date of their active deals. Optionally scope to a pipeline and/or stage. Supports a wide range of date comparisons.
Date ClosedFilter contacts by when their deals were closed. Select Won or Lost, optionally scope to a pipeline, and choose a time frame.
Date CreatedFilter contacts by when their deals were created. Optionally scope to a pipeline and choose a time frame.

Replacement Codes

The Sales Pipeline add-on provides four replacement codes. All four codes pull data from the contact’s most active deal — the most recently active in-progress deal, or any deal if no in-progress deal exists.

You can see these codes by clicking the Insert Replacements button in the email editor or flow editor.

NameCodeDescription
Deal Title{deal_title}Outputs the title of the contact’s most active deal.
Deal Value{deal_value}Outputs the formatted total value of the contact’s most active deal.
Deal Products{deal_products}Outputs a formatted list of products on the deal (quantity, name, and unit price per line).
Deal Custom Field{deal_custom_field.field_name}Outputs the value of a custom property field on the deal. Replace field_name with the internal name of the custom field.

Settings

Sales Pipeline settings are located at Groundhogg → Settings → Pipeline.

  • Currency — select the currency for deal values.
  • Separators — check the checkbox to use a comma as the thousands separator and a period as the decimal separator (European format). Uncheck to use the default period/comma (US format).
  • Currency Position — select Left, Right, Left with Space, or Right with Space.

Roles & Capabilities

The Sales Pipeline add-on adds pipeline and deal capabilities to Groundhogg’s existing roles.

CapabilityAdministratorMarketerSales ManagerSales Rep
view_pipelines
edit_pipelines
add_pipelines
delete_pipelines
add_deals
view_deals
view_others_deals
edit_deals
edit_others_deals
delete_deals
delete_others_deals

Code Snippets

Add a Pipelines menu to the WordPress admin toolbar

This snippet adds a Pipelines item to the WordPress admin toolbar with direct links to each of your pipelines, making it easy for your sales team to jump to a pipeline from any admin page.

<?php
/**
 * Groundhogg Sales Pipelines → WP Admin Bar
 *
 * Adds a "Pipelines" menu to the admin toolbar with direct links
 * to each Groundhogg Sales Pipeline.
 *
 * Safe to use as a WPCode snippet. Does not modify plugin files.
 */

add_action( 'admin_bar_menu', 'gh_snippet_add_pipelines_to_admin_bar', 9999 );

function gh_snippet_add_pipelines_to_admin_bar( $wp_admin_bar ) {

    if ( ! is_admin_bar_showing() ) {
        return;
    }

    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }

    if ( ! function_exists( '\Groundhogg\get_db' ) ) {
        return;
    }

    $db = \Groundhogg\get_db( 'pipelines' );

    if ( ! $db ) {
        return;
    }

    $wp_admin_bar->add_node( [
        'id'    => 'gh-pipelines-root',
        'title' => 'Pipelines',
        'href'  => admin_url( 'admin.php?page=gh_pipelines' ),
    ] );

    $pipelines = $db->query( [ 'limit' => 50 ] );

    if ( empty( $pipelines ) ) {
        return;
    }

    foreach ( $pipelines as $pipeline ) {

        if ( empty( $pipeline->ID ) ) {
            continue;
        }

        $wp_admin_bar->add_node( [
            'id'     => 'gh-pipeline-' . $pipeline->ID,
            'parent' => 'gh-pipelines-root',
            'title'  => esc_html( $pipeline->title ),
            'href'   => admin_url(
                'admin.php?page=gh_pipeline&action=edit&pipeline=' . intval( $pipeline->ID )
            ),
        ] );
    }
}

Was this helpful?

Let us know if this document answered your question. That’s the only way we can improve.