JURNR.

Analytics schema · version 3

What Jurnr measures.

Jurnr records product interactions so its reading, sorting, and source-management tools can be improved. This reference explains every metric in plain language and how each value is produced.

Account-scopedEvents belong to the signed-in Jurnr account.
Interaction-basedNo advertising profiles or cross-site tracking.
ExportableThe complete event history is available as JSON.

Event structure

Every record uses the same envelope. Event-specific measurements live inside details.

{ "sessionId": "random identifier for this app visit", "sessionStartedAt": "ISO date and time", "schemaVersion": 3, "type": "event_name", "at": "ISO date and time", "elapsedMs": 12450, "details": { "event-specific fields": "…" } }
sessionId

A random ID created when Jurnr starts.Used to group events from the same visit; it is not a device or advertising identifier.

elapsedMs

Milliseconds since the app started.Collected from the browser’s monotonic performance timer.

at / receivedAt

When the browser created the event and when Jurnr’s server stored it.Useful for ordering events and diagnosing delayed delivery.

Sessions and navigation

session_started

Records that Jurnr finished loading.Includes article, source, saved, and reacted counts plus theme, sort mode, viewport class, and whether the app is running standalone.

session_ended

Summarizes a completed visit.Includes duration, last page, deepest feed scroll, and totals for previews opened, reactions, saves, and full-article opens.

app_page_changed

Records movement between Jurnr’s main screens.The page name is collected when the in-app navigation changes.

panel_opened

Records opening filters, sorting, account, or similar panels.The stable panel ID is stored; time spent in a panel is not inferred.

back_to_top_used

Records use of the floating up-arrow.Stores the current page and scroll position at the moment it is pressed.

Feed visibility and discovery

article_impressions

Shows which articles were meaningfully visible.An impression is counted once per session after at least half of an article card enters the viewport. Events are sent in batches of up to 25 and include source, feed position, sort mode, and filter mode.

filter_updated / filters_changed

Records the selected reaction or source filters.Includes the resulting number of visible articles, making it possible to identify useful or empty filter states.

feed_sorted

Records the selected sort order.Includes result count and the first article after sorting so the reorder can be validated.

feed_directory_searched

Measures use of source-directory search.Recorded after a 500 ms pause. Jurnr stores query length and result count—not the search text.

saved_view_changed

Records opening or leaving the Saved screen.Includes whether the view became visible and the current saved-item count.

Articles and reading

article_opened

Records opening an in-app preview.Includes source, feed position, article age, page, sort and filters, plus whether it was already saved or reacted to.

article_preview_time

Describes a preview session from open to close.Includes duration, maximum scroll depth, whether 90% was reached, and whether the user reacted, changed Saved state, or opened the source article.

article_closed

Records closing the reading preview.Collected when the close control, browser history, or in-app navigation returns to the feed.

read_full_article_clicked

Records following the publisher link.Stores the article ID, source, and destination URL at click time.

rss_item_interacted

A source-level rollup signal.Labels the interaction as opened, rated, saved, or full article opened so engagement can be compared by source.

Reactions and saves

story_ranked / story_rating_removed

Records adding, changing, or removing an article reaction.Stores article ID and emoji; custom reaction labels are included when present.

reading_preview_reaction_*

Identifies reaction changes made inside Reading view.Distinguishes additions, updates, and removals from feed-card gestures.

article_rate_menu_opened

Records opening the reaction interface.Helps distinguish discovering the control from completing a reaction.

article_saved / article_unsaved

Records changes to Saved state.Stores article ID and source. The article snapshot itself remains in account settings for Saved view.

emoji_wheel_customized

Records reaction-wheel edits.Includes resized wheel size or the slot and emoji changed.

Sources and refreshes

feed_refresh_requested

Records the start of a refresh.The reason is identified as manualstartupscheduled or source_added.

feeds_refreshed / feed_refresh_failed

Records refresh outcomes.Success includes duration, checked and loaded totals, and added or removed article counts. Failure includes duration and reason.

feed_cache_loaded

Describes the complete feed assembled for the app.Includes item and page counts, changes since the previous load, and whether loading happened at startup or during refresh.

source_added / removed / toggled

Records changes to connected and enabled RSS sources.Includes source name and relevant item counts. Custom-feed setup may also include the submitted feed URL.

Other product events

theme_changed

Records the selected light or dark appearance.

analytics_schema_opened

Records opening this reference page.Includes the analytics schema version shown by the app.

user_data_downloaded

Records requesting the account’s JSON export.

android_apk_downloaded

Records requesting the Android package.Includes the advertised application version and build code.

Collection boundaries

No cross-site tracking

Jurnr’s schema contains no advertising cookie, fingerprint, or browsing activity from other sites.

No raw directory searches

Only query length and result count are retained for source-directory searches.

Article identifiers are stored

They connect impressions, reactions, saves, and reading activity to the relevant feed item.

User controlled

Settings → User Data can export the full record or reset analytics while preserving reactions, sources, and Saved items.