Announcement: Google Analytics returns to Curatescape mobile apps

Google Analytics is back in the latest version of the mobile apps (along with performance enhancements, bug fixes, and other improvements). Long time users may recall that we removed analytics after Apple introduced its App Tracking Transparency (ATT) policy, which raised questions about how to effectively track usage while respecting user privacy. Our reintroduction of Google Analytics involves some important changes. The new implementation is designed to collect only the minimum data needed to understand how the app is used, and to avoid the categories of data collection that trigger Apple’s ATT consent requirement.

If you have already set up analytics for your Curatescape website, the apps uses the same GA4 measurement id to collect data.

There are some additional steps involved if you want to do advanced usage analysis. See draft guide below for more information (subject to change as we continue to refine the details).


Platform Tracking

The app sends usage data to GA4 automatically whenever someone uses the iOS or Android app. Each session is tagged with a Client Platform value of ios or android, which is used throughout this guide to filter reports to app-only traffic.


Preliminary Setup: Register Custom Dimensions

GA4 requires you to explicitly register event parameters before they appear as dimensions in reports. This is a one-time step. Until a dimension is registered, events will still be counted, but you won’t be able to break them down by that dimension in standard reports.

After registering custom dimensions, allow 24–48 hours for them to populate in standard reports. The Explore tool (covered below) works immediately with raw event data.

To register a custom dimension:

  1. In GA4, click the gear icon (Admin) in the bottom-left corner
  2. Under your property, click Custom definitions
  3. Click Create custom dimension
  4. Fill in the Name, Scope, and Event parameter from the table below
  5. Click Save
  6. Repeat for each row in the table
Dimension name Scope Event parameter
Screen Name Event screen_name
Content Type Event content_type
Item ID Event item_id
Item Name Event item_name
Search Term Event search_term
Error Type Event error_type
Direction Event direction
Tour ID Event tour_id
Tour Name Event tour_name
Media Title Event media_title
Offline Status Event status
Client Platform User client_platform

Client Platform must use User scope. All others use Event scope.

Content grouping (no registration required)

Story and tour detail screen views automatically include a Content group value — story for story detail screens and tour for tour detail screens. GA4 recognizes this parameter natively, so it is available immediately in both standard reports and Explore without registering a custom dimension.

In the standard Pages and screens report, use the dimension picker at the top of the table to switch to Content grouping and see screen view totals broken down by content type. In Explore, add Content group from the dimension list.


Separating App Traffic from Browser Traffic

In standard reports

Use the Add comparison feature to filter any report to app-only sessions:

  1. Open any report (e.g., Reports → Engagement → Events)
  2. Click Add comparison near the top of the report
  3. Set the condition: User property / client_platform / exactly matches / ios
  4. Click Apply
  5. Optionally add a second comparison for android

The report will display side-by-side columns for each platform, making it easy to compare iOS and Android usage or view them together against the unfiltered total.

In Explore

When building custom explorations, add a filter to any exploration:

  1. In the Tab settings panel, click Add filter under Filters
  2. Set: Client Platform / exactly matches / ios (or android, or include both)

Useful Reports

Screen views by screen

Shows how often each screen in the app is visited.

  1. Go to Explore → Blank exploration
  2. In the Variables panel, add:
    • Dimension: Screen Name
    • Metric: Event count
  3. Drag Screen Name into the Rows box
  4. Drag Event count into the Values box
  5. Under Filters, add: Event name / exactly matches / screen_view
  6. Add a second filter: Client Platform / exactly matches / ios or android

The screens in this app are: About, Bookmarks, Contact, Discover, Map, Search, Settings, Stories, StoryDetail, TourDetail, and Tours.

Most-viewed stories and tours

Shows which content items users view most.

  1. Explore → Blank exploration
  2. Add dimensions: Item Name, Content Type
  3. Add metric: Event count
  4. Filters:
    • Event name exactly matches screen_view
    • Content Type exactly matches story (or tour)
  5. Drag Item Name into Rows, Event count into Values

You can also use the built-in Content group dimension to split story vs. tour detail views in the standard Pages and screens report without building an exploration — see Content grouping above.

Search terms

Shows what users are searching for.

  1. Go to Reports → Engagement → Events
  2. Click search in the event list to drill into it
  3. Or in Explore: filter Event name = search, add Search Term as a dimension

User engagement funnel

Shows how users move from browsing to engaging with content.

  1. Explore → Funnel exploration
  2. Add steps:
    • Step 1: Event name = screen_view AND Screen Name = Discover
    • Step 2: Event name = screen_view AND Screen Name = StoryDetail
    • Step 3: Event name = share OR bookmark
  3. Add a Client Platform filter to limit to app sessions

Tour navigation depth

Shows how far users progress through self-guided tours.

  1. Explore → Blank exploration
  2. Add dimensions: Tour Name, Item Name, Direction
  3. Add metric: Event count
  4. Filter: Event name exactly matches tour_navigate

Each row shows a tour stop (identified by the story title in Item Name) and how many times users navigated to it. The Direction dimension lets you distinguish forward and backward navigation. Use Tour Name to filter or break down by a specific tour.

Offline content downloads

Shows how often users download content for offline use, and whether downloads succeed or fail.

  1. Go to Reports → Engagement → Events → click offline_download
  2. Or in Explore: filter Event name = offline_download, add Offline Status as a dimension to see counts broken down by started, complete, and failed

App errors

Shows whether users are encountering content load failures or other recoverable errors.

  1. Explore → Blank exploration
  2. Add dimension: Error Type
  3. Add metric: Event count
  4. Filter: Event name exactly matches app_error

What the App Tracks

The following events are sent automatically by the app. All events include the Client Platform user property.

Event What it means Key parameters
screen_view User visited a screen screen_name, item_id, item_name, content_type; story and tour detail screens also include content_group
search User ran a search search_term
share User shared a story or tour via the device share sheet content_type, item_id, item_name
bookmark User added or removed a story bookmark action (add/remove), item_id, item_name
story_map_open User opened the map on a story detail screen content_type, item_id, item_name
tour_map_open User opened the map on a tour detail screen content_type, item_id, item_name
audio_open User opened an audio file item_id, item_name, media_title
video_open User opened a video item_id, item_name, media_title
file_download User opened a PDF or document attachment item_id, item_name, file_name, link_url
offline_download User initiated, completed, or failed an offline download status (started/complete/failed)
external_link_click User tapped a link to an outside website link_url, link_text
tour_navigate User stepped forward or backward through a tour direction, tour_id, tour_name, item_id
app_error A content load or delivery error occurred error_type, error_description