public: feature pages
91
.cursor/rules/feature-pages.mdc
Normal file
@@ -0,0 +1,91 @@
|
||||
---
|
||||
description: Guide for creating and editing feature landing pages on the public site
|
||||
globs: apps/public/content/features/**,apps/public/src/app/(content)/features/**,apps/public/src/lib/features.ts
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# Feature Landing Pages
|
||||
|
||||
Feature pages live at `/features/[slug]` and follow the same JSON-driven pattern as the compare pages (`/compare/[slug]`).
|
||||
|
||||
## Architecture
|
||||
|
||||
- **Content**: JSON files in `apps/public/content/features/[slug].json`
|
||||
- **Types & loaders**: `apps/public/src/lib/features.ts` (interfaces + `getFeatureData`, `getAllFeatureSlugs`, `loadFeatureSourceSync`)
|
||||
- **Source export**: `featureSource` in `apps/public/src/lib/source.ts` (sync-loaded at build time)
|
||||
- **Dynamic route**: `apps/public/src/app/(content)/features/[slug]/page.tsx`
|
||||
- **Index page**: `apps/public/src/app/(content)/features/page.tsx`
|
||||
- **Sitemap**: Feature pages are registered in `apps/public/src/app/sitemap.ts`
|
||||
|
||||
## Adding a new feature page
|
||||
|
||||
1. Create `apps/public/content/features/[slug].json` matching the `FeatureData` interface
|
||||
2. That's it — the dynamic route, index page, sitemap, and source all pick it up automatically
|
||||
|
||||
## JSON schema (FeatureData)
|
||||
|
||||
Every JSON file must have these fields:
|
||||
|
||||
```
|
||||
slug - URL slug (e.g. "event-tracking")
|
||||
short_name - Short internal name for nav, footer, links (e.g. "Event tracking", "Funnels")
|
||||
seo.title - Page title for SEO
|
||||
seo.description - Meta description
|
||||
seo.keywords - Optional keyword array
|
||||
hero.heading - H1 text
|
||||
hero.subheading - Subtitle under H1
|
||||
hero.badges - Array of short feature-specific perks (NOT generic OpenPanel perks)
|
||||
definition.title - Optional section heading (e.g. "What is event tracking?")
|
||||
definition.text - Markdown string explaining the feature in depth (supports bold, lists, code, links)
|
||||
capabilities_section.title - Section heading for capabilities
|
||||
capabilities_section.intro - Optional intro text
|
||||
capabilities - Array of { title, description, icon? }
|
||||
screenshots - Array of { src?, srcDark?, srcLight?, alt, caption? } (up to 3 shown between sections; use `src` for a single image or `srcDark`+`srcLight` for theme variants)
|
||||
how_it_works - Optional { title, intro?, steps: [{ title, description }] }
|
||||
use_cases - { title, intro?, items: [{ title, description }] }
|
||||
related_features - Array of { slug, title, description? } linking to other feature pages
|
||||
faqs - { title, intro?, items: [{ question, answer }] }
|
||||
cta - { label, href }
|
||||
```
|
||||
|
||||
## Content guidelines
|
||||
|
||||
- **short_name**: Use for footer, nav, and any compact link list. Keep it to 1–3 words (e.g. "Event tracking", "Funnels"). The full `hero.heading` stays for the page H1 and SEO.
|
||||
- **Badges**: Should describe what *this feature* does, not generic OpenPanel selling points
|
||||
- **Definition**: Rich markdown — use bold, bullet lists, inline code for event names. This is the main SEO content block
|
||||
- **Related features**: Only link to feature pages that already exist (to avoid 404s)
|
||||
- **Screenshots**: Feature-specific screenshots go in `/public/features/` (e.g. `feature-events-list.webp`). Generic screenshots are in `/public/screenshots/` with dark/light .webp variants. Use `src` for single images or `srcDark`+`srcLight` for theme pairs
|
||||
|
||||
## Section components
|
||||
|
||||
Located in `features/[slug]/_components/`:
|
||||
|
||||
| Component | Reuses |
|
||||
|-----------|--------|
|
||||
| `feature-hero.tsx` | `HeroContainer`, `SectionHeader`, `GetStartedButton`, `Perks` |
|
||||
| `what-it-is.tsx` | `Section`, `SectionHeader`, `react-markdown` |
|
||||
| `capabilities.tsx` | `FeatureCard`, `Section`, `SectionHeader` |
|
||||
| `how-it-works.tsx` | `Section`, `SectionHeader` |
|
||||
| `feature-use-cases.tsx` | `Section`, `SectionHeader` |
|
||||
| `related-features.tsx` | `FeatureCardContainer`, `Section`, `SectionHeader` |
|
||||
| `feature-faq.tsx` | `Faqs`, `FaqItem`, `Section`, `SectionHeader`, JSON-LD schema |
|
||||
|
||||
The page also reuses `WindowImage` and `CtaBanner` directly.
|
||||
|
||||
## Planned feature slugs
|
||||
|
||||
From the roadmap (create JSON files as needed):
|
||||
|
||||
- `event-tracking` ✅
|
||||
- `funnels` ✅
|
||||
- `session-tracking` ✅
|
||||
- `retention` ✅
|
||||
- `identify-users` ✅
|
||||
- `revenue-tracking` ✅
|
||||
- `data-visualization` ✅
|
||||
- `product-analytics`
|
||||
- `web-analytics` ✅
|
||||
- `conversion` ✅
|
||||
- `integrations` ✅
|
||||
- `notifications` ✅
|
||||
- `share-and-collaborate` ✅
|
||||
@@ -2,7 +2,7 @@
|
||||
title: Find an alternative to Mixpanel
|
||||
description: A list of alternatives to Mixpanel, including open source and paid options.
|
||||
date: 2024-11-12
|
||||
updated: 2025-12-02
|
||||
updated: 2026-02-07
|
||||
team: OpenPanel Team
|
||||
tag: Comparison
|
||||
cover: /content/cover-alternatives.jpg
|
||||
@@ -55,7 +55,7 @@ Second, Mixpanel is hard to learn. New users often struggle with its complex int
|
||||
|
||||
Third, Mixpanel doesn't work well with some important business tools. This makes it hard to connect all your data in one place.
|
||||
|
||||
Lastly, setting up event tracking is difficult. Users need to carefully set up tracking for each action they want to monitor, which takes time and can lead to mistakes. This means teams often spend too much time setting things up instead of using the data right away.
|
||||
Lastly, setting up [event tracking](/features/event-tracking) is difficult. Users need to carefully set up tracking for each action they want to monitor, which takes time and can lead to mistakes. This means teams often spend too much time setting things up instead of using the data right away.
|
||||
|
||||
## The Need for Simpler Solutions
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: A practical guide to GDPR, CCPA, HIPAA, and other privacy regulatio
|
||||
tag: Guide
|
||||
team: OpenPanel Team
|
||||
date: 2025-12-08
|
||||
updated: 2026-02-07
|
||||
cover: /content/compliance.jpg
|
||||
---
|
||||
|
||||
@@ -267,7 +268,7 @@ Self-hosting eliminates third-party data sharing, which simplifies compliance wi
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem question="Can I migrate from Google Analytics to OpenPanel?">
|
||||
Yes. OpenPanel can replace Google Analytics for most use cases. We offer both web analytics and product analytics features. Check our comparison with other platforms like the [Google Analytics alternative](/compare/google-analytics-alternative) page.
|
||||
Yes. OpenPanel can replace Google Analytics for most use cases. We offer both [web analytics](/features/web-analytics) and product analytics features. Check our comparison with other platforms like the [Google Analytics alternative](/compare/google-analytics-alternative) page.
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem question="Is OpenPanel open source?">
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: A BullMQ Alternative for Grouped Job Processing
|
||||
description: An open-source queue system that eliminates race conditions through intelligent job grouping, perfect for high-throughput event processing pipelines
|
||||
date: 2025-10-31
|
||||
updated: 2026-02-07
|
||||
team: OpenPanel Team
|
||||
tag: Article
|
||||
cover: /content/bullmq-alternative.jpg
|
||||
@@ -53,7 +54,7 @@ Here's what makes GroupMQ special:
|
||||
|
||||
GroupMQ shines in scenarios where you need to maintain order within related operations:
|
||||
|
||||
**Analytics Processing**: Process events from the same user sequentially to maintain accurate session tracking and prevent duplicate counting.
|
||||
**Analytics Processing**: Process events from the same user sequentially to maintain accurate [session tracking](/features/session-tracking) and prevent duplicate counting.
|
||||
|
||||
**E-commerce Orders**: Handle order updates, payment processing, and inventory changes for the same order ID without race conditions.
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Discover how to gather meaningful insights without cookies and why
|
||||
tag: Guide
|
||||
team: OpenPanel Team
|
||||
date: 2025-06-17
|
||||
updated: 2025-12-02
|
||||
updated: 2026-02-07
|
||||
cover: /content/cookieless-analytics.jpg
|
||||
---
|
||||
|
||||
@@ -71,7 +71,7 @@ We built OpenPanel from the ground up with privacy at its heart—and with featu
|
||||
|
||||
* **Real-time dashboards.** Watch events as they happen.
|
||||
* **Custom events & properties.** Track anything from “add to wishlist” to “video watched.”
|
||||
* **Rich reports.** Dive deep on funnels, retention, and user journeys.
|
||||
* **Rich reports.** Dive deep on [funnels](/features/funnels), [retention](/features/retention), and user journeys.
|
||||
|
||||
### Plug-and-Play Setup
|
||||
|
||||
|
||||
@@ -4,11 +4,12 @@ description: Funnels are powerful tools that help you understand how users move
|
||||
tag: Guide
|
||||
team: OpenPanel Team
|
||||
date: 2025-03-31
|
||||
updated: 2026-02-07
|
||||
cover: /content/funnels.jpg
|
||||
---
|
||||
import { Figure } from "@/components/figure";
|
||||
|
||||
Funnels are powerful tools that help you understand how users move through your website or app. In this guide, we'll walk you through everything you need to know about creating and using funnels effectively.
|
||||
[Funnels](/features/funnels) are powerful tools that help you understand how users move through your website or app. In this guide, we'll walk you through everything you need to know about creating and using funnels effectively.
|
||||
|
||||
## What is a Funnel?
|
||||
|
||||
@@ -66,7 +67,7 @@ Before you change report type you'll see a linear chart with a line for each eve
|
||||
|
||||
### 4. Understanding Your Funnel Results
|
||||
|
||||
When your funnel is ready, you'll see a visualization that tells an important story. Let's say 1,000 people view a recipe - that's the top of your funnel. If 175 of those people save the recipe, your conversion rate is 17.5%. This number tells you how well this part of your process is working.
|
||||
When your funnel is ready, you'll see a visualization that tells an important story. Let's say 1,000 people view a recipe - that's the top of your funnel. If 175 of those people save the recipe, your [conversion rate](/features/conversion) is 17.5%. This number tells you how well this part of your process is working.
|
||||
|
||||
> In this example we just did a 2-step-funnel, you can have as many steps as you want, but we recommend around 3-5.
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: How to Export Data from Umami Analytics
|
||||
description: Learn how to export your analytics data from Umami for migration or backup
|
||||
date: 2025-10-30
|
||||
updated: 2026-02-07
|
||||
cover: /content/export-data-from-umami.jpg
|
||||
tag: Guide
|
||||
team: OpenPanel Team
|
||||
@@ -16,7 +17,7 @@ import { Figure } from '@/components/figure'
|
||||
caption="Running the OpenPanel Umami exporter to export analytics data from Umami"
|
||||
/>
|
||||
|
||||
When it comes to web analytics, having control over your data is crucial. Whether you're planning to switch analytics platforms, need to create backups, or want to analyze your data in specialized tools, being able to export your Umami Analytics data is essential.
|
||||
When it comes to [web analytics](/features/web-analytics), having control over your data is crucial. Whether you're planning to switch analytics platforms, need to create backups, or want to analyze your data in specialized tools, being able to export your Umami Analytics data is essential.
|
||||
|
||||
The challenge is that Umami handles data export differently depending on whether you're using their cloud service or self-hosting. This guide will walk you through both scenarios and help you understand why you might want to consider alternatives like OpenPanel for your analytics needs.
|
||||
|
||||
@@ -83,7 +84,7 @@ We built OpenPanel with the understanding that modern websites need more than ju
|
||||
|
||||
One key difference is real-time data processing. With our platform, you see visitor activity as it happens, not with the delays common in batch-processing systems. This immediacy helps you respond quickly to traffic spikes, marketing campaigns, or technical issues.
|
||||
|
||||
Our event tracking goes beyond simple pageviews. You can track custom events, user interactions, and conversion funnels without writing complex code. Our platform automatically captures many interactions that would require manual setup in Umami.
|
||||
Our [event tracking](/features/event-tracking) goes beyond simple pageviews. You can track custom events, user interactions, and [conversion funnels](/features/funnels) without writing complex code. Our platform automatically captures many interactions that would require manual setup in Umami.
|
||||
|
||||
Our filtering and segmentation capabilities are also more advanced. You can create complex queries to understand specific user segments, compare time periods with more flexibility, and build custom dashboards that focus on your key metrics.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: How to Self-Host OpenPanel Analytics Platform
|
||||
description: Learn how to self-host OpenPanel web analytics platform. Step-by-step guide to install and configure your own analytics server for better privacy and cost savings.
|
||||
date: 2025-02-28
|
||||
updated: 2025-12-02
|
||||
updated: 2026-02-07
|
||||
cover: /content/how-to-self-host-openpanel.jpg
|
||||
tag: Guide
|
||||
team: OpenPanel Team
|
||||
@@ -22,7 +22,7 @@ cd openpanel/self-hosting
|
||||
|
||||
## Why Self-Host Your Own Analytics Platform?
|
||||
|
||||
Looking for a [Mixpanel alternative](/articles/alternatives-to-mixpanel)? Self-hosting your own web analytics and product analytics platform comes with several benefits. Let's break down the pros and cons of running your own analytics server.
|
||||
Looking for a [Mixpanel alternative](/articles/alternatives-to-mixpanel)? Self-hosting your own [web analytics](/features/web-analytics) and product analytics platform comes with several benefits. Let's break down the pros and cons of running your own analytics server.
|
||||
|
||||
For a comparison of all open source analytics platforms, see our [comprehensive guide to open source web analytics tools](/articles/open-source-web-analytics).
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ description: OpenPanel is a versatile analytics platform that offers a wide arra
|
||||
tag: Introduction
|
||||
team: OpenPanel Team
|
||||
date: 2024-11-09
|
||||
updated: 2025-12-02
|
||||
updated: 2026-02-07
|
||||
---
|
||||
|
||||
Welcome to OpenPanel, the open-source analytics platform designed to be a robust alternative to Mixpanel and a great substitute for Google Analytics. In this article, we'll explore why OpenPanel is the ideal choice for businesses looking to leverage powerful analytics while maintaining control over their data.
|
||||
@@ -15,7 +15,7 @@ At OpenPanel, we are committed to the principles of open-source software. By mak
|
||||
|
||||
## Why Choose OpenPanel?
|
||||
|
||||
Our journey began with a vision to create an open-source alternative to Mixpanel, a tool we admired for its product analytics capabilities. However, as we developed OpenPanel, we realized the potential to offer more comprehensive features that Mixpanel lacked, particularly in the realm of web analytics. While Mixpanel excels in product analytics, it doesn't fully address web analytics needs. OpenPanel bridges this gap by integrating both web and product analytics, providing a holistic view of user behavior.
|
||||
Our journey began with a vision to create an open-source alternative to Mixpanel, a tool we admired for its product analytics capabilities. However, as we developed OpenPanel, we realized the potential to offer more comprehensive features that Mixpanel lacked, particularly in the realm of [web analytics](/features/web-analytics). While Mixpanel excels in product analytics, it doesn't fully address web analytics needs. OpenPanel bridges this gap by integrating both web and product analytics, providing a holistic view of user behavior.
|
||||
|
||||
For a detailed comparison with other tools, see our guide on [open source web analytics](/articles/open-source-web-analytics).
|
||||
|
||||
@@ -25,8 +25,8 @@ OpenPanel is a versatile analytics platform that offers a wide array of features
|
||||
|
||||
- **Web Analytics**: Gain insights similar to tools like Plausible, Fathom, and Simple Analytics.
|
||||
- **Product Analytics**: Analyze product usage and user interactions, akin to Mixpanel.
|
||||
- **User Retention**: Track and enhance user retention rates.
|
||||
- **Funnels**: Visualize user journeys and conversion paths.
|
||||
- **[User Retention](/features/retention)**: Track and enhance user retention rates.
|
||||
- **[Funnels](/features/funnels)**: Visualize user journeys and [conversion paths](/features/conversion).
|
||||
- **Events**: Monitor specific user actions and interactions.
|
||||
- **Profiles**: Create detailed user profiles to better understand your audience.
|
||||
- **Real-Time View**: Display real-time data on a big monitor in your office for dynamic insights.
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: Mixpanel Alternatives - 4 Best Options for Product Analytics
|
||||
description: Looking for Mixpanel alternatives? Compare pricing, features, and privacy options among the best product analytics tools including open-source solutions.
|
||||
date: 2025-07-18
|
||||
updated: 2026-02-07
|
||||
tag: Comparison
|
||||
team: OpenPanel Team
|
||||
cover: /content/cover-alternatives.jpg
|
||||
@@ -23,7 +24,7 @@ The surge in demand for Mixpanel alternatives stems from several pain points tha
|
||||
|
||||
**Self-hosting Requirements**: Some organizations, particularly in regulated industries, need to keep analytics data within their own infrastructure. Mixpanel's cloud-only approach doesn't accommodate these security and compliance requirements.
|
||||
|
||||
In this guide, we'll explore the top 5 Mixpanel alternatives specifically designed for product analytics. Whether you're looking to reduce costs, improve privacy, or gain more flexibility, there's an alternative that fits your needs. If you're also interested in web analytics tools, check out our guide to [open-source web analytics](/articles/open-source-web-analytics).
|
||||
In this guide, we'll explore the top 5 Mixpanel alternatives specifically designed for product analytics. Whether you're looking to reduce costs, improve privacy, or gain more flexibility, there's an alternative that fits your needs. If you're also interested in [web analytics](/features/web-analytics) tools, check out our guide to [open-source web analytics](/articles/open-source-web-analytics).
|
||||
|
||||
<Figure
|
||||
src="/content/mixpanel.png"
|
||||
@@ -37,9 +38,9 @@ Before diving into specific tools, let's establish what features are essential f
|
||||
|
||||
### Core Product Analytics Features
|
||||
|
||||
**Event Tracking**: The foundation of product analytics. You need to track custom events like signups, purchases, feature usage, and any user action that matters to your business. The tool should support [event properties and user properties](/docs/api/track#tracking-events) for rich data collection.
|
||||
**[Event Tracking](/features/event-tracking)**: The foundation of product analytics. You need to track custom events like signups, purchases, feature usage, and any user action that matters to your business. The tool should support [event properties and user properties](/docs/api/track#tracking-events) for rich data collection.
|
||||
|
||||
**Funnel Analysis**: Understanding conversion rates through multi-step processes is crucial. Whether it's onboarding, checkout, or feature adoption, you need to visualize where users drop off and optimize accordingly.
|
||||
**[Funnel Analysis](/features/funnels)**: Understanding [conversion rates](/features/conversion) through multi-step processes is crucial. Whether it's onboarding, checkout, or feature adoption, you need to visualize where users drop off and optimize accordingly.
|
||||
|
||||
**Retention Analytics**: Track how often users return and engage with your product over time. Look for cohort analysis, retention curves, and the ability to segment users by behavior patterns.
|
||||
|
||||
@@ -98,7 +99,7 @@ All plans include unlimited websites, team members, and 5 years of data retentio
|
||||
|
||||
**Funnel Builder**: Create multi-step funnels to analyze conversion rates. Visualize drop-off points and optimize user flows.
|
||||
|
||||
**Retention Analysis**: Understand user stickiness with cohort retention charts. Track daily, weekly, or monthly retention patterns.
|
||||
**[Retention Analysis](/features/retention)**: Understand user stickiness with cohort retention charts. Track daily, weekly, or monthly retention patterns.
|
||||
|
||||
**Individual User Profiles**: Drill down into specific user journeys. See complete event timelines for debugging or customer support.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: A complete breakdown of Mixpanel's pricing plans, what's included,
|
||||
tag: Guide
|
||||
team: OpenPanel Team
|
||||
date: 2025-12-08
|
||||
updated: 2026-02-07
|
||||
cover: /content/mixpanel-pricing-cover.jpg
|
||||
---
|
||||
|
||||
@@ -27,7 +28,7 @@ The free plan is genuinely generous for getting started. You get up to 20 millio
|
||||
|
||||
Here's what's included in the free plan:
|
||||
|
||||
The core analytics features work well. You get access to Insights, Funnels, Flows, and Retention reports. You can create unlimited reports and dashboards. The data is real-time, and you can segment by any property you're tracking.
|
||||
The core analytics features work well. You get access to Insights, [Funnels](/features/funnels), Flows, and [Retention](/features/retention) reports. You can create unlimited reports and dashboards. The data is real-time, and you can segment by any property you're tracking.
|
||||
|
||||
However, there are limitations. You don't get access to some of the more advanced features like behavioral cohorts, saved metrics, or custom properties beyond the basics. The free plan also doesn't include Group Analytics, which is pretty much essential if you're building a B2B product and want to analyze data at the company level rather than just individual users.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 9 best open source web analytics tools
|
||||
description: In an era where data drives decisions, what are your best options for web analytics?
|
||||
date: 2024-11-10
|
||||
updated: 2025-12-02
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-best-web-analytics.jpg
|
||||
tag: Comparison
|
||||
team: OpenPanel Team
|
||||
@@ -10,7 +10,7 @@ team: OpenPanel Team
|
||||
import { Faqs, FaqItem } from '@/components/faq';
|
||||
import { Figure } from '@/components/figure'
|
||||
|
||||
In today's data-driven world, understanding your website's performance is crucial for making informed decisions. While Google Analytics dominates the market, many developers and businesses are turning to open source web analytics tools for better privacy, data ownership, and customization.
|
||||
In today's data-driven world, understanding your website's performance is crucial for making informed decisions. While Google Analytics dominates the market, many developers and businesses are turning to open source [web analytics](/features/web-analytics) tools for better privacy, data ownership, and customization.
|
||||
|
||||
Open source web analytics solutions offer several advantages over proprietary alternatives:
|
||||
- **Complete data ownership** - Your analytics data stays on your servers
|
||||
@@ -29,7 +29,7 @@ In this comprehensive guide, we've evaluated 9 of the best open source web analy
|
||||
/>
|
||||
|
||||
### Summary
|
||||
OpenPanel is an open-source, privacy-friendly web and product analytics platform. It combines the power of Mixpanel with the simplicity of Plausible. You get real-time event tracking, customizable charts, an overview dashboard with instant insights, individual user and session views, and plenty of SDKs. It uses cookie-free tracking and is GDPR compliant. You can self-host it for free or use the hosted Cloud service with a 30-day free trial.
|
||||
OpenPanel is an open-source, privacy-friendly web and product analytics platform. It combines the power of Mixpanel with the simplicity of Plausible. You get real-time [event tracking](/features/event-tracking), customizable charts, an overview dashboard with instant insights, individual user and session views, and plenty of SDKs. It uses cookie-free tracking and is GDPR compliant. You can self-host it for free or use the hosted Cloud service with a 30-day free trial.
|
||||
|
||||
- Homepage: [**https://openpanel.dev**](https://openpanel.dev)
|
||||
- GitHub: [**https://github.com/Openpanel-dev/openpanel**](https://github.com/Openpanel-dev/openpanel)
|
||||
@@ -194,7 +194,7 @@ Plausible offers traffic-based plans you can bill monthly or yearly (2 months fr
|
||||
### Cons
|
||||
- No free tier beyond self-hosting
|
||||
- Costs can rise quickly as traffic grows
|
||||
- Fewer advanced features (like funnels or session replay) than some competitors
|
||||
- Fewer advanced features (like [funnels](/features/funnels) or session replay) than some competitors
|
||||
|
||||
### FAQ
|
||||
|
||||
@@ -341,7 +341,7 @@ Fathom bills by monthly data points (pageviews + events). You pay for the tier y
|
||||
Fathom charges by data-point tiers. You start on the plan matching your monthly pageviews and events, and you move up if you exceed your quota at month's end.
|
||||
</FaqItem>
|
||||
<FaqItem question="What's the difference between Fathom and OpenPanel?">
|
||||
Fathom is a hosted, proprietary analytics service with simple, tiered pricing. OpenPanel is open source and privacy friendly, offering both web and product analytics, real-time views, individual session tracking, charts, cookie-free GDPR compliance, and multiple SDKs you can self-host for free.
|
||||
Fathom is a hosted, proprietary analytics service with simple, tiered pricing. OpenPanel is open source and privacy friendly, offering both web and product analytics, real-time views, individual [session tracking](/features/session-tracking), charts, cookie-free GDPR compliance, and multiple SDKs you can self-host for free.
|
||||
</FaqItem>
|
||||
</Faqs>
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: Recap of 2024
|
||||
description: As we approach the end of the year, I wanted to share a summary of how this year unfolded and how everything began.
|
||||
date: 2024-12-30
|
||||
updated: 2026-02-07
|
||||
tag: Article
|
||||
team: Carl-Gerhard Lindesvärd
|
||||
cover: /content/recap-2024.jpg
|
||||
@@ -19,7 +20,7 @@ And here we are...
|
||||
|
||||
## Inspiration
|
||||
|
||||
I've always been a fan of Mixpanel - they crush it at product analytics. But I felt they were missing something when it came to web analytics.
|
||||
I've always been a fan of Mixpanel - they crush it at product analytics. But I felt they were missing something when it came to [web analytics](/features/web-analytics).
|
||||
|
||||
I also noticed all these privacy-focused web analytics tools popping up in the last few years, which I love. That's where OpenPanel comes in. I wanted to build something that takes privacy seriously, has both web and product analytics, great support for native apps but is still super easy to use, even if you're new to the whole analytics game.
|
||||
|
||||
@@ -53,10 +54,10 @@ Making OpenPanel [open-source](https://git.new/openpanel) and [self-hosted](http
|
||||
|
||||
Exciting developments are coming in 2025. Here are some of the priorities:
|
||||
|
||||
- Revenue tracking 💸
|
||||
- [Revenue tracking](/features/revenue-tracking) 💸
|
||||
- Release Android and iOS apps. 📱
|
||||
- Improve report creation. 📊
|
||||
- Add more conversion rate charts (conversion is one of the best ways to understand your product). 📈
|
||||
- Add more [conversion rate](/features/conversion) charts (conversion is one of the best ways to understand your product). 📈
|
||||
- Enable report sharing. 🔗
|
||||
- Customize the overview page. 🎨
|
||||
- Enhance the real-time view. 📈
|
||||
|
||||
@@ -4,13 +4,13 @@ description: Self-host your web analytics on your own infrastructure.
|
||||
tag: Hosting
|
||||
team: OpenPanel Team
|
||||
date: 2024-11-14
|
||||
updated: 2025-12-02
|
||||
updated: 2026-02-07
|
||||
cover: /content/self-hosted-analytics.jpg
|
||||
---
|
||||
|
||||
In the digital age, understanding website traffic is crucial for any online presence. However, traditional analytics tools often come with privacy concerns and complex interfaces.
|
||||
|
||||
Self-hosted web analytics empowers you to maintain control over your data while gaining valuable insights into your website's performance. By hosting your own analytics platform, you can ensure data privacy and tailor the tool to your specific needs.
|
||||
Self-hosted [web analytics](/features/web-analytics) empowers you to maintain control over your data while gaining valuable insights into your website's performance. By hosting your own analytics platform, you can ensure data privacy and tailor the tool to your specific needs.
|
||||
|
||||
## Why Choose Self-Hosted Web Analytics?
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: Mixpanel vs OpenPanel
|
||||
description: A comparison between Mixpanel and OpenPanel
|
||||
date: 2024-11-13
|
||||
updated: 2025-12-02
|
||||
updated: 2026-02-07
|
||||
tag: Comparison
|
||||
team: OpenPanel Team
|
||||
cover: /content/cover-mixpanel.jpg
|
||||
@@ -17,7 +17,7 @@ OpenPanel is based on the same principles as Mixpanel, but with a few key differ
|
||||
|
||||
## Web analytics
|
||||
|
||||
Mixpanel is a great product analytics tool but in our minds its lacking in this area. Web analytics should always be easy to get going and we think Mixpanel has to much focus on product analytics.
|
||||
Mixpanel is a great product analytics tool but in our minds its lacking in this area. [Web analytics](/features/web-analytics) should always be easy to get going and we think Mixpanel has to much focus on product analytics.
|
||||
|
||||
In OpenPanel you do not need to do anything to get your web analytics up and running. Just add the tracking snippet to your website or app and you're up and running.
|
||||
|
||||
@@ -35,8 +35,8 @@ Probably the most used feature in Mixpanel is their report tool, where you can c
|
||||
|
||||
Some of the features we have added are:
|
||||
|
||||
- **Funnels**
|
||||
- **Retention**
|
||||
- **[Funnels](/features/funnels)**
|
||||
- **[Retention](/features/retention)**
|
||||
- **Line charts**
|
||||
- **Bar charts**
|
||||
- **Histogram charts**
|
||||
@@ -55,7 +55,7 @@ Some of the features we have added are:
|
||||
## Cookies vs Cookieless
|
||||
|
||||
Mixpanel is a cookie-based tool, which means that it relies on cookies to track users. This provides advantages like:
|
||||
- More accurate user identification across sessions
|
||||
- More accurate [user identification](/features/identify-users) across sessions
|
||||
- Better cross-domain tracking
|
||||
- Easier integration with existing cookie-based systems
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ Client events are sent from:
|
||||
Client events:
|
||||
- Create sessions
|
||||
- Generate device IDs
|
||||
- Support full session tracking
|
||||
- Support full [session tracking](/features/session-tracking)
|
||||
|
||||
### Server Events
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ description: Learn how to easily track your revenue with OpenPanel and how to ge
|
||||
|
||||
import { FlowStep } from '@/components/flow-step';
|
||||
|
||||
Revenue tracking is a great way to get a better understanding of what your best revenue source is. On this page we'll break down how to get started.
|
||||
[Revenue tracking](/features/revenue-tracking) is a great way to get a better understanding of what your best revenue source is. On this page we'll break down how to get started.
|
||||
|
||||
Before we start, we need to know some fundamentals about how OpenPanel and your payment provider work and how we can link a payment to a visitor.
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ val op = OpenPanel.create(
|
||||
Additional Kotlin-specific options:
|
||||
|
||||
- `filter` - A function that will be called before tracking an event. If it returns false, the event will not be tracked
|
||||
- `disabled` - Set to `true` to disable all event tracking
|
||||
- `disabled` - Set to `true` to disable all [event tracking](/features/event-tracking)
|
||||
- `automaticTracking` - Set to `true` to automatically track app lifecycle events
|
||||
- `verbose` - Set to `true` to enable verbose logging
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ op = OpenPanel(
|
||||
Additional Python-specific options:
|
||||
|
||||
- `filter` - A function that will be called before tracking an event. If it returns false the event will not be tracked
|
||||
- `disabled` - Set to `True` to disable all event tracking
|
||||
- `disabled` - Set to `True` to disable all [event tracking](/features/event-tracking)
|
||||
- `global_properties` - Dictionary of properties that will be sent with every event
|
||||
|
||||
#### Filter Function Example
|
||||
|
||||
@@ -55,7 +55,7 @@ tracker = OpenPanel::SDK::Tracker.new
|
||||
|
||||
Additional Ruby-specific options:
|
||||
|
||||
- `disabled` - Set to `true` to disable all event tracking
|
||||
- `disabled` - Set to `true` to disable all [event tracking](/features/event-tracking)
|
||||
- `env` - Environment name (e.g., `Rails.env.to_s`)
|
||||
|
||||
```ruby
|
||||
|
||||
@@ -69,7 +69,7 @@ OpenPanel.initialize(options: .init(
|
||||
Additional Swift-specific options:
|
||||
|
||||
- `filter` - A closure that will be called before tracking an event. If it returns false, the event will not be tracked
|
||||
- `disabled` - Set to `true` to disable all event tracking
|
||||
- `disabled` - Set to `true` to disable all [event tracking](/features/event-tracking)
|
||||
- `automaticTracking` - Set to `true` to automatically track app lifecycle events
|
||||
|
||||
#### Filter Example
|
||||
|
||||
@@ -69,7 +69,7 @@ OpenPanel supports three client types with different access levels:
|
||||
|
||||
The API implements rate limiting to prevent abuse. Rate limits vary by endpoint:
|
||||
|
||||
- **Track API**: Higher limits for event tracking
|
||||
- **Track API**: Higher limits for [event tracking](/features/event-tracking)
|
||||
- **Export/Insights APIs**: 100 requests per 10 seconds
|
||||
- **Manage API**: 20 requests per 10 seconds
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import { UserIcon,HardDriveIcon } from 'lucide-react'
|
||||
|
||||
## ✨ Key Features
|
||||
|
||||
- **🔍 Advanced Analytics**: Funnels, cohorts, user profiles, and session history
|
||||
- **🔍 Advanced Analytics**: [Funnels](/features/funnels), cohorts, user profiles, and session history
|
||||
- **📊 Real-time Dashboards**: Live data updates and interactive charts
|
||||
- **🎯 A/B Testing**: Built-in variant testing with detailed breakdowns
|
||||
- **🔔 Smart Notifications**: Event and funnel-based alerts
|
||||
@@ -15,7 +15,7 @@ import { UserIcon,HardDriveIcon } from 'lucide-react'
|
||||
- **🚀 Developer-Friendly**: Comprehensive SDKs and API access
|
||||
- **📦 Self-Hosted**: Full control over your data and infrastructure
|
||||
- **💸 Transparent Pricing**: No hidden costs
|
||||
- **🛠️ Custom Dashboards**: Flexible chart creation and data visualization
|
||||
- **🛠️ Custom Dashboards**: Flexible chart creation and [data visualization](/features/data-visualization)
|
||||
- **📱 Multi-Platform**: Web, mobile (iOS/Android), and server-side tracking
|
||||
|
||||
## 📊 Analytics Platform Comparison
|
||||
|
||||
@@ -6,7 +6,7 @@ description: Finally we feel ready to release v2 for all self-hostings. This is
|
||||
## What's New in v2
|
||||
|
||||
- **Redesigned dashboard** - New UI built with Tanstack
|
||||
- **Revenue tracking** - Track revenue alongside your analytics
|
||||
- **[Revenue tracking](/features/revenue-tracking)** - Track revenue alongside your analytics
|
||||
- **Sessions** - View individual user sessions
|
||||
- **Real-time view** - Live event stream
|
||||
- **Customizable dashboards** - Grafana-style widget layouts
|
||||
|
||||
167
apps/public/content/features/conversion.json
Normal file
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"slug": "conversion",
|
||||
"short_name": "Conversion",
|
||||
"seo": {
|
||||
"title": "Conversion Tracking - Trends Over Time",
|
||||
"description": "Track conversion rates over time, spot trends, and break down by segments. Like funnels but built for monitoring how conversion evolves-perfect for A/B testing and growth.",
|
||||
"keywords": [
|
||||
"conversion tracking",
|
||||
"conversion rate trends",
|
||||
"a/b testing analytics",
|
||||
"conversion breakdown",
|
||||
"conversion over time"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "Is conversion going up or down?",
|
||||
"subheading": "See how your conversion rates change over days, weeks, and months. Break down by any property to compare variants or campaigns - and catch regressions before they cost you.",
|
||||
"badges": [
|
||||
"Conversion over time",
|
||||
"Breakdown by any property",
|
||||
"A/B test comparison",
|
||||
"AI-powered insights"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What is conversion tracking?",
|
||||
"text": "Conversion tracking measures the rate at which users complete a desired action-like going from `session_start` to `save_recipe`, or from `signup` to `purchase`. You define a **flow** (a start event and an end event), and OpenPanel calculates the conversion rate for every time period you choose.\n\nIf you're familiar with [funnels](/features/funnels), conversions will feel similar. Both measure whether users complete a sequence. The difference is **perspective**:\n\n- **Funnels** are great for understanding *where* users drop off in a multi-step flow. They answer: \"which step loses the most users?\"\n- **Conversions** are great for understanding *trends*. They answer: \"is our conversion getting better or worse over time?\"\n\nWith conversion tracking, you get:\n\n- **Conversion rate over time** - see how your rate trends week over week or day by day. Spot improvements from product changes or regressions from bugs\n- **Average, best, and worst rates** - instantly see your overall average and the specific time periods where conversion peaked or dipped\n- **Breakdowns** - split conversion by any property (device, country, variant, campaign) to compare segments side by side. This is especially powerful for **A/B testing**: break down by experiment variant and see which one converts better, with per-period granularity\n- **Total conversions** - not just rates but absolute numbers, so you understand volume alongside percentage\n\nConversion reports in OpenPanel are built on the same events you already track. Define a flow once, and you get a live, updating chart that shows whether your product is converting more or fewer users over time.\n\nNo sampling, no delayed processing. Every event counts, and results update in real time."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you can do with conversions",
|
||||
"intro": "Monitor, compare, and optimize your most important flows."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Conversion trends over time",
|
||||
"description": "See your conversion rate plotted over days, weeks, or months. Identify trends, seasonal patterns, and the impact of product changes at a glance."
|
||||
},
|
||||
{
|
||||
"title": "Breakdowns for A/B testing",
|
||||
"description": "Split conversion by any property-experiment variant, device, country, or traffic source. Compare lines on the same chart to see which segment converts best."
|
||||
},
|
||||
{
|
||||
"title": "Smart insights",
|
||||
"description": "OpenPanel highlights your best and worst performing periods and breakdowns automatically. See which variant had the highest average rate and when the lowest dip occurred."
|
||||
},
|
||||
{
|
||||
"title": "Flexible flow definition",
|
||||
"description": "Define a conversion as any two events: a start (e.g. session_start) and a goal (e.g. purchase). Change events or time windows without re-instrumenting."
|
||||
},
|
||||
{
|
||||
"title": "Per-period detail table",
|
||||
"description": "Below the chart, a table shows conversion rate for every period (week, day, month) for each segment. Sort and search to find exactly the data point you need."
|
||||
},
|
||||
{
|
||||
"title": "Save and share reports",
|
||||
"description": "Save conversion reports with their configuration and add them to dashboards. Share with your team so everyone monitors the same metrics."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-conversion.webp",
|
||||
"alt": "Conversion report showing rate over time with average, best, and worst metrics",
|
||||
"caption": "Track conversion trends over time. See average rate, total conversions, and identify your best and worst performing periods."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-conversion-breakdown.webp",
|
||||
"alt": "Conversion report with breakdown by platform showing Android vs iOS",
|
||||
"caption": "Break down conversion by any property. Compare segments side by side-perfect for A/B tests, platform comparisons, and campaign analysis."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How conversion tracking works",
|
||||
"intro": "Set up a conversion report in seconds using events you already track.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Pick your events",
|
||||
"description": "Choose a start event (e.g. session_start) and a goal event (e.g. save_recipe, purchase). These are events you already send-no extra instrumentation."
|
||||
},
|
||||
{
|
||||
"title": "Choose your time range and granularity",
|
||||
"description": "Select a date range and whether to view conversion by day, week, or month. OpenPanel calculates the rate for each period."
|
||||
},
|
||||
{
|
||||
"title": "Add breakdowns (optional)",
|
||||
"description": "Break down by device, country, experiment variant, or any event property. Each breakdown value gets its own line on the chart and row in the table."
|
||||
},
|
||||
{
|
||||
"title": "Monitor trends and act",
|
||||
"description": "Watch your conversion rate over time. Spot regressions early, validate that product changes improve conversion, and compare A/B test variants with real data."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "Who uses conversion tracking",
|
||||
"intro": "Teams that need to monitor and improve conversion over time.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Growth and product teams",
|
||||
"description": "Monitor signup-to-activation or trial-to-paid conversion week over week. Validate that product changes actually move the needle-not just in aggregate, but period by period."
|
||||
},
|
||||
{
|
||||
"title": "A/B testing and experimentation",
|
||||
"description": "Break down conversion by experiment variant to see which version wins. Unlike simple A/B tools, you get per-period granularity so you can spot if a variant's advantage changes over time."
|
||||
},
|
||||
{
|
||||
"title": "Marketing and campaigns",
|
||||
"description": "Compare conversion rates across traffic sources, campaigns, or landing pages. Find out which channels convert best and whether performance is improving or declining."
|
||||
},
|
||||
{
|
||||
"title": "Mobile and cross-platform teams",
|
||||
"description": "Break down by platform (iOS vs Android), app version, or device type. Catch platform-specific regressions and prioritize fixes where conversion is lowest."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "See where users drop off step by step. Funnels show you which step loses users-conversions show you how rates trend over time."
|
||||
},
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Conversions are built on the events you track. Send events once and use them for conversions, funnels, retention, and more."
|
||||
},
|
||||
{
|
||||
"slug": "retention",
|
||||
"title": "Retention",
|
||||
"description": "Conversion measures if users complete an action. Retention measures if they keep coming back."
|
||||
},
|
||||
{
|
||||
"slug": "data-visualization",
|
||||
"title": "Data visualization",
|
||||
"description": "Conversion charts are one of many ways to visualize your data in OpenPanel."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about conversion tracking in OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "How is this different from funnels?",
|
||||
"answer": "Funnels show you a multi-step sequence and where users drop off at each step. Conversions focus on a single flow (start → goal) and show you how the conversion rate changes over time. Use funnels to diagnose where users get stuck; use conversions to monitor whether things are getting better or worse."
|
||||
},
|
||||
{
|
||||
"question": "Can I use conversions for A/B testing?",
|
||||
"answer": "Yes. Add a breakdown by your experiment variant property, and you'll see each variant's conversion rate plotted over time with per-period detail. This gives you richer insight than a single aggregate number-you can see if one variant's advantage holds consistently or fluctuates."
|
||||
},
|
||||
{
|
||||
"question": "What events can I use?",
|
||||
"answer": "Any events you already track. A conversion is defined by two events: a start event and a goal event. Common examples include session_start → signup, signup → purchase, or page_view → add_to_cart."
|
||||
},
|
||||
{
|
||||
"question": "Is the data sampled?",
|
||||
"answer": "No. OpenPanel processes every event with no sampling. Your conversion rates are calculated from complete data, so you can trust the numbers even for small segments."
|
||||
},
|
||||
{
|
||||
"question": "Can I see absolute numbers alongside rates?",
|
||||
"answer": "Yes. Every conversion report shows both the conversion rate and the total number of conversions. The detail table below the chart includes totals and per-period counts for each segment."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Track your first conversion",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
175
apps/public/content/features/data-visualization.json
Normal file
@@ -0,0 +1,175 @@
|
||||
{
|
||||
"slug": "data-visualization",
|
||||
"short_name": "Data visualization",
|
||||
"seo": {
|
||||
"title": "Dashboards & Data Visualization",
|
||||
"description": "Turn raw product events into actionable charts. Funnels, retention, time series, Sankey diagrams, histograms, maps, and more-all in real time.",
|
||||
"keywords": [
|
||||
"analytics dashboards",
|
||||
"product analytics charts",
|
||||
"visualize event data",
|
||||
"funnel chart",
|
||||
"retention chart",
|
||||
"conversion chart",
|
||||
"sankey diagram analytics",
|
||||
"time series analytics",
|
||||
"histogram analytics",
|
||||
"data visualization tool"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "From events to charts - in real time",
|
||||
"subheading": "Build dashboards with funnels, retention curves, time series, Sankey diagrams, and maps. No SQL, no data team required.",
|
||||
"badges": [
|
||||
"7+ chart types",
|
||||
"Real-time dashboards",
|
||||
"No SQL required",
|
||||
"Export & share"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "Why data visualization matters",
|
||||
"text": "Tracking events is step one. **Turning those events into charts and dashboards** is where decisions happen.\n\nProduct analytics dashboards let you see trends, spot problems, and measure experiments at a glance. Without visualization, you're staring at raw event logs. With it, you can answer questions like:\n\n- **Is signup conversion improving this month?** → Check the **funnel** chart\n- **Are users coming back after week one?** → Check the **retention** curve\n- **Where do users go after the pricing page?** → Check the **Sankey** diagram\n- **How are page load times distributed?** → Check the **histogram**\n- **Where are my users located?** → Check the **map** chart\n- **How does daily active usage trend?** → Check the **time series** chart\n\nOpenPanel gives you all of these chart types out of the box. Every chart is powered by the same events you already track-no extra instrumentation, no data pipelines, no SQL.\n\n### Chart types in OpenPanel\n\n- **Funnels** - Visualize step-by-step conversion. See exactly where users drop off in signup, onboarding, or purchase flows.\n- **Retention** - Measure how many users come back after day 1, week 1, month 1. Understand whether your product is sticky.\n- **Conversion** - Track goal completion rates over time. Compare conversion across segments, campaigns, or product changes.\n- **Sankey diagrams** - Map user journeys visually. See every path users take through your product and where they branch or exit.\n- **Maps** - See where your users are, geographically. Understand regional adoption and plan localization.\n- **Time series** - Plot any metric over time. Track daily active users, event volume, revenue, or any custom metric with flexible date ranges.\n- **Histograms** - Understand distributions. How long do sessions last? How many actions do users take? See the full shape of your data.\n\nYou can combine these charts into **dashboards** that update in real time. Pin the reports that matter, share them with your team, and check them daily-no waiting for a weekly report email."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "Charts and dashboards built for product teams",
|
||||
"intro": "Every chart type is designed to answer a specific product question. Pick the right one and get answers in seconds."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Funnels",
|
||||
"description": "Visualize multi-step conversion flows. See drop-off at each step, compare segments, and find where users abandon signup, onboarding, or purchase."
|
||||
},
|
||||
{
|
||||
"title": "Retention curves",
|
||||
"description": "Measure user stickiness over days, weeks, or months. See cohort-level return rates and understand long-term engagement."
|
||||
},
|
||||
{
|
||||
"title": "Conversion charts",
|
||||
"description": "Track goal completion rates over time. Compare conversion across campaigns, plans, or product versions."
|
||||
},
|
||||
{
|
||||
"title": "Sankey diagrams",
|
||||
"description": "Map user journeys as flow diagrams. See every path through your product-where users go, where they branch, and where they exit."
|
||||
},
|
||||
{
|
||||
"title": "Maps",
|
||||
"description": "Visualize user geography on an interactive map. Understand where your users are and how behavior varies by region."
|
||||
},
|
||||
{
|
||||
"title": "Time series",
|
||||
"description": "Plot any event or metric over time with flexible intervals. Track trends, spot anomalies, and compare date ranges."
|
||||
},
|
||||
{
|
||||
"title": "Histograms",
|
||||
"description": "See distributions of session length, event counts, load times, or any numeric property. Understand the shape of your data, not just the average."
|
||||
},
|
||||
{
|
||||
"title": "Real-time dashboards",
|
||||
"description": "Combine any chart types into dashboards that update as events arrive. Pin the reports your team checks daily."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-data-vis-line.webp",
|
||||
"alt": "Analytics report with time series chart in OpenPanel",
|
||||
"caption": "Build reports with time series, funnels, retention, and more-all from the same event data."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-data-vis-dashboard.webp",
|
||||
"alt": "Product analytics dashboard with multiple chart types",
|
||||
"caption": "Pin charts to dashboards and monitor key metrics in real time."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-data-vis-bar.webp",
|
||||
"alt": "Overview dashboard showing event trends and key metrics",
|
||||
"caption": "Get a high-level view of product health: active users, event volume, and conversion at a glance."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How data visualization works",
|
||||
"intro": "From raw events to shareable dashboards in three steps.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Track events from your product",
|
||||
"description": "Send events with our SDK or API. Page views, signups, purchases, feature usage-every event becomes a data point you can chart."
|
||||
},
|
||||
{
|
||||
"title": "Pick a chart type and build a report",
|
||||
"description": "Choose funnels, retention, time series, Sankey, maps, histograms, or conversion charts. Select your events, add filters, and see results instantly."
|
||||
},
|
||||
{
|
||||
"title": "Pin to dashboards and share",
|
||||
"description": "Save reports to dashboards your team can access. Charts update in real time as new events arrive-no manual refresh or export needed."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "Who uses analytics dashboards",
|
||||
"intro": "Anyone who needs to turn product data into action.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Product managers",
|
||||
"description": "Build dashboards with funnels, retention, and conversion charts to track feature launches and measure whether product changes move the needle."
|
||||
},
|
||||
{
|
||||
"title": "Growth teams",
|
||||
"description": "Use Sankey diagrams to map user journeys, funnels to optimize conversion, and time series to measure campaign impact over time."
|
||||
},
|
||||
{
|
||||
"title": "Founders and operators",
|
||||
"description": "Get a single dashboard with the metrics that matter: active users, conversion, retention, and revenue trends. Check it once a day instead of running ad-hoc queries."
|
||||
},
|
||||
{
|
||||
"title": "Engineers",
|
||||
"description": "Use histograms and time series to monitor event volume, track performance distributions, and spot anomalies without setting up a separate observability stack."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Events are the data behind every chart. Track user actions to power your dashboards."
|
||||
},
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "Dive deeper into conversion analysis with step-by-step funnel reports."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about data visualization and analytics dashboards in OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "What chart types does OpenPanel support?",
|
||||
"answer": "OpenPanel supports funnels, retention curves, conversion charts, Sankey diagrams, geographic maps, time series, and histograms. All chart types are available on every plan."
|
||||
},
|
||||
{
|
||||
"question": "Do I need to write SQL to build charts?",
|
||||
"answer": "No. You build reports by selecting events, filters, and chart type from the UI. No SQL, no data pipelines-just pick your events and see results."
|
||||
},
|
||||
{
|
||||
"question": "Can I share dashboards with my team?",
|
||||
"answer": "Yes. Dashboards are accessible to your team members. Pin charts, arrange them however you like, and everyone sees the same real-time data."
|
||||
},
|
||||
{
|
||||
"question": "How often do charts update?",
|
||||
"answer": "Charts update in real time as new events arrive. There's no overnight processing or batch delay-data appears within seconds of being tracked."
|
||||
},
|
||||
{
|
||||
"question": "What is a Sankey diagram?",
|
||||
"answer": "A Sankey diagram is a flow visualization that shows how users move through your product. Each path is drawn as a flow between steps, so you can see common journeys, unexpected branches, and exit points at a glance."
|
||||
},
|
||||
{
|
||||
"question": "Can I use retention and funnel charts together?",
|
||||
"answer": "Yes. You can build funnels to find where users drop off and retention charts to see if the users who do convert come back. Combining both gives you a complete picture of activation and engagement."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Start visualizing your data",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
139
apps/public/content/features/event-tracking.json
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"short_name": "Event tracking",
|
||||
"seo": {
|
||||
"title": "Event Tracking - The Foundation of Product Analytics",
|
||||
"description": "Track product events without Google Analytics. Simple, privacy-first event tracking that powers funnels, retention, and user profiles. Get started in minutes.",
|
||||
"keywords": [
|
||||
"event tracking software",
|
||||
"product event tracking",
|
||||
"custom event tracking"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "Simple events tracking",
|
||||
"subheading": "Track clicks, views, and conversions with a simple API. No cookies, no bloat - just the events you need to understand how users behave.",
|
||||
"badges": [
|
||||
"Track any user action",
|
||||
"Custom properties",
|
||||
"Real-time ingestion",
|
||||
"One API for all reports"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What is event tracking?",
|
||||
"text": "Event tracking is the **foundation of product analytics**. Instead of relying on page-view counts or session timers, you capture discrete actions-clicks, page views, signups, purchases-as structured events with properties.\n\nEvery meaningful interaction becomes a data point you can query, filter, and visualize. This is how modern product teams answer questions like:\n\n- **How many users completed onboarding this week?**\n- **Which features do paying customers use most?**\n- **Where in the signup flow do users drop off?**\n\nTraditional analytics tools (like Google Analytics) are built around sessions and page views. That works for marketing, but it falls short when you need to understand **product behavior**: what users do *inside* your app, how they progress through flows, and what correlates with retention.\n\nOpenPanel takes a different approach. You send events from your app or website using a lightweight SDK or API. Each event has a name (e.g. `signup_completed`, `feature_used`) and optional properties (e.g. `plan: pro`, `source: google`). OpenPanel stores these events and lets you build **funnels**, **retention charts**, and **user profiles** on top of them-without the complexity of enterprise analytics tools.\n\nBecause OpenPanel is **privacy-first**, you can run it without cookies and without sending personal data to third parties. Self-host it or use our cloud-your data stays yours."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you can track",
|
||||
"intro": "From basic page views to custom conversion events, you get full visibility into user actions."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Page views and screen views",
|
||||
"description": "Track which pages or screens users visit, with automatic properties like URL, referrer, and device."
|
||||
},
|
||||
{
|
||||
"title": "Clicks and interactions",
|
||||
"description": "Capture button clicks, form submissions, and any custom interactions with a single line of code."
|
||||
},
|
||||
{
|
||||
"title": "Custom events and conversions",
|
||||
"description": "Define your own events (e.g. signup, purchase, feature_used) and attach properties for filtering and analysis."
|
||||
},
|
||||
{
|
||||
"title": "User and session context",
|
||||
"description": "Events are tied to anonymous or identified users and sessions, so you can analyze behavior over time."
|
||||
},
|
||||
{
|
||||
"title": "Real-time ingestion",
|
||||
"description": "Events appear in your dashboard within seconds. No batching delays or overnight processing."
|
||||
},
|
||||
{
|
||||
"title": "Funnels, retention, and profiles",
|
||||
"description": "Use the same events to build conversion funnels, retention cohorts, and per-user activity timelines."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-events-list.webp",
|
||||
"alt": "Event list showing tracked user actions in OpenPanel",
|
||||
"caption": "Browse every event your product sends. Filter by name, user, or properties."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-events-stats.webp",
|
||||
"alt": "Event statistics and trends over time",
|
||||
"caption": "See event volume and trends at a glance. Spot anomalies before they become problems."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-events-details.webp",
|
||||
"alt": "Detailed view of a single event with properties",
|
||||
"caption": "Drill into any event to see its full context: user, session, properties, and timestamp."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How event tracking works",
|
||||
"intro": "Three steps to go from zero to full product visibility.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Install the SDK or use the API",
|
||||
"description": "Add our lightweight script to your site or use our SDK for React, Next.js, or other frameworks. Self-hosted or cloud-your choice."
|
||||
},
|
||||
{
|
||||
"title": "Send events from your product",
|
||||
"description": "Track page views automatically and call our API for custom events (signup, purchase, feature_used) with optional properties."
|
||||
},
|
||||
{
|
||||
"title": "Analyze in dashboards, funnels, and retention",
|
||||
"description": "Events flow into funnels, retention charts, and user profiles. No extra setup-one tracking layer powers everything."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "Who uses event tracking",
|
||||
"intro": "Product and growth teams use events to answer concrete questions.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Product managers",
|
||||
"description": "Understand which features are used, where users drop off, and how behavior differs between segments."
|
||||
},
|
||||
{
|
||||
"title": "Growth and marketing",
|
||||
"description": "Measure conversion from signup to activation and from visit to purchase. Optimize campaigns based on real events."
|
||||
},
|
||||
{
|
||||
"title": "Support and success",
|
||||
"description": "View a user's event timeline before a call or ticket. No need to ask \"what did you click?\"-you can see it."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "See where users drop off in signup, activation, and conversion flows."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about event tracking with OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "Do I need cookies for event tracking?",
|
||||
"answer": "No. OpenPanel can run without cookies. We use a first-party cookie only if you enable it for better session continuity. Many teams run fully cookie-less and still get accurate funnels and retention."
|
||||
},
|
||||
{
|
||||
"question": "How is this different from Google Analytics?",
|
||||
"answer": "Google Analytics is built for marketing and traffic analysis, with a complex data model. OpenPanel is built for product and conversion: simple events that map directly to user actions. You get funnels, retention, and user profiles without the GA learning curve."
|
||||
},
|
||||
{
|
||||
"question": "Can I track custom events?",
|
||||
"answer": "Yes. You can send any event name and attach optional properties (e.g. plan, value, feature_name). Custom events work in funnels, retention, and user profiles the same way as built-in events."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Track events in minutes",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
139
apps/public/content/features/funnels.json
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"slug": "funnels",
|
||||
"short_name": "Funnels",
|
||||
"seo": {
|
||||
"title": "Funnel Analysis - See Where Users Drop Off",
|
||||
"description": "See where users drop off in signup, activation, and conversion funnels. Build funnel reports from your events in minutes-no complex setup.",
|
||||
"keywords": [
|
||||
"funnel analysis",
|
||||
"conversion funnels",
|
||||
"signup funnel analytics"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "Funnels: Where do users drop off?",
|
||||
"subheading": "Build funnels from your events and see conversion and drop-off at every step. No complex setup - just pick the events and go.",
|
||||
"badges": [
|
||||
"Find drop-off points",
|
||||
"No sampling",
|
||||
"Segment by any property",
|
||||
"Real-time conversion rates"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What is funnel analysis?",
|
||||
"text": "A funnel is a **sequence of steps** you expect users to complete-for example: *visited homepage → signed up → verified email → created first project*. Funnel analysis shows you how many users complete each step and, critically, **where they leave**.\n\nThis matters because most products lose the majority of their users somewhere in the journey. Without funnel analysis, you're guessing where. With it, you can see:\n\n- **Step-by-step conversion rates** - what percentage of users move from one step to the next\n- **Biggest drop-off points** - where the most users abandon the flow\n- **Time between steps** - how long users take, and where they get stuck\n- **Segment differences** - whether users from organic search convert differently than paid traffic\n\nUnlike traditional analytics tools that require complex configuration, OpenPanel funnels are built **directly on your events**. If you're already tracking `signup_started`, `signup_completed`, and `first_action`, you can create a funnel from those events in seconds-no extra instrumentation needed.\n\nFunnels in OpenPanel use **every event** (no sampling) and update in real time. You can add filters, compare segments, and save funnels to dashboards alongside retention charts and other reports.\n\nThe result: you stop guessing and start **fixing the steps that actually lose users**."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you can do with funnels",
|
||||
"intro": "From signup to revenue, funnels help you find and fix friction."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Signup and onboarding funnels",
|
||||
"description": "Track visit → signup → email verified → first action. See where prospects drop and optimize the path."
|
||||
},
|
||||
{
|
||||
"title": "Activation funnels",
|
||||
"description": "Define activation as a sequence of events (e.g. created project → invited teammate → first export). Measure time to activate."
|
||||
},
|
||||
{
|
||||
"title": "Conversion and revenue funnels",
|
||||
"description": "From trial started to paid conversion, or from add to cart to purchase. Tie steps to revenue events."
|
||||
},
|
||||
{
|
||||
"title": "Flexible step definition",
|
||||
"description": "Each step can be a single event or a group of events. Filter by properties (e.g. plan, source) to compare segments."
|
||||
},
|
||||
{
|
||||
"title": "Conversion and drop-off rates",
|
||||
"description": "See percentage completing each step and overall conversion. No sampling-every event counts."
|
||||
},
|
||||
{
|
||||
"title": "Time between steps",
|
||||
"description": "Understand how long users take between steps. Identify slow or stuck segments."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-funnel-report.webp",
|
||||
"alt": "Funnel report showing conversion and drop-off at each step",
|
||||
"caption": "See exactly where users drop off. Each step shows conversion rate and volume."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-funnel-pick-events.webp",
|
||||
"alt": "Selecting events to define funnel steps",
|
||||
"caption": "Build funnels by picking the events that represent each step. No code changes needed."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-funnel-completed.webp",
|
||||
"alt": "Completed funnel analysis with conversion metrics",
|
||||
"caption": "A finished funnel report with step-by-step conversion, drop-off, and time between steps."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How funnel analysis works",
|
||||
"intro": "Funnels in OpenPanel are defined by the events you already track.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Track the right events",
|
||||
"description": "Ensure the events that represent each step (e.g. signup_completed, project_created) are sent from your product. No funnel-specific tracking needed."
|
||||
},
|
||||
{
|
||||
"title": "Create a funnel report",
|
||||
"description": "In OpenPanel, create a funnel and add steps: each step is one or more events. Optionally add filters (e.g. by plan or campaign)."
|
||||
},
|
||||
{
|
||||
"title": "Read conversion and drop-off",
|
||||
"description": "See how many users completed each step, the conversion rate between steps, and where the biggest drop-off happens. Use this to prioritize fixes."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "Who uses funnel analysis",
|
||||
"intro": "Teams use funnels to make decisions about product and growth.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Product and growth teams",
|
||||
"description": "Find the biggest drop-off in signup or activation and run experiments to improve conversion. Measure impact with the same funnel."
|
||||
},
|
||||
{
|
||||
"title": "Marketing",
|
||||
"description": "Compare funnel conversion by traffic source or campaign. Double down on channels that convert and fix landing pages that don't."
|
||||
},
|
||||
{
|
||||
"title": "Founders and operators",
|
||||
"description": "Get a single view of the journey from visitor to paying customer. No spreadsheets-just events and funnel reports."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Events are the foundation. Track the steps that feed your funnels."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about funnel analysis with OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "Do I need to set up funnels separately from events?",
|
||||
"answer": "No. You track events once (page views, signups, purchases, etc.). Funnels are just a way to arrange those events into steps. Create or change a funnel anytime without changing your tracking code."
|
||||
},
|
||||
{
|
||||
"question": "Can I filter funnels by user property or segment?",
|
||||
"answer": "Yes. You can add filters to funnel steps (e.g. only users from a specific campaign or on a specific plan). This lets you compare conversion across segments."
|
||||
},
|
||||
{
|
||||
"question": "How is funnel data calculated?",
|
||||
"answer": "We count unique users who completed each step in order within your selected time window. There's no sampling-every event is included. Results update as new events arrive."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Build your first funnel",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
158
apps/public/content/features/identify-users.json
Normal file
@@ -0,0 +1,158 @@
|
||||
{
|
||||
"slug": "identify-users",
|
||||
"short_name": "Identify users",
|
||||
"seo": {
|
||||
"title": "User Profiles & Identification",
|
||||
"description": "Track individual users across sessions with privacy-first user profiles. See first seen, last seen, activity timelines, and custom properties-without invasive tracking.",
|
||||
"keywords": [
|
||||
"user profiles analytics",
|
||||
"track individual users",
|
||||
"user activity timeline",
|
||||
"identify users analytics",
|
||||
"user tracking software"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "User tracking",
|
||||
"subheading": "See who they are, when they first appeared, and what they did - with full respect for privacy. No fingerprinting, no surveillance.",
|
||||
"badges": [
|
||||
"First seen / last seen",
|
||||
"Activity timeline per user",
|
||||
"Custom user properties",
|
||||
"Privacy-first identification"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What is user identification?",
|
||||
"text": "User identification connects anonymous activity to a **known user profile**. Instead of treating every visit as a nameless session, you link events, page views, and sessions to a real person-someone you can look up, follow over time, and understand in context.\n\nWith OpenPanel, identification works like this:\n\n1. A visitor arrives and generates anonymous events\n2. When they sign up or log in, you call `identify()` with an ID and optional properties\n3. OpenPanel merges their anonymous history with the identified profile\n\nFrom that point on, you have a **complete picture**: when they first appeared, when they were last active, every event they triggered, and any properties you attached (plan, company, role, etc.).\n\nThis is how modern product teams answer questions like:\n\n- **When did this user first show up, and what led them to sign up?**\n- **What did they do in the last 7 days?**\n- **Which features does this account actually use?**\n- **Is this user at risk of churning?**\n\nUnlike traditional analytics that reduce users to anonymous metrics, OpenPanel gives you **individual-level visibility** without compromising privacy. You control what data you send. No third-party cookies, no fingerprinting, no data sold to advertisers. You get user profiles that help your support, sales, and product teams-without the surveillance."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you get with user profiles",
|
||||
"intro": "From basic identity to full activity history, user profiles give you the context your team needs."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "First seen and last seen",
|
||||
"description": "Know exactly when each user first appeared and when they were last active. Spot dormant accounts before they churn."
|
||||
},
|
||||
{
|
||||
"title": "Full activity timeline",
|
||||
"description": "See every event a user triggered in chronological order-page views, clicks, conversions, custom events-all on one screen."
|
||||
},
|
||||
{
|
||||
"title": "Custom user properties",
|
||||
"description": "Attach properties like plan, company, role, or lifetime value. Filter and segment users by any property you set."
|
||||
},
|
||||
{
|
||||
"title": "Anonymous-to-identified merge",
|
||||
"description": "Pre-signup activity is automatically merged with the identified profile, so you never lose the full journey."
|
||||
},
|
||||
{
|
||||
"title": "Session history",
|
||||
"description": "See how many sessions a user has had, how long they lasted, and what happened in each one."
|
||||
},
|
||||
{
|
||||
"title": "Privacy-first by design",
|
||||
"description": "You choose what to send. No fingerprinting, no third-party cookies, no hidden data collection. Self-host for full control."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-profiles-details.webp",
|
||||
"alt": "User profile showing activity timeline and properties in OpenPanel",
|
||||
"caption": "See a user's full history: first seen, last seen, events, sessions, and custom properties."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-profiles-events.webp",
|
||||
"alt": "Event stream for an identified user",
|
||||
"caption": "Drill into any user's event stream to understand exactly what they did and when."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How user identification works",
|
||||
"intro": "Three steps to go from anonymous visitors to rich user profiles.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Track events as usual",
|
||||
"description": "Install the SDK and send events. Before identification, all activity is stored under an anonymous profile."
|
||||
},
|
||||
{
|
||||
"title": "Call identify() on login or signup",
|
||||
"description": "Pass a user ID and optional properties (email, plan, company). OpenPanel merges the anonymous history with the new profile."
|
||||
},
|
||||
{
|
||||
"title": "Browse profiles and timelines",
|
||||
"description": "Open any user profile to see their full journey: first seen, last seen, every event, session history, and attached properties."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "Who uses user profiles",
|
||||
"intro": "User identification powers workflows across support, sales, and product teams.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Support teams",
|
||||
"description": "Pull up a user's activity timeline before responding to a ticket. See what they clicked, where they got stuck, and whether the issue is reproducible-without asking them to describe every step."
|
||||
},
|
||||
{
|
||||
"title": "Sales teams",
|
||||
"description": "See which features a prospect has explored, how often they return, and when they were last active. Reach out with context instead of cold guesses."
|
||||
},
|
||||
{
|
||||
"title": "Product managers",
|
||||
"description": "Identify power users and understand what makes them different. Compare activity patterns between retained and churned users to prioritize the right features."
|
||||
},
|
||||
{
|
||||
"title": "Customer success",
|
||||
"description": "Monitor user engagement over time. Spot accounts going quiet before they cancel and intervene with the right message at the right time."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Track the actions that make up each user's activity timeline."
|
||||
},
|
||||
{
|
||||
"slug": "session-tracking",
|
||||
"title": "Session tracking",
|
||||
"description": "See how users move through your product session by session."
|
||||
},
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "Analyze where identified users drop off in conversion flows."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about user identification in OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "What happens before a user is identified?",
|
||||
"answer": "Events are stored under an anonymous profile. When you call identify(), the anonymous history is merged with the identified profile, so you get the complete journey from first visit to current session."
|
||||
},
|
||||
{
|
||||
"question": "Is this GDPR-compliant?",
|
||||
"answer": "Yes. You control exactly what data you send. OpenPanel doesn't add tracking pixels, fingerprinting, or third-party cookies. If you self-host, no data ever leaves your infrastructure. You can also delete a user's data at any time to comply with erasure requests."
|
||||
},
|
||||
{
|
||||
"question": "How is this different from Google Analytics user tracking?",
|
||||
"answer": "Google Analytics relies on anonymous client IDs and has limited support for individual-level profiles. OpenPanel gives you a dedicated profile page per user with a full event timeline, session history, and custom properties-without sending data to Google."
|
||||
},
|
||||
{
|
||||
"question": "Can I attach custom properties to users?",
|
||||
"answer": "Yes. Pass any key-value pairs when you call identify()-plan, company, role, revenue, or anything else. These properties are searchable and can be used to filter and segment users across all reports."
|
||||
},
|
||||
{
|
||||
"question": "Do I need to identify every user?",
|
||||
"answer": "No. Identification is optional. Anonymous users still generate events and sessions. You identify users when you want to link their activity to a known person-typically after login or signup."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Start identifying users today",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
168
apps/public/content/features/integrations.json
Normal file
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"slug": "integrations",
|
||||
"short_name": "Integrations",
|
||||
"seo": {
|
||||
"title": "Integrations - Slack, Webhooks & More",
|
||||
"description": "Connect OpenPanel to Slack, Discord, webhooks, and more. Trigger actions based on user behavior-send alerts, sync to Zapier, or export events to S3 and BigQuery.",
|
||||
"keywords": [
|
||||
"analytics integrations",
|
||||
"webhook analytics",
|
||||
"slack notifications analytics",
|
||||
"zapier analytics integration",
|
||||
"event-driven webhooks",
|
||||
"export events to s3",
|
||||
"analytics to bigquery"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "Integrations: Connect to any webhook",
|
||||
"subheading": "Push data out of OpenPanel and into Slack, Discord, or any webhook. Trigger on the events that matter - no polling, no glue code.",
|
||||
"badges": [
|
||||
"Slack, Discord & webhooks",
|
||||
"Trigger on any event",
|
||||
"Custom payloads with JavaScript",
|
||||
"S3 & GCS export coming soon"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What are integrations?",
|
||||
"text": "Integrations are the bridge between OpenPanel and everything else. They let you **get data out** of OpenPanel and into the tools and workflows your team already relies on.\n\nThe idea is simple: you create an **integration** (a connection to an external service), then attach it to a **[notification rule](/features/notifications)** that fires whenever the conditions you define are met. That's it - OpenPanel handles the rest.\n\nHere's an example: you want to be notified in Slack whenever a new user signs up from a specific country. You create a Slack integration, set up a notification rule that triggers on `signup` events, and use a template like *\"New user from {{country}}\"*. Every time someone signs up, the message lands in your Slack channel - no polling, no cron jobs, no glue code.\n\nBut it goes further than alerts. With **webhooks**, you can push event data to any URL - including **Zapier**, **Make**, or your own backend. That means you can trigger custom workflows based on real user behavior: send a welcome email when someone completes onboarding, notify sales when a user hits a usage milestone, or log high-value events to an external system.\n\nYou can even trigger integrations when a user completes a **funnel** - combining OpenPanel's funnel analysis with real-time action.\n\nToday, OpenPanel supports:\n\n- **Slack** - post messages to any channel when events fire\n- **Discord** - same as Slack, but for Discord servers\n- **Webhooks** - send event payloads to any URL with custom headers and a JavaScript transform for full control over the payload shape\n\nComing soon:\n\n- **S3-compatible storage** - automatically export events to Amazon S3, MinIO, Cloudflare R2, or any S3-compatible store\n- **Google Cloud Storage** - export to GCS for easy import into **BigQuery**, **Redshift**, or your data warehouse\n\nThese storage integrations will make importing your OpenPanel events into your data warehouse straightforward and easy - no custom ETL pipelines needed."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you can do with integrations",
|
||||
"intro": "From real-time Slack alerts to warehouse exports - integrations connect OpenPanel to your stack."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Slack & Discord notifications",
|
||||
"description": "Connect your Slack workspace or Discord server and receive messages whenever notification rules fire. Great for staying on top of signups, errors, or milestone events without leaving your chat tool."
|
||||
},
|
||||
{
|
||||
"title": "Webhooks to any URL",
|
||||
"description": "Send event data to any HTTP endpoint - your own API, Zapier, Make, or any automation platform. Define custom headers and use a JavaScript transform to shape the payload exactly how the receiving service expects it."
|
||||
},
|
||||
{
|
||||
"title": "JavaScript payload transforms",
|
||||
"description": "Webhook integrations include a built-in JavaScript editor. Write a transform function that receives the raw payload and returns whatever shape you need - rename fields, filter data, or enrich the payload before it's sent."
|
||||
},
|
||||
{
|
||||
"title": "Pair with notification rules",
|
||||
"description": "Integrations don't fire on their own - you attach them to notification rules. A single rule can trigger multiple integrations at once, and a single integration can be used by many rules."
|
||||
},
|
||||
{
|
||||
"title": "Trigger on funnels and events",
|
||||
"description": "Notification rules can fire on specific events with property filters, or when a user completes an entire funnel. That means you can trigger a webhook when someone finishes onboarding, not just when they view a single page."
|
||||
},
|
||||
{
|
||||
"title": "S3 & GCS export (coming soon)",
|
||||
"description": "Automatically export your events to S3-compatible storage or Google Cloud Storage. From there, import into BigQuery, Redshift, or any data warehouse - no custom ETL required."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-integrations.webp",
|
||||
"alt": "Available integrations showing Slack, Discord, and Webhook options",
|
||||
"caption": "Browse available integrations. Connect Slack, Discord, or set up a custom webhook in seconds."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-integrations-create.webp",
|
||||
"alt": "Creating a webhook integration with URL, headers, and JavaScript transform",
|
||||
"caption": "Create a webhook integration with a custom URL, headers, and a JavaScript transform to shape the payload exactly how you need it."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How integrations work",
|
||||
"intro": "Set up an integration in minutes, then let notification rules handle the rest.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Pick an integration type",
|
||||
"description": "Choose from Slack, Discord, or Webhook. Each type has its own setup - OAuth for Slack and Discord, URL + headers for webhooks."
|
||||
},
|
||||
{
|
||||
"title": "Configure the connection",
|
||||
"description": "For Slack/Discord, connect your workspace or server. For webhooks, enter the target URL, add any custom headers, and optionally write a JavaScript transform to control the payload shape."
|
||||
},
|
||||
{
|
||||
"title": "Create a notification rule",
|
||||
"description": "In the Notifications section, create a rule that defines when the integration should fire - e.g. when a screen_view event has a path starting with /onboarding. Attach one or more integrations to the rule."
|
||||
},
|
||||
{
|
||||
"title": "Events trigger actions automatically",
|
||||
"description": "When an event matches a rule, OpenPanel sends the data to every attached integration in real time. No polling, no delays."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "How teams use integrations",
|
||||
"intro": "From team alerts to full automation pipelines - integrations turn analytics into action.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Real-time team alerts",
|
||||
"description": "Post to Slack or Discord when a new user signs up, a high-value purchase happens, or a critical error fires. Keep the whole team aware without anyone needing to check a dashboard."
|
||||
},
|
||||
{
|
||||
"title": "Zapier and automation workflows",
|
||||
"description": "Send webhook payloads to Zapier or Make to trigger downstream actions - send a welcome email, update a CRM, add a row to a spreadsheet, or kick off an onboarding drip campaign. All driven by real user behavior."
|
||||
},
|
||||
{
|
||||
"title": "Custom backend actions",
|
||||
"description": "Point a webhook at your own API to run custom logic when specific events fire. Credit a referral, flag a suspicious session, or sync analytics data to an internal tool."
|
||||
},
|
||||
{
|
||||
"title": "Data warehouse export",
|
||||
"description": "With the upcoming S3 and GCS integrations, export events directly to your data warehouse. Load into BigQuery or Redshift for advanced SQL analysis, cross-referencing with other datasets, or long-term storage."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "notifications",
|
||||
"title": "Notifications",
|
||||
"description": "Notification rules control when integrations fire. Define events, filters, and templates - then attach integrations to act on them."
|
||||
},
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Integrations are powered by the events you track. The richer your event data, the more precise your triggers can be."
|
||||
},
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "Trigger integrations when a user completes an entire funnel - not just a single event."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about OpenPanel integrations.",
|
||||
"items": [
|
||||
{
|
||||
"question": "How do integrations and notifications work together?",
|
||||
"answer": "Integrations are the destinations (Slack channel, webhook URL, Discord server). Notification rules are the triggers (when event X happens with filter Y). You create both, then attach integrations to rules. When a rule fires, all attached integrations receive the data."
|
||||
},
|
||||
{
|
||||
"question": "Can I use webhooks with Zapier?",
|
||||
"answer": "Yes. Create a webhook integration pointing to your Zapier webhook URL. You can use the JavaScript transform to shape the payload into whatever format your Zap expects. This lets you trigger any Zapier workflow based on real user events in OpenPanel."
|
||||
},
|
||||
{
|
||||
"question": "What does the JavaScript transform do?",
|
||||
"answer": "The JavaScript transform is a function that receives the raw event payload and returns a modified version. You can rename fields, filter out properties, add computed values, or completely restructure the data. It runs before the payload is sent to the webhook URL."
|
||||
},
|
||||
{
|
||||
"question": "When will S3 and GCS integrations be available?",
|
||||
"answer": "S3-compatible storage and Google Cloud Storage integrations are on the near-term roadmap. These will let you automatically export events for import into BigQuery, Redshift, or any data warehouse without building custom ETL pipelines."
|
||||
},
|
||||
{
|
||||
"question": "Can one integration be used by multiple notification rules?",
|
||||
"answer": "Yes. An integration is just a connection to a service. You can attach it to as many notification rules as you want. For example, a single Slack integration can be triggered by rules for signups, purchases, and errors - each with its own template and filters."
|
||||
},
|
||||
{
|
||||
"question": "Is there a limit to how many integrations I can create?",
|
||||
"answer": "There's no hard limit. Create as many integrations and notification rules as you need to cover your workflows."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Set up your first integration",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
167
apps/public/content/features/notifications.json
Normal file
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"slug": "notifications",
|
||||
"short_name": "Notifications",
|
||||
"seo": {
|
||||
"title": "Notifications - Act When Events Happen",
|
||||
"description": "Set up notification rules that trigger when specific events happen. Filter by event properties, use templates with variables, and route alerts to Slack, Discord, or any webhook.",
|
||||
"keywords": [
|
||||
"analytics notifications",
|
||||
"event-based alerts",
|
||||
"real-time user alerts",
|
||||
"notification rules analytics",
|
||||
"event filtering notifications",
|
||||
"custom alert templates"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "When it happens, act on it",
|
||||
"subheading": "Define rules that watch for specific events and fire automatically. Filter by properties, use templates with variables, and route to Slack, Discord, or any webhook.",
|
||||
"badges": [
|
||||
"Event-based rules",
|
||||
"Property filters",
|
||||
"Template variables",
|
||||
"Multi-integration routing"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What are notification rules?",
|
||||
"text": "Notification rules are the **trigger layer** in OpenPanel. They define *when* something should happen - and **[integrations](/features/integrations)** define *where* it goes.\n\nA notification rule has three parts:\n\n1. **Events** - which events to watch for (e.g. `screen_view`, `purchase`, `signup`)\n2. **Filters** - optional property conditions that narrow the match (e.g. path starts with `/onboarding` and ends with `/verify`)\n3. **Integrations** - which connected services should receive the notification when the rule fires\n\nYou can also write a **template** using variables like `{{country}}`, `{{browser}}`, or any event property. The template is rendered with real values when the notification fires, so your Slack message or webhook payload contains the exact context you need.\n\nHere's a concrete example: you want to know when new users visit your onboarding verification page. You create a rule that:\n\n- Watches for `screen_view` events\n- Filters where **path** starts with `/onboarding` and ends with `/verify`\n- Uses the template *\"New user with their first event from {{country}}\"*\n- Routes to your Slack workspace and a webhook integration\n\nNow every time someone hits that page, your team sees a message in Slack with the user's country, and your webhook fires for any downstream automation.\n\nThe notifications page in OpenPanel shows a feed of every notification that fired - searchable, sortable by date, and showing the integration, country, OS, browser, and profile for each one. You can see exactly what happened and when.\n\nNotification rules are the glue between **events you track** and **actions you take**. Combined with integrations, they turn OpenPanel from a passive analytics tool into an active part of your workflow."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you can do with notifications",
|
||||
"intro": "From simple alerts to complex event-driven workflows - rules give you full control."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Event-based triggers",
|
||||
"description": "Choose which events a rule watches for - screen_view, purchase, signup, or any custom event. A single rule can watch for one event type and fire on every match."
|
||||
},
|
||||
{
|
||||
"title": "Property filters",
|
||||
"description": "Narrow rules with property conditions. Filter by path, country, device, or any event property using operators like 'starts with', 'ends with', 'equals', and more. Stack multiple filters to match exactly the events you care about."
|
||||
},
|
||||
{
|
||||
"title": "Template variables",
|
||||
"description": "Write notification templates with {{variable}} syntax. Use any event property - {{country}}, {{path}}, {{browser}}, {{os}}, or custom properties. Templates are rendered with real values when the notification fires."
|
||||
},
|
||||
{
|
||||
"title": "Multi-integration routing",
|
||||
"description": "Attach multiple integrations to a single rule. Fire a Slack message and a webhook at the same time. Mix and match integrations across rules however you want."
|
||||
},
|
||||
{
|
||||
"title": "Notification feed",
|
||||
"description": "Every fired notification is logged in a searchable feed. See the title, integration, country, OS, browser, and profile for each notification. Filter and sort to find exactly what you need."
|
||||
},
|
||||
{
|
||||
"title": "Rules management",
|
||||
"description": "Create, edit, and delete rules from a dedicated Rules tab. See at a glance which events each rule watches, what filters are applied, and which integrations are attached."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-notifications.webp",
|
||||
"alt": "Notification feed showing fired notifications with country, OS, browser, and profile details",
|
||||
"caption": "Every notification that fires is logged in a searchable feed. See the country, OS, browser, and profile for each event - sortable and searchable."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-notifications-rule.webp",
|
||||
"alt": "Editing a notification rule with event type, property filters, template, and integrations",
|
||||
"caption": "Create rules with event filters, template variables, and multi-integration routing. This rule fires on screen_view events where the path matches an onboarding verification flow."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How notification rules work",
|
||||
"intro": "Rules are simple: define the trigger, write the message, pick the destinations.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Choose the event type",
|
||||
"description": "Select which event the rule should watch - screen_view, purchase, signup, or any custom event you track. The rule will evaluate every incoming event of that type."
|
||||
},
|
||||
{
|
||||
"title": "Add property filters",
|
||||
"description": "Optionally narrow the rule with property conditions. For example, filter where path starts with /onboarding and ends with /verify. Only events matching all filters will trigger the rule."
|
||||
},
|
||||
{
|
||||
"title": "Write a template",
|
||||
"description": "Write the notification message using {{variable}} placeholders. When the rule fires, variables are replaced with real values from the event - e.g. \"New user with their first event from {{country}}\" becomes \"New user with their first event from US\"."
|
||||
},
|
||||
{
|
||||
"title": "Attach integrations",
|
||||
"description": "Select one or more integrations to receive the notification - Slack, Discord, webhook, or any combination. Each integration will be triggered simultaneously when a matching event arrives."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "How teams use notifications",
|
||||
"intro": "From simple team alerts to event-driven automation - notifications make analytics actionable.",
|
||||
"items": [
|
||||
{
|
||||
"title": "New user alerts",
|
||||
"description": "Get notified in Slack whenever a new user signs up. Include their country, source, or any property in the message. The whole team sees new signups in real time without checking a dashboard."
|
||||
},
|
||||
{
|
||||
"title": "Onboarding monitoring",
|
||||
"description": "Set up rules that fire when users hit key onboarding milestones - account creation, first feature use, verification. Know immediately when someone gets stuck or completes the flow."
|
||||
},
|
||||
{
|
||||
"title": "Revenue and purchase alerts",
|
||||
"description": "Fire a notification on every purchase event. Include the amount, plan, or product in the template. Route to Slack for celebration and to a webhook for CRM updates or fulfillment triggers."
|
||||
},
|
||||
{
|
||||
"title": "Error and regression detection",
|
||||
"description": "Watch for error events or unexpected patterns. Get alerted when error rates spike for a specific page or feature, so you can respond before users complain."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "integrations",
|
||||
"title": "Integrations",
|
||||
"description": "Integrations are the destinations for notifications. Connect Slack, Discord, or webhooks, then attach them to rules."
|
||||
},
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Notification rules are built on the events you track. The more events you send, the more precise your rules can be."
|
||||
},
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "Trigger notifications when users complete a funnel - combining step-by-step analysis with real-time action."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about notification rules in OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "What's the difference between notifications and integrations?",
|
||||
"answer": "Integrations are connections to external services (Slack, Discord, webhooks). Notifications are rules that define when those integrations should fire. You create an integration once, then attach it to as many notification rules as you want."
|
||||
},
|
||||
{
|
||||
"question": "What template variables can I use?",
|
||||
"answer": "You can use any event property as a template variable with the {{property}} syntax. Common ones include {{country}}, {{city}}, {{browser}}, {{os}}, {{path}}, and any custom properties you send with your events."
|
||||
},
|
||||
{
|
||||
"question": "Can I have multiple filters on a single rule?",
|
||||
"answer": "Yes. You can stack multiple property filters on a rule. All filters must match for the rule to fire - they work as AND conditions. For example, path starts with /onboarding AND path ends with /verify."
|
||||
},
|
||||
{
|
||||
"question": "Can I send to multiple integrations from one rule?",
|
||||
"answer": "Yes. Attach as many integrations as you want to a single rule. When the rule fires, all attached integrations are triggered simultaneously. For example, send to both Slack and a webhook at the same time."
|
||||
},
|
||||
{
|
||||
"question": "Is there a delay between the event and the notification?",
|
||||
"answer": "No. Notifications fire in real time as events arrive. There's no batching or delay - when an event matches a rule, the attached integrations are triggered immediately."
|
||||
},
|
||||
{
|
||||
"question": "Can I see past notifications?",
|
||||
"answer": "Yes. The Notifications tab shows a feed of every notification that fired. You can search, sort by date, and see details like the integration used, country, OS, browser, and profile for each notification."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Set up your first notification rule",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
138
apps/public/content/features/retention.json
Normal file
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"slug": "retention",
|
||||
"short_name": "Retention",
|
||||
"seo": {
|
||||
"title": "Retention & Cohort Analysis",
|
||||
"description": "User retention analytics and cohort analysis that show who comes back. See product stickiness at a glance-no sampling, no guesswork. Built on your events.",
|
||||
"keywords": [
|
||||
"user retention analytics",
|
||||
"cohort analysis"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "Retention: Who comes back?",
|
||||
"subheading": "See who returns after signup, activation, or any key action. Cohort-based retention that shows real stickiness - not vanity metrics.",
|
||||
"badges": [
|
||||
"Cohort-based retention",
|
||||
"Any start and return event",
|
||||
"No sampling",
|
||||
"Compare segments"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What retention means",
|
||||
"text": "**Retention** is the share of users who come back after doing something once. It answers: *Of the people who did X in a given week, how many did Y later?*\n\nThat’s it. No session thresholds, no arbitrary “active” definitions-just a clear picture of **who sticks** and who doesn’t.\n\nWhy does it matter? Because retention is **product truth**. Traffic and signups can look great while the product fails to stick. Retention cuts through that. It tells you:\n\n- **Whether your product is habit-forming** - Do users return after the first use?\n- **When churn happens** - Do they leave after day 1, week 1, or month 1?\n- **Which segments stick** - Do certain cohorts (e.g. by plan, source, or feature) retain better?\n\nIn OpenPanel, retention is built on your **events**. You choose an initial event (e.g. `signup_completed`, `first_purchase`) and a return event (e.g. `feature_used`, `session_started`). OpenPanel groups users into cohorts by when they did the initial event and shows what percentage did the return event in subsequent periods. No extra instrumentation-the same events that power funnels and user profiles power retention."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you can do with retention",
|
||||
"intro": "From weekly cohorts to segment comparison, retention gives you the stickiness signal."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Cohort-based retention",
|
||||
"description": "Group users by when they did an initial event (e.g. signup week). See what percentage return in week 1, 2, 3, and beyond."
|
||||
},
|
||||
{
|
||||
"title": "Any start and return event",
|
||||
"description": "Define retention your way: signup → login, first purchase → repeat purchase, feature_used → feature_used again. No fixed definitions."
|
||||
},
|
||||
{
|
||||
"title": "Read the grid at a glance",
|
||||
"description": "Retention grids show cohorts in rows and time periods in columns. High numbers = stickiness; drop-off patterns show where to focus."
|
||||
},
|
||||
{
|
||||
"title": "Compare segments",
|
||||
"description": "Filter or segment by plan, source, or custom properties. See which cohorts retain better and why."
|
||||
},
|
||||
{
|
||||
"title": "No sampling",
|
||||
"description": "Retention is computed over every event. No sampling or estimates-you see real stickiness."
|
||||
},
|
||||
{
|
||||
"title": "Dashboards and sharing",
|
||||
"description": "Add retention charts to dashboards next to funnels and other reports. Share with PMs and founders."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-retention.webp",
|
||||
"alt": "Retention cohort grid showing stickiness over time",
|
||||
"caption": "Cohort retention at a glance. Rows = cohorts, columns = time periods. See who comes back."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-retention.webp",
|
||||
"alt": "Choosing initial and return events for retention",
|
||||
"caption": "Pick the start and return events that define retention for your product."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How to read a retention chart",
|
||||
"intro": "Retention charts are simple once you know what to look for.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Pick your initial and return events",
|
||||
"description": "The initial event defines the cohort (e.g. signup_completed). The return event defines “came back” (e.g. session_started or feature_used). Every user who did the initial event in a given period is one cohort."
|
||||
},
|
||||
{
|
||||
"title": "Read the grid",
|
||||
"description": "Rows are cohorts (e.g. “Week of Jan 6”). Columns are time periods after the initial event (e.g. Week 1, Week 2). Each cell is the percentage of that cohort that did the return event in that period. Higher = stickier."
|
||||
},
|
||||
{
|
||||
"title": "Spot patterns",
|
||||
"description": "Look for cohorts that retain well vs. those that drop off fast. Compare segments (e.g. by plan or source) to see which users stick and use that to prioritize product and growth work."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "How teams use retention",
|
||||
"intro": "PMs and founders use retention to separate signal from noise.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Product managers",
|
||||
"description": "See which features and flows lead to repeat use. Prioritize work that improves retention, not just signups. Compare cohorts to learn what separates sticky users from churned ones."
|
||||
},
|
||||
{
|
||||
"title": "Founders",
|
||||
"description": "Retention is the truth about product-market fit. One number-e.g. week-2 or week-4 retention-often tells you more than top-line growth. Use it in board updates and strategy."
|
||||
},
|
||||
{
|
||||
"title": "Growth and analytics",
|
||||
"description": "Measure impact of onboarding or activation changes on retention. Segment by acquisition source or plan to invest in the channels and segments that retain best."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Retention is built on events. Track signups, sessions, and feature use first."
|
||||
},
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "See where users drop off before they can retain. Funnels and retention go hand in hand."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about retention analytics with OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "What’s the difference between retention and funnel analysis?",
|
||||
"answer": "Funnels answer “where do users drop off in a sequence?” Retention answers “of the users who did X, how many came back to do Y?” Both use the same events; retention focuses on repeat behavior over time, funnels on one-time flows."
|
||||
},
|
||||
{
|
||||
"question": "Can I use any events for retention?",
|
||||
"answer": "Yes. You choose an initial event (e.g. signup_completed, first_purchase) and a return event (e.g. session_started, feature_used). OpenPanel cohorts users by when they did the initial event and shows what percentage did the return event in later periods."
|
||||
},
|
||||
{
|
||||
"question": "How do I know if my retention is good?",
|
||||
"answer": "There’s no universal benchmark-it depends on your product and cohort. What matters is trend and segment comparison: improving over time and understanding which cohorts retain better. Retention gives you the numbers; you decide what “good” is for your product."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "See your retention in minutes",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
157
apps/public/content/features/revenue-tracking.json
Normal file
@@ -0,0 +1,157 @@
|
||||
{
|
||||
"slug": "revenue-tracking",
|
||||
"short_name": "Revenue tracking",
|
||||
"seo": {
|
||||
"title": "Revenue Tracking - Tie Every Dollar to Events",
|
||||
"description": "Track revenue as events, not spreadsheets. Tie every dollar to a user, session, and conversion flow. Privacy-first product revenue analytics with OpenPanel.",
|
||||
"keywords": [
|
||||
"revenue analytics",
|
||||
"track revenue events",
|
||||
"product revenue tracking"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "Revenue tracking",
|
||||
"subheading": "Attach a dollar value to any action - purchase, upgrade, renewal - and see exactly how money flows through your product. No spreadsheets, no stitching.",
|
||||
"badges": [
|
||||
"Revenue as events",
|
||||
"Tie revenue to users",
|
||||
"Real-time metrics",
|
||||
"No spreadsheets needed"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What is event-based revenue tracking?",
|
||||
"text": "Most teams track revenue in spreadsheets or payment dashboards that live completely separate from product analytics. You know *how much* you made, but not *why*.\n\nEvent-based revenue tracking flips this. Every revenue moment-a purchase, a plan upgrade, a subscription renewal-is captured as a **structured event** with a dollar amount, a user, and a session. That means you can answer questions like:\n\n- **Which signup source drives the most revenue?**\n- **How long after onboarding do users make their first purchase?**\n- **What features do high-LTV customers use that churning ones don't?**\n\nWith OpenPanel, you send a revenue event the same way you send any other event-just include an amount property. From there, revenue flows into **funnels**, **retention charts**, and **user profiles** alongside every other action.\n\nNo CSV exports. No stitching Stripe data to analytics data in a spreadsheet. Revenue becomes a first-class dimension of your product analytics, queryable and filterable like everything else.\n\nBecause OpenPanel is **privacy-first**, revenue data stays in your infrastructure (self-hosted) or in our cloud with no third-party sharing. You get the insights without the data-privacy trade-offs."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you can measure",
|
||||
"intro": "From single purchases to recurring subscriptions, every revenue signal becomes a queryable event."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Revenue events with custom amounts",
|
||||
"description": "Attach a monetary value to any event. Track purchases, upgrades, add-ons, and refunds as structured data."
|
||||
},
|
||||
{
|
||||
"title": "Revenue per user and session",
|
||||
"description": "Every revenue event is linked to a user and session, so you can see lifetime value, average order value, and revenue per visit."
|
||||
},
|
||||
{
|
||||
"title": "Revenue in funnels",
|
||||
"description": "Add revenue events as funnel steps. See how much money flows through each stage-and how much you lose at every drop-off."
|
||||
},
|
||||
{
|
||||
"title": "Revenue over time",
|
||||
"description": "Chart daily, weekly, or monthly revenue trends. Break down by plan, source, country, or any event property."
|
||||
},
|
||||
{
|
||||
"title": "Segment by properties",
|
||||
"description": "Filter revenue by plan tier, payment method, campaign source, or any custom property you attach to your events."
|
||||
},
|
||||
{
|
||||
"title": "Real-time ingestion",
|
||||
"description": "Revenue events appear in dashboards within seconds-no overnight processing or batch imports."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-revenue-1.webp",
|
||||
"alt": "OpenPanel dashboard overview with key metrics",
|
||||
"caption": "See revenue alongside engagement metrics in a single dashboard."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-revenue-2.webp",
|
||||
"alt": "Funnel analysis showing conversion and revenue flow",
|
||||
"caption": "Trace the path from first visit to purchase and measure revenue at every step."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-revenue-2.webp",
|
||||
"alt": "Retention chart for revenue cohorts",
|
||||
"caption": "Understand how revenue retention changes across weekly cohorts."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How revenue events work",
|
||||
"intro": "Three steps to go from payment callbacks to full revenue analytics.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Send revenue events from your backend",
|
||||
"description": "When a purchase, upgrade, or renewal happens, fire an event with the amount and any relevant properties (plan, currency, item)."
|
||||
},
|
||||
{
|
||||
"title": "Revenue ties to the user and session",
|
||||
"description": "OpenPanel links the revenue event to the user who triggered it and the session they were in. No manual joins-context is automatic."
|
||||
},
|
||||
{
|
||||
"title": "Analyze in dashboards, funnels, and profiles",
|
||||
"description": "Revenue shows up everywhere: aggregate charts, conversion funnels, user timelines. Filter and break down by any property."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "Who uses revenue tracking",
|
||||
"intro": "Teams that want to connect product behavior to business outcomes.",
|
||||
"items": [
|
||||
{
|
||||
"title": "SaaS product teams",
|
||||
"description": "Tie MRR and expansion revenue back to feature usage. Understand which product changes move the revenue needle."
|
||||
},
|
||||
{
|
||||
"title": "E-commerce and marketplaces",
|
||||
"description": "Track order value per session, revenue by traffic source, and purchase funnels without a separate BI tool."
|
||||
},
|
||||
{
|
||||
"title": "Growth and marketing",
|
||||
"description": "Measure campaign ROI by linking ad spend to actual revenue events. See which channels produce paying users, not just signups."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Revenue events are built on the same event model. Learn how events work in OpenPanel."
|
||||
},
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "Add revenue steps to conversion funnels and see where money drops off."
|
||||
},
|
||||
{
|
||||
"slug": "session-tracking",
|
||||
"title": "Session tracking",
|
||||
"description": "Link revenue to the session that produced it-see the full journey from landing page to purchase."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about tracking revenue with OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "How do I send a revenue event?",
|
||||
"answer": "Send a regular event (e.g. 'purchase_completed') with a numeric property for the amount. You can include additional properties like currency, plan, or item name. The same SDK or API you use for any other event works for revenue."
|
||||
},
|
||||
{
|
||||
"question": "Can I track recurring subscription revenue?",
|
||||
"answer": "Yes. Fire a revenue event on each renewal or billing cycle. Over time you can chart MRR trends, retention by cohort, and expansion revenue-all from events."
|
||||
},
|
||||
{
|
||||
"question": "Do I need to integrate my payment provider?",
|
||||
"answer": "No direct integration is needed. You send revenue events from your backend whenever a payment is confirmed (e.g. in a Stripe webhook handler). OpenPanel doesn't talk to Stripe-it just receives the event you send."
|
||||
},
|
||||
{
|
||||
"question": "Can I track refunds?",
|
||||
"answer": "Yes. Send a refund event with a negative amount or a separate event name (e.g. 'refund_issued'). You can then subtract refunds from gross revenue in your dashboards."
|
||||
},
|
||||
{
|
||||
"question": "Is revenue data shared with third parties?",
|
||||
"answer": "No. OpenPanel is privacy-first. Self-host to keep revenue data entirely in your infrastructure, or use our cloud where data is never shared with third parties."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Start tracking revenue",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
147
apps/public/content/features/session-tracking.json
Normal file
@@ -0,0 +1,147 @@
|
||||
{
|
||||
"slug": "session-tracking",
|
||||
"short_name": "Session tracking",
|
||||
"seo": {
|
||||
"title": "Session Tracking Without Replays - Privacy-First",
|
||||
"description": "Understand user sessions from entry to exit-without recordings or privacy risk. See pages visited, events fired, and session duration with privacy-first analytics.",
|
||||
"keywords": [
|
||||
"session tracking analytics",
|
||||
"user session tracking",
|
||||
"session analysis without replay"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "What happened in the session",
|
||||
"subheading": "Pages visited, events fired, time spent. No recordings, no privacy risk. You still get the full picture.",
|
||||
"badges": [
|
||||
"No session recordings",
|
||||
"Privacy-first by design",
|
||||
"Entry-to-exit visibility",
|
||||
"Sessions linked to events"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What is session tracking?",
|
||||
"text": "A session is the **window of activity** between a user arriving on your site and leaving. It starts with an entry page, includes every page view and event along the way, and ends when the user goes idle or closes the tab.\n\nMost analytics tools either give you **too little** (aggregated page-view counts with no sense of flow) or **too much** (full session recordings that raise privacy concerns and take hours to review). OpenPanel sits in the middle: you get a **structured timeline** of what happened in each session, without recording a single pixel of the user's screen.\n\nFor every session, OpenPanel captures:\n\n- **Entry page and exit page** - where the user started and where they left\n- **Pages visited in order** - the path through your site or app\n- **Events fired** - signups, clicks, feature usage, or any custom event\n- **Session duration** - how long the session lasted\n- **Referrer and UTM parameters** - how the user got there\n- **Device, browser, and location** - context without fingerprinting\n\nThis means you can answer questions like:\n\n- **What pages do users visit before signing up?**\n- **Do users from organic search behave differently than paid traffic?**\n- **How long are sessions for users who convert vs. those who don't?**\n\nUnlike session replay tools (Hotjar, FullStory, LogRocket), there are **no recordings to watch**, **no PII captured on screen**, and **no consent banners** needed for video replay. You get the analytical value of sessions without the privacy overhead.\n\nSessions in OpenPanel connect directly to **events and user profiles**. Every event belongs to a session, and every session belongs to a user. This means funnels, retention, and user timelines all have session context built in."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you get with session tracking",
|
||||
"intro": "Structured session data that answers real questions-without the privacy cost of recordings."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Entry and exit pages",
|
||||
"description": "See where users land and where they leave. Identify your strongest entry points and the pages that lose visitors."
|
||||
},
|
||||
{
|
||||
"title": "Page flow per session",
|
||||
"description": "View the ordered sequence of pages a user visited in a session. Understand navigation patterns without watching a recording."
|
||||
},
|
||||
{
|
||||
"title": "Events within a session",
|
||||
"description": "Every event (signup, click, purchase) is tied to a session. See exactly what a user did and in what order."
|
||||
},
|
||||
{
|
||||
"title": "Session duration and engagement",
|
||||
"description": "Measure how long sessions last and how many pages or events they include. Spot high-engagement and bounce sessions."
|
||||
},
|
||||
{
|
||||
"title": "Referrer and UTM attribution",
|
||||
"description": "Know how users arrived-organic search, paid campaign, direct link-and compare session quality across sources."
|
||||
},
|
||||
{
|
||||
"title": "Device and location context",
|
||||
"description": "Capture browser, OS, and approximate location for each session. No fingerprinting-just standard request headers."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-sessions.webp",
|
||||
"alt": "Session overview showing user sessions with entry pages and duration",
|
||||
"caption": "See session activity at a glance-entry pages, duration, and event counts."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-sessions-details.webp",
|
||||
"alt": "Session events timeline showing user actions in order",
|
||||
"caption": "Every event tied to its session. Understand user journeys without replay tools."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How session tracking works",
|
||||
"intro": "Sessions are created automatically from the events you already send.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Events create sessions",
|
||||
"description": "When a user triggers their first event (page view, click, etc.), OpenPanel starts a session. No extra tracking code needed-sessions are derived from your events."
|
||||
},
|
||||
{
|
||||
"title": "Activity is grouped automatically",
|
||||
"description": "Subsequent events from the same user are grouped into the active session. If the user goes idle (30 minutes by default), the session ends and a new one begins on the next interaction."
|
||||
},
|
||||
{
|
||||
"title": "Sessions connect to everything",
|
||||
"description": "Each session links to the user profile, the events fired, and the pages visited. This means funnels, retention, and user timelines all include session context."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "Who uses session tracking",
|
||||
"intro": "Teams that need to understand user journeys without the overhead of session replays.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Product teams",
|
||||
"description": "Understand how users navigate your product. See the page flow and events in a session to identify friction points-without watching hours of recordings."
|
||||
},
|
||||
{
|
||||
"title": "Support and success teams",
|
||||
"description": "When a user reports an issue, pull up their recent sessions to see what pages they visited and what events they triggered. Context without asking \"can you describe what you did?\""
|
||||
},
|
||||
{
|
||||
"title": "Privacy-conscious teams",
|
||||
"description": "Get session-level insights without recording user screens. No PII in screenshots, no video consent banners, no GDPR headaches from replay data."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Events are the building blocks of sessions. Track user actions that feed into session timelines."
|
||||
},
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "Combine session data with funnel analysis to see where users drop off in multi-step flows."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about session tracking with OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "How is this different from session replay tools like Hotjar or FullStory?",
|
||||
"answer": "Session replay tools record a video of the user's screen. OpenPanel doesn't record anything visual-it tracks structured data: which pages were visited, which events were triggered, and how long the session lasted. You get the analytical answers without the privacy cost or the hours spent watching recordings."
|
||||
},
|
||||
{
|
||||
"question": "Do I need to set up session tracking separately?",
|
||||
"answer": "No. Sessions are created automatically from the events and page views you already send. There's no separate session SDK or configuration step."
|
||||
},
|
||||
{
|
||||
"question": "How does OpenPanel define a session?",
|
||||
"answer": "A session starts when a user triggers their first event and ends after 30 minutes of inactivity. If the user returns after the timeout, a new session begins. This is consistent with how most analytics tools define sessions."
|
||||
},
|
||||
{
|
||||
"question": "Can I see individual user sessions?",
|
||||
"answer": "Yes. You can view a user's session history, including the pages they visited and events they triggered in each session. This is available in the user profile view."
|
||||
},
|
||||
{
|
||||
"question": "Does session tracking require cookies?",
|
||||
"answer": "No. OpenPanel can run without cookies. Sessions can be tracked using a lightweight session identifier that doesn't require cookie consent. If you enable first-party cookies, session continuity improves but it's not required."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Start tracking sessions",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
168
apps/public/content/features/share-and-collaborate.json
Normal file
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"slug": "share-and-collaborate",
|
||||
"short_name": "Share & Collaborate",
|
||||
"seo": {
|
||||
"title": "Share & Collaborate - Unlimited Members",
|
||||
"description": "Invite unlimited team members with org-wide or project-level access. Share full dashboards or individual reports - publicly or behind a password. OpenPanel makes it easy to align everyone on the same data.",
|
||||
"keywords": [
|
||||
"analytics team collaboration",
|
||||
"share dashboards",
|
||||
"analytics access control",
|
||||
"password-protected reports",
|
||||
"unlimited team members analytics",
|
||||
"project-level permissions analytics"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "Invite the team. Share the numbers.",
|
||||
"subheading": "Unlimited members, org-wide or project-level access. Share full dashboards or single reports - publicly or behind a password.",
|
||||
"badges": [
|
||||
"Unlimited members",
|
||||
"Org-wide or project-level access",
|
||||
"Share dashboards and reports",
|
||||
"Public or password-protected links"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What is share and collaborate?",
|
||||
"text": "Share and collaborate in OpenPanel is how you **get the right data to the right people** without opening the door to everything.\n\n**Unlimited members** - There’s no cap on how many people you can invite. Add your whole team, contractors, or stakeholders and manage them from a single members view.\n\n**Flexible access** - Each member can have:\n\n- **Organization-wide access** - full visibility across all projects, ideal for admins and core team\n- **Fine-grained access** - access only to specific projects you choose, so stakeholders see only what’s relevant\n\n**What you can share** - You’re not limited to \"all or nothing\" views:\n\n- **Complete dashboards** - share an entire dashboard so others see the same layout and reports you use\n- **Individual reports** - share a single report (e.g. one funnel or one retention chart) for focused updates\n\n**How you share** - Every shared dashboard or report can be:\n\n- **Publicly available** - anyone with the link can view it (handy for status pages, exec summaries, or embedded views)\n- **Password-protected** - only people with the password can open the link, so you keep sensitive data under control\n\nInviting is straightforward: add members by email, assign access (org or specific projects), and optionally share dashboards or reports with public or password-protected links. Your team stays aligned on the same numbers without compromising security or clarity."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "What you can do with share and collaborate",
|
||||
"intro": "From inviting your first teammate to sharing a report with a client - everything is built in."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Unlimited members",
|
||||
"description": "Invite as many team members as you need. No per-seat limits - add admins, analysts, and stakeholders and manage them from one place."
|
||||
},
|
||||
{
|
||||
"title": "Organization-wide or project-level access",
|
||||
"description": "Give members access to the entire organization or restrict them to specific projects. Fine-grained control keeps each person seeing only what they need."
|
||||
},
|
||||
{
|
||||
"title": "Share full dashboards",
|
||||
"description": "Share a complete dashboard so others see the same layout and reports. Perfect for weekly reviews, exec summaries, or keeping a team on the same page."
|
||||
},
|
||||
{
|
||||
"title": "Share individual reports",
|
||||
"description": "Share a single report - one funnel, one retention chart, or one breakdown - so you send exactly the view that matters without exposing the rest."
|
||||
},
|
||||
{
|
||||
"title": "Public or password-protected links",
|
||||
"description": "Shared dashboards and reports can be publicly viewable (anyone with the link) or protected with a password for sensitive or internal-only use."
|
||||
},
|
||||
{
|
||||
"title": "Invite and manage in one place",
|
||||
"description": "Invite by email, assign access, and see all members and their permissions in a clear members view. Update access or remove members anytime."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-members.webp",
|
||||
"alt": "Members list showing team members and their access levels",
|
||||
"caption": "Manage unlimited members and their access - org-wide or per project - from one place."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-dashboard-share.webp",
|
||||
"alt": "Sharing a dashboard with public or password-protected options",
|
||||
"caption": "Share full dashboards or individual reports. Choose public links or protect them with a password."
|
||||
},
|
||||
{
|
||||
"src": "/features/feature-invite-user.webp",
|
||||
"alt": "Invite a new member by email and set project access",
|
||||
"caption": "Invite new members by email and assign organization or project-level access in a few clicks."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How sharing and collaboration works",
|
||||
"intro": "Invite members, set access, then share dashboards or reports as needed.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Invite members",
|
||||
"description": "Add team members by email from the members area. They receive an invite and can sign in to OpenPanel with the access you’ve assigned."
|
||||
},
|
||||
{
|
||||
"title": "Set access level",
|
||||
"description": "Give each member organization-wide access (all projects) or fine-grained access to specific projects only. You can change this anytime."
|
||||
},
|
||||
{
|
||||
"title": "Share dashboards or reports",
|
||||
"description": "From any dashboard or report, use Share to generate a link. You can share a full dashboard or a single report."
|
||||
},
|
||||
{
|
||||
"title": "Choose public or password-protected",
|
||||
"description": "Make the link public (anyone with the link can view) or set a password so only people who have it can open the shared view."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "How teams use share and collaborate",
|
||||
"intro": "From internal alignment to client-facing reports - sharing and access control fit many workflows.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Internal team alignment",
|
||||
"description": "Invite product, growth, and support with access to the projects they need. Share a main dashboard so everyone looks at the same KPIs in meetings."
|
||||
},
|
||||
{
|
||||
"title": "Stakeholder and exec updates",
|
||||
"description": "Give execs or stakeholders limited access to specific projects and share a single report or dashboard. No need to give them the full product - just the view that matters."
|
||||
},
|
||||
{
|
||||
"title": "Client and partner reports",
|
||||
"description": "Share a dashboard or report with a client or partner via link. Use a password when the data is sensitive so only authorized people can view it."
|
||||
},
|
||||
{
|
||||
"title": "Public status or metrics pages",
|
||||
"description": "Share a dashboard publicly and embed or link it from your status page, docs, or marketing site so visitors see live metrics without signing in."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "data-visualization",
|
||||
"title": "Data visualization",
|
||||
"description": "Build the dashboards and reports you’ll share - charts, breakdowns, and custom views that stay up to date when you share them."
|
||||
},
|
||||
{
|
||||
"slug": "notifications",
|
||||
"title": "Notifications",
|
||||
"description": "Keep the team in the loop with alerts when key events happen. Complements sharing by pushing updates instead of requiring people to open a link."
|
||||
},
|
||||
{
|
||||
"slug": "integrations",
|
||||
"title": "Integrations",
|
||||
"description": "Send data to Slack, Discord, or webhooks. Use integrations for real-time alerts alongside shared dashboards for deeper exploration."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about sharing and collaboration in OpenPanel.",
|
||||
"items": [
|
||||
{
|
||||
"question": "Is there a limit on how many members I can invite?",
|
||||
"answer": "No. You can invite an unlimited number of members. Each can have organization-wide access or access only to specific projects you choose."
|
||||
},
|
||||
{
|
||||
"question": "What’s the difference between org-wide and project-level access?",
|
||||
"answer": "Org-wide access lets a member see and work with all projects in the organization. Project-level access restricts them to only the projects you assign - useful for clients, partners, or teams that only need a subset of your data."
|
||||
},
|
||||
{
|
||||
"question": "Can I share just one report instead of a whole dashboard?",
|
||||
"answer": "Yes. You can share a complete dashboard or a single report (e.g. one funnel or one chart). The shared link shows only what you chose to share."
|
||||
},
|
||||
{
|
||||
"question": "Can shared links be password-protected?",
|
||||
"answer": "Yes. When you create a share link for a dashboard or report, you can leave it public (anyone with the link can view) or set a password so only people with the password can open it."
|
||||
},
|
||||
{
|
||||
"question": "Can I change a member’s access after they’ve joined?",
|
||||
"answer": "Yes. You can update a member’s access (add or remove projects, or switch to org-wide) or remove them from the organization at any time from the members area."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Invite your team and share your first dashboard",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
181
apps/public/content/features/web-analytics.json
Normal file
@@ -0,0 +1,181 @@
|
||||
{
|
||||
"slug": "web-analytics",
|
||||
"short_name": "Web analytics",
|
||||
"seo": {
|
||||
"title": "Web Analytics That Work Out of the Box",
|
||||
"description": "Get a complete web analytics dashboard out of the box. Track visitors, sessions, pageviews, referrers, UTM campaigns, geo, devices, and more - with just one script tag.",
|
||||
"keywords": [
|
||||
"web analytics",
|
||||
"website analytics",
|
||||
"privacy-first analytics",
|
||||
"google analytics alternative",
|
||||
"website traffic analytics",
|
||||
"utm tracking",
|
||||
"referrer tracking",
|
||||
"pageview analytics"
|
||||
]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "Web analytics: One script. Full dashboard.",
|
||||
"subheading": "Add one script tag and get visitors, sessions, bounce rate, referrers, UTM campaigns, geo with maps, devices, and popular pages. No configuration needed.",
|
||||
"badges": [
|
||||
"Zero-config setup",
|
||||
"Click any value to filter",
|
||||
"UTM & referrer tracking",
|
||||
"Geo details with map"
|
||||
]
|
||||
},
|
||||
"definition": {
|
||||
"title": "What is OpenPanel web analytics?",
|
||||
"text": "OpenPanel web analytics gives you a **complete website analytics dashboard** the moment you add our tracking script. No goals to configure, no views to set up, no filters to define - everything works out of the box.\n\nHere's what you get immediately:\n\n- **Key metrics at a glance** - unique visitors, sessions, pageviews, pages per session, bounce rate, and session duration. Each metric has a sparkline showing the trend and percentage change vs. the previous period\n- **Traffic sources** - see where your visitors come from. Top referrers, search engines, social networks, and direct traffic are broken down automatically\n- **UTM campaign tracking** - every UTM parameter (source, medium, campaign, term, content) gets its own breakdown so you can measure marketing campaigns without any extra setup\n- **Popular pages, entries, and exits** - know which pages get the most views, which pages visitors land on first, and which pages they leave from\n- **Device breakdown** - browser, browser version, OS, OS version, device brand, and device model. See exactly what your visitors use\n- **Geographic details** - a country table with flags and visitor counts alongside an interactive map. Drill into regions and cities\n- **User journey** - follow the path visitors take through your site, from landing page through navigation to exit\n- **Insights** - AI-powered highlights that surface the biggest changes and anomalies in your traffic so you can act on what matters\n\nThe most powerful part: **every value in the dashboard is clickable**. See a referrer you want to investigate? Click it to filter the entire dashboard by that referrer. Curious about mobile traffic from Germany? Click the country, click the device - the whole view updates instantly. No query builder, no SQL, no waiting.\n\nOpenPanel is **privacy-first**. We don't use third-party cookies, we don't sell your data, and we don't slow down your site. You can self-host or use our cloud - your data stays yours."
|
||||
},
|
||||
"capabilities_section": {
|
||||
"title": "Everything you get out of the box",
|
||||
"intro": "Add the tracking script once. Everything below is available immediately - no configuration required."
|
||||
},
|
||||
"capabilities": [
|
||||
{
|
||||
"title": "Visitors, sessions & pageviews",
|
||||
"description": "Track unique visitors, total sessions, and pageviews with trend sparklines and period-over-period comparisons. See bounce rate, session duration, and pages per session at a glance."
|
||||
},
|
||||
{
|
||||
"title": "Click-to-filter everything",
|
||||
"description": "Every value in the dashboard is interactive. Click a referrer, country, browser, or page to instantly filter the entire view. Stack multiple filters to drill into any segment without writing queries."
|
||||
},
|
||||
{
|
||||
"title": "UTM & referrer tracking",
|
||||
"description": "Automatic breakdown by UTM source, medium, campaign, term, and content. See top referrers, search engines, and social networks - all without any tag configuration."
|
||||
},
|
||||
{
|
||||
"title": "Popular pages, entries & exits",
|
||||
"description": "Know which pages get the most traffic, which pages visitors land on, and which pages they leave from. Sort by views or sessions to find your best and worst performing content."
|
||||
},
|
||||
{
|
||||
"title": "Device details",
|
||||
"description": "Break down traffic by browser, browser version, operating system, OS version, device brand, and device model. Understand exactly what your visitors use and optimize accordingly."
|
||||
},
|
||||
{
|
||||
"title": "Geographic breakdown with map",
|
||||
"description": "See visitor counts by country with flags, and visualize traffic distribution on an interactive world map. Drill into regions and cities for local insights."
|
||||
},
|
||||
{
|
||||
"title": "User journey",
|
||||
"description": "Follow the path visitors take through your site. See the most common navigation flows from landing page to exit, and identify where users go after each page."
|
||||
},
|
||||
{
|
||||
"title": "Insights for big changes",
|
||||
"description": "Automated insights surface the most significant changes in your traffic - spikes, drops, new referrers, and trending pages. Know what changed without manually comparing time periods."
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/features/feature-overview-main.webp",
|
||||
"alt": "OpenPanel web analytics overview dashboard showing visitors, sessions, sources, and geographic data",
|
||||
"caption": "The full web analytics overview - key metrics, traffic sources, pages, devices, and geo - all from a single script tag."
|
||||
}
|
||||
],
|
||||
"how_it_works": {
|
||||
"title": "How it works",
|
||||
"intro": "From zero to full web analytics in under two minutes.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Add the tracking script",
|
||||
"description": "Paste a single script tag into your website's HTML. That's the only setup - no goals, no views, no filters to configure."
|
||||
},
|
||||
{
|
||||
"title": "Traffic flows in automatically",
|
||||
"description": "Page views, sessions, referrers, UTM parameters, device info, and geo data are captured automatically. No events to define, no properties to map."
|
||||
},
|
||||
{
|
||||
"title": "Explore by clicking",
|
||||
"description": "Open your dashboard and start clicking. Every value is a filter - click a country to see only that country's traffic, click a referrer to isolate that source. Stack filters to answer any question."
|
||||
},
|
||||
{
|
||||
"title": "Get insights without looking",
|
||||
"description": "OpenPanel's insights engine monitors your traffic and highlights the biggest changes automatically. You'll know about spikes, drops, and new trends without having to check manually."
|
||||
}
|
||||
]
|
||||
},
|
||||
"use_cases": {
|
||||
"title": "Who uses web analytics",
|
||||
"intro": "Anyone with a website who wants to understand their traffic without the complexity of enterprise tools.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Marketing teams",
|
||||
"description": "Track campaign performance with automatic UTM breakdowns. See which sources, mediums, and campaigns drive the most traffic and engagement - without configuring goals or conversions."
|
||||
},
|
||||
{
|
||||
"title": "Content creators and bloggers",
|
||||
"description": "See which pages get the most traffic, where visitors come from, and which content keeps people on your site. Popular pages, entries, and exits tell the full story."
|
||||
},
|
||||
{
|
||||
"title": "Developers and indie hackers",
|
||||
"description": "Add one script tag and forget about it. No complex setup, no tag managers, no consent banners (OpenPanel is privacy-first). Just clean, useful data about your site's traffic."
|
||||
},
|
||||
{
|
||||
"title": "Agencies managing multiple sites",
|
||||
"description": "Give each client a clear, beautiful dashboard they can understand. Click-to-filter makes it easy for non-technical stakeholders to explore their own data."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related_features": [
|
||||
{
|
||||
"slug": "event-tracking",
|
||||
"title": "Event tracking",
|
||||
"description": "Go beyond page views - track clicks, signups, purchases, and any custom action to build funnels and retention reports."
|
||||
},
|
||||
{
|
||||
"slug": "session-tracking",
|
||||
"title": "Session tracking",
|
||||
"description": "Understand how users navigate your site within a session. See entry pages, exit pages, and the full session timeline."
|
||||
},
|
||||
{
|
||||
"slug": "funnels",
|
||||
"title": "Funnels",
|
||||
"description": "Define multi-step flows and see where visitors drop off. Combine web analytics data with custom events for full-picture conversion analysis."
|
||||
},
|
||||
{
|
||||
"slug": "data-visualization",
|
||||
"title": "Data visualization",
|
||||
"description": "Build custom charts and dashboards from any metric in your web analytics data."
|
||||
}
|
||||
],
|
||||
"faqs": {
|
||||
"title": "Frequently asked questions",
|
||||
"intro": "Common questions about OpenPanel web analytics.",
|
||||
"items": [
|
||||
{
|
||||
"question": "What do I need to set up?",
|
||||
"answer": "Just add our tracking script to your website. That's it. Page views, sessions, referrers, UTMs, device data, and geo are all captured automatically. There are no goals to configure, no views to create, and no filters to define."
|
||||
},
|
||||
{
|
||||
"question": "How is this different from Google Analytics?",
|
||||
"answer": "Google Analytics requires significant configuration - goals, views, filters, consent banners, and a steep learning curve. OpenPanel gives you a complete, beautiful dashboard from a single script tag. Everything is clickable, privacy-first, and works without cookies. You can self-host it or use our cloud."
|
||||
},
|
||||
{
|
||||
"question": "Do I need a cookie consent banner?",
|
||||
"answer": "No. OpenPanel is designed to be privacy-first. We don't use third-party cookies and we don't track personal data. Many teams run OpenPanel without any consent banner at all. Check your local regulations, but in most cases you're covered."
|
||||
},
|
||||
{
|
||||
"question": "Can I filter by multiple properties at once?",
|
||||
"answer": "Yes. Click any value to filter the dashboard - then click another value to add a second filter. You can stack as many filters as you want. For example, click a country, then a browser, then a referrer to see exactly that slice of traffic."
|
||||
},
|
||||
{
|
||||
"question": "What UTM parameters are supported?",
|
||||
"answer": "All five standard UTM parameters: source, medium, campaign, term, and content. They're captured automatically from the URL - no extra configuration needed. Each parameter gets its own breakdown in the dashboard."
|
||||
},
|
||||
{
|
||||
"question": "Does the tracking script slow down my site?",
|
||||
"answer": "No. The OpenPanel script is lightweight (under 5 KB) and loads asynchronously. It won't block rendering or affect your Core Web Vitals scores."
|
||||
},
|
||||
{
|
||||
"question": "What geographic data is available?",
|
||||
"answer": "You get country-level breakdown with flags, an interactive world map, and the ability to drill into regions and cities. All geo data is derived from the visitor's IP at ingestion time - nothing is stored or sent to third parties."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cta": {
|
||||
"label": "Add analytics in 2 minutes",
|
||||
"href": "/onboarding"
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ description: "Track product views, cart activity, and purchases with OpenPanel t
|
||||
difficulty: intermediate
|
||||
timeToComplete: 10
|
||||
date: 2025-12-15
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -19,7 +20,7 @@ steps:
|
||||
|
||||
# How to track e-commerce events and revenue
|
||||
|
||||
E-commerce tracking gives you visibility into how users interact with your products and what drives purchases. By the end of this guide, you'll have product views, cart events, and revenue tracking working in your store.
|
||||
E-commerce tracking gives you visibility into how users interact with your products and what drives purchases. By the end of this guide, you'll have product views, cart events, and [revenue tracking](/features/revenue-tracking) working in your store.
|
||||
|
||||
OpenPanel tracks revenue using a dedicated `revenue()` method that links payments to visitor sessions. This lets you see which traffic sources, campaigns, and pages generate the most revenue. You can track from your frontend for quick setup, or from your backend via webhooks for more accurate data.
|
||||
|
||||
@@ -177,7 +178,7 @@ If events aren't appearing, check that your Client ID is correct and that ad blo
|
||||
|
||||
## Next steps
|
||||
|
||||
Once you have basic e-commerce tracking working, you can build purchase funnels to visualize conversion rates at each step. The [revenue tracking documentation](/docs/revenue-tracking) covers advanced patterns like subscription tracking and refunds. For a deeper understanding of attribution, read about how OpenPanel's [cookieless tracking](/articles/cookieless-analytics) works.
|
||||
Once you have basic e-commerce tracking working, you can build purchase [funnels](/features/funnels) to visualize [conversion rates](/features/conversion) at each step. The [revenue tracking documentation](/docs/revenue-tracking) covers advanced patterns like subscription tracking and refunds. For a deeper understanding of attribution, read about how OpenPanel's [cookieless tracking](/articles/cookieless-analytics) works.
|
||||
|
||||
To learn more about tracking custom events in general, check out the [track custom events guide](/guides/track-custom-events) which covers event structure, properties, and common patterns.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Add server-side analytics to your Express application with OpenPan
|
||||
difficulty: beginner
|
||||
timeToComplete: 8
|
||||
date: 2025-12-15
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -21,7 +22,7 @@ steps:
|
||||
|
||||
# How to add analytics to Express
|
||||
|
||||
Server-side analytics gives you reliable event tracking that cannot be blocked by ad blockers or browser extensions. The OpenPanel Express middleware wraps the JavaScript SDK and attaches it to every request, making it simple to track events throughout your application.
|
||||
Server-side analytics gives you reliable [event tracking](/features/event-tracking) that cannot be blocked by ad blockers or browser extensions. The OpenPanel Express middleware wraps the JavaScript SDK and attaches it to every request, making it simple to track events throughout your application.
|
||||
|
||||
OpenPanel is an open-source alternative to Mixpanel and Amplitude. You get powerful analytics with full control over your data, and you can [self-host](/articles/how-to-self-host-openpanel) if privacy requirements demand it.
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ type: guide
|
||||
difficulty: intermediate
|
||||
timeToComplete: 10
|
||||
date: 2025-12-15
|
||||
updated: 2026-02-07
|
||||
lastUpdated: 2025-12-15
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -24,7 +25,7 @@ steps:
|
||||
|
||||
# How to add analytics to Android apps
|
||||
|
||||
This guide walks you through adding OpenPanel analytics to an Android application using the Kotlin SDK. You'll learn how to track events, identify users, and monitor screen views across your app.
|
||||
This guide walks you through adding OpenPanel analytics to an Android application using the Kotlin SDK. You'll learn how to track events, [identify users](/features/identify-users), and monitor screen views across your app.
|
||||
|
||||
OpenPanel works well for Android apps because it provides a lightweight, privacy-focused SDK that handles offline queuing and automatic system information collection. Unlike web SDKs, native apps require a client secret for authentication since CORS headers aren't available.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Switch from Google Analytics to OpenPanel in under an hour. Learn
|
||||
difficulty: intermediate
|
||||
timeToComplete: 45
|
||||
date: 2025-12-15
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -58,7 +59,7 @@ For projects using a build system, you can also install the npm package with `np
|
||||
|
||||
## Map your GA4 events [#map-events]
|
||||
|
||||
OpenPanel uses a `track()` API that closely mirrors GA4's event structure. Most of your existing event tracking can be migrated with minimal changes.
|
||||
OpenPanel uses a `track()` API that closely mirrors GA4's event structure. Most of your existing [event tracking](/features/event-tracking) can be migrated with minimal changes.
|
||||
|
||||
### Page views
|
||||
|
||||
@@ -95,7 +96,7 @@ The event name and properties carry over directly. OpenPanel doesn't have the re
|
||||
|
||||
### User identification
|
||||
|
||||
GA4 uses `set user_properties` for user identification, while OpenPanel uses a dedicated `identify` method. This gives you richer user profiles and session history.
|
||||
GA4 uses `set user_properties` for [user identification](/features/identify-users), while OpenPanel uses a dedicated `identify` method. This gives you richer user profiles and session history.
|
||||
|
||||
```js
|
||||
window.op('identify', {
|
||||
@@ -199,7 +200,7 @@ Since OpenPanel doesn't use cookies by default, you may be able to remove your c
|
||||
|
||||
Moving from GA4 to OpenPanel means gaining some things and losing others. You'll get privacy-first tracking without cookies, full ownership of your data (especially if you [self-host](/articles/how-to-self-host-openpanel)), and a simpler interface for day-to-day analytics.
|
||||
|
||||
On the other hand, you won't be able to import historical data from GA4 since Google doesn't provide an easy export mechanism. If you rely heavily on Google Ads conversion tracking, you'll need to either keep GA4 running for that specific use case or use Google Ads' standalone conversion tracking pixel.
|
||||
On the other hand, you won't be able to import historical data from GA4 since Google doesn't provide an easy export mechanism. If you rely heavily on Google Ads [conversion tracking](/features/conversion), you'll need to either keep GA4 running for that specific use case or use Google Ads' standalone conversion tracking pixel.
|
||||
|
||||
GA4's attribution modeling is more sophisticated than OpenPanel's, so if you depend on multi-touch attribution for ad spend optimization, consider your requirements carefully before fully migrating.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Switch from Mixpanel to OpenPanel in under 2 hours with this step-
|
||||
difficulty: intermediate
|
||||
timeToComplete: 90
|
||||
date: 2025-12-15
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -73,7 +74,7 @@ If you're using Next.js, there's a dedicated package that handles both client an
|
||||
|
||||
OpenPanel's API follows similar patterns to Mixpanel, with a few naming convention differences. Mixpanel uses Title Case for events and properties, while OpenPanel uses snake_case.
|
||||
|
||||
Here's how basic event tracking translates. In Mixpanel, you might track a button click like this:
|
||||
Here's how basic [event tracking](/features/event-tracking) translates. In Mixpanel, you might track a button click like this:
|
||||
|
||||
```js
|
||||
mixpanel.track('Button Clicked', {
|
||||
@@ -91,7 +92,7 @@ op.track('button_clicked', {
|
||||
});
|
||||
```
|
||||
|
||||
User identification works similarly, but OpenPanel uses a structured object instead of separate method calls. Mixpanel's pattern splits identify and people.set:
|
||||
[User identification](/features/identify-users) works similarly, but OpenPanel uses a structured object instead of separate method calls. Mixpanel's pattern splits identify and people.set:
|
||||
|
||||
```js
|
||||
mixpanel.identify('user_123');
|
||||
@@ -198,7 +199,7 @@ function trackEvent(eventName, properties) {
|
||||
trackEvent('button_clicked', { button_name: 'Sign Up' });
|
||||
```
|
||||
|
||||
After a week, compare Mixpanel's Live View with OpenPanel's real-time dashboard. Check that event counts are close (they won't be exact due to timing differences), user profiles are being created correctly, and any funnels you've set up show similar conversion rates.
|
||||
After a week, compare Mixpanel's Live View with OpenPanel's real-time dashboard. Check that event counts are close (they won't be exact due to timing differences), user profiles are being created correctly, and any [funnels](/features/funnels) you've set up show similar [conversion rates](/features/conversion).
|
||||
|
||||
## Remove Mixpanel [#remove]
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Add privacy-first analytics to your Next.js app in under 5 minutes
|
||||
difficulty: beginner
|
||||
timeToComplete: 8
|
||||
date: 2025-12-15
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -21,7 +22,7 @@ steps:
|
||||
|
||||
# How to add analytics to Next.js
|
||||
|
||||
This guide walks you through adding OpenPanel to a Next.js application. By the end, you'll have automatic page view tracking, custom event tracking, and user identification working in your app.
|
||||
This guide walks you through adding OpenPanel to a Next.js application. By the end, you'll have automatic page view tracking, custom [event tracking](/features/event-tracking), and [user identification](/features/identify-users) working in your app.
|
||||
|
||||
OpenPanel works with both the App Router and Pages Router. It uses cookieless tracking by default, so you won't need cookie consent banners for basic analytics. If you're looking for a privacy-focused alternative to Mixpanel or Google Analytics, this is a straightforward setup.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Add server-side analytics to your Node.js application. Track event
|
||||
difficulty: beginner
|
||||
timeToComplete: 7
|
||||
date: 2025-12-14
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -145,7 +146,7 @@ export async function sendEmailJob(userId, emailData) {
|
||||
|
||||
## Step 4: Identify users
|
||||
|
||||
To identify users and track their behavior:
|
||||
To [identify users](/features/identify-users) and track their behavior:
|
||||
|
||||
```js title="routes/api/login.js"
|
||||
import { op } from '@/lib/op';
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Add privacy-first analytics to your Nuxt app in under 5 minutes wi
|
||||
difficulty: beginner
|
||||
timeToComplete: 5
|
||||
date: 2025-01-07
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -131,7 +132,7 @@ $openpanel.track('my_event', { foo: 'bar' });
|
||||
|
||||
### Track form submissions
|
||||
|
||||
Form tracking helps you understand conversion rates and identify where users drop off.
|
||||
Form tracking helps you understand [conversion rates](/features/conversion) and identify where users drop off.
|
||||
|
||||
```vue title="components/ContactForm.vue"
|
||||
<script setup>
|
||||
|
||||
@@ -5,6 +5,7 @@ type: guide
|
||||
difficulty: beginner
|
||||
timeToComplete: 7
|
||||
date: 2025-12-15
|
||||
updated: 2026-02-07
|
||||
lastUpdated: 2025-12-15
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -22,7 +23,7 @@ steps:
|
||||
|
||||
# How to add analytics to Python
|
||||
|
||||
This guide walks you through adding server-side analytics to any Python application. You'll install the OpenPanel SDK, configure it with your credentials, track custom events, and identify users.
|
||||
This guide walks you through adding server-side analytics to any Python application. You'll install the OpenPanel SDK, configure it with your credentials, track custom events, and [identify users](/features/identify-users).
|
||||
|
||||
Server-side tracking gives you complete control over what data you collect and ensures events are never blocked by browser extensions or ad blockers. The Python SDK works with Django, Flask, FastAPI, and any other Python framework or script.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Add privacy-first analytics to your React application with OpenPan
|
||||
difficulty: beginner
|
||||
timeToComplete: 8
|
||||
date: 2025-12-14
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -21,7 +22,7 @@ steps:
|
||||
anchor: "verify"
|
||||
---
|
||||
|
||||
Adding analytics to your React application helps you understand how users interact with your app. OpenPanel's Web SDK works seamlessly with React and React Router, giving you page view tracking, custom events, and user identification without the complexity of dedicated React bindings.
|
||||
Adding analytics to your React application helps you understand how users interact with your app. OpenPanel's Web SDK works seamlessly with React and React Router, giving you page view tracking, custom events, and [user identification](/features/identify-users) without the complexity of dedicated React bindings.
|
||||
|
||||
OpenPanel is an open-source alternative to Mixpanel and Google Analytics. It provides powerful insights while respecting user privacy through cookieless tracking by default.
|
||||
|
||||
@@ -151,7 +152,7 @@ export function SignupButton() {
|
||||
|
||||
### Track form submissions
|
||||
|
||||
Form tracking helps you understand conversion rates and identify where users drop off.
|
||||
Form tracking helps you understand [conversion rates](/features/conversion) and identify where users drop off.
|
||||
|
||||
```tsx title="src/components/ContactForm.tsx"
|
||||
import { useState } from 'react';
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Add privacy-first analytics to your Remix application with OpenPan
|
||||
difficulty: beginner
|
||||
timeToComplete: 8
|
||||
date: 2025-12-14
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -21,7 +22,7 @@ steps:
|
||||
anchor: "verify"
|
||||
---
|
||||
|
||||
Adding analytics to your Remix application helps you understand how users interact with your app. OpenPanel's Web SDK works seamlessly with Remix's client-side navigation, providing automatic page view tracking, custom events, and user identification.
|
||||
Adding analytics to your Remix application helps you understand how users interact with your app. OpenPanel's Web SDK works seamlessly with Remix's client-side navigation, providing automatic page view tracking, custom events, and [user identification](/features/identify-users).
|
||||
|
||||
OpenPanel is an open-source alternative to Mixpanel and Google Analytics. It delivers powerful insights while respecting user privacy through cookieless tracking by default.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Add privacy-first analytics to your iOS, macOS, tvOS, and watchOS
|
||||
difficulty: beginner
|
||||
timeToComplete: 10
|
||||
date: 2025-12-15
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -24,7 +25,7 @@ steps:
|
||||
|
||||
## Introduction
|
||||
|
||||
Understanding how users interact with your native Apple apps requires solid analytics. OpenPanel's Swift SDK gives you event tracking, user identification, and screen view analytics across iOS, macOS, tvOS, and watchOS platforms.
|
||||
Understanding how users interact with your native Apple apps requires solid analytics. OpenPanel's Swift SDK gives you [event tracking](/features/event-tracking), [user identification](/features/identify-users), and screen view analytics across iOS, macOS, tvOS, and watchOS platforms.
|
||||
|
||||
Since native apps can't rely on CORS headers for authentication like web apps do, the Swift SDK uses a client secret for secure server-side authentication. This makes it suitable for production apps where you need reliable, privacy-respecting analytics. OpenPanel is an open-source alternative to Mixpanel and Amplitude that you can self-host for complete data ownership.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Learn how to track custom events like button clicks, form submissi
|
||||
difficulty: beginner
|
||||
timeToComplete: 5
|
||||
date: 2025-12-15
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -23,7 +24,7 @@ steps:
|
||||
|
||||
Custom events are the foundation of product analytics. They let you track specific user actions like button clicks, form submissions, video plays, and purchases. This guide walks you through tracking custom events in OpenPanel across different platforms.
|
||||
|
||||
OpenPanel provides a consistent API for event tracking across all SDKs. Once you understand the pattern, you can apply it to any integration.
|
||||
OpenPanel provides a consistent API for [event tracking](/features/event-tracking) across all SDKs. Once you understand the pattern, you can apply it to any integration.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -199,7 +200,7 @@ If events aren't showing up, check that your Client ID is correct and that the S
|
||||
|
||||
## Next steps
|
||||
|
||||
Now that you're tracking custom events, you can identify users to connect events to specific people. For analyzing your event data, the [funnel analysis guide](/articles/how-to-create-a-funnel) shows you how to measure conversion rates across multi-step flows. You can also explore the [SDK documentation](/docs/sdks/web) for advanced features like global properties and event filtering.
|
||||
Now that you're tracking custom events, you can [identify users](/features/identify-users) to connect events to specific people. For analyzing your event data, the [funnel analysis guide](/articles/how-to-create-a-funnel) shows you how to measure [conversion rates](/features/conversion) across multi-step flows. You can also explore the [SDK documentation](/docs/sdks/web) for advanced features like global properties and event filtering.
|
||||
|
||||
For framework-specific examples and setup instructions, check out:
|
||||
- [Next.js analytics guide](/guides/nextjs-analytics) for Next.js applications
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Add privacy-first analytics to your Vue application with OpenPanel
|
||||
difficulty: beginner
|
||||
timeToComplete: 8
|
||||
date: 2025-12-14
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -21,7 +22,7 @@ steps:
|
||||
anchor: "verify"
|
||||
---
|
||||
|
||||
Adding analytics to your Vue application helps you understand how users interact with your app. OpenPanel's Web SDK integrates smoothly with Vue 3 and Vue Router, providing automatic page view tracking, custom events, and user identification without requiring Vue-specific bindings.
|
||||
Adding analytics to your Vue application helps you understand how users interact with your app. OpenPanel's Web SDK integrates smoothly with Vue 3 and Vue Router, providing automatic page view tracking, custom events, and [user identification](/features/identify-users) without requiring Vue-specific bindings.
|
||||
|
||||
OpenPanel is an open-source alternative to Mixpanel and Google Analytics. It delivers powerful insights while respecting user privacy through cookieless tracking by default.
|
||||
|
||||
@@ -184,7 +185,7 @@ export default {
|
||||
|
||||
### Track form submissions
|
||||
|
||||
Form tracking helps you understand conversion rates and identify where users drop off.
|
||||
Form tracking helps you understand [conversion rates](/features/conversion) and identify where users drop off.
|
||||
|
||||
```vue title="src/components/ContactForm.vue"
|
||||
<template>
|
||||
|
||||
@@ -4,6 +4,7 @@ description: "Add privacy-first analytics to any website in minutes using a simp
|
||||
difficulty: beginner
|
||||
timeToComplete: 5
|
||||
date: 2025-12-14
|
||||
updated: 2026-02-07
|
||||
cover: /content/cover-default.jpg
|
||||
team: OpenPanel Team
|
||||
steps:
|
||||
@@ -149,7 +150,7 @@ Ad blockers can interfere with analytics scripts. If this is a concern for your
|
||||
|
||||
## Next steps
|
||||
|
||||
The script tag covers most tracking needs for traditional websites. For more advanced configuration options, check out the [Script Tag SDK reference](/docs/sdks/script). If you want to understand user journeys better, the article on [how to create a funnel](/articles/how-to-create-a-funnel) walks through setting up conversion funnels.
|
||||
The script tag covers most tracking needs for traditional websites. For more advanced configuration options, check out the [Script Tag SDK reference](/docs/sdks/script). If you want to understand user journeys better, the article on [how to create a funnel](/articles/how-to-create-a-funnel) walks through setting up [conversion funnels](/features/funnels).
|
||||
|
||||
For sites with backend logic or server-side rendering, you might want to combine client-side tracking with server-side events. The [Node.js guide](/guides/nodejs-analytics) and [Python guide](/guides/python-analytics) cover those use cases.
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ I've worked with different analytics tools for over 5 years, and I've seen it al
|
||||
|
||||
### Product analytics
|
||||
|
||||
Mixpanel is a solid analytics tool - it's easy to create reports and has tons of features. But I was only using a small part of it. I wanted a simple way to see my custom events, build funnels, and understand user retention.
|
||||
Mixpanel is a solid analytics tool - it's easy to create reports and has tons of features. But I was only using a small part of it. I wanted a simple way to see my custom events, build [funnels](/features/funnels), and understand [user retention](/features/retention).
|
||||
|
||||
The problem? I was paying $300/month for features I barely used. Their pricing model didn't make sense for startups and smaller teams who just need the essentials done well.
|
||||
|
||||
@@ -38,7 +38,7 @@ That's why I built OpenPanel - an open-source analytics platform that combines t
|
||||
- **Funnels & retention** - understand how users move through your product
|
||||
- **User profiles & sessions** - see what individual users are doing
|
||||
- **A/B testing** - built-in variant testing with detailed breakdowns
|
||||
- **Revenue tracking** - monitor purchases and subscriptions
|
||||
- **[Revenue tracking](/features/revenue-tracking)** - monitor purchases and subscriptions
|
||||
- **Smart notifications** - get alerts when important events happen
|
||||
- **Custom dashboards** - build reports that make sense for your needs
|
||||
- **Mobile-friendly** - check your stats from anywhere
|
||||
|
||||
BIN
apps/public/public/features/feature-conversion-breakdown.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
apps/public/public/features/feature-conversion-breakdown.webp
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
apps/public/public/features/feature-conversion.png
Normal file
|
After Width: | Height: | Size: 916 KiB |
BIN
apps/public/public/features/feature-conversion.webp
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
apps/public/public/features/feature-dashboard-locked.png
Normal file
|
After Width: | Height: | Size: 502 KiB |
BIN
apps/public/public/features/feature-dashboard-locked.webp
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
apps/public/public/features/feature-dashboard-share.png
Normal file
|
After Width: | Height: | Size: 918 KiB |
BIN
apps/public/public/features/feature-dashboard-share.webp
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
apps/public/public/features/feature-data-vis-bar.png
Normal file
|
After Width: | Height: | Size: 987 KiB |
BIN
apps/public/public/features/feature-data-vis-bar.webp
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
apps/public/public/features/feature-data-vis-dashboard.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
apps/public/public/features/feature-data-vis-dashboard.webp
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
apps/public/public/features/feature-data-vis-line.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
apps/public/public/features/feature-data-vis-line.webp
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
apps/public/public/features/feature-events-details.webp
Normal file
|
After Width: | Height: | Size: 338 KiB |
BIN
apps/public/public/features/feature-events-list.webp
Normal file
|
After Width: | Height: | Size: 484 KiB |
BIN
apps/public/public/features/feature-events-stats.webp
Normal file
|
After Width: | Height: | Size: 314 KiB |
BIN
apps/public/public/features/feature-funnel-completed.webp
Normal file
|
After Width: | Height: | Size: 302 KiB |
BIN
apps/public/public/features/feature-funnel-pick-events.webp
Normal file
|
After Width: | Height: | Size: 224 KiB |
BIN
apps/public/public/features/feature-funnel-report.webp
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
apps/public/public/features/feature-integrations-create.png
Normal file
|
After Width: | Height: | Size: 839 KiB |
BIN
apps/public/public/features/feature-integrations-create.webp
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
apps/public/public/features/feature-integrations.png
Normal file
|
After Width: | Height: | Size: 663 KiB |
BIN
apps/public/public/features/feature-integrations.webp
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
apps/public/public/features/feature-invite-user.png
Normal file
|
After Width: | Height: | Size: 697 KiB |
BIN
apps/public/public/features/feature-invite-user.webp
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
apps/public/public/features/feature-members.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
apps/public/public/features/feature-members.webp
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
apps/public/public/features/feature-notifications-rule.png
Normal file
|
After Width: | Height: | Size: 834 KiB |
BIN
apps/public/public/features/feature-notifications-rule.webp
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
apps/public/public/features/feature-notifications.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
apps/public/public/features/feature-notifications.webp
Normal file
|
After Width: | Height: | Size: 189 KiB |
BIN
apps/public/public/features/feature-overview-main.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
apps/public/public/features/feature-overview-main.webp
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
apps/public/public/features/feature-overview-referrers.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
apps/public/public/features/feature-overview-referrers.webp
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
apps/public/public/features/feature-overview-sankey.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
apps/public/public/features/feature-overview-sankey.webp
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
apps/public/public/features/feature-profiles-details.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
apps/public/public/features/feature-profiles-details.webp
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
apps/public/public/features/feature-profiles-events.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
apps/public/public/features/feature-profiles-events.webp
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
apps/public/public/features/feature-profiles-power-users.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
apps/public/public/features/feature-profiles-power-users.webp
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
apps/public/public/features/feature-retention.png
Normal file
|
After Width: | Height: | Size: 980 KiB |
BIN
apps/public/public/features/feature-retention.webp
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
apps/public/public/features/feature-revenue-1.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
apps/public/public/features/feature-revenue-1.webp
Normal file
|
After Width: | Height: | Size: 130 KiB |