What is in an mPulse beacon
What's in an mPulse Beacon (Web Apps)
The content of this page applies to mPulse web apps. Documentation for mobile apps is available here.
mPulse is built on top of the boomerang JavaScript library which collects web performance data from a user’s web browser and sends the data back to the mPulse servers via a beacon.
Beacons are invisible network requests that contain performance data and other page-load characteristics. All of this data is included on the beacon via HTTP headers or as part of the query string or form payload.
Within the web performance community, this data is commonly called RUM or Real User Measurement data because it involves measuring the experience of real users.
In this document, we will describe the various parameters collected via the boomerang beacon as well as how they are mapped to other parts of mPulse such as S3, Asgard and DSWB.
As of April 2020, all IP addresses are truncated. IPv4 IPs are truncated to /24 (e.g. 1.2.3.4
to 1.2.3.0
) and IPv6 IPs are truncated to /64 (e.g. aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh
to aaaa:bbbb:cccc:dddd::
).
Top Level Fields
Field | Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|---|
Log Type | -- | type | -- | -- | beacon batch | mPulse log type |
Beacon ID | -- | id | beaconId | -- | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | Beacon GUID |
Domain | h.d | domain | -- | domain | website.com | Registered domain or registered dev domain in mPulse of the page sending the beacon |
Domain ID | -- | domainid | appid | -- | 123 | Registered domain ID |
Timestamp | -- | timestamp | timestamp | timestamp | 1512086400000 | Server timestamp when beacon arrived (Unix epoch) |
Page ID | pid | page_id | pageId | -- | abcd1234 | Page ID |
Beacon Number | n | n | additionalfieldsjson | -- | 1 | Beacon number for current page |
IP | -- | remote_ip | remoteip | remoteIP | 1.2.3.0 | IP address of the end user (or the proxy they are connected through) (truncated) |
API Key | h.key | key | -- | key | XXXXX-XXXXX-XXXXX-XXXXX-XXXXX | mPulse API Key assigned to this domain |
Beacon HTTP Method | -- | http_method | -- | httpMethod | GET POST | HTTP Request method used to send the beacon (for internal use only) |
Beacon HTTP Version | -- | http_version | -- | httpVersion | HTTP/1.1 | HTTP Version used to send the beacon (for internal use only) |
Beacon Referrer | -- | http_referrer | -- | beaconReferrer | http://referrer.com | URL of the page that sent the beacon. This may be blank depending on browser privacy settings. |
Beacon IPv6 | -- | ipv6 | ipv6 | ipv6 | true | Set to true if the beacon was sent using IPv6 (for internal use only) |
Proxy Address | -- | proxy_address | -- | proxyAddress | 1.2.3.4 | IP address of the CDN provider that handled the edge connection for this beacon (for internal use only) (not truncated) |
Beacon Type | http.initiator | beacon_type | beacontypename | beaconType | page view xhr unload spa spa_hard interaction client_batch api_custom_metric api_custom_timer api_network_request | Type of beacon: page view, XHR, SPA hard or soft navigation, etc |
Page Group | h.pg | page_group | pagegroupname | pageGroup | Home Orders PDP (No Page Group) | Page Group for the page (Page Groups are defined in the mPulse App Config dialog) |
A/B Test name | h.ab | ab_test | abtestname | abTestName | A B | If the site uses A/B Testing, this variable specifies the test bucket the user was in when they sent the beacon |
Site/App Version | h.v | site_version | siteversionname | siteVersion | 1.0 2.5b | Site owners may use this to specify a release number for their site. |
Filtered URL | -- | url | url | url | http://website.com/ | URL of page according to any URL patterns defined within the app. If no URL patterns are defined, this is the top level URL of the site. |
Warnings | -- | warnings | warnings | warnings | ["clock:askew"] | Array of warnings added by the collector when parsing this beacon |
SPDY | nt_spdy | spdy | spdy | spdy | true | Set to true if the page was served using SPDY |
SSL | -- | ssl | ssl | ssl | true | Set to true if the page was served using SSL |
API Status | api | api | -- | -- | true | Set to true if this beacon was sent from an API call |
Mobile Connection Type | mob.ct | mobile_connection_type | mobileConnectionType | -- | Ethernet WiFi 2G 3G 4G LTE | Mobile connection type |
Navigation Type | nt_nav_type | navigation_type | navigationTypeName | -- | navigate reload back_forward | Navigation Type |
Session
The following fields live under the session: {}
object in S3.
Session | Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|---|
Session ID | rt.si | ID | sessionid | sessionId | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-nnnnnn | Session ID generated by mPulse and stored in a cookie by Boomerang. The first five chunks are a UUID, while the last chunk is the base36 representation of the session start time based on the user's clock. |
Session Start Time | rt.ss | start | sessionstart | sessionStart | 1512086400000 | Session start time (Unix epoch) based on the user's browser's clock. This clock may not be in sync with the server clock, so only compare it with other browser timestamps. |
Session Latest Time | rt.end | latest | sessionlatest | sessionLatest | 1512086400000 | The timestamp (Unix epoch) of the current beacon based on the user's browser's clock. It is not the timestamp of the latest beacon in the session. To find out actual session duration, look at MAX(latest) - MIN(start) across all beacons grouped by Session ID. |
Session Length (in Pages) | rt.sl | pages | sessionpages | sessionLength | 10 | The number of pages the user viewed in this session up to and including the current page, but not including any pages viewed after this page in the same session. To find out actual Session Length in pages, look at MAX(pages) across all beacons grouped by Session ID.If MAX(pages) == 1 , then the session is considered a bounce. |
Uncounted pages | rt.obo | oboPages | sessionobopages | sessionUncountedPages | 0 | The number of pages in the session for which we were unable to calculate a load time. We need this to get a closer estimate of the actual average load time of all pages in the session. |
Total Load Time | rt.tt | totalLoadTime | sessiontotalloadtime | sessionTotalLoadTime | 2000 | The sum of load times (in milliseconds) of all pages within the session where we calculated load time. The average load time of a session is MAX(totalLoadTime) / (MAX(pages) - MAX(oboPages)) . |
Unload flag | rt.quit | isUnload | sessionisunload | sessionIsUnload | true or missing | This field specifies if the beacon was part of the unload event of the page or not. Unload beacons give us a better idea of how long a session actually lasted. |
User Agent Fields
The following fields come from the User-Agent
HTTP Request Header. There are no query string parameters.
The following fields live under the user_agent: {}
object in S3.
User Agent Fields | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
Browser Family | family | useragentname | userAgentFamily | Chrome Firefox IE Safari Mobile Safari | The browser family extracted from the user agent header |
Major version | major | useragentversion | userAgentMajor | 42 13 11 | The browser major version |
Minor version | minor | useragentminor | userAgentMinor | 0 5 | The browser minor version |
OS Name | os | operatingsystemname | userAgentOs | Windows Android OS Mac OS X iOS | The Operating System name for the user |
OS Version | osversion | operatingsystemversion | userAgentOsVersion | 8.1 | The Operating System version for the user |
Model | model | devicename | userAgentModel | iPhone iPad | Device model for mobile devices |
Manufacturer | manufacturer | devicemanufacturername | userAgentManufacturer | Apple Samsung LG | Device manufacturer for mobile devices |
Device Type | type | devicetypename | userAgentDeviceType | Desktop Mobile Tablet | Device type |
Synthetic | synthetic | -- | -- | WebPagetest | Detected synthetic user agent name |
Bot | bot | -- | -- | cURL Googlebot | Detected bot name |
Raw User Agent String | raw | useragentraw | userAgentRaw | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 | The raw User-Agent HTTP header |
Geo Information
The following fields come from doing a MaxMind GeoIP lookup on the source IP address. There are no query string parameters.
The following fields live under the geo: {}
object in S3.
Geo Information | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
Country | cc | countrycode | countryCode | US | The user's country (L1 geo info) |
Region/State/Territory | rg | regioncode | regionCode | DC | The user's region, state, province, or territory (L2 geo info) |
City | city | geocity | cityName | Washington | The user's city (L4 geo info) |
Postal Code | postalcode | geopostalcode | postalCode | 20009 | The user's postal/zip code |
Latitude | lat | geolat | latitude | 10.0 | The user's approximate latitude (as granular as the zip code of the ISP the user is connecting from) |
Longitude | lon | geolon | longitude | 10.0 | The user's approximate longitude (as granular as the zip code of the ISP the user is connecting from) |
Organization | org | geoorg | organization | Comcast Cable Verizon Wireless | The user's organization, if connected over a corporate/university network |
ISP | isp | geoisp | isp | Comcast Cable Virgin Media | The user's ISP |
Network speed | netspeed | conntypename | networkSpeed | Cellular Ethernet Cable/DSL | The advertised network grade of the user's internet connection |
Overwritten Location | ovr | -- | -- | true false | Whether the mobile device's location API was used to determine location (rather than the source IP address) |
Bandwidth
The following fields live under the bandwidth: {}
object in S3.
Also see Bandwidth & Latency details in the Other Parameters section below.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
bw | kbps | bandwidthkbps | kbps | 1000 | Bandwidth (in kbps) as measured by the bandwidth test |
bw_err | error_pc | bandwidtherrorpc | kpbsError | 10 | Error in measuring the bandwidth based on standard deviation |
block | bandwidthblockcode | bandwidthBlock | 1 5 | Bandwidth block (calculated by the server) | |
bw_debug | bw_debug | -- | -- | 5_20 | Bandwidth debugging info |
Timers
All timers are in milliseconds unless otherwise specified.
The following fields live under the timers: {}
object in S3 unless otherwise specified.
Standard Timers
Timers | Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|---|
Base Timers | The following fields are sent on the beacon as-is | |||||
Unload Time | -- | unload_time | unloadTime | -- | 100 | Time unloading the previous page |
Redirect Time | -- | redirect_time | redirectTime | -- | 100 | Time from redirect start to redirect end |
Waiting Time | -- | waiting_time | waitingTime | -- | 100 | Time from request start to response start |
Download Time | -- | download_time | downloadTime | -- | 100 | Time from response start to response end |
Back-End Time (TTFB) | t_resp | t_resp | firstbytetimer | timersResponse | 100 | Time from navigation start to first byte |
Front-End Time | t_page | t_page | firstlastbytetimer | timersPage | 100 | Time from first byte to onload (or whenever the page is considered ready) |
Page Load time | t_done | t_done | pageloadtime | timersDone | 100 | Time from navigation start to onload (or whenever the page is considered ready) |
DOM Loaded | t_domloaded | t_domloaded | timerstdomloaded | timersDomLoaded | 100 | Time from navigation start to when the DOMContentLoaded event fired |
config.json first byte | t_configfb | t_configfb | timerstconfigfb | timersConfigFirstByte | 100 | Time from config.json request to config.json first byte |
config.json load time | t_configjs | t_configjs | timerstconfigjs | timersConfigJs | 100 | Time from config.json request to config.json load complete |
Worker Start | -- | worker_start | workerStart | -- | 100 | Time for Service Worker start |
Other Timers | The following are sent on the beacon as part of t_other | |||||
Boomerang loader | boomr_ld | boomr_ld | timersboomrld | timersBoomerangLoader | 100 | Time from navigation start to when the Boomerang loader initiates Boomerang download |
Boomerang first byte | boomr_fb | boomr_fb | timersboomrfb | timersBoomerangFirstByte | 100 | Time from navigation start to first byte of Boomerang |
Boomerang latency | boomr_lat | boomr_lat | timersboomrlat | timersBoomerangLatency | 100 | Time from Boomerang request to Boomerang first byte |
Boomerang download time | boomerang | boomerang | timersboomerang | timersBoomerang | 100 | Time from first byte of Boomerang until Boomerang completes initialization |
Detailed Boomerang Times | The following are sent on the beacon compressed using Resource Timing compression | |||||
Detailed Boomerang times | rt.bmr | params["rt.bmr"] | paramsRtBmr* | -- | 145,124,2 | Resource Timing values for Boomerang, compressed using the Resource Timing compression algorithm |
Detailed config.json times | rt.cnf | params["rt.cnf"] | paramsRtCnf* | -- | 301,100,3 | Resource Timing values for config.json , compressed using the Resource Timing compression algorithm |
Prerender States
These are only supported on Chrome at this time.
See Chromium Prerender docs & Prerendering in Chrome
Prerender states | Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|---|
Prerender complete | t_load | t_load | timerstload | timersLoad | 100 | Time from navigation start to onload, if the page was in a pre-rendered state when onload fired |
Total prerender | t_prerender | t_prerender | timerstprerender | timersPreRender | 100 | Time from navigation start to page becoming visible, if it went through a pre-rendered state first |
Post render | t_postrender | t_postrender | timerstpostrender | timersPostRender | 100 | Time from onload in a pre-rendered state to page becoming visible |
Added by Server
The following are calculated on the server. There are no query string parameters.
S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|
navSt_to_boomr | timersnavsttoboomr | timersNavigationStartToBoomerang | 100 | Time from navigation start to when the Boomerang loader initiates Boomerang download |
fb_to_boomr | timersfbtoboomr | timersFirstByteToBoomerang | 100 | Time from the first byte of the page to Boomerang's request initiation. This is used by FirstByteEstimator for beacons without a valid load time. |
boomr_to_end | timersboomrtoend | timersBoomerangToEnd | 100 | Time from Boomerang's request initiation to page load. This is used by FirstByteEstimator for beacons without a valid load time. |
before_dns | timersbeforedns | timersBeforeDns | 100 | domainLookupStart - navigationStart from NavigationTiming |
dns | dnstimer | timersDns | 100 | domainLookupEnd - domainLookupStart from NavigationTiming |
tcp | tcptimer | timersTcp | 100 | connectEnd - connectStart from NavigationTiming |
ssl | ssltimer | timersSsl | 100 | connectEnd - secureConnectionStart from NavigationTiming |
domLoad | domloadtimer | timersDomLoad | 100 | domLoading - navigationStart from NavigationTiming |
domReady | domreadytimer | timersDomReady | 100 | domComplete - navigationStart from NavigationTiming |
renderStart | timersrenderstart | timersRenderStart | 100 | firstPaint - navigationStart from NavigationTiming |
loaded | timersloaded | timersLoaded | 100 | loadEventEnd - navigationStart from NavigationTiming |
uno | unattributedNavigationOverhead | unattributedNavigationOverhead | 100 | Any non-attributed time between navigationStart and requestStart |
Custom Timers
Custom Timers are configured via the mPulse App config dialog and may be based on a JavaScript variable, NavigationTiming, Resource Timing or User Timing.
On the beacon, these are part of t_other
.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
custom[0-9] | custom[0-9] | customtimer[0-9] | timersCustom[0-9] | 100 | Custom Timer #[n] |
User Defined Timers
You may also add your own timers by calling BOOMR.plugins.RT.setTimer()
from JavaScript.
Every custom timer also contains a corresponding *_st
(eg: custom0_st
) that specifies the timestamp (Unix epoch) when the timer started.
Custom Metrics
Custom metrics are defined in the mPulse App config dialog.
On the beacon, these metrics have the prefix cmet.
, followed by a sanitized version of the metric name.
In the S3 logs, these metrics are all numerically indexed. Example:
...
custom_metrics: {
"0": 10,
"5": 1
},
...
Metric values are always numeric.
Currency values are always in the lowest unit (eg, ¢ rather than $). If a decimal place is included, then the value is multiplied by 100 to get the actual currency value.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
cmet.[Metric0-9_Name] | 0 | custommetric[0-9] | customMetric[0-9] | 1 | Custom Metric #[n] |
Custom Dimensions
Custom dimensions are defined in the mPulse App config dialog.
On the beacon, these dimensions have the prefix cdim.
, followed by a sanitized version of the dimension name.
In the S3 logs, these dimensions are in the custom_dimensions
array indexed by their dimension number. Dimensions that aren't set may be null
or missing (if no dimensions follow). Example:
...
custom_dimensions: [
{
"Region": "us",
"alias": "United States"
},
null,
{
"Logged In": false,
"alias": "False"
}
],
...
Dimension values may be numeric, string or boolean.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
cdim.[Dimension0-9_Name] | (index 0) | customdimension[0-9]value | -- | { "Region": "us", "alias": "United States" } | Custom Dimension #[n] |
HTTP Headers
The following fields live under the headers: {}
object in S3.
All headers are lower-cased.
This is not an exhaustive list of all possible HTTP headers.
Source | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
CDNs | x-forwarded-for | -- | -- | 1.2.3.0 1.2.3.0,2.2.2.0 | List of IP addresses specifying user and all proxies between CDN and the user (truncated) |
CDNs | x-forwarded-proto | -- | -- | https http spdy | Protocol used by end user's browser to connect to CDN endpoint |
Akamai | aka-true-ip | -- | -- | 1.2.3.0 | Client IP (truncated) |
Browser | connection | -- | -- | close keep-alive | The HTTP Connection header specifies if the browser is willing to handle persistent TCP conections or not |
Browser | host | headershost | headersHost | abc123.akstat.io | The beacon server where the beacon was sent. This is required by the HTTP specification. |
Browser | accept-encoding | headersacceptencoding | headersAcceptEncoding | gzip deflate sdch br | List of encoding (compression) types supported by the user's browser |
Browser | accept-language | -- | -- | en_US fr_CH | Language encodings supported by the user's browser. This could suggest the user's locale. |
Browser | accept | headersaccept | headersAccept | */* | Content types supported by the browser, along with their priorities |
Browser | content-length | headerscontentlength | headersContentLength | 1234 | This is only used for POST beacons and is the number of bytes in the POSTed beacon |
Other Parameters
Navigation Timing Data
See the NavigationTiming spec for more details, and browser support can be reviewed at caniuse.com.
All timestamps are in (Unix epoch) unless otherwise specified.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
nt_nav_type | nt_nav_type | paramsntnavtype | ntNavigationType | 0 1 2 | Navigation Type: performance.navigation.type |
nt_nav_st | nt_nav_st | paramsntnavst | ntNavigationStart | 1512086400000 | Navigation Start: performance.timing.navigationStart |
nt_red_st | nt_red_st | paramsntredst | ntRedirectionStart | 1512086400000 | Redirect Start: performance.timing.redirectStart |
nt_red_end | nt_red_end | paramsntredend | ntRedirectionEnd | 1512086400000 | Redirect End: performance.timing.redirectEnd |
nt_red_cnt | nt_red_cnt | paramsntredcnt | ntRedirectionCnt | 1512086400000 | Redirect Count: performance.navigation.redirectCount |
nt_fet_st | nt_fet_st | paramsntfetst | ntFetchStart | 1512086400000 | Fetch Start: performance.timing.fetchStart |
nt_dns_st | nt_dns_st | paramsntdnsst | ntDnsStart | 1512086400000 | DNS Start: performance.timing.domainLookupStart |
nt_dns_end | nt_dns_end | paramsntdnsend | ntDnsEnd | 1512086400000 | DNS End: performance.timing.domainLookupEnd |
nt_con_st | nt_con_st | paramsntconst | ntTcpStart | 1512086400000 | TCP Start: performance.timing.connectStart |
nt_ssl_st | nt_ssl_st | paramsntsslst | ntSslStart | 1512086400000 | SSL Start: performance.timing.secureConnectionStart |
nt_con_end | nt_con_end | paramsntconend | ntTcpEnd | 1512086400000 | TCP End: performance.timing.connectEnd |
nt_req_st | nt_req_st | paramsntreqst | ntRequestStart | 1512086400000 | Request Start: performance.timing.requestStart |
nt_res_st | nt_res_st | paramsntresst | ntResponseStart | 1512086400000 | Response Start: performance.timing.responseStart |
nt_unload_st | nt_unload_st | paramsntunloadst | ntUnloadStart | 1512086400000 | Unload Event Start: performance.timing.unloadEventStart |
nt_unload_end | nt_unload_end | paramsntunloadend | ntUnloadEnd | 1512086400000 | Unload Event End: performance.timing.unloadEventEnd |
nt_domloading | nt_domloading | paramsntdomloading | ntDomLoading | 1512086400000 | DOM Loading: performance.timing.domLoading |
nt_res_end | nt_res_end | paramsntresend | ntResponseEnd | 1512086400000 | Response End: performance.timing.responseEnd |
nt_domint | nt_domint | paramsntdomint | ntDomInt | 1512086400000 | DOM Interactive: performance.timing.domInteractive |
nt_domcontloaded_st | nt_domcontloaded_st | paramsntdomcontloadedst | ntDomContLoadedStart | 1512086400000 | DOMContentLoaded Start: performance.timing.domContentLoadedEventStart |
nt_domcontloaded_end | nt_domcontloaded_end | paramsntdomcontloadede | ntDomContLoadedEnd | 1512086400000 | DOMContentLoaded End: performance.timing.domContentLoadedEventEnd |
nt_domcomp | nt_domcomp | paramsntdomcomp | ntDomComp | 1512086400000 | DOM Complete: performance.timing.domComplete |
nt_load_st | nt_load_st | paramsntloadst | ntLoadStart | 1512086400000 | Load Event Start: performance.timing.loadEventStart |
nt_load_end | nt_load_end | paramsntloadend | ntLoadEnd | 1512086400000 | Load Event End: performance.timing.loadEventEnd |
nt_worker_start | nt_worker_start | -- | -- | 1512086400000 | Worker Start: performance.timing.workerStart |
nt_firstpaint | nt_firstpaint | paramsntfirstpaint | ntFirstPaint | 1512086400000 | note that this is milliseconds on IE, but seconds.microseconds on Chrome. Not supported on other browsers. |
nt_spdy | nt_spdy | paramsntspdy | ntSpdy | 1 or 0 | Whether the page was served using SPDY |
nt_cinf | nt_cinf | -- | -- | http/1.1 http/2+quic/37 | Connection info |
nt_protocol | nt_protocol | nextHopProtocol | -- | http/1.1 http/2+quic/37 | Next Hop Protocol information (NavigationTiming2) |
nt_enc_size | nt_enc_size | -- | -- | 100000 | Compressed size in bytes of the page (NavigationTiming2) |
nt_dec_size | nt_dec_size | -- | -- | 100000 | Uncompressed size in bytes of the page (NavigationTiming2) |
nt_trn_size | nt_trn_size | -- | -- | 100000 | Transfer size in bytes of the page (NavigationTiming2) |
nt_bad | nt_bad | -- | -- | 1 | If set, then the NavigationTiming data cannot be trusted due to a browser bug |
Paint Timing Data
Data from the Boomerang PaintTiming
plugin
See the PaintTiming spec for more details, and browser support can be reviewed at caniuse.com.
All timestamps are in DOMHighResTimeStamp rounded to the nearest millisecond.
The following fields live under the timers: {}
object in S3:
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
pt.fp | fp | firstPaint | -- | 100 | First Paint |
pt.fcp | fcp | firstContentfulPaint | -- | 300 | First Contentful Paint |
pt.lcp | lcp | largestContentfulPaint | -- | 500 | Largest Contentful Paint |
The following fields live under the params: {}
object in S3:
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
pt.hid | pt.hid | -- | -- | 1 | The document was loaded hidden, so paint metrics won't be added to the beacon |
pt.lcp.src | pt.lcp.src | -- | -- | http://example.com/img.jpg | Source URL of the Largest Contentful Paint element |
pt.lcp.el | pt.lcp.el | -- | -- | IMG | Element tag name of the Largest Contentful Paint |
pt.lcp.e | pt.lcp.e | -- | -- | body#content .hero-image | Element Pseudo-CSS selector for the Largest Contentful Paint |
pt.lcp.s | pt.lcp.s | -- | -- | 50000 | Size of the Largest Contentful Paint in device-independent pixels squared |
pt.lcp.id | pt.lcp.id | -- | -- | hero-image | Element ID of the Largest Contentful Paint |
pt.lcp.srcset | pt.lcp.srcset | -- | -- | img.jpg 480w, img-large.jpg 800w | Element srcset property of the Largest Contentful Paint |
pt.lcp.sizes | pt.lcp.sizes | -- | -- | (max-width: 600px) 480px, 800px | Element sizes property of the Largest Contentful Paint |
Single Page App
Information about Single Page App (SPA) navigations.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
spa.missed | spa.missed | -- | -- | 1 or missing | The SPA hard navigation missed the SPA's route change event |
spa.forced | spa.forced | -- | -- | 1 or missing | The SPA hard navigation was forced to completion by BOOMR.plugins.spa.markNavigationComplete() |
spa.waiting | spa.waiting | -- | -- | 10 | The number of resources that were outstanding when the SPA hard navigation was forced |
spa.t_click | spa.t_click | -- | -- | 10 | The delta between the last click event and the start of the route change (ms) |
Debugging Info and Timestamps
Other browser timestamps and related information taken in Boomerang, mainly used for debugging.
All timestamps are in (Unix epoch) unless otherwise specified.
The following fields live under the params: {}
object in S3.
Debugging Info and Timestamps | Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description | |
---|---|---|---|---|---|---|---|
Boomerang Version | v | v | boomerangversionname | boomerangVersion | 1.500.0 | mPulse boomerang.js version | |
Boomerang Snippet Version | sv | sv | -- | -- | 12 | mPulse Loader Snippet version | |
Boomerang Snippet Method | sm | sm | -- | -- | s i if p | mPulse Loader Snippet method (SCRIPT, IFRAME, IFRAME fallback, or Preload) | |
Navigation Start Method | rt.start | rt.start | paramsrtstart | rtStart | none navigation cookie manual csi | Specifies the method used to determine the start time | |
Navigation Start Time | rt.tstart | rt.tstart | paramsrttstart | rtNavigationStart | 1512086400000 | Timestamp of navigation start using the method specified in rt.start | |
Cookie Navigation Start | rt.cstart | rt.cstart | paramsrtcstart | rtCookieStart | 1512086400000 | The value of t_start from the cookie, if different from rt.tstart | |
Boomerang Start | rt.bstart | rt.bstart | paramsrtbstart | rtBoomerangStart | 1512086400000 | The timestamp when Boomerang started | |
Boomerang Loader Start | rt.blstart | rt.blstart | paramsrtblstart | rtBoomerangLoadStart | 1512086400000 | The timestamp when Boomerang was added to the host page | |
Page Start | rt.nstart | rt.nstart | -- | -- | 1512086400000 | Page Start time, if different than rt.tstart (used for XHR and SPA Soft navigations) | |
End Time | rt.end | rt.end | paramsrtend | rtEnd | 1512086400000 | The timestamp when the t_done timer ended | |
Session History | rt.sh | rt.sh | paramsrtsh | rtSessionHistory | 1486605029950=2:0:5356,1486604946946=1:0:2187 | Session History is used for debugging | |
Session Reset | rt.srst | rt.srst | paramsrtsrst | rtSessionRest | 1512086400000 | Past details of session when it gets reset | |
Token Timestamp | h.t | h.t | paramsht | tokenTimestamp | 1512086400000 | Server timestamp when the Anti-CSRF token was generated (note the token is removed from the beacon) | |
Anti-CSRF Token | h.cr | -- | -- | -- | f3bfc31c3432d23e1d9972dd72eaf45e45b058c4 | The Anti-CSRF token added to the beacon | |
Unload flag | rt.quit | rt.quit | paramsrtquit | rtUnloadFlag | (existence implies true) | If this parameter exists, then this was an unload beacon | |
Abort flag | rt.abld | rt.abld | paramsrtabld | rtAbortFlag | (existence implies true) | If this parameter exists, then the user left the page before it finished loading | |
Invisible flag | rt.ntvu | rt.ntvu | paramsrtntvu | rtInvisibleFlag | (existence implies true) | If this parameter exists, then the user left the page without looking at it | |
IFRAME flag | if | if | paramsif | iframeFlag | (existence implies true) | If this parameter exists, then Boomerang was loaded via the IFRAME loader technique | |
Errors | errors | errors | -- | -- | There was an error | JavaScript errors found in Boomerang | |
Config Override Enabled | c.o | c.o | -- | -- | 1 | Whether or not there was a BOOMR_config variable on the page | |
sendBeacon() Enabled | sb | sb | -- | -- | 1 | Whether or not the sendBeacon() API was used to send the beacon | |
Page Load Time Inversion | t_page.inv | t_page.inv | -- | -- | 1 | If there was a problem detected with the start/end times of t_page . This can happen due to bugs in NavigationTiming clients, where responseEnd happens after all other NavigationTiming events. | |
No Cookie | nocookie | nocookie | -- | -- | 1 or missing | If set, a cookie (like RT session cookie) could not be set | |
page_ready() was called | pr | pr | -- | -- | 1 or missing | If set, a BOOMR.page_ready() was used to mark Page Load time | |
PCI mode Enabled | pci | pci | -- | -- | 1 or missing | If set, Boomerang is operating in PCI mode (and filtering the FORM fields it will read) | |
PCI redacted fields | pci.redacted | pci.redacted | -- | -- | cdim.Foo | Boomerang was in PCI mode and did not read the specified Metric, Timer or Dimension because it was PCI-sensitive | |
Landing Page | -- | landing_page | landingPageName | -- | true | Whether this page load was a Landing Page (session length = 1) |
URLs
URLs related to the beacon.
The following fields live under the params: {}
object in S3.
URLs | Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|---|
Page/SPA/XHR URL or AMP Source URL | u | u | paramsu | u | http://website.com/api/foo/bar | URL of Page, XHR or SPA route that caused the beacon. For AMP pages, this data is read from the AMP SOURCE_URL variable. |
Page URL | pgu | pgu | paramspgu | pageUrl | http://website.com/ | Page URL if different from u |
Cookie Referrer | r | r | paramsr | cookieReferrer | https://referrer.com/ | URL of previous page that Boomerang wrote into a cookie |
Referrer | r2 | r2 | paramsr2 | referrer | https://referrer.com/search/ | Referrer of current page if different from r |
Next URL | nu | nu | paramsnu | nextUrl | https://website.com/nextpage/ | URL clicked, if this beacon was a result of a click |
AMP Document URL | amp.u | amp.u | additionalfieldsjson | -- | https://www-website-com.cdn.ampproject.org/c/s/www.website.com/amp/foo/bar | For AMP pages, this data is read from the AMP AMPDOC_URL variable |
Page Structure
Details about the page structure like DOM nodes, SCRIPTs, etc.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
dom.res | dom.res | paramsdomres | domResources | 100 | Number of resources in Resource Timing |
dom.doms | dom.doms | paramsdomdoms | domDomains | 10 | Number of domains referenced from page |
dom.ln | dom.ln | paramsdomln | domLength | 1000 | Number of DOM nodes on the page |
dom.sz | dom.sz | paramsdomsz | domSize | 100000 | Rendered bytes of base page. This may not be what was sent on the network. |
dom.img | dom.img | paramsdomimg | domImages | 100 | Number of image nodes on the page |
dom.img.ext | dom.img.ext | paramsdomimgext | domImageExt | 100 | Number of image nodes on the page that referenced external URLs |
dom.img.uniq | dom.img.uniq | -- | -- | 100 | Number of unique image src nodes on the page that referenced external URLs |
dom.script | dom.script | paramsdomscript | domScripts | 10 | Number of script nodes on the page |
dom.script.ext | dom.script.ext | paramsdomscriptext | domScriptExt | 10 | Number of script nodes on the page that referenced external URLs |
dom.script.uniq | dom.script.uniq | -- | -- | 10 | Number of unique script src nodes |
dom.iframe | dom.iframe | -- | -- | 10 | Number of iframe nodes on the page |
dom.iframe.ext | dom.iframe.ext | -- | -- | 10 | Number of iframe nodes on the page that referenced external URLs |
dom.iframe.uniq | dom.iframe.uniq | -- | -- | 10 | Number of unique iframe src nodes |
dom.link | dom.link | -- | -- | 10 | Number of link nodes on the page |
dom.link.css | dom.link.css | -- | -- | 10 | Number of link rel="stylesheet" nodes on the page |
dom.link.css.uniq | dom.link.css.uniq | -- | -- | 10 | Number of unique link rel="stylesheet" nodes on the page |
dom.res.slowest | dom.res.slowest | paramsdomresslowest | domSlowestResource | http://slowest.com/api/ | Slowest resource on page (if configured) |
dom.ck | dom.ck | -- | -- | 100 | Number of bytes stored as cookies available to JavaScript on the current domain |
Screen and Device Details
Details about screen resolution, CPU, memory, battery, etc.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
scr.xy | scr.xy | paramsscrxy | screenDimensions | 1440x900 | Screen width and height separated with x |
scr.sxy | scr.sxy | paramsscrsxy | -- | 0x467 | X & Y positions of the scroll bar separated with x |
scr.bpp | scr.bpp | paramsscrbpp | screenBitsPerPixel | 24/24 | Screen color depth and pixel depth separated by / |
scr.orn | scr.orn | paramsscrorn | screenOrientation | 0/landscape-primary | Screen orientation angle and type separated by / |
scr.dpx | scr.dpx | paramsscrdpx | screenDensityPixel | 2 | Screen device pixel ratio (informs you of details like Retina) |
scr.mtp | scr.mtp | paramsscrmtp | screenMaximumTouchPoints | 1 | Maximum touch points for touchscreens |
mem.total | mem.total | paramsmemtotal | availableMemory | 72200000 | Total Memory available to the browser |
mem.limit | mem.limit | paramsmemlimit | -- | 2190000000 | Limit of the JS Heap size in the browser |
mem.used | mem.used | paramsmemused | usedMemory | 64000000 | Total Memory used by the browser |
mem.lssz | mem.lssz | -- | -- | 64000000 | Number of localStorage bytes used |
mem.lsln | mem.lsln | -- | -- | 100 | Number of localStorage keys used |
mem.sssz | mem.sssz | -- | -- | 64000000 | Number of sessionStorage bytes used |
mem.ssln | mem.ssln | -- | -- | 100 | Number of sessionStorage keys used |
cpu.cnc | cpu.cnc | paramscpucnc | cpuCores | 4 | Hardware concurrency (number of CPU cores) available to the browser |
bat.lvl | bat.lvl | paramsbatlvl | batteryLevel | 1 | Battery charge level (between 0 & 1 ) |
net.sd | net.sd | -- | -- | 1 | navigator.connection.saveData |
dev.mem | dev.mem | -- | -- | 4 | The approximate amount of device memory in gigabytes |
Visibility State
Tells you when the user last had the page hidden or visible on screen.
All timestamps are in (Unix epoch) unless otherwise specified.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
vis.st | vis.st | paramsvisst | visibilityState | visible hidden | Document's visibility state when beacon was sent |
vis.lv | vis.lv | paramsvislv | visibilityLastVisible | 1000 | Milliseconds since the page's last visible event |
vis.lh | vis.lh | paramsvislh | visibilityLastHidden | 2000 | Milliseconds since the page's last hidden event |
vis.pre | vis.pre | -- | -- | 1 | if the page transitioned from prerender to visible |
visibility_state (root) | visibilityStateName | visible partial hidden | Document's overall visibility state |
User Agent Details
User Agent details.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
ua.plt | ua.plt | paramsuaplt | userAgentPlatform | MacIntel | User Agent Platform |
ua.vnd | ua.vnd | paramsuavnd | userAgentVendor | Google Inc. | User Agent Vendor |
XHR Details
Details related to XHRs and Single Page Apps.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
http.errno | http.errno | networkerrorcode | httpErrorNumber | -999 | Status code of the XHR request if there was an error. Note: This is a global field in the S3 JSON. Some special codes are: -1001 : timeout-999 : request aborted by client-998 : unknown client error-997 : javascript exception when calling open |
http.method | http.method | paramshttpmethod | paramsHttpMethod | POST | HTTP method used for XHR request (if not set, GET ) |
http.hdr | http.hdr | -- | httpHeaders | Content-Size: 100 | HTTP response headers for XHR request (optional) |
http.initiator | http.initiator | paramshttpinitiator | httpInitiator | xhr spa spa_hard | Type of beacon: XHR, SPA hard or soft navigation, etc |
xhr.sync | xhr.sync | paramsxhrsync | xyrSync | 1 | Set to 1 if the XHR call was synchronous |
rt.subres | rt.subres | paramsrtsubres | xhrIsSubresource | 1 | Set to 1 if this XHR call is a subresource of the parent page and should not be counted towards Session Length |
http.type | http.type | additionalfieldsjson | -- | f | Set to f for request using the Fetch API |
fetch.bnu | fetch.bnu | additionalfieldsjson | -- | 1 | Set to 1 for request using the Fetch API that do not read the response body. See ([bodyUsed]https://developer.mozilla.org/en-US/docs/Web/API/Body/bodyUsed)). |
xhr.ru | xhr.ru | -- | -- | https://example.com/data.json | Final response URL after any redirects |
Bandwidth and Latency Details
More details from the bandwidth test.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
bw_time | bw_time | paramsbwtime | bandwidthTimestamp | 1512086400000 | Timestamp (Unix epoch) on the user's browser when the bandwidth and latency was measured |
lat | lat | paramslat | httpLatency | 100 | User's measured HTTP latency (in milliseconds) |
lat_err | lat_err | paramslaterr | httpLatencyError | 5 | Error in measuring HTTP latency based on standard deviation |
Mobile Connection Details
Details about mobile connections via the Network Information API.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
mob.ct | mob.ct | paramsmobct | paramsMobileConnectionType | Ethernet WiFi 2G 3G 4G LTE | Mobile connection type |
mob.bw | mob.bw | paramsmobbw | mobileBandwidth | 10 | Advertised bandwidth of mobile connection (MB/s) |
mob.mt | mob.mt | paramsmobmt | mobileMetered | true | Whether this mobile connection metered or not |
mob.lm | mob.lm | -- | -- | 10 | Downlink max (MB/s) |
mob.etype | mob.etype | -- | -- | slow-2g 2g 3g or 4g | Effective type of the connection |
mob.dl | mob.dl | -- | -- | 100 | Effective bandwidth estimate in megabits per second, rounded to the nearest multiple of 25 kilobits per seconds |
mob.rtt | mob.rtt | -- | -- | 100 | Estimated effective round-trip time of the current connection, rounded to the nearest multiple of 25 milliseconds |
Cross Domain Session Tracking
Details about cross-domain session tracking.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
rt.sstr_dur | rt.sstr_dur | -- | -- | 100 | Session transfer duration (milliseconds) |
rt.sstr_to | rt.sstr_to | -- | -- | 1 | If set, the session transfer timed out |
Errors
Application (JavaScript and network) errors.
Data is compressed on the beacon, see the Boomerang Errors
plugin for details.
The following fields live under the errors: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
err | errors | -- | -- | (see above) | Errors |
Akamai
The following fields live under the params: {}
object in S3 unless otherwise specified.
Field | Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Akamai Variable | Examples | Description |
---|---|---|---|---|---|---|---|
Connection | |||||||
Beacon Client Real IP | -- | ak.rip | paramsakrip | -- | AK_CLIENT_REAL_IP | 1.2.3.0 | Beacon Client Real IP (truncated) |
Beacon Client Real IP Version | -- | ak.ripv | -- | -- | RUM_AK_CLIENT_REAL_IP_VERSION | 4 6 | Beacon Client Real IP Version |
Beacon Client IP | -- | ak.cip | paramsakcip | -- | AK_CLIENT_IP | 1.2.3.0 | Beacon Client IP (truncated) |
EdgeScape | |||||||
Bandwidth | -- | ak.bw | paramsakbw | -- | 2000 5000 | Client's bandwidth | |
Autonomous System Number | -- | ak.asnum | paramsakasnum | -- | 100 | The ASN of the client network | |
Continent | -- | ak.continent | paramsakcontinent | -- | NA | The Continent the user is browsing from | |
Country | -- | ak.country | paramsakcountry | -- | US | The Country the user is browsing from | |
City | -- | ak.city | paramsakcity | -- | SOMEWHERE | The City the user is browsing from | |
Latitude | -- | ak.lat | paramsaklat | -- | 10.0 | The user's approximate geo latitude (as granular as the zip code of the ISP the user is connecting from) | |
Longitude | -- | ak.long | paramsaklong | -- | 10.0 | The user's approximate geo longitude (as granular as the zip code of the ISP the user is connecting from) | |
Network | -- | ak.network | paramsaknetwork | -- | verizon frontier comcast | Network | |
Network Type | -- | ak.network_type | paramsaknetworktype | -- | cable | Network type | |
Region Info | -- | ak.regional_info | paramsakregionalinfo | -- | PA WA TX | Region ID | |
EDC | |||||||
Browser Name | -- | ak.eb | paramsakeb | -- | Internet Explorer Safari | Browser Name | |
Browser Version | -- | ak.ev | paramsakev | -- | 11 11.0 | Browser Version | |
OS Name | -- | ak.edo | paramsakedo | -- | Windows NT iPhone OS | OS Name | |
OS Version | -- | ak.edv | paramsakedv | -- | 10.0 11.2 | OS Version | |
Device ID | -- | ak.ed | paramsaked | -- | w:msie_11_windows_nt_10_0 w:apple_iphone_ver11_2 | Device ID | |
Device is Mobile? | -- | ak.edm | paramsakedm | -- | true false | Whether or not the device is mobile | |
Device is Tablet? | -- | ak.edt | paramsakedt | -- | true false | Whether or not the device is a tablet | |
Device Brand Name | -- | ak.ebn | paramsakebn | -- | Internet Explorer Apple Amazon | Device Brand Name | |
Device Marketing Name | -- | ak.emn | paramsakemn | -- | Internet Explorer 11 Fire HD 10 (2017) | Device Marketing Name | |
Device Model Name | -- | ak.emo | paramsakemo | -- | 11 iPhone KSFUWI | Device Model Name |
The following metrics are only available if Akamai Edge-Injected mPulse is enabled. These fields live under the params: {}
object in S3 unless otherwise specified.
Field | Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Akamai Variable | Examples | Description |
---|---|---|---|---|---|---|---|
Akamai Info | |||||||
ARL ID | ak.ai | ak.ai | paramsakai | -- | 123456 | Akamai ARL ID | |
Customer CP Code | ak.cp | ak.cp | paramsakcp | -- | AK_CPCODE | 123456 | Akamai Customer's CP Code |
Content Source | ak.csrc | ak.csrc | paramsakcsrc | -- | - | Akamai Content Source | |
Region | ak.r | ak.r | paramsakr | -- | 12345 | Akamai Region ID | |
Request ID | ak.rid | ak.rid | paramsakrid | -- | AK_REQUEST_ID | abc123 | Akamai Request ID |
Connection | |||||||
Base Page Client IP | ak.bpcip | ak.bpcip | paramsakbpcip | -- | AK_CLIENT_IP | 1.2.3.0 2001:db8:85a3:9103:: | Base Page Client IP (truncated) |
Base Page Client Port | ak.cport | ak.cport | paramsakcport | -- | 12345 | Base Page Client Port | |
QUIC Version | ak.quicv | ak.quicv | paramsakquicv | -- | 1 | Whether the browser is using QUIC or not and its version | |
QUIC Zero RTT | ak.0rtt | ak.0rtt | paramsak0rtt | -- | 0 1 | Whether the QUIC connection used Zero RTT | |
Ghost IP | ak.gh | ak.gh | paramsakgh | -- | AK_GHOST_SERVICE_IP | 1.2.3.0 | Akamai Ghost IP (truncated) |
Ghost Map Name | ak.m | ak.m | paramsakm | -- | b | Akamai Ghost Map Name | |
Ghost Network | ak.n | ak.n | paramsakn | -- | Akamai Ghost Network | ||
Active Congestion Control | ak.acc | ak.acc | additionalfieldsjson | -- | Akamai Active Congestion Control Algorithm | ||
mPulse Dimensions | |||||||
Akamai Adaptive Acceleration | ak.a2 | ak.a2 , akamai_aa (root) | paramsaka2 | -- | 0 1 | Whether or not Adaptive Acceleration is enabled | |
HTTP Protocol | ak.proto | ak.proto , http_protocol (root) | paramsakproto | -- | AK_PROTOCOL_NEGOTIATION | http/1.1 h2 | HTTP Protocol the browser is using to connect to the website |
IP Version | ak.ipv | ak.ipv , ip_version (root) | paramsakipv | -- | 4 6 | IP Version the browser is using to connect to the website | |
TLS Version | ak.tlsv | ak.tlsv , tls_version (root) | paramsaktlsv | -- | AK_TLS_VERSION | tls1.3 tls1.2 tls1.1 | TLS Version the browser is using to connect to the website |
Latency | |||||||
Client Round-Trip Time | ak.cr | ak.cr | paramsakcr | -- | AK_CLIENT_RTT | 10 | Client Round Trip Time |
Origin Latency | ak.ol | ak.ol | paramsakol | -- | 100 | Base Page Origin Latency | |
Akamai Bot Manager | |||||||
Akamai Bot Manager Enabled | -- | ak.bm | -- | -- | 0 1 | Whether Akamai Bot Manager is enabled for the property | |
Akamai Bot Manager Source | -- | ak.bms | -- | -- | c (mPulse rules) p (Property rules) | Where Akamai Bot Manager detection was run | |
Akamai Bot Manager Type | -- | ak.bmt | -- | -- | Bot Synthetic Monitoring Akamai Known Bot Akamai Known Synthetic Monitoring Unknown Bot Customer-Categorized Bot | Akamai Bot Manager detected type | |
Akamai Bot Manager Category | -- | ak.bmc | -- | -- | Example Bot | Akamai Bot Manager detected category | |
Misc | |||||||
mPulse Edge Snippet Version | ak.v | ak.v | paramsakv | -- | 1 | mPulse Edge Snippet Version | |
Beacon Property Version | -- | ak.mv | -- | -- | 1 | Beacon Property Metadata version | |
Akamai Property Version Number | ak.pv | ak.pv , akamai_property_version (root) | akamaiPropertyVersionName | -- | AKA_PM_PROPERTY_VERSION | 47 | mPulse Property Version |
Akamai DPO A/B test | ak.dpoabenc | ak.dpoabenc | -- | -- | -- | abc | mPulse Property Version |
mPulse Pearl Transform Version | ak.tf | ak.tf | -- | -- | -- | 1 or 2 | mPulse Property Version |
Current Time | ak.t | ak.t | -- | -- | 1590685211 | Current time | |
User-Defined String | ak.ruds | -- | -- | -- | `` | User-Defined String | |
Encrypted data | ak.ak | -- | -- | -- | hOBiQw...8PVLBvZ5Pg= | Exists on a beacon and contains encrypted data |
The following metrics are only available if Akamai Adaptive Acceleration and Edge Injection are both enabled. These fields live under the params: {}
object in S3 unless otherwise specified.
Field | Query String Param | S3 | Akamai Variable | Examples |
---|---|---|---|---|
Common Push Enabled | rua.cpush | rua.cpush | RUA_OUT_WILL_COMMON_PUSH | 1 |
Unique Push Enabled | rua.upush | rua.upush | RUA_OUT_WILL_UNIQUE_PUSH | 1 |
Common Preconnect Enabled | rua.cpre | rua.cpre | RUA_OUT_WILL_COMMON_PRECONNECT | 1 |
Unique Preconnect Enabled | rua.upre | rua.upre | RUA_OUT_WILL_UNIQUE_PRECONNECT | 1 |
Common Preload Enabled | rua.cprl | rua.cprl | RUA_OUT_WILL_COMMON_PRELOAD | 1 |
Unique Preload Enabled | rua.uprl | rua.uprl | RUA_OUT_WILL_UNIQUE_PRELOAD | 1 |
Common Prefetch Enabled | rua.cprf | rua.cprf | RUA_OUT_WILL_COMMON_PREFETCH | 1 |
Common Font Preload Enabled | rua.cfprl | rua.cfprl | RUA_OUT_WILL_COMMON_FONT_PRELOAD | 1 |
Unique Font Preload Enabled | rua.ufprl | rua.ufprl | RUA_OUT_WILL_UNIQUE_FONT_PRELOAD | 1 |
Transaction ID | rua.trans | rua.trans | RUA_OUT_TRANSACTION_ID | 1 |
Found Cookie | rua.cook | rua.cook | RUA_OUT_FOUND_COOKIE | 1 |
Found IMS | rua.ims | rua.ims | RUA_OUT_FOUND_IMS | 1 |
Experiment Bucket | rua.texp | rua.texp | RUA_OUT_EXP_BUCKET | 1 |
Resource Timing Data
Resource Timing Data is compressed and sent via a single beacon parameter restiming
. The compression is described at http://nicj.net/compressing-resourcetiming/.
The full Resource Timing documentation can be found at https://www.w3.org/TR/resource-timing-2/, and browser support can be reviewed at caniuse.com.
All timestamps are in (Unix epoch) unless otherwise specified.
This field is expanded into a separate table in Asgard, which includes the following fields:
Resource Timing Data | Asgard | DSWB RT_TABLE var | Examples | Description |
---|---|---|---|---|
-- | paramsu | u | http://www.example.com/ | The URL of the page that this resource was loaded from |
-- | sessionid | sessionId | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-nnnnnn | The boomerang Session ID (matches session_id above) for this user session |
-- | sessionstart | sessionStart | 1512086400000 | The start time for the boomerang session (matches session_start above) |
-- | timestamp | timestamp | 1512086400000 | The server timestamp when this beacon got to our collectors |
name | url | url | http://www.example.com/api/call | The URL of the resource |
initiatorType | initiator_type | initiatorType | img image css script link other xmlhttprequest | Initiator Type |
startTime | start_time | startTime | 100 | All these times are milliseconds from the page's navigation start time available in nt_nav_st |
redirectStart | redirect_start | redirectStart | 100 | Redirect Start |
redirectEnd | redirect_end | redirectEnd | 100 | Redirect End |
fetchStart | fetch_start | fetchStart | 100 | Fetch Start |
domainLookupStart | dns_start | dnsStart | 100 | DNS Start |
domainLookupEnd | dns_end | dnsEnd | 100 | DNS End |
connectStart | tcp_connection_start | tcpConnectionStart | 100 | TCP Start |
secureConnectionStart | secure_connection_start | secureConnectionStart | 100 | SSL Start |
connectEnd | tcp_connection_end | tcpConnectionEnd | 100 | TCP End |
requestStart | request_start | requestStart | 100 | Request Start |
responseStart | response_first_byte | responseFirstByte | 100 | Response Start |
responseEnd | response_last_byte | responseLastByte | 100 | Response End |
workerStart | worker_start | workerStart | 100 | The time before the browser invokes a registered service worker on the page |
encodedBodySize | encoded_size | encodedSize | 1000 | Size of the encoded resource body (i.e., with network compression enabled) |
decodedBodySize | decoded_size | decodedSize | 1000 | Size of the resource body after decompressing/removing content encoding |
transferSize | transferred_size | transferredSize | 1000 | Bytes transferred over the network including HTTP headers for all same-origin redirects. If resource is retrieved from cache, this is the size of headers required to validate the cache (eg: If-Modified-Since request) |
defer | script_defer | scriptDefer | true | Indicates if the script was requested with defer=true (only applicable if initatorType is script or link ) |
async | script_async | scriptAsync | true | Indicates if the script was requested with async=true (only applicable if initatorType is script or link ) |
rel | -- | -- | prefetch preload prerender stylesheet | Identifies the first interesting rel value on the LINK node (only applicable if initatorType is link ) |
Resource Timing Summary Data
Resource Timing Summary Data is a summary of the Resource Timing Data by Asset Type.
Asset Types include:
total
: Total (all resources)page
: The page load itselfcss
: CSS filesjs
: JavaScript filesimg
: Imageshtml
: HTMLs (IFRAMEs, .htms, plus the page itself)font
: Fontsbcn
:navigator.sendBeacon()
xhr
: XMLHttpRequestsother
: Other
The format is as follows:
restiming.[type] = "[requestCount],[transferSize],[decodedSize],[browserCacheHitRate],[compressionRate]_[byteCompressionRate],[cdnCacheHitRate],[cdnEdgeTime],[originTime]"
For each Asset Type:
requestCount
: Number of requests for this Asset Type.transferSize
: The sum of the size of the fetched resources including the response header fields plus the response payload body (transferSize
) for this Asset Type.decodedSize
: The sum of the size received from the fetch (HTTP or cache) of the message body, after removing any applied content-codings (decodedBodySize
) for this Asset Type.browserCacheHitRate
: The ratio (0-10000, where 5000 = 50% and 10000 = 100%) of the number of browser cache hits to browser cache misses for this Asset Type.compressionRate
: The ratio (0-10000, where 5000 = 50% and 10000 = 100%) of the number of requests where compression was applied to the total number of requests for this Asset Type.byteCompressionRate
: The percent reduction (0-10000, where 5000 = 50% and 10000 = 100%) in total number of bytes as a result of compression for this Asset Type.cdnCacheHitRate
: The ratio (0-10000, where 5000 = 50% and 10000 = 100%) of the number of requests that were CDN cache hits (that is the request did not go to the origin) to the total number of requests made to the Akamai network for this Asset Type.cdnEdgeTime
: The sum of the times between when the first bytes of the requests are received by the Akamai edge server from the client browser, and just before the first bytes of the responses are written back, for this Asset Type. This does not include the times that may or may not have been spent forwarding the requests to the origin.originTime
: The sum of the round-trip times between the Akamai edge server (nearest to the origin), and the origin, for this Asset Type. This includes the time the origin spends handling the requests.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
n/a | restiming.[type] | [type][metric] | -- | 26,833151,3061949,1153,10000_7269,0,5,1000 | Summarized Resource Timing data |
User Timing Data
User Timing data comes from the Boomerang UserTiming Plugin.
User Timing data is compressed and sent via a single beacon parameter usertiming
. The compression is described at http://nicj.net/compressing-usertiming/.
The full User Timing documentation can be found at https://www.w3.org/TR/user-timing/, and browser support can be reviewed at caniuse.com.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
usertiming | usertiming | -- | -- | mark1~2s~mark2~5k~mark3~8c | Compressed User Timing data |
Server Timing Data
Server Timing Data is compressed and sent via a single beacon parameter servertiming
. The compression is described at https://github.com/nicjansma/resourcetiming-compression.js#server-timing.
The full Server Timing documentation can be found at https://www.w3.org/TR/server-timing/, and browser support can be reviewed at caniuse.com.
In the DSWB RT table, the column is a JSON array of decompressed ServerTiming headers:
[{
"name": "<entry name>",
"duration": <numeric value>,
"description": "<entry description>"
}, {...}, ...]
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB RT Table | Examples | Description |
---|---|---|---|---|---|
servertiming | servertiming | -- | servertiming | 1,2:1 | Compressed Server Timing data |
Event Timing Data
Event Timing data comes from the Boomerang EventTiming Plugin.
The full Event Timing documentation can be found at https://github.com/WICG/event-timing/, and browser support can be reviewed at caniuse.com.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
et.e | et.e | -- | -- | ~(~(c~1~d~'9s~n~'mouseout~p~'0~s~'1ap)) | Compressed Event Timing data |
et.fid | et.fid | -- | -- | 100 | First Input Delay (ms) |
et.inp | et.inp | -- | -- | 250 | Interaction to Next Paint (full page, on Unload beacon) |
et.inp.e | et.inp.e | -- | -- | body#content input#search | INP target element |
et.inp.t | et.inp.t | -- | -- | 30000 | INP timestamp for when the interaction occurred |
et.inp.inc | et.inp.inc | interactionToNextPaint | -- | 150 | Incremental Interaction to Next Paint (for the Page Load and each SPA Soft nav) |
et.inp.inc.e | et.inp.inc.e | -- | -- | body#content input#search | Incremental INP target element |
et.inp.inc.t | et.inp.inc.t | -- | -- | 9000 | Incremental INP timestamp that the interaction occurred |
Continuity Metrics
Continuity metrics come from the Boomerang Continuity Plugin.
All of the compressed data formats are described in the Boomerang API documentation.
The following fields live under the params: {}
object in S3 unless otherwise noted (e.g. via timers.*
).
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
c.b | c.b | -- | -- | 90 | Page Busy percentage (Base-10) |
c.c.r | c.c.r | rageClicks | -- | 2 | Rage click count (Base-10) |
c.c | c.c | -- | -- | 4 | Click count (Base-10) |
c.cls | c.cls | cumulativeLayoutShift | -- | 0.1 | Cumulative Layout Shift |
c.e | c.e | -- | -- | j5twmlbv | Continuity Epoch timestamp (when everything started measuring) (Base-36) |
c.f.d | c.f.d | -- | -- | 11474 | Frame Rate duration (how long it has been measuring) (Base-10) |
c.f.l | c.f.l | -- | -- | 45 | Number of Long Frames (>= 50ms) (Base-10) |
c.f.m | c.f.m | -- | -- | 5 | Minimum Frame Rate (Base-10) |
c.f.s | c.f.s | -- | -- | jhjiee53 | Frame Rate measurement start time (Base-36) |
c.f | c.f | -- | -- | 11 | Average Frame Rate over the Frame Rate Duration (Base-10) |
c.fid | timers.fid | firstInputDelay | -- | 23 | First Input Delay (Base-10) |
c.i.a | c.i.a | -- | -- | 22 | Average interaction delay (Base-10) |
c.i.dc | c.i.dc | -- | -- | 2 | Delayed interaction count (Base-10) |
c.i.dt | c.i.dt | -- | -- | 145 | Delayed interaction time (Base-10) |
c.k.e | c.k.e | -- | -- | 5 | Keyboard ESC count (Base-10) |
c.k | c.k | -- | -- | 1 | Keyboard event count (Base-10) |
c.l | c.l | -- | -- | 214y,xk9,y8p | Log (compressed) |
c.lb | c.lb | -- | -- | j5twmlbv | Last Beacon timestamp (Base-36) |
c.lt.n | c.lt.n | -- | -- | 10 | Number of Long Tasks (Base-10) |
c.lt.tt | timers.longtasks | longTasksTime | -- | 2000 | Total duration of Long Tasks (Base-10) |
-- | timers.tbt | totalBlockingTime | -- | 2000 | Total Blocking Time (TBT): Total duration of Long Tasks minus threshold of 50ms for each Long Task (Base-10) |
c.lt | c.lt | -- | -- | ~(~(a~(~(a~1~i~'frame1~t~1))~d~'b7~n~6~s~'5kj) | Long Task data (compressed) |
c.m.n | c.m.n | -- | -- | 179 | Mouse movement pixels (Base-10) |
c.m.p | c.m.p | -- | -- | 8 | Mouse movement percentage (Base-10) |
c.s.d | c.s.d | -- | -- | 1 | Distinct scrolls (scrolls that happen 2 seconds after the last) (Base-10) |
c.s.p | c.s.p | -- | -- | 54 | Scroll percentage (Base-10) |
c.s.y | c.s.y | -- | -- | 10754 | Scroll y (pixels) (Base-10) |
c.s | c.s | -- | -- | 27 | Scroll count (Base-10) |
c.t.click | c.t.click | -- | -- | 0*1t*0101*q*011 | Click timeline (compressed) |
c.t.domln | c.t.domln | -- | -- | 1*1k*0,*1n*14w | DOM Length timeline (compressed) |
c.t.domsz | c.t.domsz | -- | -- | 1*1k*0,*1n*2fmz | DOM Size timeline (compressed) |
c.t.fps | c.t.fps | -- | -- | 03*a*657576576566766507575*8*65 | Frame Rate timeline (compressed) |
c.t.inter | c.t.inter | -- | -- | 0*15*0122*a*01002101100210100013110001000122002 | Interactions timeline (compressed) |
c.t.interdly | c.t.interdly | -- | -- | 0*1v*01*q*01 | Delayed Interactions timeline (compressed) |
c.t.key | c.t.key | -- | -- | 0*2u*01 | Keyboard press timeline (compressed) |
c.t.longtask | c.t.longtask | -- | -- | 0*1i*02*9*02*6*0101*6*01*5*01*m*01 | LongTask timeline (compressed) |
c.t.mem | c.t.mem | -- | -- | 1*1j*0,*1o*14hh4w | Memory usage timeline (compressed) |
c.t.mouse | c.t.mouse | -- | -- | 0*2l*0.4z. | Mouse movements timeline (compressed) |
c.t.mousepct | c.t.mousepct | -- | -- | 2*2m*0008 | Mouse movement percentage (of full screen) timeline (compressed) |
c.t.scroll | c.t.scroll | -- | -- | 0*15*0.94..lb..hv.*a*0.hh.00.1mb.F0m.2c.00.3 | Scroll timeline (compressed) |
c.t.scrollpct | c.t.scrollpct | -- | -- | 2*17*000603*9*0003*5*0011*b*0 | Scroll percentage (of full page) timeline (compressed) |
c.t.mut | c.t.mut | -- | -- | 0*36*01 | DOM Mutations timeline (compressed) |
c.ttfi | timers.ttfi | ttfi | -- | 6091 | Time to First Interaction (Base-10) |
c.tti.fr | c.tti.fr | -- | -- | 1000 | Framework Ready (Base-10) |
c.tti.hi | c.tti.hi | -- | -- | 2000 | Hero Images ready (Base-10) |
c.tti.m | c.tti.m | -- | -- | lt | Time to Interactive Method (lt , raf , b ) |
c.tti.vr | timers.ttvr | ttvr | -- | 3690 | Visually Ready (Base-10) |
c.tti | timers.tti | tti | -- | 10623 | Time to Interactive (Base-10) |
Visitor Consent
The following parameters are sent only on the first beacon when a visitor opts-in for first time. The
parameters come from the Consent Inlined Plugin.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
cip.in | cip.in | -- | -- | 1 | Equals 1 and indicates that visitor opted-in. |
cip.v | cip.in | -- | -- | 1 | Indicates the version of ConsentInlinedPlugin. It's useful to track who is using which version of the plugin because this plugin is not part of Boomerang build. |
IFRAME Delay Data
Data from the Boomerang IFrameDelay
plugin which delays page load until all <iframe>
s have loaded.
All timestamps are in (Unix epoch) unless otherwise specified.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB RT_TABLE var | Example | Description |
---|---|---|---|---|---|
ifdl.done | ifdl.done | -- | -- | 1512086400000 | Timestamp of when all <iframe> s were loaded |
ifdl.ct | ifdl.ct | -- | -- | 2 | Number of <iframes> that loaded |
ifdl.r | ifdl.r | -- | -- | 1 | Number of still running <iframe> s ) |
ifdl.mon | ifdl.mon | -- | -- | 3 | Number of <iframe> s we were waiting to send a beacon |
Third Party Analytics
Data from the Boomerang TPAnalytics
plugin.
See Data Collection from Third Party Analytics for more details.
The following fields live under the params: {}
object in S3.
Google Analytics
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
tp.ga.clientid | tp.ga.clientid | paramstpgaclientid | tpGaClientId | XXXXXXXXXX.YYYYYYYYYY | clientID (unique id per visitor) |
tp.ga.utm_source | tp.ga.utm_source | paramstpgautmsource | tpGaUtmSource | google newsletter4 billboard | Campaign source |
tp.ga.utm_medium | tp.ga.utm_medium | paramstpgautmmedium | tpGaUtmMedium | cpc banner email newsletter | Campaign medium |
tp.ga.utm_term | tp.ga.utm_term | paramstpgautmterm | tpGaUtmTerm | term1 | Campaign term |
tp.ga.utm_content | tp.ga.utm_content | paramstpgautmcontent | tpGaUtmContent | content1 | Campaign content |
tp.ga.utm_campaign | tp.ga.utm_campaign | paramstpgautmcampaign | tpGaUtmCampaign | campaign1 | Campaign ID |
Adobe Analytics
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
tp.aa.aid | tp.aa.aid | paramstpaaaid | tpAaAid | AAAAAAAAAAAAAAAA-AAAAAAAAAAAAAAAA | Analytics ID (AID) |
tp.aa.mid | tp.aa.mid | paramstpaamid | tpAaMid | MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | Marketing ID (MID) |
tp.aa.campaign | tp.aa.campaign | paramstpaacampaign | tpAaCampaign | campaignid | Campaign ID |
tp.aa.purchaseid | tp.aa.purchaseid | -- | -- | purchaseid | Purchase ID |
IBM Digital Analytics
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
tp.ia.coreid | tp.ia.coreid | paramstpiacoreid | tpIaCoreid | 80031460041999083951624 | Core ID (unique id per visitor) |
tp.ia.mmc_vendor | tp.ia.mmc_vendor | paramstpiammcvendor | tpIaMmcVendor | Google | Campaign vendor |
tp.ia.mmc_category | tp.ia.mmc_category | paramstpiammccategory | tpIaMmcCategory | Home & Garden | Campaign category |
tp.ia.mmc_placement | tp.ia.mmc_placement | paramstpiammcplacement | tpIaMmcPlacement | keywords | Campaign placement |
tp.ia.mmc_item | tp.ia.mmc_item | paramstpiammcitem | tpIaMmcItem | sprinkler | Campaign item |
tp.ia.sp_type | tp.ia.sp_type | paramstpiasptype | tpIaSpType | fall | Site promotion type |
tp.ia.sp_promotion | tp.ia.sp_promotion | paramstpiasppromotion | tpIaSpPromotion | sale | Site promotion |
tp.ia.sp_link | tp.ia.sp_link | paramstpiasplink | tpIaSpLink | free shipping?cm_mmc=... | Site promotion link |
tp.ia.re_version | tp.ia.re_version | paramstpiareversion | tpIaReVersion | page A | Real estate version |
tp.ia.re_pagearea | tp.ia.re_pagearea | paramstpiarepagearea | tpIaRePageArea | left navbar | Real estate page area |
tp.ia.re_link | tp.ia.re_link | paramstpiarelink | tpIaReLink | mens shirts | Real estate link |
Early Beacon
Data from the Boomerang Early
plugin.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | DSWB BEACON_TABLE var | Asgard | Examples | Description |
---|---|---|---|---|---|
early | early_beacon | -- | earlybeaconname | 1 | True if this data came from an Early Beacon |
Soft Navigation Heuristics
Data from the Soft Navigation Heuristics API.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
spa.snh.s | spa.snh.s | -- | -- | 10000 | When Soft Navigation Heuristics is active, the latest start time (Unix Epoch) |
spa.snh.n | spa.snh.n | -- | -- | 1 | When Soft Navigation Heuristics is active, the number of Soft Navs detected for this beacon |
Back-Forward Cache
Data from the Boomerang BFCache plugin for Back-Forward Cache Navigations.
The following fields live under the params: {}
object in S3.
Query String Param | S3 | Asgard | DSWB BEACON_TABLE var | Examples | Description |
---|---|---|---|---|---|
bfc.nrr | bfc.nrr | -- | -- | NotMainFrame,BackForwardCacheDisabled | BFCache "Not Restored Reasons" (list of strings) if BFCache wasn't possible (for regular Back-Forward navigations) |
Updated 11 days ago