Who are the top RUM analytics providers?

Still need to add MS App Insights, most (all?) Catchpoint RUM scripts are self-hosted so this may under detect them

One thing to remember is although there may be the data collection script on the page, there are multiple versions of these products e.g. there’s a free (lite) and paid for version of mPulse, similar thing applies for New Relic – many sites have the script but the data collection is so low that the product isn’t very useful

SELECT 
  sites,
  ROUND(sites / (SELECT COUNT(DISTINCT page) FROM `httparchive.requests.2020_06_01_desktop`) * 100 , 2) AS pct_sites,
  vendor
FROM (
  SELECT     
    COUNT(DISTINCT page) as sites, 

    CASE 
      WHEN REGEXP_CONTAINS(url, r"http[s]*://[www.|ssl.]*google-analytics.com/ga.js") THEN "Google Analytics"
      WHEN REGEXP_CONTAINS(url, r"http[s]*://[www.|ssl.]*google-analytics.com/analytics.js") THEN "Google Analytics"
      WHEN REGEXP_CONTAINS(url, r"http[s]*://[www.|ssl.]*googletagmanager.com/gtag/js") THEN "Google Analytics"
      WHEN REGEXP_CONTAINS(url, r"http[s]*://rum-static.pingdom.net/prum") THEN "Pingdom"
      WHEN REGEXP_CONTAINS(url, r"insight.torbit.com/.*.js") THEN "Torbit"
      WHEN url LIKE "%aksb.min.js%" THEN "Akamai (Legacy RUM)"
      WHEN url LIKE "%go-mpulse.net/boomerang/%" 
        OR url LIKE "%lognormal.net/boomerang/%" THEN "Akamai mPulse"
      WHEN url LIKE "%/gomez%" 
        AND url LIKE "%rum%" 
        AND url LIKE "%.js%" THEN "Gomez"
      WHEN REGEXP_CONTAINS(url, r".*boomerang[\d\-\w\.]*(\.js)?$") THEN "boomerang.js"
      WHEN url LIKE "%js-agent.newrelic.com%" THEN "New Relic"
      WHEN url LIKE "%spdcrv%" OR url LIKE '%speedcurve.com/js/lux.js%'THEN "SpeedCurve"
      WHEN url LIKE "%nccrum.core.js%" 
        OR url LIKE "%://data.rci.eggplant.cloud/rci.core.js%" THEN "Eggplant"
      WHEN url LIKE "%cdn.appdynamics.com%" THEN "AppDynamics"
      WHEN url LIKE "%static.cloudflareinsights.com/beacon.min.js%" THEN "CloudFlare"
      WHEN url LIKE "%ruxitagent%.js%" THEN "Dynatrace" 
      WHEN url LIKE "%rum.monitis.com%.js%" THEN "Monitis" 
      WHEN url LIKE "%site24x7rum-min.js%" THEN "Site24x7"
      WHEN url like "%uptrends.com%rum.%.js%" THEN "Uptrends"
      WHEN url like "%cdn.raygun.io/raygun4js/raygun.%.js%" THEN "RayGun"
      WHEN url like "%atatus.js%" THEN "Atatus"
      WHEN url LIKE "%://eum.instana.io/eum.min.js%" THEN "Instana"
      WHEN url LIKE "%://cdn.sematext.com/rum.js%" THEN "Sematext"
      WHEN url LIKE "%btttag.com/btt.js%" THEN "Blue Triangle"
      WHEN url LIKE "%://stckjs.azureedge.net/stckjs.js%" THEN "Stackify"
      WHEN url LIKE "%://www.datadoghq-browser-agent.com/datadog-rum%" THEN "Datadog"
      WHEN REGEXP_CONTAINS(url, r"/catchpoint[0-9\-]*.js") THEN "Catchpoint"
      WHEN url LIKE "%://cdn.webtuna.com/webtuna.js%" THEN "WebTuna"
      WHEN url LIKE "%://browser.plumbr.io/pa.js" THEN "Plumbr"
      WHEN url LIKE "%://cdn-assets.rapidspike.com/static/js/timingpcg.min.js" THEN "RapidSpike"
      WHEN url LIKE "%/clobs.min.js%" THEN "ip-label"
      WHEN url LIKE "%://appstatic.quanta.io/quanta-rum%" THEN "Quanta"
      WHEN url LIKE "%://cdn.quantummetric.com/qscripts/quantum-%.js%" THEN "Quantum Metric"
    END as vendor
  FROM `httparchive.requests.2020_06_01_desktop`
  GROUP BY vendor 
)
WHERE vendor IS NOT NULL
GROUP BY vendor, sites
ORDER BY sites DESC
sites pct_sites vendor
3393853 68.03 Google Analytics
147983 2.97 New Relic
127671 2.56 boomerang.js
15396 0.31 Akamai mPulse
7773 0.16 CloudFlare
5667 0.11 Dynatrace
5018 0.1 Pingdom
2949 0.06 AppDynamics
2514 0.05 Akamai (Legacy RUM)
1313 0.03 Instana
1150 0.02 SpeedCurve
963 0.02 RayGun
886 0.02 Site24x7
652 0.01 Quantum Metric
558 0.01 Datadog
177 0.0 Blue Triangle
166 0.0 Monitis
68 0.0 Plumbr
66 0.0 Catchpoint
54 0.0 Atatus
47 0.0 Eggplant
13 0.0 Sematext
10 0.0 Quanta
10 0.0 ip-label
9 0.0 RapidSpike
2 0.0 WebTuna
1 0.0 Uptrends
1 0.0 Stackify
1 Like

