Skip to main content

Referrers, links, and cross-navigation events

Understanding how users arrive at your pages and navigate between them is essential for analyzing traffic sources, marketing effectiveness, and user journeys. Snowplow captures referrer information, deep link data, and link click events to give you a complete picture of cross-page and cross-app navigation.

Referrer atomic event property

Some Snowplow trackers can populate the page_referrer atomic event property. This field captures the URL of the page that referred the user to the current page.

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

TrackerSupportedSince versionAuto-trackingNotes
Web0.1.0Automatic for all page view events
iOS3.0.0 (deep link events), 4.1.0 (deep link entity)Based on Deep Link events
Android3.0.0 (deep link events), 4.1.0 (deep link entity)Based on Deep Link events
React Native1.1.0Based on Deep Link events
Flutter
Roku
Google Tag Managerv3Automatic for all page view events

The web trackers automatically populate the page_referrer atomic event property in all page view events.

Deep links are URLs or hyperlinks that take users directly to a particular location within a mobile app. They're received by the mobile operating system and passed to the related app.

Most events tracked on mobile unsurprisingly don't include webpage atomic properties. However, the mobile trackers can capture both the URL of the deep link and the referrer URL (if available).

You'll need to manually track any received deep links, using the deep_link_received event.

The deep_link_received event, as well as the first subsequent screen view event, include the page_url and page_referrer atomic event properties.

deep_link_received

Event
Represents a deep-link received in the app.
Schema URIiglu:com.snowplowanalytics.mobile/deep_link_received/jsonschema/1-0-0
Example
json
{
"url": "https://example.com/notes/123",
"referrer": "https://snowplow.io"
}
Properties and schema
PropertyDescription
url
string
Required. URL in the received deep-link
referrer
string
Optional. Referrer URL, source of this deep-link
Warehouse query
sql
select
unstruct_event_com_snowplowanalytics_mobile_deep_link_received_1_0_0
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'deep_link_received'
and events.event_vendor = 'com.snowplowanalytics.mobile'

The tracker will automatically add this deep_link entity to the next screen view event after tracking the deep_link_received event.

deep_link

Entity
Entity that indicates a deep-link has been received and processed.
Schema URIiglu:com.snowplowanalytics.mobile/deep_link/jsonschema/1-0-0
Example
json
{
"url": "https://example.com/notes/123",
"referrer": "https://snowplow.io"
}
Properties and schema
PropertyDescription
url
string
Required. URL in the received deep-link
referrer
string
Optional. Referrer URL, source of this deep-link

The web trackers can automatically track link click events, capturing details about the clicked link such as its URL, element ID, classes, target, and content.

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

TrackerSupportedSince versionAuto-trackingNotes
Web0.7.0 (limited functionality), 3.0.0 (plugin)Requires link click plugin
iOS
Android
React Native
Flutter
Roku
Google Tag Managerv3Integrates with link click plugin

To track link clicks on web using React Native or Flutter, you can implement custom event tracking when users interact with links in your app using the link_click event schema.

We recommend using the Base web tracking plan template for web tracking. It includes link clicks.

link_click

Event
Schema for a link click event
Schema URIiglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1
Properties and schema
PropertyDescription
elementId
string
Optional.
elementClasses
array
Optional.
elementTarget
string
Optional.
targetUrl
string
Required.
elementContent
string
Optional.
Warehouse query
sql
select
unstruct_event_com_snowplowanalytics_snowplow_link_click_1_0_1
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'link_click'
and events.event_vendor = 'com.snowplowanalytics.snowplow'

Cross-domain tracking

Read more about tracking cross-domain in the cross-navigation page.

On this page

Want to see a custom demo?

Our technical experts are here to help.