Most ideal customer profile work produces a paragraph: mid-market manufacturers in Flanders with a growing operations team and an ageing ERP. It reads well, it is probably accurate, and you cannot do anything with it.
The gap is that an ICP has to survive a translation. Every attribute in that paragraph has to become a field you can filter a whole market on, or it stays a description. Some translate cleanly. Some translate into something subtly different. And a few, usually the ones your best salespeople care about most, do not exist as data anywhere.
This is about that translation, using Belgium, where the underlying data is unusually good and unusually specific. If you want the strategy layer first, start with how to build an ideal customer profile that converts; this page is the mechanical follow-on.
Published 12 September 2026. Statbel figures reflect a 31 December 2024 reference date, which is updated annually.

Key takeaways
Every ICP attribute must map to a field, a proxy, or nothing. Say which of the three it is.
Filter on headcount, not revenue. The turnover line is optional on roughly 96% of Belgian filings and is frequently missing; headcount is on all of them.
Activity codes describe what a company registered as, sometimes decades ago. Treat them as a starting filter, never as the definition.
Joint committee codes are Belgium's most under-used segmentation field, and no other register we work with carries a direct equivalent.
Growth attributes, such as hiring, headcount trend and new appointments, are what turn a static profile into a timing decision.
The translation table
ICP attribute | The field that carries it | Where it comes from | Watch out for |
Company size | Annual average headcount (FTE) | Filed annual accounts | It is a payroll figure, not a site headcount |
Revenue scale | Turnover, or gross margin as proxy | Filed annual accounts | Turnover optional on ~96% of filings |
Industry | NACE-BEL code, or semantic topic | KBO register / website content | Codes are registered once and rarely updated |
Region | Registered office, and establishment units | KBO register | Seat ≠ where the staff are |
Sector workforce type | Joint committee code | Social legislation, Belgium only | No equivalent outside Belgium |
Growth | Headcount trend, open vacancies | Filed accounts, job ads | Hiring pace is the faster signal |
Independence | Ownership and group structure | Filings and official publications | Decides whether they can buy at all |
Technology in use | Detected stack on the website | Site crawling | Detects what is public-facing only |
Budget authority | n/a | Not a registered fact | Infer from ownership and size |
Pain, urgency, fit | n/a | Conversations | Never a filter |
The last two rows are the honest part. Half of what makes a customer ideal is not data, and no platform will give it to you. The point of the exercise is to get the filterable half right so your reps spend their conversations on the other half.
Size: headcount is the field that works
The reflex is to size an ICP in revenue, because that is how the business plan is written. In Belgium that reflex quietly deletes most of your market.
Turnover is an optional line on the micro and abbreviated annual-accounts models, which is what nearly all Belgian companies file, around 96% of the 593,323 sets of accounts the National Bank received in 2025. Filter on "revenue between €5m and €50m" and you are not selecting companies of that size, you are selecting companies that happened to disclose. The full argument is in finding a Belgian company's revenue.
Headcount does not have that problem. The annual average workforce is filed by every company that files annual accounts, it is a legal size criterion, and for most B2B products it maps more directly onto the deal anyway: seats, licences, users, sites, payroll runs.
Here is what the Belgian mid-market actually looks like when you count it that way.

