This repository was archived by the owner on Jun 10, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Tracking
Tobias Schubotz edited this page Jul 7, 2021
·
43 revisions
All Gnosis Safe contract state and interactions on-chain can be analyzed via Dune analytics. This includes properties such as:
- Number of Safes deployed
- Safe version
- Number of owners and threshold
- Number of transactions made
- Fund store
- ...
Gnosis Safe dashboards on Dune are tagged with the label Gnosis Safe. There is a main dashboard and a long list of dashboards for all kinds of purposes.
- Google analytics is used for tracking.
- Default properties such as device types and operating system are tracked.
- e.g. Number of unique visitors daily/weekly/monthly or time spent on page
- The landing page is tracked separate from the app:
- Users have to accept the analytics cookie before they show up in the tracking. We don't track users that don't accept.
- Tracking data can best be viewed via Datastudio:
- Wallet connected
category: 'Wallets'action: 'Connect a wallet'label: <provider name>
- Safe created
category: 'User'action: 'Created a safe'
- Navigation (
category: Safe Navigation)- Open Safe list via Sidebar (
action: Safe List Sidebar) - Open coins (
action: Coins) - Open collectibles (
action: Collectibles) - Open transactions (
action: Transactions) - Open address book (
action: AddressBook) - Open Safe apps (
action: Apps)label: <Safe app name>
- Open settings (
action: Settings)- Details (
label: Details) - Owners (
label: Owners) - Advanced (
label: Advanced)
- Details (
- Open Safe list via Sidebar (
- Download counts of the desktop app can be found here: https://githubstats0.firebaseapp.com/
- The Safe transaction service has an endpoint (
/multisig-transactions/analytics/) to provide data on the number of Safe app transactions based on theoriginfield.
- Firebase analytics is used.
- Data is synced to Google analytics
- Default user properties are tracked.
- Personalized advertising features are disabled
- How to check tracking events with BigQuery
- There is a datastudio dashboard for the data: Mainnet
User properties should be tracked with every single event.
- Integer (Tracked as String though since Firebase only allows Strings for user properties.)
- Should be the number of Safes that the user has added on their device, across all networks.
- Number is 0 after fresh install
- Number is increased when adding a Safe to the device
- Number is decreased when removing a Safe from the device.
- string
-
unknownif we haven't asked for push access yet (iOS only since we have push permission on Android by default) -
enabledif we have push notification permission (or enabled it after previously denying) -
disabledif the user denied push permission (or removed it after previously allowing)
- Integer (Tracked as String though since Firebase only allows Strings for user properties.)
- Should be the number of imported owner keys.
- Integer (Tracked as String though since Firebase only allows Strings for user properties.)
- Should be the number of generated owner keys.
- Integer (Tracked as String though since Firebase only allows Strings for user properties.)
- Should be the number of connected owner keys.
- String, “true” or “false”
- Every screen should be tracked as separate event.
- These events have the prefix
screen_ - We cannot use the Firebase native screen tracking since that's not working for us on iOS with SwiftUI. There is an issue on Github for this.
- The screen name is set as event name with a
screen_prefix. Overview screen tracking - There is a limit of 500 unique event names on Firebase, afterwards they get dropped (Error code 8)
- There are some reserved names we cannot use.
- Params:
-
network(String):-
noneif the screen does not belong to a Safe of a specific network (e.g. app settings, launcher screens) - Network name if the screen belongs to a Safe on a network (e.g. assets, tx list, tx details)
-
-
- These events have the prefix
user_
- Triggered each time after successfully importing an owner key.
- Params:
-
import_type(String):seedorkey
-
- Triggered each time after successfully generating an owner key.
- Triggered each time after successfully deleting an owner key.
- Triggered each time a transaction has been confirmed with an imported owner key.
- Triggered each time a transaction has been confirmed with a connected owner key.
- Triggered each time a transaction has been rejected with an imported owner key.
- Triggered each time a transaction has been rejected with a connected owner key.
- Triggered each time a transaction has been executed with a connected owner key.
- Triggered when clicking the
xon the banner to ask users to import their owner key.
- Triggered when clicking the
Addon the banner to ask users to add their owner key.
- Triggered when clicking the
xon the banner to ask users to create a passcode.
- Triggered when clicking the
Createon the banner to ask users to create a passcode.
- Triggered when clicking the
Skipduring onboarding, after adding a Safe when asking users to import their owner key.
- Triggered when clicking the
Addduring onboarding, after adding a Safe when asking users to add their owner key.
- Triggered every time the passcode was enabled
- Triggered every time the passcode was disabled (not via reset)
- Triggered every time the passcode was skipped on suggestion to set it up
- Triggered every time the passcode was reset (not via the disable function)
- Triggered every time an owner key was connected via installed wallet on device
- Triggered every time an owner key was connected via external wallet
- Triggered every time a dapp was connected via universal link on same device
- Triggered every time a dapp was connected via a link in pasteboard on same device
- Triggered every time a Safe was added to the app
- Params:
-
network(String): Network name
-
- Triggered every time a Safe was removed from the app
- Params:
-
network(String): Network name
-