# Page and screen views
> Track page views on web and screen views on mobile with page view IDs and screen context entities.
> Source: https://docs.snowplow.io/docs/events/ootb-data/page-and-screen-view-events/
> Documentation index: https://docs.snowplow.io/llms.txt

Page and screen view tracking is key for understanding your users' navigation within your app.

Snowplow provides implementations for web and mobile platforms:

- Page view events on web
- Screen view events on mobile

Both page and screen views are included in the [Snowplow Unified Digital dbt package](/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-models/dbt-unified-data-model/). The legacy [Web](/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-models/legacy/dbt-web-data-model/) and [Mobile](/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-models/legacy/dbt-mobile-data-model/) packages handle page and screen views respectively.

## Page views

Track page views to record when a user views a web page.

Page view events are [baked-in events](/docs/fundamentals/events/) that have no schema. They populate the `page` and `url` [atomic event parameters](/docs/fundamentals/canonical-event/#page-fields).

Check out the [Links and referrers](/docs/events/ootb-data/links-and-referrers/) overview for information about the `refr` or `page_referrer` atomic event property.

This table shows the support for page view tracking across the main [Snowplow tracker SDKs](/docs/sources/).

| Tracker                                                                                       | Supported | Since version | Auto-tracking | Notes                                                   |
| --------------------------------------------------------------------------------------------- | --------- | ------------- | ------------- | ------------------------------------------------------- |
| [Web](/docs/sources/web-trackers/tracking-events/page-views/)                                 | ✅         | 0.1.0         | ✅/❌           | Web page entity can be automatically added              |
| iOS                                                                                           | ❌         |               |               |                                                         |
| Android                                                                                       | ❌         |               |               |                                                         |
| [React Native](/docs/sources/react-native-tracker/tracking-events/#tracking-page-view-events) | ✅         | 0.1.0         | ❌             | No web page entity                                      |
| [Flutter](/docs/sources/flutter-tracker/initialization-and-configuration/)                    | ✅         | 0.1.0         | ✅/❌           | Only on web; web page entity can be automatically added |
| Roku                                                                                          | ❌         |               |               |                                                         |
| Node.js                                                                                       | ❌         |               |               |                                                         |
| Golang                                                                                        | ❌         |               |               |                                                         |
| .NET                                                                                          | ❌         |               |               |                                                         |
| [Java](/docs/sources/java-tracker/tracking-events/)                                           | ✅         | 0.1.0         | ❌             | No web page entity                                      |
| [Python](/docs/sources/python-tracker/tracking-specific-events/)                              | ✅         | 0.1.0         | ❌             | No web page entity                                      |
| Scala                                                                                         | ❌         |               |               |                                                         |
| [Ruby](/docs/sources/ruby-tracker/tracking-events/)                                           | ✅         | 0.1.0         | ❌             | No web page entity                                      |
| Rust                                                                                          | ❌         |               |               |                                                         |
| PHP                                                                                           | ❌         |               |               |                                                         |
| C++                                                                                           | ❌         |               |               |                                                         |
| Unity                                                                                         | ❌         |               |               |                                                         |
| Lua                                                                                           | ❌         |               |               |                                                         |
| [Google Tag Manager](/docs/sources/google-tag-manager/snowplow-template/)                     | ✅         | v3            | ❌             |                                                         |

We recommend using the [Base web tracking plan template](/docs/event-studio/tracking-plans/templates/#base-web) for web tracking. It includes page views.

### Web page entity

Some trackers assign a unique identifier to every page load: the page view ID. Where available, you can configure this UUID to be added to every event tracked on that page, by tracking the `web_page` entity. This identifier can be very useful for sessionization and user journey analysis.

### `web_page`

**Type:** Schema

Schema for a web page context

**Properties:**

| Property      | Description |
| ------------- | ----------- |
| `id` _string_ | _Required._ |

## Screen views

Screen view events are the mobile equivalent of page view events.

This table shows the support for screen view tracking across the main [Snowplow tracker SDKs](/docs/sources/).

| Tracker                                                                   | Supported | Since version | Auto-tracking | Notes                                                                                         |
| ------------------------------------------------------------------------- | --------- | ------------- | ------------- | --------------------------------------------------------------------------------------------- |
| [Web](/docs/sources/web-trackers/tracking-events/screen-views/)           | ✅         | 4.2.0         | ✅/❌           | Requires screen tracking plugin; we recommend using page views instead                        |
| [iOS](/docs/sources/mobile-trackers/tracking-events/screen-tracking/)     | ✅         | 0.1.0         | ✅/❌           | Screen entity can be automatically added; screen view autotracking depends on platform        |
| [Android](/docs/sources/mobile-trackers/tracking-events/screen-tracking/) | ✅         | 0.1.0         | ✅/❌           | Screen entity can be automatically added; screen view autotracking depends on platform        |
| [React Native](/docs/sources/react-native-tracker/tracking-events/)       | ✅         | 0.1.0         | ✅/❌           | Screen entity can be automatically added; add navigation handler for screen view autotracking |
| [Flutter](/docs/sources/flutter-tracker/tracking-events/)                 | ✅         | 0.1.0         | ❌             | No screen entity                                                                              |
| [Roku](/docs/sources/roku-tracker/tracking-events/)                       | ✅         | 0.1.0         | ❌             | No screen entity                                                                              |
| [Node.js](/docs/sources/node-js-tracker/tracking-events/)                 | ✅         | 0.1.0         | ❌             | No screen entity                                                                              |
| [Golang](/docs/sources/golang-tracker/)                                   | ✅         | 1.0.0         | ❌             | No screen entity                                                                              |
| [.NET](/docs/sources/net-tracker/)                                        | ✅         | 1.3.0         |               | No screen entity                                                                              |
| [Java](/docs/sources/java-tracker/tracking-events/)                       | ✅         | 0.1.0         | ❌             | No screen entity                                                                              |
| [Python](/docs/sources/python-tracker/tracking-specific-events/)          | ✅         | 0.2.0         | ❌             | No screen entity                                                                              |
| Scala                                                                     | ❌         |               |               |                                                                                               |
| [Ruby](/docs/sources/ruby-tracker/tracking-events/)                       | ✅         | 0.2.0         | ❌             | No screen entity                                                                              |
| [Rust](/docs/sources/rust-tracker/tracking-events/)                       | ✅         | 0.1.0         | ❌             | No screen entity                                                                              |
| [PHP](/docs/sources/php-tracker/tracking-an-event/)                       | ✅         | 0.1.0         | ❌             | No screen entity                                                                              |
| [C++](/docs/sources/c-tracker/tracking-specific-events/)                  | ✅         | 0.1.0         | ❌             | No screen entity                                                                              |
| [Unity](/docs/sources/unity-tracker/)                                     | ✅         | 0.8.0         | ❌             | No screen entity                                                                              |
| [Lua](/docs/sources/lua-tracker/tracking-specific-events/)                | ✅         | 0.1.0         | ❌             | No screen entity                                                                              |
| Google Tag Manager                                                        | ❌         |               |               |                                                                                               |

We recommend using the [Base mobile tracking plan template](/docs/event-studio/tracking-plans/templates/#base-mobile) for mobile tracking. It includes screen views.

Screen view events record the name and identifier of the current screen, as well as some optional properties such as the ID of the previous screen. Information about the previous screen can be useful for understanding user navigation within your application.

### `screen_view`

**Type:** Event

Schema for a screen view event

**Properties:**

| Property                  | Description                                                             |
| ------------------------- | ----------------------------------------------------------------------- |
| `name` _string_           | _Required._ The name of the screen viewed.                              |
| `type` _string_           | _Optional._ The type of screen that was viewed e.g feed / carousel.     |
| `id` _string_             | _Required._ An ID from the associated screenview event.                 |
| `previousName` _string_   | _Optional._ The name of the previous screen.                            |
| `previousId` _string_     | _Optional._ A screenview ID of the previous screenview.                 |
| `previousType` _string_   | _Optional._ The screen type of the previous screenview.                 |
| `transitionType` _string_ | _Optional._ The type of transition that led to the screen being viewed. |

**Example warehouse query (Snowflake):**

```sql
select
unstruct_event_com_snowplowanalytics_mobile_screen_view_1 screen_view_1
from
atomic.events
where
events.collector_tstamp > getdate() - interval '1 hour'
and events.event = 'unstruct'
and events.event_name = 'screen_view'
and events.event_vendor = 'com.snowplowanalytics.mobile'
```

### Screen entity

Some trackers can automatically attach a `screen` entity to all events after a screen view is tracked. This entity contains information about the current, or last seen, screen.

### `screen`

**Type:** Schema

Schema for a context that represents information pertaining to the current screen being viewed when an event occurs.

**Properties:**

| Property                     | Description                                                            |
| ---------------------------- | ---------------------------------------------------------------------- |
| `name` _string_              | _Required._ The name of the screen viewed.                             |
| `type` _string_              | _Optional._ The type of screen that was viewed e.g feed / carousel.    |
| `id` _string_                | _Required._ An ID from the associated screenview event.                |
| `viewController` _string_    | _Optional._ iOS specific: class name of the view controller.           |
| `topViewController` _string_ | _Optional._ iOS specific: class name of the top level view controller. |
| `activity` _string_          | _Optional._ Android specific: name of activity.                        |
| `fragment` _string_          | _Optional._ Android specific: name of fragment.                        |
