ReleaseTEAM Back to the Step Cost Calculator

Step Cost Calculator · industry benchmark

How the benchmark handles your numbers

Your rules export never leaves your browser. Unless you untick the box under your report, the report's rounded numbers and percentages are sent to us so we can learn what a typical Automation estate looks like. This page says exactly what that request holds, what we store, and how to stop it or have it removed.

What never leaves your browser

What the request holds

One request to /e/bench on this site, about ten seconds after your report appears, and an update at most every 30 seconds while you change the calculator. Every value is a number:

KeyMeaningPrecision
r, en, fr, lrRules in the export; enabled; flagged; enabled with a looprounded to 2 significant figures
stSteps if every rule ran once2 significant figures
ms, ovMonthly steps; steps over your allowance1 significant figure
mcEstimated monthly cost, USD1 significant figure
jt, ctJira and Confluence plan tieras selected
sbSeat band: 0 = up to 250, 1 = 251 to 1,000, 2 = 1,001 to 5,000, 3 = over 5,000band only, never the seat count
fb, fl, fs, fg, fcRules raising each kind of flag2 significant figures
pe, pf, pl, poEnabled %, flagged %, loop % of enabled, overage % of stepswhole percent
rm, rp, sdRun counts measured from an audit log; a preset was used; seats and tiers left at defaults1 or 0
v, sFormat version; a random token made for this reportthe token is not derived from your file

The report shows the exact request under See exactly what is shared, and you can match it against your browser's network tab. This site's Content-Security-Policy blocks fetch, XHR and WebSocket connections to everywhere except one address, the optional summary email below, so this image request is the only one that carries numbers without you asking.

"Email me this summary"

Under the cost estimate you can type an email address and press Send me this summary. Only then, and only when you press it, the page sends one request to https://www.releaseteam.com/wp-json/releaseteam/v1/email-report holding exactly: your email address, the name of this tool, the estimated steps per month, the estimated monthly overage in dollars, the number of rules flagged, and the Jira and Confluence plans you picked. Never your file, the file name, any rule name or your seat counts. That address is the only one this site's Content-Security-Policy lets the page connect to, and releaseteam.com refuses any request carrying anything else.

releaseteam.com emails those figures back to you with a link to this tool and does not keep a copy of them. To stop the same address or network being used to send many emails, it keeps a short-lived counter under a keyed hash of your address and of your IP address, for at most a day. The optional Also send me DevOps Roundup monthly box is unticked unless you tick it; if you do, your email address alone is added to our DevOps Roundup list in Constant Contact, tagged with this tool's name, and every issue has an unsubscribe link.

What we store

For each request, one line: the date (not the time) and the numbers above. No IP address, no browser or device details, no cookies. Your address is used in memory for a rate limit against abuse and is not written down. Requests from other websites, and requests over the rate limit, are not stored at all.

Once a day, a backup copy of the previous day's lines goes to a private Amazon S3 bucket in the same AWS region as this site. It holds the same lines and nothing more, and the server can add to it but cannot read it back.

This is the server configuration that does it, quoted from the code we run:

limit_req_zone $binary_remote_addr zone=steps_bench:1m rate=10r/m;
map $time_iso8601 $bench_day {
    "~^(?<d>[0-9]{4}-[0-9]{2}-[0-9]{2})" $d;
    default "-";
}
map "$status|$http_sec_fetch_site|$http_sec_fetch_dest" $bench_req_ok {
    "200|same-origin|image" 1;
    default                 0;
}
map $args $bench_args_ok {
    "~^[a-z0-9=&.-]{1,600}$" 1;
    default                  0;
}
map "$bench_req_ok$bench_args_ok" $bench_ok {
    "11"    1;
    default 0;
}
log_format steps_bench '$bench_day $args';
location = /e/bench {
    limit_req zone=steps_bench burst=20 nodelay;
    limit_req_status 429;
    limit_req_log_level info;
    access_log /var/lib/steps-bench/bench.log steps_bench if=$bench_ok;
    add_header Cache-Control "no-store" always;
    add_header X-Content-Type-Options "nosniff" always;
    empty_gif;
}

How it is used

Opting out and removal