# Referrers, links, and cross-navigation events
> Track page referrers, deep links in mobile apps, and cross-navigation links.
> Source: https://docs.snowplow.io/docs/events/ootb-data/links-and-referrers/
> Documentation index: https://docs.snowplow.io/llms.txt

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](/docs/fundamentals/canonical-event/#page-fields). 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](/docs/sources/). The server-side trackers don't include referrer tracking.

| Tracker                                                                                                | Supported | Since version                                      | Auto-tracking | Notes                              |
| ------------------------------------------------------------------------------------------------------ | --------- | -------------------------------------------------- | ------------- | ---------------------------------- |
| [Web](/docs/sources/web-trackers/tracking-events/page-views/)                                          | ✅         | 0.1.0                                              | ✅             | Automatic for all page view events |
| [iOS](/docs/sources/mobile-trackers/tracking-events/#tracking-deep-links)                              | ✅         | 3.0.0 (deep link events), 4.1.0 (deep link entity) | ❌             | Based on Deep Link events          |
| [Android](/docs/sources/mobile-trackers/tracking-events/#tracking-deep-links)                          | ✅         | 3.0.0 (deep link events), 4.1.0 (deep link entity) | ❌             | Based on Deep Link events          |
| [React Native](/docs/sources/react-native-tracker/tracking-events/#tracking-deep-link-received-events) | ✅         | 1.1.0                                              | ❌             | Based on Deep Link events          |
| [Flutter](/docs/sources/flutter-tracker/tracking-events/deep-link-and-push-notifications/)             | ✅         | 0.11.0                                             | ❌             | Based on Deep Link events          |
| Roku                                                                                                   | ❌         |                                                    |               |                                    |
| Google Tag Manager                                                                                     | ✅         | v3                                                 | ✅             | Automatic for all page view events |

The web trackers automatically populate the `page_referrer` [atomic event property](/docs/fundamentals/canonical-event/#page-fields) in all page view events.

### Deep links for mobile

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`

**Type:** Event

Represents a deep-link received in the app.

**Properties:**

| Property            | Description                                        |
| ------------------- | -------------------------------------------------- |
| `url` _string_      | _Required._ URL in the received deep-link          |
| `referrer` _string_ | _Optional._ Referrer URL, source of this deep-link |

**Example warehouse query (Snowflake):**

```sql
select
unstruct_event_com_snowplowanalytics_mobile_deep_link_received_1 deep_link_received_1
from
atomic.events
where
events.collector_tstamp > getdate() - 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`

**Type:** Schema

Entity that indicates a deep-link has been received and processed.

**Properties:**

| Property            | Description                                        |
| ------------------- | -------------------------------------------------- |
| `url` _string_      | _Required._ URL in the received deep-link          |
| `referrer` _string_ | _Optional._ Referrer URL, source of this deep-link |

## Link clicks

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](/docs/sources/). The server-side trackers don't include link click tracking.

| Tracker                                                                   | Supported | Since version                                 | Auto-tracking | Notes                             |
| ------------------------------------------------------------------------- | --------- | --------------------------------------------- | ------------- | --------------------------------- |
| [Web](/docs/sources/web-trackers/tracking-events/link-click/)             | ✅         | 0.7.0 (limited functionality), 3.0.0 (plugin) | ✅             | Requires link click plugin        |
| iOS                                                                       | ❌         |                                               |               |                                   |
| Android                                                                   | ❌         |                                               |               |                                   |
| React Native                                                              | ❌         |                                               |               |                                   |
| Flutter                                                                   | ❌         |                                               |               |                                   |
| Roku                                                                      | ❌         |                                               |               |                                   |
| [Google Tag Manager](/docs/sources/google-tag-manager/snowplow-template/) | ✅         | v3                                            | ✅             | Integrates 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](/docs/event-studio/tracking-plans/templates/#base-web) for web tracking. It includes link clicks.

### `link_click`

**Type:** Event

Schema for a link click event

**Properties:**

| Property                  | Description |
| ------------------------- | ----------- |
| `elementId` _string_      | _Optional._ |
| `elementClasses` _array_  | _Optional._ |
| `elementTarget` _string_  | _Optional._ |
| `targetUrl` _string_      | _Required._ |
| `elementContent` _string_ | _Optional._ |

**Example warehouse query (Snowflake):**

```sql
select
unstruct_event_com_snowplowanalytics_snowplow_link_click_1 link_click_1
from
atomic.events
where
events.collector_tstamp > getdate() - 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](/docs/events/cross-navigation/).
