Skip to main content
Best Practices

Finding upsell opportunities with Whitespace

Read the Whitespace matrix, pick a Users & Devices strategy, keep the PSA data behind the grid clean, then turn genuine gaps into quotes.

Written By Mike Forte

Last updated About 1 hour ago

Whitespace is how you find the next service to sell β€” not how you invent a product or a price. The grid shows which customers already have which contracted services, and which catalog services they do not. A real upsell is an empty cell you have already decided is a fit, not every blank tile on the page.

The building blocks are:

  • A clean Professional Services Automation (PSA) contract set β€” products categorized, contracts current, and (if you use them) user-defined fields (UDFs) populated
  • A Users & Devices calculation strategy that matches how you actually count seats and endpoints
  • The I want to sell search plus Hide customers who already have this, so you work genuine gaps instead of the whole book

When those three are in place, a Whitespace session is: pick the service you want to sell, hide customers who already have it, open a blue tile, create the quote. The quote editor is the next step β€” Whitespace only starts the proposal.

If you skip the setup, every empty tile looks like a deal. Expired contracts look like gaps, unmapped categories hide the product you meant to sell, and a zero in Users or Devices makes a per-seat upsell look smaller than it is.

New account? Start with Set up Salesbuildr in this order, then the PSA-specific Whitespace article for Autotask, ConnectWise, or HaloPSA. This article picks up from there.

Note: Whitespace needs the whitespace feature and the Whitespace viewer permission. Open it from Whitespace in the main navigation.

Do this in order

Do the setup before anyone treats the grid as a call list. Each step depends on the one before it.

  1. Clean the PSA data behind the matrix β€” if a billing code, subcategory, or product group is unmapped, or a contract is stale, the tile is wrong.
  2. Choose a Users & Devices strategy β€” coverage (who has the service) does not need a count. Per-seat or per-device upsell amounts do.
  3. Learn to read the matrix β€” green is coverage, empty is a candidate, blue is the service you chose to sell.
  4. Focus with I want to sell and Hide β€” the full grid is a map; the filtered grid is the work.
  5. Fix underbilling before you upsell β€” a red dot on a green tile is existing coverage priced below list, not a gap.
  6. Quote from a genuine gap β€” create the quote on the tile so the customer and the service are already on the proposal.

1. Clean the PSA data behind the matrix

Whitespace does not invent coverage. It plots active contracts from Autotask, ConnectWise, or HaloPSA against service-code columns from that PSA, then matches your Salesbuildr catalog to those columns.

The columns are not Salesbuildr category names you typed in. They come from the PSA:

PSAWhat a column is
AutotaskA billing code (recurring contract service code)
ConnectWiseA product subcategory
HaloPSAA product group (asset groups marked as items)

If that mapping is messy, I want to sell cannot place a catalog product on the right column, and a green tile may represent the wrong service.

Products categorized

Map each PSA service code to a Salesbuildr category, then give every service you sell a primary category that uses that mapping.

PSAWhere to map
AutotaskSettings β†’ Integrations β†’ Autotask β†’ Data Import β€” Map recurring services to Salesbuildr categories
ConnectWiseSettings β†’ Integrations β†’ ConnectWise β†’ Categories β€” Map categories
HaloPSASettings β†’ Integrations β†’ Halo β†’ Products β€” Categories

A mapped column header becomes a link to the Salesbuildr category. On Autotask and ConnectWise, Not mapped can still show a green tile when a contract uses that code, but catalog products will not land on that column when you search I want to sell. On HaloPSA, leave a product group as None and items in that group do not import β€” recurring-invoice lines can still appear on a contract card, but they will not create a service-code column.

On each service product, leave Include in whitespace on (product editor β†’ Admin). When it is off, that service stays in the catalog but drops out of green tiles, monthly revenue, and I want to sell.

Field-by-field detail: Autotask data in Whitespace, ConnectWise data in Whitespace, HaloPSA data in Whitespace.

Contracts up to date

A green tile is an included line on an active contract β€” started, not ended, and still inside its current unit window. Expired, future-dated, or cancelled lines do not count.

When a customer looks wrong:

  1. Open the green tile (or the info popover β†’ the revenue amount) to open Contracts.
  2. Confirm the card dates, units, and service code.
  3. Click Update on that company to re-import from the PSA. A scheduled import also refreshes contracts during the day.

Do not treat a blank tile as a gap until you know the contract should be there. A service that never imported, a Halo item with no product group, or Include in whitespace turned off looks the same as "they don't buy this."

UDFs populated (PSA Custom Field strategy)

