|
| 1 | +--- |
| 2 | +title: "SDK Fingerprinting" |
| 3 | +description: "Learn about overriding default fingerprinting in your SDK." |
| 4 | +sidebar_order: 30 |
| 5 | +--- |
| 6 | + |
| 7 | +All events have a fingerprint. Events with the same fingerprint are grouped together into an issue. |
| 8 | + |
| 9 | +By default, Sentry will run one of our built-in grouping algorithms to generate a fingerprint based on information available within the event such as `stacktrace`, `exception`, and `message`. To extend the default grouping behavior or change it completely, you can use a combination of the following options: |
| 10 | + |
| 11 | +1. In your SDK, using SDK Fingerprinting, as documented below |
| 12 | +2. In your project, using [Fingerprint Rules](/concepts/data-management/event-grouping/fingerprint-rules/) or [Stack Trace Rules](/concepts/data-management/event-grouping/stack-trace-rules/) |
| 13 | + |
| 14 | +In supported SDKs, you can override Sentry's default grouping that passes the fingerprint attribute as an array of strings. The length of a fingerprint's array is not restricted. This works similarly to the [fingerprint rules functionality](/concepts/data-management/event-grouping/fingerprint-rules/), which is always available and can achieve similar results. |
| 15 | + |
| 16 | +## Basic Example |
| 17 | + |
| 18 | +In the most basic case, values are passed directly: |
| 19 | + |
| 20 | +<PlatformContent includePath="set-fingerprint/basic" /> |
| 21 | + |
| 22 | +You can use variable substitution to fill dynamic values into the fingerprint that by default is computed on the server. For example, the value `{{ default }}` can be added to include the entire normally generated grouping hash into the fingerprint. These values are the same for server-side fingerprinting. See [Variables](/concepts/data-management/event-grouping/fingerprint-rules/#variables) for more information. |
| 23 | + |
| 24 | +## Group Errors With Greater Granularity |
| 25 | + |
| 26 | +In some scenarios, you'll want to group errors more granularly. |
| 27 | + |
| 28 | +For example, if your application queries a Remote Procedure Call Model (RPC) interface or external Application Programming Interface (API) service, the stack trace is generally the same, even if the outgoing request is very different. |
| 29 | + |
| 30 | +The following example will split up the default group Sentry would create (represented by `{{ default }}`) even more, taking some attributes on the error object into account: |
| 31 | + |
| 32 | +<PlatformContent includePath="set-fingerprint/rpc" /> |
| 33 | + |
| 34 | +## Group Errors More Aggressively |
| 35 | + |
| 36 | +You can also overwrite Sentry's grouping entirely. |
| 37 | + |
| 38 | +For example, if a generic error, such as a database connection error, has many different stack traces and never groups them together, you can overwrite Sentry's grouping by omitting `{{ default }}` from the array: |
| 39 | + |
| 40 | +<PlatformContent includePath="set-fingerprint/database-connection" /> |
0 commit comments