@patrickhulce has https://www.thirdpartyweb.today/ which includes a graph that tracks the top analytics providers. I wonder if there’s an opportunity to combine forces / cross-polinate here, for example Patrick’s dataset also includes Yandex Metrica and Hotjar.

Think it depends what you want this list to be - for example HotJar and most of the session replay tools don’t collect speed data but Metrica does (as does Decibel Insight, FullStory, Snowplow)

Yeah hopefully third-party-web can be of some help here! Unfortunately like @andydavies mentions we don’t really have a distinction for RUM providers within analytics providers yet. We also track entites more so than technologies. For example we wouldn’t identify self-hosting of Matomo, so slightly different goals there as well.

If you want the broader net from our dataset though you could generate a case query with something like…

const analyticsEntities = require('third-party-web').entities.filter(entity => entity.categories.includes('analytics'));
const sqlCaseLines = analyticsEntities.map(entity => entity.domains.map(domain => `WHEN url LIKE "%${domain.replace('*.', '')}/%" THEN "${entity.name}"`))
console.log(sqlCaseLines.reduce((a, b) => a.concat(b)).join('\n'))

If there’s anything missing we would love a PR :smiley:

November 2021:

rank site pct_site vendor
1 3828776 66.28 Google Analytics
2 170333 2.95 New Relic
3 167567 2.9 boomerang.js
4 92884 1.61 Cloudflare
5 22512 0.39 Akamai mPulse
6 8984 0.16 Dynatrace
7 3523 0.06 Pingdom
8 2691 0.05 AppDynamics
9 2500 0.04 Datadog
10 2182 0.04 Akamai (Legacy RUM)
11 1875 0.03 SpeedCurve
12 1591 0.03 RayGun
13 1056 0.02 Instana
14 991 0.02 Site24x7
15 955 0.02 Quantum Metric
16 259 0.0 Blue Triangle
17 80 0.0 Catchpoint
18 49 0.0 Atatus
19 37 0.0 Eggplant
20 28 0.0 RapidSpike
21 26 0.0 Plumbr
22 20 0.0 ip-label
23 15 0.0 Quanta
24 7 0.0 Sematext
25 2 0.0 WebTuna

(using Andy’s query from above)

Main change is a large increase from Cloudflare’s beacon.

1 Like

Any chance we could get that updated to say Cloudflare (lowercase ‘f’ to match current styling)?

1 Like

There’s also a RUM category in Wappalyzer now, which allows it to check more than just URL (e.g. js Variables).

Not all of the above are in there (add them please if you know how to detect them!) but means we can query like this:

SELECT
  app,
  COUNT(DISTINCT url) AS num_sites,
  total_urls AS total_sites,
  SUM(COUNT(DISTINCT url)) OVER () AS total_rum_sites,
  ROUND(COUNT(DISTINCT url) / total_urls * 100, 2) AS pct_all_sites,
  ROUND(COUNT(DISTINCT url) / SUM(COUNT(DISTINCT url)) OVER () * 100, 2) AS pct_rum
FROM
  `httparchive.technologies.2021_11_01_desktop`
JOIN
  (
    SELECT
      COUNT(DISTINCT url) AS total_urls
    FROM
      `httparchive.summary_pages.2021_11_01_desktop`
  )
ON (1=1)
WHERE
  category = 'RUM'
GROUP BY
  app,
  total_urls
ORDER BY
  pct_all_sites DESC

Which gives this:

app num_sites total_sites total_rum_sites pct_all_sites pct_rum
Boomerang 188682 5786819 374041 3.26 50.44
Cloudflare Browser Insights 69952 5786819 374041 1.21 18.7
Google Core Web Vitals 58044 5786819 374041 1.0 15.52
Akamai mPulse 20910 5786819 374041 0.36 5.59
Datadog 11538 5786819 374041 0.2 3.08
Pingdom 9931 5786819 374041 0.17 2.66
Elastic APM 5083 5786819 374041 0.09 1.36
AppDynamics 3348 5786819 374041 0.06 0.9
Raygun 2174 5786819 374041 0.04 0.58
SpeedCurve 1960 5786819 374041 0.03 0.52
Instana 1115 5786819 374041 0.02 0.3
Site24x7 946 5786819 374041 0.02 0.25
RapidSpike 96 5786819 374041 0.0 0.03
Blue Triangle 262 5786819 374041 0.0 0.07
1 Like