> ## Documentation Index
> Fetch the complete documentation index at: https://docs.formo.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Page event

> Reference for the page view event that records web and mobile screen visits, with auto-collected browser properties and unified cross-platform tracking.

The `page` event records whenever a user views a page on your website or a screen in your mobile app. Both the [web SDK](/sdks/web) and [mobile SDK](/sdks/mobile) emit `page` events with `channel` set to `"web"` or `"mobile"` respectively.

On web, page properties are automatically collected from the browser. On mobile, the screen name is mapped to page-equivalent fields (`page_title`, `page_path`, `page_url`) so that web and mobile views are processed through the same analytics pipeline.

## Properties

| Property   | Type   | Description                                               | Web SDK                    | Mobile SDK             |
| :--------- | :----- | :-------------------------------------------------------- | :------------------------- | :--------------------- |
| `url`      | String | Full URL of the page.                                     | `window.location.href`     | Not set                |
| `path`     | String | Path component of the URL (without query string or hash). | `window.location.pathname` | Not set                |
| `hash`     | String | Hash fragment of the URL (e.g., `#section`).              | `window.location.hash`     | Not set                |
| `query`    | String | Query string of the URL (without the leading `?`).        | `window.location.search`   | Not set                |
| `name`     | String | Name of the page or screen.                               | Caller-provided            | Screen name (required) |
| `category` | String | Category of the page or screen.                           | Caller-provided            | Caller-provided        |
| `title`    | String | Title of the page.                                        | Caller-provided            | Not set                |

On web, any non-UTM query-string parameters are also added as individual properties. The SDKs additionally auto-collect the following context fields:

| Context field                 | Web SDK                       | Mobile SDK                               |
| :---------------------------- | :---------------------------- | :--------------------------------------- |
| `context.page_url`            | `window.location.href`        | `app://{screenName}`                     |
| `context.page_title`          | `document.title`              | Screen name                              |
| `context.page_path`           | Not set (derived in backend)  | Not set (derived in backend)             |
| `context.referrer`            | `document.referrer`           | From deep link (if set)                  |
| `context.user_agent`          | Browser user agent            | Device user agent (if available)         |
| `context.locale`              | Browser language              | Device locale                            |
| `context.timezone`            | Resolved IANA timezone        | Resolved IANA timezone                   |
| `context.location`            | Country derived from timezone | Country derived from timezone            |
| `context.library_name`        | `"Formo Web SDK"`             | `"Formo React Native SDK"`               |
| `context.library_version`     | SDK version                   | SDK version                              |
| `context.browser`             | Detected browser name         | Not set                                  |
| `context.screen_width`        | `window.screen.width`         | `Dimensions.get("screen").width`         |
| `context.screen_height`       | `window.screen.height`        | `Dimensions.get("screen").height`        |
| `context.screen_density`      | `window.devicePixelRatio`     | `Dimensions.get("screen").scale`         |
| `context.viewport_width`      | `window.innerWidth`           | Not set                                  |
| `context.viewport_height`     | `window.innerHeight`          | Not set                                  |
| `context.os_name`             | Not set                       | `iOS` or `Android`                       |
| `context.os_version`          | Not set                       | OS version string                        |
| `context.device_model`        | Not set                       | Device model (e.g., `iPhone 14 Pro`)     |
| `context.device_manufacturer` | Not set                       | Device manufacturer (e.g., `Apple`)      |
| `context.device_name`         | Not set                       | Device name                              |
| `context.device_type`         | Not set                       | `mobile` or `tablet`                     |
| `context.app_name`            | Not set                       | From native config or options            |
| `context.app_version`         | Not set                       | From native config or options            |
| `context.app_build`           | Not set                       | From native config or options            |
| `context.app_bundle_id`       | Not set                       | From native config or options            |
| `context.network_wifi`        | Not set                       | `true` if connected via WiFi             |
| `context.network_cellular`    | Not set                       | `true` if connected via cellular         |
| `context.network_carrier`     | Not set                       | Cellular carrier name (when on cellular) |
| `channel`                     | `"web"`                       | `"mobile"`                               |

## Sample Payload (Web)

```json theme={null}
{
    "type": "page",
    "channel": "web",
    "context": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36",
        "locale": "en-US",
        "timezone": "Asia/Saigon",
        "location": "ID",
        "referrer": "https://chatgpt.com/",
        "utm_source": "chatgpt.com",
        "utm_medium": "",
        "utm_campaign": "",
        "utm_term": "",
        "utm_content": "",
        "page_url": "https://formo.so/faucets?utm_source=chatgpt.com",
        "page_title": "Free testnet faucets",
        "library_name": "Formo Web SDK",
        "library_version": "1.30.1",
        "browser": "chrome",
        "screen_width": 1920,
        "screen_height": 1080,
        "screen_density": 1,
        "viewport_width": 1920,
        "viewport_height": 969
    },
    "properties": {
        "url": "https://formo.so/faucets?utm_source=chatgpt.com",
        "path": "/faucets",
        "hash": "",
        "query": "utm_source=chatgpt.com",
        "name": "Faucets",
        "category": "Docs",
        "title": "Free testnet faucets"
    }
}
```

## Sample Payload (Mobile)

Screen events from the [mobile SDK](/sdks/mobile) are sent as `page` events with `channel: "mobile"`:

```json theme={null}
{
    "type": "page",
    "channel": "mobile",
    "version": "0",
    "session_id": "117b982a451dc22edea6413b8e20958216c0a5b3baaa1d90699c42dbf4e74e33",
    "anonymous_id": "c2bc0ebe-d852-49d1-9efd-e45744850ae0",
    "context": {
        "library_name": "Formo React Native SDK",
        "library_version": "1.0.0",
        "page_title": "Wallet",
        "page_url": "app://Wallet",
        "locale": "en-US",
        "timezone": "America/New_York",
        "location": "US",
        "os_name": "iOS",
        "os_version": "17.0",
        "device_model": "iPhone 14 Pro",
        "device_manufacturer": "Apple",
        "device_name": "Yos's iPhone",
        "device_type": "mobile",
        "app_name": "MyDeFiApp",
        "app_version": "2.1.0",
        "app_build": "42",
        "app_bundle_id": "com.example.mydefiapp",
        "network_wifi": true,
        "network_cellular": false,
        "screen_width": 393,
        "screen_height": 852,
        "screen_density": 3
    },
    "properties": {
        "name": "Wallet",
        "category": "Main"
    }
}
```