If you will count users and devices from a company field in the PSA, that field must be numeric and filled in on the companies you care about. An empty or non-numeric value becomes 0 on the grid.

On Autotask, map the account UDF under Settings β†’ Integrations β†’ Autotask β†’ Data Import β†’ Company import β†’ User defined fields, then assign it on the Users and devices mapping page (next section). After you map, run a company sync β€” or wait for the company webhook β€” and refresh Whitespace.

2. Choose the right Users & Devices calculation strategy

Settings β†’ Platform β†’ Miscellaneous β†’ Users and devices calculation strategy is tenant-wide. It is not a filter on the Whitespace page.

The setting only controls the Users and Devices columns, and the seat or device multiplier on a blue upsell amount when the catalog product is sold per user or per device. It does not change which services appear as green, monthly revenue, or notes.

StrategyWhen to use itWhat happens on Whitespace
DisabledYou only care who has which service, not how many seats or endpointsThe Users and Devices columns are hidden. Per-user or per-device upsell amounts are not sized from a count.
PSA Custom FieldThe PSA already stores a numeric user and/or device total on the company (for example an Autotask UDF named "Number of Users")Columns show those synced numbers. Map the field to a data point, then map Users and Devices per company type.
Contract Item ReferenceThe quantities on active contract lines are the seat or device count (Microsoft 365 licenses, managed endpoints)Columns sum units on lines you tag USER or DEVICE. Only active contracts with a quantity above zero count.

Full option text: Users & Devices Calculation Strategy.

If you choose PSA Custom Field

  1. Save Platform with PSA Custom Field selected β€” the mapping page is hidden until that is saved.
  2. Open Settings β†’ Users and devices mapping (the link under the strategy on Platform).
  3. For each company type, choose the data point for Users and for Devices, or leave a cell Unmapped.
  4. Refresh Whitespace. Unmapped types, empty fields, and non-numeric values show 0.

Do this only when someone already maintains those numbers in the PSA. The grid will not invent a headcount from contacts or configuration items.

If you choose Contract Item Reference

Tagging is done in Salesbuildr, on the contract line. The PSA import does not mark a line as a user or a device for you.

  1. Save Platform as Contract Item Reference.
  2. From Whitespace, open Contracts on a company (green tile, or the info popover β†’ revenue).
  3. On each line that represents seats or endpoints, turn on USER or DEVICE.
  4. Close the dialog so the grid can refresh.

A warning icon next to the company name means No users references set and/or No devices references set β€” that count is still zero. Tag the lines, and confirm the contract has started, has not ended, and has a quantity.

Autotask Configuration Items / Installed Products are not devices in Whitespace. If the number you want lives only in an RMM or an asset list, put it in a mapped company UDF and use PSA Custom Field instead.

If you leave it Disabled

That is the right default when Whitespace is a coverage map and you do not sell per seat or per device from this grid. Turn a strategy on later if account managers start asking "how many seats is this gap?"

3. Read the matrix before you sell from it

Open Whitespace. Customers are rows. Service-code columns run across the top. Monthly Revenue is on the left β€” every included line for that customer, converted to a monthly amount (yearly Γ· 12, quarterly Γ· 3, and so on).

When a Users & Devices strategy is on, Users and Devices sit between Monthly Revenue and the service columns. Click a column header to sort.

What a tile means

What you seeWhat it meansWhat to do
GreenThe customer has an active service in that column. The amount is monthly recurring revenue for that column.Click the amount to open Contracts. A red dot means a line is priced below list (Underbilling).
Empty (grey)No included contract line in that column.A candidate β€” not yet a deal. Confirm the contract should be there before you sell.
BlueYou picked a catalog service in I want to sell whose primary category maps to this column. The amount is the estimated upsell.Open the info popover and create a quote or an opportunity.
Yellow quoteAn open proposal already includes that service for this customer.Open the quote from the popover instead of creating a second one.
Best badgeThe largest distinct upsell amount in that column (only when amounts differ).Start there if you are working one category.
NotesSomeone recorded context on the tile.Read it before you call. "Competitor already provides this" is not a gap.

The i on a tile opens the info popover: customer, column, revenue, underbilling, an open quote if there is one, Create quote / Create opportunity when I want to sell is active, and Add note.

Filters such as Account manager, Contracts ending in, Service code, and Not service code narrow the book. The default Having at least one service is Yes, so you work customers who already buy something. Set it to No only when you specifically want companies with no contracted services. Display all shows both.

The full filter list, column reordering, campaign export, and the Contract items / Contract expirations tabs are in Whitespace & Upsell.

