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

# Geo

> Google Ads performance by geography in Ocular — for market prioritization, geographic expansion decisions, and location-based bid adjustments.

Google Ads performance by geography — derived from user IP and Google's geolocation services.

## What this data model represents

**Grain:** one row per `date × ad_account × campaign × adset × location`.

**Metrics, grouped by category** — every number you can compute on this data model. Expand below for examples in each.

```mermaid theme={null}
flowchart LR
    R1["Spend & revenue"]:::cat --- S
    R2["Clicks & impressions"]:::cat --- S

    S(["Metrics"]):::root

    S --- R3["Cost efficiency"]:::cat
    S --- R4[Conversion]:::cat
    S --- R5[Video]:::cat

    classDef root fill:#0f172a,color:#f8fafc,stroke:#0f172a,stroke-width:2px
    classDef cat fill:#2563eb,color:#fff,stroke:#1d4ed8,stroke-width:1.5px
```

<Accordion title="Show sample metrics in each category">
  ```mermaid theme={null}
  flowchart LR
    sr1[Ad Spend]:::leaf --- SR["Spend & revenue"]
    sr2[Conversion Value]:::leaf --- SR
    sr3[ROAS]:::leaf --- SR
    sr4[AOV]:::leaf --- SR

    ci1[Clicks]:::leaf --- CI["Clicks & impressions"]
    ci2[Impressions]:::leaf --- CI
    ci3[CTR]:::leaf --- CI

    SR:::cat --- S
    CI:::cat --- S

    S(["Metrics"]):::root

    S --- CE["Cost efficiency"]:::cat
    S --- Cv[Conversion]:::cat
    S --- Vd[Video]:::cat

    CE --- ce1[CPC]:::leaf
    CE --- ce2[CPM]:::leaf
    CE --- ce3[CPA]:::leaf
    CE --- ce4[RPC]:::leaf

    Cv --- cv1[View Through Conversions]:::leaf

    Vd --- v1[Video Views]:::leaf

    classDef root fill:#0f172a,color:#f8fafc,stroke:#0f172a,stroke-width:2px
    classDef cat fill:#2563eb,color:#fff,stroke:#1d4ed8,stroke-width:1.5px
    classDef leaf fill:#eff6ff,color:#1e3a8a,stroke:#bfdbfe,stroke-width:1px
  ```
</Accordion>

**Dimensions, grouped by category** — every way you can split, filter, or group those metrics. Expand below for examples in each.

```mermaid theme={null}
flowchart LR
    D1[Geography]:::cat --- M
    D2["Campaign hierarchy"]:::cat --- M

    M(["Dimensions"]):::root

    M --- D3[Time]:::cat
    M --- D4["Account & brand"]:::cat
    M --- D5["Creative & platform"]:::cat

    classDef root fill:#0f172a,color:#f8fafc,stroke:#0f172a,stroke-width:2px
    classDef cat fill:#9333ea,color:#fff,stroke:#7e22ce,stroke-width:1.5px
```

<Accordion title="Show sample dimensions in each category">
  ```mermaid theme={null}
  flowchart LR
    g1[city]:::leaf --- Geo[Geography]
    g2[most_specific_location]:::leaf --- Geo
    g3[location_type]:::leaf --- Geo

    ch1[campaign_id]:::leaf --- CH["Campaign hierarchy"]
    ch2[adset_id]:::leaf --- CH
    ch3[campaign_type]:::leaf --- CH

    Geo:::cat --- M
    CH:::cat --- M

    M(["Dimensions"]):::root

    M --- Ti[Time]:::cat
    M --- AB["Account & brand"]:::cat
    M --- CP["Creative & platform"]:::cat

    Ti --- t1[date]:::leaf
    Ti --- t2[week_start_date]:::leaf

    AB --- ab1[ad_account_id]:::leaf
    AB --- ab2[brand]:::leaf

    CP --- cp1[ad_platform]:::leaf
    CP --- cp2[final_url]:::leaf

    classDef root fill:#0f172a,color:#f8fafc,stroke:#0f172a,stroke-width:2px
    classDef cat fill:#9333ea,color:#fff,stroke:#7e22ce,stroke-width:1.5px
    classDef leaf fill:#faf5ff,color:#581c87,stroke:#e9d5ff,stroke-width:1px
  ```
</Accordion>

**Source:** Google Ads API, daily refresh.

<Note>
  Reporting granularity is **bounded by your campaign's targeting**. A campaign that targets only countries cannot be drilled down to city. Don't expect city-level rows from a national campaign.
</Note>

## Slice by

Unique to this data model:

| Dimension                | Type   | Values                                                            |
| ------------------------ | ------ | ----------------------------------------------------------------- |
| `city`                   | String | City name                                                         |
| `most_specific_location` | String | Finest available identifier for the matched location              |
| `location_type`          | String | `City`, `Region/State`, `Country`, `DMA`, `Postal Code`, `Radius` |

Plus the standard campaign hierarchy, time, and account dimensions — documented once on the [Google Ads Overview](/data-models/google-ads/overview).

## Use it to answer

* Which regions deliver the highest ROAS — where should I rebalance budget?
* Where should we test expansion — which untargeted markets resemble our best ones?
* What bid modifier is justified by the CPA gap by city?
* How does AOV vary by geography — different purchase basket mix per market?

## Available metrics

Everything you can compute on this data model. Need a metric not listed? See the [Google Ads metric availability matrix](/data-models/google-ads/overview#metric-availability-matrix).

| Metric                   | Formula                                            |
| ------------------------ | -------------------------------------------------- |
| **Spend & revenue**      |                                                    |
| Ad Spend                 | Sum of daily spend                                 |
| Conversion Value         | Sum of reported revenue                            |
| ROAS                     | Conversion Value ÷ Ad Spend                        |
| Conversions              | Sum of attributed conversion events                |
| AOV                      | Conversion Value ÷ Conversions                     |
| **Clicks & impressions** |                                                    |
| Clicks                   | Sum of clicks                                      |
| Impressions              | Sum of impressions                                 |
| CTR                      | Clicks ÷ Impressions × 100                         |
| **Cost efficiency**      |                                                    |
| CPC                      | Ad Spend ÷ Clicks                                  |
| CPM                      | Ad Spend ÷ Impressions × 1,000                     |
| CPA                      | Ad Spend ÷ Conversions                             |
| RPC                      | Conversion Value ÷ Clicks                          |
| **Conversion**           |                                                    |
| View Through Conversions | Sum of conversions from impressions without clicks |
| **Video**                |                                                    |
| Video Views              | Sum                                                |

<Accordion title="Raw fields (for custom calculations)">
  `ad_spend` · `conversion_value` · `conversions` · `clicks` · `impressions` · `view_through_conversions` · `video_views`
</Accordion>
