The Ultimate ICP Guide: Build Your Ideal Customer Profile From the Deals You Won
Most ideal customer profiles are a slide. Someone wrote it in a planning session, the room agreed on "mid-market SaaS, 200 to 1,000 employees, North America", and it has been quoted ever since without anyone checking it against what the company actually sold.
This guide is for revenue teams at B2B software companies, especially teams that live in HubSpot. It covers what an ICP is and is not, why most go stale, and how to build one from your own closed-won deals in an afternoon, with a spreadsheet. It also covers the traps that make a hand-built ICP wrong without looking wrong: small samples, survivorship, and mistaking where you prospect for where you win.
At the end there is a free way to check your answers against your won deals. You do not need it to follow the method.
What an ICP is
An ideal customer profile describes the kind of company that is most worth selling to. In practice it is a short list of attributes that you use to decide who gets outbound, who gets a fast reply, and who gets politely declined.
The word "ideal" causes trouble. It invites you to describe the customer you wish you had. A more useful definition is the one your own deal history can support: the companies that buy from you, in numbers beyond what luck would give you, and that you can sell to without heroics.
A working ICP has four properties.
It is specific enough to exclude people. "B2B companies with budget" excludes nobody. "UK software companies with 50 to 200 staff" does.
It is checkable. Every attribute can be read from a CRM field or looked up in a minute, so a rep can apply it without a debate.
It is ranked or weighted. Some attributes matter more than others, and a profile that treats them as equal will score a deal that matches on three trivial things the same as one that matches on the single thing that decides outcomes.
It has a date on it. An ICP is a claim about a period of time, and it should say which one.
What an ICP is not
An ICP is not a persona. A persona describes a person: the head of RevOps, her goals, her frustrations, the content she reads. An ICP describes a company. You need both, and they answer different questions. The ICP says which accounts to pursue. The persona says who inside those accounts to talk to and what to say. Teams that blur the two end up with a persona document that has a firm size in it and an ICP that has a job title in it, and neither does its job.
An ICP is not a total addressable market. Your market is everyone who could buy. Your ICP is the subset where you win often and well enough to build a motion around.
An ICP is not your pricing page audience, your best-ever customer, or your biggest deal. One enormous win is a story. It is not a profile.
And an ICP is not a forecast. It describes where your wins have come from. It does not tell you whether the next deal will close, and a team that treats it that way will be disappointed.
Firmographic and behavioural attributes
Two families of attributes go into an ICP, and they behave differently.
Firmographic attributes describe the company and rarely change quickly: industry, employee count or revenue band, region, funding stage, business model, the tools it already runs. They are easy to find before you have spoken to anyone, which makes them the backbone of targeting and list-building.
Behavioural attributes describe what the company does or did around the deal: how it found you, what triggered the search, how long the deal took, how many people were involved, whether it came through a partner, which feature it asked about first. They are harder to know in advance, but they are often where the real pattern sits. Two companies of the same size in the same industry can buy for entirely different reasons.
A sensible split for a first pass:
- Use firmographic fields to define who is on the list.
- Use behavioural fields to decide who to prioritise and what to say.
- Treat any behavioural field as a hypothesis until you have checked it against enough deals to trust it.
Most CRMs hold far more firmographic data than behavioural data, and the behavioural data that exists is often inconsistent. If your "lead source" field is a free-text box, expect to spend an hour cleaning it before it tells you anything.
Why most ICPs are a slide someone wrote two years ago
There are four usual causes, and they compound.
It was written by opinion. The VP of Sales says mid-market. Marketing says SaaS. The founder says enterprise. The compromise is something nobody objects to, which is not the same as something true.
It was never checked. Nobody went back to the closed-won list and asked whether the slide matched it. When someone finally does, the gap is usually large, and it is almost always a surprise to somebody senior.
The business moved. Pricing changed, a feature shipped, a competitor arrived, a new segment started buying. The profile describes the company you were, not the one you are.
It is not wired into anything. A profile that lives in a deck cannot change a decision. If lead routing, outbound lists and qualification calls do not use it, it is decoration.
The fix is the same for all four: build the profile from deals you have closed, write the date on it, and make it small enough to apply.
How to build an ICP from your closed-won deals
You need a spreadsheet, a HubSpot export (or the export from whichever CRM you use) and about three hours. The steps below work for any CRM; the HubSpot specifics are noted where they matter.
Step 1: Decide the window and the question
Pick a period. Twelve to 24 months of closed-won deals is a sensible range. Shorter and you are reading noise. Longer and you risk profiling a market that has moved.
Write down the question in one line. For example: "Which kinds of company have we won most often in the last 18 months?" That wording matters. You are describing wins, so you are not yet claiming anything about what predicts a win.
Step 2: Pull the won deals
In HubSpot, go to Deals, filter to Closed Won, set the close-date range, and export. Include the company properties as well as the deal properties. Any CRM that exports a CSV will do.
Check the count before you do anything else. If you have fewer than 10 closed-won deals in the window, stop. There is no pattern to find yet, and any profile you derive is a description of individual deals. Use the notes in Step 6 to decide what to do instead.
Step 3: Pull the lost deals, if you can
This is the step most teams skip and the one that separates a real ICP from a description of your outbound list.
Export closed-lost deals for the same period with the same fields. You are looking for contrast. If 60 percent of your wins are in two industries and 60 percent of your losses are too, that concentration is telling you where you spend your time, not where you win. A field earns its place in the ICP only when wins and losses differ on it.
A caution on lost data: reps often leave the lost reason blank or pick the first option. Use lost deals for the firmographic contrast (industry, size, region), where the data is system-generated or well maintained, and treat the lost-reason field as colour, not evidence.
Step 4: Choose the fields
Start with the fields you can trust. For most B2B software teams that means:
- Industry or sub-industry
- Employee count, banded (for example 1 to 10, 11 to 50, 51 to 200, 201 to 1,000, over 1,000)
- Region or country
- Deal size
- Sales cycle length (created date to close date)
- Lead source
- Technology the company uses, if you have it
Band the numbers. Raw employee counts give you a different value on every row, which hides any pattern. Five or six bands are plenty.
Clean as you go. "Software", "SaaS" and "Computer Software" are one industry. "UK", "United Kingdom" and "GB" are one country. Ten minutes of tidying here saves a wrong conclusion later.
Leave out names. You are looking at the shape of your wins, not which accounts they were, and removing company and contact names from your working copy also keeps personal data out of a spreadsheet that will be emailed around.
Step 5: Look for patterns, one field at a time
For each field, count how your won deals fall across its values. A pivot table does it in a minute.
Ask three things.
Is the spread uneven? If your wins are spread about evenly across ten industries, industry is not part of your pattern, however strongly the room feels about it. If four of ten industries account for most of the wins, you have something.
Is it different from the losses? Put the won column next to the lost column. A value that is common in both is not a signal.
Is it bigger than chance would give you? This is the hard one, and Step 6 covers it. Be suspicious of any pattern you could have produced by shuffling the rows.
Then look at pairs. "Software companies" and "50 to 200 employees" might each be only mildly concentrated, while "software companies with 50 to 200 employees" accounts for a third of your wins. Pairs are where an ICP gets specific. They are also where small samples fail fastest, because every extra condition cuts the number of deals in the cell.
Step 6: Check the sample size before you believe anything
This is where hand-built ICPs go wrong without anyone noticing.
Take a simple case. You have 20 wins and 5 of them are in fintech. That is 25 percent. If fintech is 15 percent of the companies you actually talk to, 25 percent is higher, but with 20 deals a swing of one or two wins moves the figure a long way. One deal is five percentage points. Swap two deals and the "pattern" is gone.
Some working rules:
- Under 10 won deals: you do not have an ICP analysis, you have a list. Read the deals, talk to the reps who closed them, and treat what you learn as a hypothesis.
- 10 to about 50: treat anything you find as directional. Look for large, obvious concentrations and ignore small differences.
- 30 to a few hundred: this is the range where field-by-field patterns start to hold up, and pairs of fields become testable for the larger groups.
- For any cell you want to act on, count the deals in it. A group of three wins with a high average deal size is a story, not a segment.
The numbers above are rules of thumb for hand analysis, not a statistical test. If you want a proper test, compare your observed counts against what an even spread would give, and only trust differences that clear that bar. If you do not want to run that test, keep to the large and obvious.
Step 7: Beware survivorship and the outbound mirror
Two traps appear in almost every first-time ICP.
Survivorship. Closed-won data tells you who bought. It says nothing about who bought and then churned, and nothing about the companies that would have bought if you had ever called them. If you only look at wins, you may build a profile of who is easiest to close rather than who is best to have. Where you have retention or expansion data, add it as a separate column and look at it separately. Do not fold it into the win pattern.
The outbound mirror. If 80 percent of your outbound went to US software companies, 80 percent of your wins will be US software companies, whatever the market thinks. The contrast with losses in Step 3 is the main defence. Another is to ask what share of your pipeline each group made up, not only what share of wins.
A third, smaller one: a single huge deal can dominate any average. Report medians for deal size, and name the outliers.
Step 8: Write the profile in six lines
Resist the urge to write a page. A usable ICP fits on a card:
- Industry: the two to four values that carry the pattern
- Size: the band or bands
- Region: the countries or regions
- Technology or stack: if the data supports it
- Buying trigger and entry point: the event that starts the search and the role that usually raises their hand (this is the behavioural bit, and it is a hypothesis unless your data shows it)
- Deal size and cycle: what a typical win looks like, as a range
Then add two things that most templates leave out. The first is a "do not chase" list: groups that look attractive but are too small in your data to read. The second is the date and the number of deals behind it: "Based on 47 closed-won deals, March 2025 to August 2026."
Step 9: Put it where decisions are made
An ICP changes nothing until it is used. Three places to start:
- Lead routing and lists. Turn the firmographic lines into filters in your prospecting tools.
- Qualification calls. Give reps the six lines and ask them to note which they could confirm.
- Pipeline reviews. Ask of each deal in the room: does it match, and if not, why are we spending the time?
How the free report fits
Everything above can be done by hand, and doing it once teaches you a lot about your own data. It is also fiddly: cleaning, banding, pivoting and checking for chance take time, and it is easy to miss a pair of fields.
Telepath's free ICP report does the won-deal half of this for you. You give it your closed-won deals, either as a CSV export from any CRM or by connecting HubSpot, and it returns a report that includes:
- where you win by sector and company size, and how your won deals spread across industry, region, deal size and lead source
- up to three target profiles, each shown only where your won deals are concentrated beyond what chance would give; when no group stands out, it says so and shows none
- a qualification checklist, weighted by how concentrated your wins are on each attribute, with attributes that look no different from chance carrying no weight
- anything that beat chance but is not about who to target, such as how deals came in and how fast they closed
- a "too few to call" note when a small group shows a big average deal but has too few deals to tell a pattern from luck
Some plain facts about it:
- It is free, with no account and no credit card.
- It needs at least 10 closed-won deals. Between 30 and 500 gives the sharpest results, and below roughly 50 you should treat the output as directional. The report flags where the sample is thin.
- Every figure, and the checklist, is computed from your data in code. No AI model writes any of the report.
- Names, email addresses, phone numbers and company names are removed before analysis, and the report shows what was removed.
- It usually arrives within a few minutes.
- If you connect HubSpot, access is read-only, and it reads your closed-won deals and the companies linked to them. It does not write anything to your CRM and does not read your open pipeline. Once your report is delivered the connection stays open for 30 days, counted from the day you connected, and you can disconnect at any time.
- It looks at your won deals. It does not compare them against your lost deals, so Step 3 above is still worth doing yourself.
You can see what a report looks like first: there is a sample report built from 150 invented won deals.
Keeping it current
An ICP is a measurement, and measurements age. Three habits keep it honest.
Date it and count the deals. The line "Based on 47 closed-won deals, March 2025 to August 2026" tells everybody how much weight to put on it and when to doubt it.
Re-run it on a schedule. Twice a year is a reasonable default for a team closing a steady number of deals. Re-run it sooner after any change that could move who buys: a new pricing model, a major release, a new market, a competitor leaving or arriving.
Check for drift. Compare the new profile with the old one field by field. If the top industry has changed, or a size band has dropped out, you have learned something about your market, and your lists and routing rules should follow. The post on ICP drift goes into what to look for.
If you have few wins, wait until you have enough to read. It is better to run the exercise at 25 deals than to over-read it at 12.
Common mistakes
- Writing the ICP before pulling the data. Anything written first becomes the thing the data has to agree with.
- Using only wins. Without the contrast against losses you cannot tell a win signal from your own prospecting habits.
- Reading small groups. Three wins in a niche is an anecdote. Name it, then leave it out of the profile.
- Too many attributes. Eight lines that nobody can recall are worth less than four that everybody applies.
- Treating the average as the pattern. A median and a spread tell you more than a mean skewed by one large contract.
- Mixing firmographics and personas. Keep the account profile and the buyer profile in separate documents with separate owners.
- No date, no sample size. Without them nobody knows when to redo it.
- Never using it. An ICP that does not change routing, lists or qualification is a poster.
- Reading it as a forecast. The profile describes where your wins came from. It is a starting point for who to pursue, not a promise about any particular deal.
Now let your won deals check your answers
If you have worked through the steps, you now have an ICP written from your own data. If you have not, you probably have the slide.
Either way, the quickest check is to give your won deals to the free ICP report and see whether it agrees with you. Where it agrees, you have more confidence. Where it does not, you have found the interesting part: a place where the company's picture of its customers and the deals it actually won have drifted apart.
Get your free ICP report. It needs 10 or more closed-won deals, takes a CSV from any CRM or a HubSpot connection, and arrives, usually, within a few minutes.
Frequently asked questions
What is an ideal customer profile (ICP)?
An ideal customer profile describes the kind of company most worth selling to, written as a short list of attributes such as industry, company size, region and typical deal size. The most useful ones are built from the deals a company has actually won, dated, and small enough for a rep to apply without a debate.
What is the difference between an ICP and a buyer persona?
An ICP describes a company: which accounts to pursue. A persona describes a person inside that company: who to talk to and what matters to them. Use the ICP to build lists and routing rules, and the persona to shape outreach and messaging.
How many closed-won deals do I need to build an ICP?
You need at least 10 closed-won deals for any pattern to be worth reading, and 30 or more before field-by-field patterns start to hold up. Below roughly 50, treat what you find as directional. The free ICP report from Telepath needs at least 10 and gives its sharpest results with 30 to 500; it flags where the sample is thin.
How often should I update my ICP?
Re-run it at least twice a year, and sooner after anything that changes who buys, such as new pricing, a major release or a move into a new market. Write the date and the number of deals on the profile so it is obvious when it is out of date.
Can I build an ICP if I do not use HubSpot?
Yes. The method in this guide works with any CRM that can export closed-won deals to a spreadsheet, and the free ICP report accepts a CSV from any CRM as well as a HubSpot connection.