An installed base is the set of accounts already running a product. What the web shows of it is narrower: the websites on which a tool is seen. This guide shows how to measure that for your own product or a rival's, from the weekly Market Series and the Technology Stack and Technology Changes datasets beneath them: how many websites run it, how many were added and dropped each week, and how the base moves against the market.
What the measure covers
The unit is the website. A website counts once however much its owner pays, and the count is of recognised technologies: Fokals recognises 6,283, in 68 categories, each with its first-seen and last-seen dates. GET /api/v1/series/metrics returns the catalogue with the subjects of each family, so check that your product and each rival appear among the subjects of tech_prevalence before you plan the report.
A tool is detected from page content, scripts, network requests, response headers and DNS records. A detection shows presence on the website, so the base you measure is the part of the installed base that leaves a trace on the web, and the blog explains how the detection works.
The four numbers
Each row of the weekly Market Series is one metric over one dimension and one window at one as-of date, which is a Sunday. The windows are 7, 30 and 180 days, so weekly movement is the 7-day window read at consecutive Sundays. Every row carries count, cohort, rate, previous, growth and index, and is written once and never revised.
| Measure | Metric | Reads as |
|---|---|---|
| Prevalence | tech_prevalence: and the technology id | Websites running it, per 100 websites of the cohort |
| Adds | tech_added: and the id | Websites that started running it in the window, per 100 |
| Removals | tech_removed: and the id | Websites that stopped running it in the window, per 100 |
| Net change | Adds minus removals, same dimension and window | Growth or shrinkage of the base, per 100 |
Prevalence is a level. Adds and removals are flows, and they are the cleaner of the two. They count changes between two observations of a website, on a same-store cohort that was covered before the window began, so a website's first observation sets a baseline and adds nothing. Net change is the figure you compute yourself.
Reading one technology week by week
This query puts the three series side by side for the whole cohort, one row per Sunday.
-- :technology is a technology id from the catalogue
select
as_of,
max(case when metric = 'tech_prevalence:' || :technology then rate end) as per_100_websites,
max(case when metric = 'tech_prevalence:' || :technology then cohort end) as cohort,
max(case when metric = 'tech_added:' || :technology then count end) as added,
max(case when metric = 'tech_removed:' || :technology then count end) as removed
from market_series
where metric in ('tech_prevalence:' || :technology,
'tech_added:' || :technology,
'tech_removed:' || :technology)
and dimension_kind = 'all'
and window_days = 7
group by as_of
order by as_of;Add added - removed for the net. The table shows four weeks for a tool sold by Acme Robotics, an invented vendor. The figures are illustrative, on a cohort of 6,000 websites.
| Week | Added | Removed | Net | Prevalence per 100 |
|---|---|---|---|---|
| 1 | 24 | 9 | +15 | 8.4 |
| 2 | 31 | 12 | +19 | 8.7 |
| 3 | 18 | 27 | -9 | 8.6 |
| 4 | 22 | 10 | +12 | 8.8 |
In week 2 a net of 19 on 6,000 websites is 0.32 per 100, and the level moved from 8.4 to 8.7. In week 3 more websites left than joined, and the level slipped to 8.6. Net change and the movement of the level should tell the same story. When they do not, read the cohort of each row: a level that rises while the net is flat can mean the cohort grew, and a first observation sets a baseline and writes no event.
Share of a category
Prevalence is per 100 websites in the cohort, not a share of the category's users. For a share of the category, count the websites that run any tool of its category and divide. A website that runs two tools in the category appears in both counts, so the shares across a category can add to more than 100.
-- :category is the technology_category of your own tool
select
count(distinct case when technology = :technology then domain end) as mine,
count(distinct domain) as any_in_category
from company_technologies
where technology_category = :category
and missing_since is null;Take the illustrative tool above in week 4: 8.8 per 100 on a cohort of 6,000 websites is 528 websites. If 4,400 websites run any tool of its category, its share of the category is 12 per 100, while its prevalence across all websites is 8.8 per 100. Quote the two together, and say which is which.
Splitting the base by industry and country
Change dimension_kind to industry or country and read one metric at a time to see where the base is concentrated.
select
dimension,
count as websites,
cohort,
rate as per_100_websites,
growth
from market_series
where metric = 'tech_prevalence:' || :technology
and dimension_kind = 'industry'
and window_days = 7
and as_of = (select max(as_of) from market_series)
order by rate desc;Read rate for where the tool is most common and count for where its websites are, because a high rate over a small cohort is a small segment. growth is the change in the count against the previous window, and a large growth on a small count is a small segment moving a little. The rows below are illustrative.
| Industry | Websites | Cohort | Per 100 | Growth |
|---|---|---|---|---|
| A | 210 | 1,500 | 14.0 | 0.04 |
| B | 38 | 160 | 23.8 | 0.19 |
| C | 120 | 2,400 | 5.0 | -0.02 |
Industry B has the highest rate and the fastest growth, but 38 websites on a cohort of 160 is a small segment. Industry A holds most of the websites. Industry is a label produced under a named, frozen version, country is the headquarters country, and not every family exists over every dimension: the catalogue lists them.
The index is 100 at the series' first as-of date and the rate relative to it afterwards. It lets you set a rival of a different size beside your own tool, but a tool that was rare in the first week will show a large index from a small change.
From the series to the companies
The series name no company. For the companies behind a week's adds and removals, read Technology Changes in the marketing stack dataset, which holds one dated row for every adoption and removal.
select
date_trunc('week', observed_at) as week,
change,
count(distinct company_id) as companies
from company_tech_events
where category in ('technology', 'dns')
and key = :technology
and change in ('added', 'removed')
group by 1, 2
order by 1, 2;Select company, company_id and observed_at instead of the count to get the list. The category dns covers tools recognised by their DNS records.
To see where leavers go, use the events. A migration from one commerce or content platform to another is recorded as one platform event with the values before and after. For other tools, look for added events of another technology in the same category, at the same company, within 30 days of the removal, as the guide to competitor displacement describes.
A weekly report in five lines
Once the queries run, the report is short enough to read in a minute.
- Level: prevalence per 100 websites, with its cohort.
- Flow: adds, removals and net, with the count behind each.
- Position: the same three figures for each rival, over the same window.
- Split: the industries or countries where the net is highest and lowest, with their cohorts.
- Checks: whether any cohort moved by more than a few per cent since the last report, and whether every figure uses the 7-day window.
Publish it after each Sunday's as-of is written, and keep the earlier reports. The rows never change, so last month's report can be rebuilt exactly.
How to read the movement
- Coverage growth. A raw count of websites running a tool rises when the cohort grows. Use rates over a stated cohort, and prefer adds and removals, which count changes and not coverage.
- Presence. Tags come and go with consent banners and tests, and a removal is recorded once the absence is confirmed, so a removal is dated a little after the change itself.
- Several tools per website. A website can run a tool and its rival together, which is why category shares can exceed 100.
- Observation dates. A change is dated to the observation that recorded it, and every event carries that time.
What the base tells you
A website that shows a tool is evidence of use at that company: it dates when each company adopted and dropped the tool, and where in industry and country the base sits. Read it as a count of companies running the tool, which is the figure a share-of-market or displacement analysis needs. The methodology sets out each rule.
Analysts who cover listed software vendors read the same series as a proxy for customer growth, and reading technology adoption as a signal of vendor revenue covers that use and its limits.
Frequently asked questions
What is an installed base?
An installed base is the set of customers or accounts that already use a product. On the web it is measured as the websites on which the product or tool is seen. Fokals recognises 6,283 technologies on websites and dates every adoption and removal. For each recognised tool the weekly Market Series state the count per 100 websites of a cohort.
How do you measure a competitor's installed base?
Check that the competitor's tool appears in the series catalogue, then read its prevalence, adds and removals series for the same industry or country as yours, over the same window. For the companies behind the numbers, read Technology Changes and Technology Stack. The result is the websites showing the tool, company by company, with the date each one adopted or dropped it.
How do you calculate net adds for a technology?
Net adds are the websites that added the tool in a window minus the websites that removed it in the same window. In Market Series, subtract the count of the removals series from the count of the adds series for the same as-of date, dimension and window. Subtract the two rates to state the result per 100 websites.
How often is installed base data updated?
The series are written weekly, as of each Sunday, and never revised. The datasets beneath them are refreshed daily to weekly, and every change carries the time it was observed. A weekly series therefore shows the changes recorded up to that Sunday.
Why does a technology's count rise when nobody has adopted it?
The cohort grows. A raw count of websites showing a tool rises whenever the cohort widens, and a website's first observation shows what it already ran. A rate over a same-store cohort, and the adds and removals counted from changes between two observations, keep that growth out of the movement you report.
The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.