Two readings of that chart change how an ICP gets written. The bands are steeply uneven. Moving your floor from 20 to 50 staff removes about twelve thousand companies, and moving it from 50 to 100 removes fewer than four thousand. And the whole thing sits inside a register of 1,187,819 enterprises where 997,481 have no employees at all, which is why a national company count is a useless denominator for any B2B plan. TAM, SAM and SOM with real numbers works the arithmetic through properly.
Industry: the code has a shelf life
Activity codes are the default industry filter everywhere, and they carry a flaw that gets worse with company age. A NACE-BEL code is chosen at registration and updated when someone remembers to. A software company that started as an IT consultancy in 2009 is still filed as an IT consultancy.
Belgium added a second complication. On 1 January 2025 the country moved to NACE-BEL 2025, implementing European NACE Rev. 2.1. Existing codes were converted automatically from the 2008 version, and where one 2008 code mapped to several 2025 codes, only one successor was written. Statistics published on 2008 codes and lists filtered on 2025 codes are not directly comparable, so for the time being anything segmented on activity needs checking against both.
Use codes as a coarse first cut. Then narrow on something that reflects what the company says it does now: its own website, its job ads, the products it names. Semantic search over site content reaches segments like "companies doing AI in logistics" that no code list will ever contain, because no code exists for it.
The Belgian filter almost nobody uses
If you sell HR software, payroll, insurance, workwear, training or temporary staffing, the sharpest segmentation field in Belgium is not the activity code. It is the joint committee, paritair comité in Dutch and commission paritaire in French.
Almost every Belgian employer falls under a joint committee that sets sector-level collective bargaining terms: pay scales, working time, end-of-year bonuses, sector funds. The committee a company sits under tells you what its workforce is legally like, which for a whole class of products is a far better predictor than what the company sells. Other countries have sector-level bargaining, but no other register we work with exposes it as a clean, filterable code on the company, which is why general-purpose international tools rarely carry it.
The related field is blue-collar versus white-collar composition, filed in the social balance sheet. A hundred-person company that is ninety blue-collar and a hundred-person company that is ninety white-collar are different businesses with different budgets, and an employee-count filter cannot tell them apart.
Growth: the attributes that carry timing
A static ICP tells you who to contact. It does not tell you when, and a right account at the wrong moment converts like a wrong account.
Three fields carry timing in Belgium and all three are checkable:
Headcount trend. The filed workforce figure goes back years, so direction is visible. A company that went from seventy to a hundred staff in three years has problems it did not have before, which is usually the problem you sell against.
Open vacancies. Faster than accounts, which arrive months after the year they describe. What a company is hiring for says what it is building.
Official publications. Appointments, dismissals, office moves, mergers and demergers are published in the Annexes to the Official Gazette with a date on each one. A new finance director appointed six weeks ago is a reason to call this month rather than next quarter. See searching the Belgian Official Gazette.
Independence: can this account actually buy
The attribute most ICPs omit entirely. A Belgian company of the right size in the right sector may have no authority to buy anything, because it is a subsidiary and the decision sits with a parent in another country.
Ownership and group structure are published. Checking them before outreach costs a minute and changes who you contact, what you promise and how long you forecast. It is also the field that decides the EU SME test, which consolidates linked enterprises. The thresholds and the linked-enterprise rule are in what counts as an SME in Belgium.
Putting it together
An ICP that survives contact with a database looks less like a paragraph and more like a specification: employee band, region, activity codes plus a topic check, ownership status, and one or two timing signals with a recency window on them.
This is where Bizzy is meant to sit. The filed headcount and its multi-year trend, the NACE-BEL codes in both the 2008 and 2025 classifications, the joint committee code, the blue- and white-collar split, radius search around a city, open vacancies, detected technology and the ownership tree are all filters over the same Belgian population, so the specification above is something you build once and run, rather than a description you hand to a rep. Lookalike search does the reverse trick when the profile is easier to point at than to write: give it your best account and let it find the rest.
Testing it before you commit
Two checks before an ICP goes into a quarter's targets.
Run it backwards on your own customers. Take your last twenty closed-won accounts and apply the filter. If it does not return most of them, the profile is describing an aspiration rather than your business.
Check the segment is big enough to survive. Accounts vanish from a segment even when the business is fine. They get acquired, restructured, or grow out of your size band. A segment of eighty accounts is a quarter of work and then nothing.
Read next: NACEBEL codes: how to look them up, and why yours may be wrong.
Read next: Which Belgian city is easiest to find online?.
Read next: Generating leads: from a company list to a conversation.
Read next: B2B lead generation: what it is and which strategy fits your market.
Read next: Bizzy vs Sectora: same register, different job
Read next: Why international prospecting tools miss Belgian SMEs
Read next: LinkedIn Sales Navigator in Belgium: the honest limits
Frequently asked questions
Which ICP attributes can you actually filter on in Belgium?
Employee band, region, activity code, joint committee, ownership structure, headcount trend, open vacancies and detected technology. Urgency, budget authority and fit are not registered facts and can only be learned in conversation.
Should I size an ICP by revenue or employees?
By employees in Belgium. Turnover is an optional line on the micro and abbreviated filing models, which together account for roughly 96% of filings, so it is often missing, while the annual average headcount is filed by every company that files accounts.
Are NACE codes reliable for targeting?
As a coarse first cut, yes. They are registered once and rarely updated, and Belgium's 2025 conversion from NACE-BEL 2008 was not always one-to-one, so pair them with something reflecting current activity.
What is a joint committee code and why does it matter?
It is the Belgian sector-level body that sets collective bargaining terms for an employer's workforce. For HR, payroll, insurance and workwear it segments the market far more precisely than activity codes, and no other register we work with exposes it as a filterable code.
How do I know whether a prospect can make its own buying decision?
Check ownership and group structure, which are published. A subsidiary of a foreign group often cannot commit without a parent, which changes who to contact and how long to forecast.
Written by Arthur Cremers at bizzy., which builds European B2B company data from official registers.
Sources
Statbel be.STAT: Active enterprises by economic activity and employee size class (reference date 31 December 2024)
Statbel: Survivals of VAT-registered enterprises (published 16 October 2025)
Statbel: NACE-BEL 2025
National Bank of Belgium: Central Balance Sheet Office in figures
FPS Employment: Joint committees
Photo of the business park at Machelen-Diegem by Bjoertvedt, CC BY-SA 4.0, via Wikimedia Commons
