Skip to main content

Application error events

Exception (error) tracking captures exceptions within your application.

This table shows the support for exception tracking across the main client-side Snowplow tracker SDKs. The server-side trackers don't include error tracking APIs.

TrackerSupportedSince versionAuto-trackingNotes
Web3.0.0✅/❌Requires error tracking plugin. Track handled exceptions manually.
iOS1.0.0
Android1.0.0
React NativeEarlier versions of the React Native tracker supported error tracking for mobile platforms. This feature was removed in version 4.0.0 as it didn't work with JavaScript. Track errors manually using the application_error schema.
FlutterUse the application_error schema for your own custom event.
RokuUse the application_error schema for your own custom event.
Google Tag Managerv3

The Errors plugin for the JavaScript trackers provides configuration for automatic tracking of unhandled exceptions, as well as a method for manually tracking handled exceptions.

The mobile trackers will capture unhandled exceptions. These can crash the app, so it's likely that the event will be sent after restart. Note that in some situations, it may not be possible to capture all exception details before the app crashes.

All exception events use the same application_error schema, which has the following properties:

application_error

Event
Schema for an application error
Schema URIiglu:com.snowplowanalytics.snowplow/application_error/jsonschema/1-0-2
Example
json
{
"programmingLanguage": "JAVA",
"message": "java.lang.OutOfMemoryError error raised",
"exceptionName": "java.lang.OutOfMemoryError",
"isFatal": true,
"threadName": "main",
"threadId": 1,
"lineNumber": 10,
"className": "android.graphics.BitmapFactory",
"stackTrace": "java.lang.OutOfMemoryError"
}
Properties and schema
PropertyDescription
programmingLanguage
string
Required.
Must be one of: JAVA, SCALA, KOTLIN, GROOVY, RUBY, GOLANG, JAVASCRIPT, PHP, PYTHON, OBJECTIVEC, SWIFT, C, CPLUSPLUS, CSHARP, ACTIONSCRIPT, LUA, RUST, HASKELL, CLOJURE, ERLANG, ELIXIR, CRYSTAL, PONY, NIM
message
string
Required.
threadName
string
Optional.
threadId
integer
Optional.
stackTrace
string
Optional.
causeStackTrace
string
Optional.
lineNumber
integer
Optional.
className
string
Optional.
exceptionName
string
Optional.
isFatal
boolean
Optional.
lineColumn
integer
Optional.
fileName
string
Optional.
Warehouse query
sql
select
unstruct_event_com_snowplowanalytics_snowplow_application_error_1_0_2
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'application_error'
and events.event_vendor = 'com.snowplowanalytics.snowplow'