4. Use I want to sell and Hide to focus on genuine gaps

The unfiltered grid is every customer Γ— every service code. That is useful for orientation. It is a poor call list.

I want to sell

  1. In I want to sell, search a service from the catalog, or a product label that groups several services.
  2. Click the item. It appears as a chip under the search. You can add more than one.
  3. Matching columns show blue upsell tiles. The amount uses the product's sell price and term. If the product is sold per user or per device, it also uses the Users or Devices count from your strategy.

I want to sell only searches services. Hardware and labor do not appear here. The product must be in a primary category that is mapped from a PSA service code, and Include in whitespace must be on.

Hide customers who already have this

Turn on Hide customers who already have this after you pick a service. Rows for customers who already have that service disappear. What remains is the gap: people who do not have it yet.

Leave the toggle off when you want to compare buyers and non-buyers in the same view β€” for example to see who is underbilled on the same service you are about to sell.

To customers who have

To customers who have keeps only customers who already buy a different service (or a combination you set). Use it for a bundle motion: "sell backup to customers who already have managed workplace." Combined with Hide, you get "has A, missing B."

Do not quote every empty cell

An empty tile is a hypothesis. Before you create a quote:

  • Read the tile note. If someone already recorded a competitor, a decline, or a renewal date, believe them.
  • Open Contracts on a nearby green tile if the customer looks under-served across the board β€” the data may be stale.
  • Skip a column you have not mapped. You cannot place a catalog product on it from I want to sell.

Add a note when you learn why a gap is not a sale. Notes are visible to everyone with Whitespace access.

5. Fix underbilling before you upsell

A red dot on a green tile means the customer already has that service and pays a unit price below list. That is underbilling, not a gap. Correcting the contracted price β€” at renewal, or by updating the contract in your PSA β€” is often the fastest revenue win, and it does not need a new sale.

Find these lines:

  1. Scan green tiles for a red dot on the i. The info popover badge reads Underbilling (This category contains underbilled services).
  2. Set Having underbilling services to Yes to keep only customers with at least one underbilled line.
  3. On the Contract items tab, compare List Price and Revenue. Filter Price Differs From List Price to Yes, lower to list those lines.

Open Contracts from the green tile to review the lines. Use Create Renewal Quote when the contract is due β€” do not quote the same service again from a blue tile.

Tile colors, the underbilling filter, and the Contract items tab: Whitespace & Upsell.

6. Turn a gap into a quote from the grid

Do not copy the company name into New Quote and search the catalog again. Create the proposal on the tile so the customer and the service are already on it.

  1. Leave the service selected in I want to sell.
  2. Turn on Hide customers who already have this so you are looking at gaps.
  3. Open the i on a blue tile.
  4. Click Create quote. The new-quote dialog opens for that company with the selected services already added.
  5. Pick a template, confirm the rest of the dialog, and create. You land in the quote editor.

Create opportunity is the same popover when you want the deal in the pipeline first and the proposal later. How to keep the quote and the opportunity together after that is in Follow up on quotes and manage your pipeline.

Create quote and Create opportunity stay disabled until a PSA is connected (PSA integration required). That is the same rule as the rest of quoting β€” Whitespace cannot start a live deal without the integration.

If a yellow quote is already on the tile, open that quote. A second proposal for the same service on the same customer splits the conversation.

A green tile is existing coverage. Use Contracts there for renewals (Create Renewal Quote, Add to existing quote, Renew All) β€” not for selling a service they already have. Renewal detail lives on the PSA Whitespace articles and in Whitespace & Upsell.

What you do in each Whitespace session

Once the mapping, contracts, and strategy are in place, the job on a live pass is narrow:

  1. Open Whitespace. Keep Having at least one service on Yes unless you are hunting companies with no contracts.
  2. I want to sell the listed service (or label) you are pushing this week. Do not browse every empty column.
  3. Turn on Hide customers who already have this. Optionally add To customers who have for a complementary service.
  4. Sort by Monthly Revenue, Users, or Devices if those columns help you pick a size of customer. Trust a zero only after you have checked the strategy.
  5. Open a blue tile. Read notes and any yellow quote. If it is still a gap, Create quote.
  6. Add a note when the gap is not a sale, so the next person does not call the same customer for the same reason.
  7. Before a QBR, filter Whitespace to that customer and bring the gaps and underbilled lines to the review.

That is assembling a list from approved catalog services and current contracts. Hunting from a dirty grid is everything this article tells you not to do: an unmapped column, a stale contract, a zero headcount you never mapped, and a quote typed from memory for a company you copied off the row.

See also