Searchable Properties
Sentry's search provides you with reserved keywords, like is
, user
, server
, and browser
, that you can use to search on the properties of issues and events (as well as the special case of releases). You can also create custom tags on which to search. This page includes a canonical list of all available issue and event search properties as well as guidance for how to use these properties.
Search Properties
Sentry's searchable properties fall into one of four categories: event, issue, session replay, or release.
Issue Properties
Issues are an aggregate of one or more error events. Searchable issues properties include status, assignment, aggregate counts, and age. You can search by issue properties in the Issues page and in Dashboards in the widget builder, depending on your dataset selection.
Event Properties
Events are the underlying event data captured using Sentry SDKs — that is, errors and transactions.
You can search by event properties in the following sentry.io pages:
- Discover - in the query builder
- Dashboards - within the widget builder, depending on dataset selection
- Performance - only in transaction summaries
- Replay - on the Replay page
- Issues - as indicated in the table below
- Alerts - when creating a metric alert
Please note that in Alerts only a limited number of properties are available for filtering transaction events.
When searching on event properties within the Issues page, the search will return any issue that has one or more events matching the supplied event properties filter.
Replay Properties
Session Replay provides a video-like reproduction of user interactions on a site or web app. All user interactions, including page visits, mouse movements, clicks, and scrolls, are captured, helping developers connect the dots between a known issue and how a user experienced it in the UI.
You can search by session replay properties (indicated with an R in the properties table below) on the Replay page.
Release Properties
In Releases, you can only search by the following properties:
release
release.build
release.package
release.stage
release.version
However, these properties are also searchable in the other pages of sentry.io listed above (under Event Properties).
Search Tips
Search terms should auto-complete, and when they don't that means you have an invalid dataset. If you enter an invalid search term and tap Return or Enter, an error message is displayed. For example, in Discover, you cannot search using a grouping function (properties with a parentheses in the key, for example epm()
) if you don't already have a grouping function included in the "Results" table columns.
When you search using a property that's a function, if the key includes a parameter, you still need to add a filter or value to have a complete search
count_unique(field)
takes whichever field you choose as the parameter and then you add a number as your value to filter on. So a typical search might look like: count_unique(user):>=20
.Other things to note:
- Search properties that are duration or number types are typically used with a comparison operator rather than just a colon (
:
) to find exact matches, as an exact match is unlikely to exist. - Properties with the notation "Doesn't take a parameter" still require a filter or value, but don't take a parameter inside the parentheses. For example,
epm():>12
. - Default fields/parameters in search functions can be updated. For example, the default parameters
column
,operator
, andvalue
can be updated forcount_if(column,operator,value)
.
Properties Table
Below is a list of issue-level and event-level keys and tokens reserved and known to Sentry. The columns with just letters represent whether the property is one of:
- E - events
- I - issues
- R - replays
The Xs in these columns of the table indicate whether the property is an event property, an issue property, a replay property or a combination of the three.
Release properties overlap with event and issue search properties, so they don't have their own column in the table.
Key/Token | Description | E | I | R | Type |
---|---|---|---|---|---|
activity | Replay activity is calculated based on the number of errors, the number of ui events, and the duration of the replay. It's represented as a number from 1 to 10 . | x | number | ||
age | Returns issues created since the time defined by the value. The syntax is similar to the Unix find command. Supported suffixes: m - minutes , h - hours , d - days , w - weeks . For example, age:-24h returns isssues that are new in the last 24 hours, while age:+12h returns ones that are older than 12 hours. Entering age:+12h age:-24h would return issues created between 12 and 24 hours ago. | x | relative time | ||
apdex(threshold) | Returns results with the Apdex score that you entered. Values must be between 0 and 1 . Higher apdex values indicate higher user satisfaction. | x | number | ||
app.in_foreground | Indicates if the app is in the foreground or background. Values are 1/0 or true/false | x | x | boolean | |
assigned | Returns issues assigned to the defined user. Values can be a user ID (your email address), me for yourself, me_or_none for yourself or no assignee, or # followed by the team name, that is #team-name . | x | team or org user | ||
assigned_ or_suggested | Returns issues assigned to or suggested to be assigned to the defined user. Suggested assignees are determined by matching ownership rules and suspect commits. Values can be a user ID (your email address), me for yourself, me_or_none for yourself or no assignee/suggestions, or # followed by the team name, that is #team-name . | x | team or org user | ||
avg(field) | Returns results with matching averages for the field selected. The field can be either a number or a duration. Typically used with a comparison operator. | x | matches field | ||
bookmarks | Returns issues bookmarked by the defined user. Values can be your user ID (your email address) or me for yourself. | x | team or org user | ||
browser.name | Name of the users' web browser. For example, Chrome , Firefox , or Safari | x | string | ||
browser.version | The version string of the browser. | x | string | ||
count() | Returns results with a matching count. (Same as timesSeen in issue search.) Doesn't take a parameter. | x | number | ||
count_if (column,operator,value) | Returns results with a matching count that satisfy the condition passed to the parameters of the function. | x | number | ||
count_miserable (field,threshold) | Returns results with a matching count of unique instances of the field that fall above the miserable threshold. | x | number | ||
count_unique(field) | Returns results with a matching count of the unique instances of the field entered. | x | number | ||
count_web_vitals(vital,threshold) | Returns results with a matching count that meet a web vitals quality threshold (poor , meh , good , or any ). | x | number | ||
count_errors | The number of errors within a replay. | x | number | ||
count_segments | The number of segments within a replay. More segments represent more activity over time. | x | number | ||
count_urls | The number of URLs that the user visited during a replay recording. | x | number | ||
culprit | Deprecated | x | string | ||
device.arch | CPU architecture | x | x | string | |
device.battery_level | If the device has a battery, this can be a floating point value defining the battery level (in the range 0-100). | x | string | ||
device.brand | Brand of the device | x | x | x | string |
device.charging | Whether the device was charging or not. Not a boolean. | x | string | ||
device.class | The estimated performance class of the client device, estimated high , medium , or low . For more details, see the Device Classification section below. | x | string | ||
device.family | Family of the device. Typically, the common part of a model name across generations. For example, iPhone, Samsung Galaxy. | x | x | x | string |
device.locale | Deprecated | x | x | string | |
device.model_id | Internal hardware revision to identify the device exactly. | x | x | n/a | |
device.name | Details of the device | x | x | string | |
device.online | Whether the device was online or not. A string that is either True or False . | x | string | ||
device.orientation | Describes the orientation of the device and can be either portrait or landscape . | x | x | string | |
device.screen_density | Device screen density in pixels. | x | x | string | |
device.screen_dpi | Number of dots per inch of the device screen. | x | x | string | |
device.screen_height_pixels | Device screen height in pixels. | x | x | string | |
device.screen_width_pixels | Device screen width in pixels. | x | x | string | |
device.simulator | Indicates whether this device is a simulator or a real device. A string that is either True or False . | x | string | ||
device.uuid | Deprecated | x | x | uuid | |
dist | Distinguishes build or deployment variants of the same release of an application. For example, the dist can be the build number of an XCode build or the version code of an Android build. | x | x | x | string |
duration | Duration of a replay in seconds. | x | number | ||
environment | Refers to your code deployment naming convention. For example, development, testing, staging and so on. Learn more. In some pages of sentry.io, you filter on environment using a dropdown. | x | string | ||
epm() | Returns results with a matching events-per-minute count. Doesn't take a parameter. | x | number | ||
eps() | Returns results with a matching events-per-second count. Doesn't take a parameter. | x | number | ||
error_id | Error instances that have occurred within a replay. | x | array | ||
error.handled | Indicates whether the user has handled the exception — for example, using try...catch. An error is considered handled if all stack traces handle the error. Values are 1/0 or true/false | x | x | boolean | |
error.main_thread | Indicates if the error occurred on the main thread. Values are 1/0 or true/false | x | x | boolean | |
error.mechanism | An object describing the mechanism that created this exception. | x | x | array | |
error.type | The type of exception. For example, ValueError . | x | x | array | |
error.unhandled | The inversion of error.handled . | x | x | boolean | |
error.value | Original value of a field that causes or exhibits the error. | x | x | array | |
event.timestamp | Returns issues with matching datetime. | x | datetime | ||
event.type | Type of the event (transaction, error, default, csp, and so on). The transaction type is unavailable in Issues. | x | x | string | |
failure_count() | Returns results with a matching count of events with a transaction.status value that's in the list of failing ones. Values can be: ok , cancelled , unknown . Doesn't take a parameter. | x | number | ||
failure_rate() | Returns results with a matching rate of failing transactions — that is, failure_count() divided by the count() (total count). Doesn't take a parameter. | x | number | ||
firstRelease | Returns issues first seen within the given release. Can be an exact match on the version of a release, or first-release:latest to pick the most recent release. | x | datetime | ||
firstSeen | Returns issues with a matching first time seen. Syntax is the same as age . | x | datetime | ||
geo.city | Full name of the city | x | x | string | |
geo.country_code | ISO 3166-1 country code | x | x | string | |
geo.region | Full name of the country | x | x | string | |
has | Returns results with the defined tag or field, but not the value of that tag or field. For example, entering has:user would find events with the user tag. | x | x | error | |
http.method | HTTP method of the request that created the event. | x | x | string | |
http.referer | Identifies the web page from which the resource was requested. | x | x | string | |
http.status_code | HTTP status code, which indicates whether a response was successful. For example, 200 or 404 . | x | x | string | |
http.url | Full URL of the request that caused the error, but without any parameters | x | x | string | |
id | The event or replay id. In Issues, use only the ID value without the id key. | x | x | x | uuid |
is | The properties of an issue. Values can be: unresolved , resolved , ignored , assigned , unassigned , linked , or unlinked . The linked and unlinked values return issues based on whether they are linked to an external issue tracker or not. | x | status | ||
issue | The short issue code, for example SENTRY-ABC . | x | x | string | |
issue.category | The category of the issue (either error or performance ). | x | string | ||
issue.type | The specific type of issue. For example issue.type:performance_n_plus_one_db_queries returns the n plus one db query performance issues. | x | string | ||
last_seen() | Datetime when the event was last seen. Equivalent to max(timestamp) . Doesn't take a parameter. | x | datetime | ||
lastSeen | Datetime when the event was last seen. For example, lastSeen:+30d returns issues last seen 30 days ago or more; lastSeen:-2d returns issues last seen within the past two days. This is similar to age . | x | datetime | ||
level | Severity of the event (such as: fatal, error, warning). Always set to info for transactions. | x | x | x | string |
location | Location where the error happened. | x | x | string | |
max(numeric field) | Returns results with a matching maximum value for the field entered. | x | matches field | ||
measurements. app_start_cold | A cold start refers to when the app launches for the first time after a reboot or update. The app is not in memory and no process exists. | x | duration | ||
measurements. app_start_warm | A warm start refers to when the app has already launched at least once and is partially in memory. For instance, the user backs out of your app, but then re-launches it. The process may have continued to run, but the app must recreate the activity from scratch. | x | duration | ||
measurements.cls | Cumulative Layout Shift (CLS) is the sum of individual layout shift scores for every unexpected element shift during the rendering process. | x | number | ||
measurements.fcp | First Contentful Paint (FCP) measures the time for the first content to render in the viewport. | x | duration | ||
measurements.fid | First Input Delay (FID) measures the response time when the user tries to interact with the viewport. | x | duration | ||
measurements.fp | First Paint (FP) measures the amount of time the first pixel takes to appear in the viewport, rendering any visual change from what was previously displayed. | x | duration | ||
measurements. frames_frozen | Slow and frozen frames measure the responsiveness of your app. | x | number | ||
measurements. frames_frozen_rate | Returns results with a matching rate of frozen frames. That is, measurements.frames_frozen divided by the measurements.frames_total . | x | number | ||
measurements. frames_slow | Slow and frozen frames measure the responsiveness of your app. | x | number | ||
measurements. frames_slow_rate | Returns results with a matching rate of slow frames. That is, measurements.frames_slow divided by the measurements.frames_total . | x | number | ||
measurements. frames_total | Returns results with a matching total number of frames. | x | number | ||
measurements.lcp | Largest Contentful Paint (LCP) measures the render time for the largest content to appear in the viewport. | x | duration | ||
measurements. stall_count | A stall is when the JavaScript event loop takes longer than expected to complete. Only applies to React Native. | x | number | ||
measurements. stall_longest_time | The longest stall time is the time, in milliseconds, of the longest event loop stall. Only applies to React Native. | x | duration | ||
measurements. stall_percentage | Stall percentage is equal to the stall_total_time divided by the transaction.duration . Only applies to React Native. | x | number | ||
measurements. stall_total_time | The total stall time is the total combined time, in milliseconds, of all stalls. Only applies to React Native. | x | duration | ||
measurements.ttfb | Time To First Byte (TTFB) measures the time that it takes for a user's browser to receive the first byte of page content. | x | duration | ||
measurements. ttfb.requesttime | The time between start of the request and start of the response (see diagram). | x | duration | ||
message | Returns errors with the matching message or transactions with matching transaction name. Also matches on any message containing the supplied value. Searching message:undefined will match an event with a message of undefined is not an object .Raw text searches (searches without the message key) are also checked against this field. For errors, the message can be a concatenatenation of elements, so searches might include unexpected results. | x | x | string | |
min(numeric field) | Returns results with a matching minimum value for the field entered. | x | matches field | ||
os.build | The internal build revision of the operating system. | x | x | string | |
os.kernel_version | The independent kernel version string. This is typically the entire output of the uname syscall. | x | x | string | |
os.name | The name of the operating system. For example, Windows , Mac OS X , or Linux | x | string | ||
os.version | The version number of the operating system. | x | string | ||
percentile(field,level) | Returns results with an approximate percentile of the field to the level. The level can be between 0 and 1 . For example, if you wanted to find the 50th percentile of transaction durations, you would enter percentile(transaction.duration, 0.5) . | x | number | ||
platform | Name of the platform. This is only a metrics property for valid platforms, defaulting to other . | x | x | string | |
platform.name | Name of the platform | x | string | ||
project | The name of the project. In some pages of sentry.io, you can also filter on project using a dropdown. | x | x | string | |
project.id | The id of the project. | x | x | number | |
pXY(duration field) | Returns results with an approximate percentile of the field. Replace "XY" with 50, 75, 95, 99, or 100. For example, if you wanted to find the 50th percentile of transaction durations, you would enter p50(transaction.duration) . | x | number | ||
release | A release is a version of your code deployed to an environment. You can create a tokenIn search, a key-value pair or raw search term. Also, a value used for authorization. with an exact match of the version of a release, or release:latest to pick the most recent release. | x | x | x | string |
release.build | The number that identifies an iteration of your app. For example, CFBundleVersion on iOS or versionCode on Android. Learn more. | x | x | number | |
release.package | The unique identifier of the project/app. For example, CFBundleIdentifier on iOS or packageName on Android. Learn more. | x | x | string | |
release.stage | The usage your release is seeing relative to other releases. Values can be adopted , low , or replaced . Learn more. | x | x | string | |
release.version | A shorter version of the name; name without the package or short version of the hash. Learn more. | x | x | string | |
replayType | The reason a replay was triggered. For example, session when replaysSessionSampleRate takes effect, or error when replaysOnErrorSampleRate is sampled instead of session . | x | string | ||
click.alt | The alt of an element that was clicked. For example, "a good dog" would match the element <img src="/lassie.jpeg" alt="a good dog" /> | x | string | ||
click.class | The class of an element that was clicked. No leading . is necessary. For example, btn-primary would match the element <a class="btn btn-primary">Save</a> | x | string | ||
click.id | The id of an element that was clicked. No leading # is necessary. For example, reset-password would match the element <a id="reset-password">Reset</a> | x | string | ||
click.label | The aria-label of an element that was clicked. For example, Expand would match the element <button aria-label="Expand"><img src="/icons/expand.png"/></button> | x | string | ||
click.role | The role of an element that was clicked. For example, button would match both <button>Save</button> and <a role="button">Submit</a> | x | string | ||
click.selector | An element identified using a subset of CSS selector syntax. For example, span#section-1 or span.active or span[role=button] or span#section-1.active[role=button] would all match the element <span id="section-1" class="active" role="button"/> . Note that, CSS combinators, pseudo selectors, and attr selectors other than = are not supported. | x | string | ||
click.tag | The tag name of an element that was clicked. For example, input would match <input name="username" /> | x | string | ||
click.testid | The data-testid or data-test-id of an element that was clicked. For example, user-name would match the element <a data-testid="user-name">User Name</a> | x | string | ||
click.textContent | The immediate textContent of an element that was clicked. For example, Save would match <button>Save</button> but wouldn't match <button><h1>Save</h1></button> | x | string | ||
click.title | The title of an element that was clicked. For example, Save this comment would match the element <a title="Save this comment" class="btn btn-primary">Save</a> | x | string | ||
sdk.name | Name of the Sentry SDK that sent the event. | x | x | x | string |
sdk.version | Version of the Sentry SDK that sent the event. | x | x | x | string |
spans.browser | Cumulative browser time for a transaction, based on the span operations. | x | duration | ||
spans.db | Cumulative db time for a transaction, based on span operations. | x | duration | ||
spans.http | Cumulative http time for a transaction, based on span operations. | x | duration | ||
spans.resource | Cumulative resource time for a transaction, based on span operations. | x | duration | ||
stack.abs_path | The absolute path to the source file. In events, this is an array; in issues, this is a single value. | x | x | array, single value | |
stack.colno | Column number of the call, starting at 1. | x | array | ||
stack.filename | The path to the source file relative to the project root directory. In events, this is an array. In issues, this is a single value. | x | x | array, single value | |
stack.function | Name of the function being called. In events, this is an array. In issues, this is a single value. | x | x | array, single value | |
stack.in_app | Indicates whether a frame is related to the execution of the relevant code in the stack trace. For example, the frames that might power the framework’s web server of your app are probably not relevant. However, calls to the framework’s library once you start handling code likely are relevant. Values can be 1 (true) or 0 (false). | x | array | ||
stack.lineno | Line number of the call, starting at 1. | x | array | ||
stack.module | Platform-specific module path. For example, sentry.interfaces.Stacktrace . In events, this is an array. In issues, this is a single value. | x | x | array, single value | |
stack.package | The "package" the frame was contained in. Depending on the platform, this can be different things. For C#, it can be the name of the assembly. For native code, it can be the path of the dynamic library or something else. In events, this is an array. In issues, this is a single value. | x | x | array, single value | |
sum(numeric field) | Returns results with a matching total value for the the field entered. | x | matches field | ||
timesSeen | Returns results with a matching count. (Same as count() in events.) | x | number | ||
timestamp | The finish timestamp of the transaction. Returns events with matching datetime. | x | x | datetime | |
timestamp.to_day | Timestamp rounded down to the nearest day. | x | datetime | ||
timestamp.to_hour | Timestamp rounded down to the nearest hour. | x | datetime | ||
title | Title of the error or the transaction name. | x | x | string | |
trace | A trace represents the record of the entire operation you want to measure or track — like page load, searched using the uuid generated by Sentry’s SDK. | x | x | x | uuid |
trace.parent_span | Span ID of the parent to the current transaction. This is null if the transaction is root. | x | uuid | ||
trace.span | Span ID of the root span of the root transaction in the event. | x | uuid | ||
transaction | For transactions, the name of the transaction. For errors, the name of the associated transaction. | x | x | string | |
transaction.duration | Duration, in milliseconds, of the transaction. | x | duration | ||
transaction.op | Short code identifying the type of operation the span is measuring. | x | string | ||
transaction.status | Describes the status of the span/transaction. Check out our Transaction Payloads documentation for all possible statuses. | x | string | ||
unreal.crash_type | The Unreal Crash Context Type | x | x | string | |
url | A specific URL that the user visited during the replay. | x | string | ||
user.display | In order, the first available user field available: email, then username, ID, and then IP address. | x | string | ||
user.email | An alternative, or addition, to the username. Sentry is aware of email addresses and can therefore display things such as Gravatars and unlock messaging capabilities. | x | x | x | string |
user.id | Application-specific internal identifier for the user. | x | x | x | string |
user.ip | User's IP address. Sentry uses the IP address as a unique identifier for unauthenticated users. | x | x | x | string |
user.username | Username, which is typically a better label than the user.id . | x | x | x | string |
user_misery(number) | Returns transactions with the defined user misery value. User Misery is a user-weighted performance metric that counts the number of unique users who were frustrated; "frustration" is measured as a response time four times the satisfactory response time threshold (in milliseconds). It highlights transactions that have the highest impact on users. | x | number |
Custom Tags
Additionally, you can use any tag you’ve specified as a
Most SDKs generally support configuring tags by configuring the scope.
Several common uses for tags include:
- The hostname of the server
- The version of your platform (for example, iOS 5.0)
- The user’s language
Device Classification
device.class
provides a simple way for developers to understand the performance level of an event's client device in a single searchable property. This is particularly useful for projects that serve a large range of mobile devices, in which case developers would typically have had to parse through a vast range of specs and models across iOS and Android.
Possible values for device.class
are high
, medium
, and low
, indicating the estimated performance level of the device. This is a calculated property that is based on the following specs:
device.class for iOS | model |
---|---|
high | iPhone 12 series or higher |
medium | iPhone 7 series to iPhone 11 series |
low | iPhone 6 series or lower |
device.class for Android | processor_count | processor_frequency | memory_size |
---|---|---|---|
high | >= 8 | >= 2500 MHz | >= 6 GiB |
medium | >= 8 | >= 2000 MHz | >= 4 GiB |
low | < 8 | < 2000 MHz | < 4 GiB |
These classifications are based on an analysis of the mobile devices available in the market today and are subject to change as the market evolves.
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) to suggesting an update ("yeah, this would be better").