Two time zones, one rule
Each table records the time zone its dates are stored in. Boards and reports show dates in your property's time zone (from the property, else the company, else America/New_York). When the two differ, Lens converts at query time. When they match, no conversion happens.
Which time zone each source uses
Lens sets the storage time zone when you save the table:
| Source | Stored in |
|---|---|
| GA4 (daily) | The property's time zone. When the table uses a Google connection, Lens reads the GA4 property's own reporting time zone instead |
GA4 with the dateHour dimension | UTC |
| Google Ads, Adobe, BigQuery, REST API | The property's time zone |
| Meta Ads | The ad account's time zone |
| Echo, CSV, JSONL, S3, GCS, Airbyte | UTC, adjusted by the table's Source Timezone setting (below) |
| Join, Union | The shared time zone of their source tables |
| Pivot | The property's time zone |
File and API sources: set Source Timezone
File and API tables have a Source Timezone panel, default UTC. It tells Lens what time zone the dates in your data are written in. A date with no time, such as 2026-10-01, is read as midnight in that zone.
If your CSV has US dates but Source Timezone is left at UTC, each date is stored as midnight UTC. Shown in a US property time zone, midnight UTC is the evening of the previous day, so rows can land one day early on the board. Set Source Timezone to the zone the dates were written in, usually your property's.
Hourly data
Tables are daily by default. A GA4 table becomes hourly when you add the dateHour dimension; because that changes the columns, the table rebuilds. Rows with only a date land at midnight, so on an intraday view they all fall in hour 0.
Join and Union need one time zone
A Join or Union refuses source tables stored in different time zones, because their days would not line up. Fix the source tables first, for example by giving a CSV the same Source Timezone as the GA4 table you want to join it to.
What "last 7 days" means
| Where | Range |
|---|---|
| Board date picker, Last 7 days | The 7 full days ending yesterday. Turn on Include today to add today |
A tile's own relative range, last_7_days | Ends today, so it includes today's partial data |
| "Today" anywhere on a board | Today in the property's time zone |
If a tile and the board disagree by a day, check whether the tile has its own date range.