diff --git a/apps/public/content/articles/alternatives-to-mixpanel.mdx b/apps/public/content/articles/alternatives-to-mixpanel.mdx index 478431ea..f79630fd 100644 --- a/apps/public/content/articles/alternatives-to-mixpanel.mdx +++ b/apps/public/content/articles/alternatives-to-mixpanel.mdx @@ -2,6 +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 team: OpenPanel Team tag: Comparison cover: /content/cover-alternatives.jpg @@ -42,6 +43,8 @@ Its dashboard shows real-time data clearly, helping teams make better decisions. Mixpanel remains a strong player in analytics, helping businesses improve their online presence. +> See our detailed comparison: [OpenPanel vs Mixpanel](/compare/mixpanel-alternative) + ## Limitations of Mixpanel Despite its strengths, Mixpanel has several problems users need to deal with. @@ -177,4 +180,8 @@ With new privacy laws like GDPR and CCPA, companies are finding new ways to get **Quick data updates** Getting data quickly helps businesses make faster, better decisions. -By using these new tools, businesses can better understand their users and do better online. \ No newline at end of file +By using these new tools, businesses can better understand their users and do better online. + +## Related Articles + +Looking for more options? Read our comprehensive guide on [9 best open source web analytics tools](/articles/open-source-web-analytics). \ No newline at end of file diff --git a/apps/public/content/articles/cookieless-analytics.mdx b/apps/public/content/articles/cookieless-analytics.mdx index 9d1cf4d8..5c173514 100644 --- a/apps/public/content/articles/cookieless-analytics.mdx +++ b/apps/public/content/articles/cookieless-analytics.mdx @@ -4,6 +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 cover: /content/cookieless-analytics.jpg --- @@ -58,6 +59,8 @@ When you rely on your own data sources: We built OpenPanel from the ground up with privacy at its heart—and with features you actually need: +> See how OpenPanel compares to other cookieless analytics tools: [OpenPanel vs Plausible](/compare/plausible-alternative) | [OpenPanel vs Fathom](/compare/fathom-alternative) + ### Privacy by Default * **Zero cookies.** Ever. diff --git a/apps/public/content/articles/how-to-self-host-openpanel.mdx b/apps/public/content/articles/how-to-self-host-openpanel.mdx index c709130c..018e8eef 100644 --- a/apps/public/content/articles/how-to-self-host-openpanel.mdx +++ b/apps/public/content/articles/how-to-self-host-openpanel.mdx @@ -2,6 +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 cover: /content/how-to-self-host-openpanel.jpg tag: Guide team: OpenPanel Team @@ -23,6 +24,8 @@ cd openpanel/self-hosting 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. +For a comparison of all open source analytics platforms, see our [comprehensive guide to open source web analytics tools](/articles/open-source-web-analytics). + ### Cost Benefits Self-hosting your own web analytics solution is typically much more cost-effective than cloud-based alternatives, especially as your traffic grows. This is one of the primary reasons organizations choose to self-host their analytics. diff --git a/apps/public/content/articles/introduction-to-openpanel.mdx b/apps/public/content/articles/introduction-to-openpanel.mdx index 301eb295..1d08f481 100644 --- a/apps/public/content/articles/introduction-to-openpanel.mdx +++ b/apps/public/content/articles/introduction-to-openpanel.mdx @@ -4,6 +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 --- 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. @@ -16,6 +17,8 @@ At OpenPanel, we are committed to the principles of open-source software. By mak 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. +For a detailed comparison with other tools, see our guide on [open source web analytics](/articles/open-source-web-analytics). + ## What Can You Do with OpenPanel? OpenPanel is a versatile analytics platform that offers a wide array of features to meet your data analysis needs: diff --git a/apps/public/content/articles/open-source-web-analytics.mdx b/apps/public/content/articles/open-source-web-analytics.mdx index 9b61e147..3133b002 100644 --- a/apps/public/content/articles/open-source-web-analytics.mdx +++ b/apps/public/content/articles/open-source-web-analytics.mdx @@ -2,6 +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 cover: /content/cover-best-web-analytics.jpg tag: Comparison team: OpenPanel Team @@ -102,6 +103,8 @@ Yes. OpenPanel Cloud starts with a 30-day free trial, then switches to usage-bas caption="PostHog" /> +> See our detailed comparison: [OpenPanel vs PostHog](/compare/posthog-alternative) + ### Summary PostHog is an open-source platform for product analytics. You can track events, watch session replays, roll out feature flags, run A/B tests, track errors, send surveys, and more—all in one place. You can self-host it or use their cloud service. All users get a generous free tier every month. @@ -162,6 +165,8 @@ Yes. PostHog Cloud offers a free tier (1 M events, 5 k recordings, 1 M flag API caption="Plausible" /> +> See our detailed comparison: [OpenPanel vs Plausible](/compare/plausible-alternative) + ### Summary Plausible is an open-source, privacy-friendly web analytics tool. It tracks pageviews and custom events without cookies or personal data. You get real-time reports, goals, custom events, email or Slack reports, and GDPR/CCPA compliance. You can self-host for free or use their cloud service. @@ -225,6 +230,8 @@ Yes. Plausible Cloud starts at \$9/month for 10 k page-views with simple, traffi caption="Matomo" /> +> See our detailed comparison: [OpenPanel vs Matomo](/compare/matomo-alternative) + ### Summary Matomo (formerly Piwik) is an open-source web analytics platform. You can track web and mobile visits, build charts, create dashboards, set goals, run A/B tests, record sessions, view heatmaps, and more. You own all your data and can choose to self-host for free or use Matomo Cloud for hosting and support. @@ -287,6 +294,8 @@ Yes. Matomo Cloud charges by "hits per month" and unlocks all paid add-ons out-o caption="Fathom" /> +> See our detailed comparison: [OpenPanel vs Fathom](/compare/fathom-alternative) + ### Summary Fathom is a simple, privacy-focused web analytics tool. It tracks pageviews and events without cookies or personal data. You get real-time reports, unlimited data retention, unlimited sites, and simple dashboards. You can use Fathom's hosted service with a free trial or self-host with their Docker image (self-hosting requires a license). @@ -350,6 +359,8 @@ Fathom is a hosted, proprietary analytics service with simple, tiered pricing. O caption="Umami" /> +> See our detailed comparison: [OpenPanel vs Umami](/compare/umami-alternative) + ### Summary Umami is an open-source, privacy-friendly web analytics tool. It tracks pageviews and basic events without cookies or personal data. The lightweight script (~2 KB) loads fast and is GDPR/CCPA compliant by default. You can self-host it for free or use Umami Cloud with usage-based pricing. @@ -416,6 +427,8 @@ Yes. Umami Cloud lets you track up to 100 k events each month for free, then bil caption="Ackee" /> +> See our detailed comparison: [OpenPanel vs Ackee](/compare/ackee-alternative) + ### Summary Ackee is an open-source, self-hosted web analytics tool that focuses on privacy and simplicity. It runs on your own server with Node.js and MongoDB, tracks pageviews and custom events without cookies or personal data, and presents stats in a minimal interface. It uses a GraphQL API and keeps all tracked data anonymized by default. @@ -466,6 +479,8 @@ Ackee is a self-hosted, minimal web analytics tool that tracks pageviews and bas caption="Pirsch" /> +> See our detailed comparison: [OpenPanel vs Pirsch](/compare/pirsch-analytics-alternative) + ### Summary Pirsch is a drop-in, server-side, no-cookie, privacy-focused web analytics solution built in Go. It generates anonymized visitor fingerprints, works even with ad blockers, and is GDPR, CCPA, and PECR compliant. You can use the hosted SaaS offering or self-host under an enterprise license. diff --git a/apps/public/content/articles/self-hosted-web-analytics.mdx b/apps/public/content/articles/self-hosted-web-analytics.mdx index 3d86b3e4..d4bb45e6 100644 --- a/apps/public/content/articles/self-hosted-web-analytics.mdx +++ b/apps/public/content/articles/self-hosted-web-analytics.mdx @@ -4,6 +4,7 @@ description: Self-host your web analytics on your own infrastructure. tag: Hosting team: OpenPanel Team date: 2024-11-14 +updated: 2025-12-02 cover: /content/self-hosted-analytics.jpg --- @@ -70,10 +71,13 @@ We're of course biased, but we think OpenPanel is the best self-hosted analytics So depending on your needs you might consider what you choose. -- **Plausible** - Simple and privacy focused +- **Plausible** - Simple and privacy focused ([compare with OpenPanel](/compare/plausible-alternative)) - **Simple Analytics** - Simple and privacy focused -- **Fathom** - Simple and privacy focused +- **Fathom** - Simple and privacy focused ([compare with OpenPanel](/compare/fathom-alternative)) - **OpenPanel** - Best of both worlds, easy to use and privacy focused +- **Umami** - Lightweight and privacy focused ([compare with OpenPanel](/compare/umami-alternative)) + +For a detailed comparison of all options, see our guide on the [best open source web analytics tools](/articles/open-source-web-analytics). Each of these platforms has guides how to set up on your own server, here is ours: [How to install OpenPanel on your own server](/docs/self-hosting/self-hosting) diff --git a/apps/public/content/articles/vs-mixpanel.mdx b/apps/public/content/articles/vs-mixpanel.mdx index b99815ad..64872f0b 100644 --- a/apps/public/content/articles/vs-mixpanel.mdx +++ b/apps/public/content/articles/vs-mixpanel.mdx @@ -2,6 +2,7 @@ title: Mixpanel vs OpenPanel description: A comparison between Mixpanel and OpenPanel date: 2024-11-13 +updated: 2025-12-02 tag: Comparison team: OpenPanel Team cover: /content/cover-mixpanel.jpg @@ -10,6 +11,8 @@ import { Figure } from "@/components/figure"; OpenPanel is based on the same principles as Mixpanel, but with a few key differences. We'll go through some of the features and see how they compare. +> See our detailed comparison: [OpenPanel vs Mixpanel](/compare/mixpanel-alternative) + ## 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. @@ -100,4 +103,6 @@ You get new events in realtime in both Mixpanel and OpenPanel, you can search an 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. -**OpenPanel is a great alternative to Mixpanel** if you want to get started with analytics quickly and easily. \ No newline at end of file +**OpenPanel is a great alternative to Mixpanel** if you want to get started with analytics quickly and easily. + +Looking for more options? Check out our guide on [9 best open source web analytics tools](/articles/open-source-web-analytics) for a comprehensive comparison. \ No newline at end of file diff --git a/apps/public/content/compare/ackee-alternative.json b/apps/public/content/compare/ackee-alternative.json index 6e999969..20f20746 100644 --- a/apps/public/content/compare/ackee-alternative.json +++ b/apps/public/content/compare/ackee-alternative.json @@ -494,6 +494,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Self-hosted web analytics", + "url": "/articles/self-hosted-web-analytics" + } + ], + "alternatives": [ + { + "name": "Umami", + "url": "/compare/umami-alternative" + }, + { + "name": "GoatCounter", + "url": "/compare/goatcounter-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/amplitude-alternative.json b/apps/public/content/compare/amplitude-alternative.json index 82a0d06e..5dd44e30 100644 --- a/apps/public/content/compare/amplitude-alternative.json +++ b/apps/public/content/compare/amplitude-alternative.json @@ -457,6 +457,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "Find an alternative to Mixpanel", + "url": "/articles/alternatives-to-mixpanel" + }, + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "Mixpanel", + "url": "/compare/mixpanel-alternative" + }, + { + "name": "PostHog", + "url": "/compare/posthog-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/appsflyer-alternative.json b/apps/public/content/compare/appsflyer-alternative.json index 18be1fd5..f547b0b4 100644 --- a/apps/public/content/compare/appsflyer-alternative.json +++ b/apps/public/content/compare/appsflyer-alternative.json @@ -413,6 +413,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "Find an alternative to Mixpanel", + "url": "/articles/alternatives-to-mixpanel" + }, + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "Mixpanel", + "url": "/compare/mixpanel-alternative" + }, + { + "name": "Amplitude", + "url": "/compare/amplitude-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/cabin-analytics-alternative.json b/apps/public/content/compare/cabin-analytics-alternative.json index 2b645e2a..4cd88b87 100644 --- a/apps/public/content/compare/cabin-analytics-alternative.json +++ b/apps/public/content/compare/cabin-analytics-alternative.json @@ -465,6 +465,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Cookieless analytics", + "url": "/articles/cookieless-analytics" + } + ], + "alternatives": [ + { + "name": "Plausible", + "url": "/compare/plausible-alternative" + }, + { + "name": "Fathom", + "url": "/compare/fathom-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/countly-alternative.json b/apps/public/content/compare/countly-alternative.json index 393f5199..26b09a00 100644 --- a/apps/public/content/compare/countly-alternative.json +++ b/apps/public/content/compare/countly-alternative.json @@ -505,6 +505,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Self-hosted web analytics", + "url": "/articles/self-hosted-web-analytics" + } + ], + "alternatives": [ + { + "name": "PostHog", + "url": "/compare/posthog-alternative" + }, + { + "name": "Mixpanel", + "url": "/compare/mixpanel-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/crazy-egg-alternative.json b/apps/public/content/compare/crazy-egg-alternative.json index e1f21531..3fd17589 100644 --- a/apps/public/content/compare/crazy-egg-alternative.json +++ b/apps/public/content/compare/crazy-egg-alternative.json @@ -407,6 +407,24 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "Microsoft Clarity", + "url": "/compare/microsoft-clarity-alternative" + }, + { + "name": "FullStory", + "url": "/compare/fullstory-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/fathom-alternative.json b/apps/public/content/compare/fathom-alternative.json index e8639c2f..971cbbb8 100644 --- a/apps/public/content/compare/fathom-alternative.json +++ b/apps/public/content/compare/fathom-alternative.json @@ -458,6 +458,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Cookieless analytics", + "url": "/articles/cookieless-analytics" + } + ], + "alternatives": [ + { + "name": "Plausible", + "url": "/compare/plausible-alternative" + }, + { + "name": "Simple Analytics", + "url": "/compare/simple-analytics-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/fullstory-alternative.json b/apps/public/content/compare/fullstory-alternative.json index 2307748f..059658e9 100644 --- a/apps/public/content/compare/fullstory-alternative.json +++ b/apps/public/content/compare/fullstory-alternative.json @@ -417,6 +417,24 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "PostHog", + "url": "/compare/posthog-alternative" + }, + { + "name": "Mixpanel", + "url": "/compare/mixpanel-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/funnelio-alternative.json b/apps/public/content/compare/funnelio-alternative.json index 08ebe312..cdae85f4 100644 --- a/apps/public/content/compare/funnelio-alternative.json +++ b/apps/public/content/compare/funnelio-alternative.json @@ -463,6 +463,24 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "PostHog", + "url": "/compare/posthog-alternative" + }, + { + "name": "Mixpanel", + "url": "/compare/mixpanel-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/goatcounter-alternative.json b/apps/public/content/compare/goatcounter-alternative.json index 9a73f744..6e7882ed 100644 --- a/apps/public/content/compare/goatcounter-alternative.json +++ b/apps/public/content/compare/goatcounter-alternative.json @@ -533,6 +533,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Self-hosted web analytics", + "url": "/articles/self-hosted-web-analytics" + } + ], + "alternatives": [ + { + "name": "Ackee", + "url": "/compare/ackee-alternative" + }, + { + "name": "Umami", + "url": "/compare/umami-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/google-analytics-alternative.json b/apps/public/content/compare/google-analytics-alternative.json index ae894ea8..a945bd2f 100644 --- a/apps/public/content/compare/google-analytics-alternative.json +++ b/apps/public/content/compare/google-analytics-alternative.json @@ -452,6 +452,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Cookieless analytics", + "url": "/articles/cookieless-analytics" + } + ], + "alternatives": [ + { + "name": "Plausible", + "url": "/compare/plausible-alternative" + }, + { + "name": "Matomo", + "url": "/compare/matomo-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/heap-alternative.json b/apps/public/content/compare/heap-alternative.json index 0084fd5c..31d26bdb 100644 --- a/apps/public/content/compare/heap-alternative.json +++ b/apps/public/content/compare/heap-alternative.json @@ -417,6 +417,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "Find an alternative to Mixpanel", + "url": "/articles/alternatives-to-mixpanel" + }, + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "Mixpanel", + "url": "/compare/mixpanel-alternative" + }, + { + "name": "PostHog", + "url": "/compare/posthog-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/matomo-alternative.json b/apps/public/content/compare/matomo-alternative.json index 5020f2b7..9f3e4439 100644 --- a/apps/public/content/compare/matomo-alternative.json +++ b/apps/public/content/compare/matomo-alternative.json @@ -465,5 +465,27 @@ "label": "View on GitHub", "href": "https://github.com/Openpanel-dev/openpanel" } + }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Self-hosted web analytics", + "url": "/articles/self-hosted-web-analytics" + } + ], + "alternatives": [ + { + "name": "Plausible", + "url": "/compare/plausible-alternative" + }, + { + "name": "PostHog", + "url": "/compare/posthog-alternative" + } + ] } } \ No newline at end of file diff --git a/apps/public/content/compare/microsoft-clarity-alternative.json b/apps/public/content/compare/microsoft-clarity-alternative.json index 191f6a58..5722393a 100644 --- a/apps/public/content/compare/microsoft-clarity-alternative.json +++ b/apps/public/content/compare/microsoft-clarity-alternative.json @@ -482,6 +482,24 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "Crazy Egg", + "url": "/compare/crazy-egg-alternative" + }, + { + "name": "FullStory", + "url": "/compare/fullstory-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/mixpanel-alternative.json b/apps/public/content/compare/mixpanel-alternative.json index 8e947b96..26e5adf1 100644 --- a/apps/public/content/compare/mixpanel-alternative.json +++ b/apps/public/content/compare/mixpanel-alternative.json @@ -460,6 +460,32 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "Find an alternative to Mixpanel", + "url": "/articles/alternatives-to-mixpanel" + }, + { + "title": "Mixpanel vs OpenPanel", + "url": "/articles/vs-mixpanel" + }, + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "PostHog", + "url": "/compare/posthog-alternative" + }, + { + "name": "Amplitude", + "url": "/compare/amplitude-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/mouseflow-alternative.json b/apps/public/content/compare/mouseflow-alternative.json index d31ed5ff..50717020 100644 --- a/apps/public/content/compare/mouseflow-alternative.json +++ b/apps/public/content/compare/mouseflow-alternative.json @@ -413,6 +413,24 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "FullStory", + "url": "/compare/fullstory-alternative" + }, + { + "name": "Smartlook", + "url": "/compare/smartlook-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/pirsch-analytics-alternative.json b/apps/public/content/compare/pirsch-analytics-alternative.json index b51d925b..7881db4b 100644 --- a/apps/public/content/compare/pirsch-analytics-alternative.json +++ b/apps/public/content/compare/pirsch-analytics-alternative.json @@ -459,6 +459,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Cookieless analytics", + "url": "/articles/cookieless-analytics" + } + ], + "alternatives": [ + { + "name": "Plausible", + "url": "/compare/plausible-alternative" + }, + { + "name": "Fathom", + "url": "/compare/fathom-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/plausible-alternative.json b/apps/public/content/compare/plausible-alternative.json index 7bccd054..28e5cdd1 100644 --- a/apps/public/content/compare/plausible-alternative.json +++ b/apps/public/content/compare/plausible-alternative.json @@ -460,6 +460,32 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Cookieless analytics", + "url": "/articles/cookieless-analytics" + } + ], + "alternatives": [ + { + "name": "Umami", + "url": "/compare/umami-alternative" + }, + { + "name": "Fathom", + "url": "/compare/fathom-alternative" + }, + { + "name": "Matomo", + "url": "/compare/matomo-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/posthog-alternative.json b/apps/public/content/compare/posthog-alternative.json index 76befb17..e38813f8 100644 --- a/apps/public/content/compare/posthog-alternative.json +++ b/apps/public/content/compare/posthog-alternative.json @@ -445,6 +445,32 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Self-hosted web analytics", + "url": "/articles/self-hosted-web-analytics" + } + ], + "alternatives": [ + { + "name": "Plausible", + "url": "/compare/plausible-alternative" + }, + { + "name": "Matomo", + "url": "/compare/matomo-alternative" + }, + { + "name": "Umami", + "url": "/compare/umami-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/simple-analytics-alternative.json b/apps/public/content/compare/simple-analytics-alternative.json index 973809df..f21eaea3 100644 --- a/apps/public/content/compare/simple-analytics-alternative.json +++ b/apps/public/content/compare/simple-analytics-alternative.json @@ -463,6 +463,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Cookieless analytics", + "url": "/articles/cookieless-analytics" + } + ], + "alternatives": [ + { + "name": "Plausible", + "url": "/compare/plausible-alternative" + }, + { + "name": "Fathom", + "url": "/compare/fathom-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/smartlook-alternative.json b/apps/public/content/compare/smartlook-alternative.json index 50a35ebc..cd6fc676 100644 --- a/apps/public/content/compare/smartlook-alternative.json +++ b/apps/public/content/compare/smartlook-alternative.json @@ -397,6 +397,24 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + } + ], + "alternatives": [ + { + "name": "Mouseflow", + "url": "/compare/mouseflow-alternative" + }, + { + "name": "FullStory", + "url": "/compare/fullstory-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/content/compare/umami-alternative.json b/apps/public/content/compare/umami-alternative.json index b8364485..6fbb83a8 100644 --- a/apps/public/content/compare/umami-alternative.json +++ b/apps/public/content/compare/umami-alternative.json @@ -493,6 +493,28 @@ } ] }, + "related_links": { + "articles": [ + { + "title": "9 best open source web analytics tools", + "url": "/articles/open-source-web-analytics" + }, + { + "title": "Self-hosted web analytics", + "url": "/articles/self-hosted-web-analytics" + } + ], + "alternatives": [ + { + "name": "Plausible", + "url": "/compare/plausible-alternative" + }, + { + "name": "Ackee", + "url": "/compare/ackee-alternative" + } + ] + }, "ctas": { "primary": { "label": "Start with OpenPanel", diff --git a/apps/public/source.config.ts b/apps/public/source.config.ts index 4a47d289..40bebe74 100644 --- a/apps/public/source.config.ts +++ b/apps/public/source.config.ts @@ -29,6 +29,7 @@ const zArticle = z.object({ team: z.string().optional(), date: z.date(), cover: z.string().default('/content/cover-default.jpg'), + updated: z.date().optional(), }); const zPage = z.object({ title: z.string().min(1), diff --git a/apps/public/src/app/(content)/articles/[articleSlug]/page.tsx b/apps/public/src/app/(content)/articles/[articleSlug]/page.tsx index af5ae7a9..c689c420 100644 --- a/apps/public/src/app/(content)/articles/[articleSlug]/page.tsx +++ b/apps/public/src/app/(content)/articles/[articleSlug]/page.tsx @@ -78,6 +78,8 @@ export default async function Page({ '@type': 'Article', headline: article?.data.title, datePublished: article?.data.date.toISOString(), + dateModified: + article?.data.updated?.toISOString() || article?.data.date.toISOString(), author: { '@type': 'Person', name: author.name, @@ -132,9 +134,16 @@ export default async function Page({
{author.name}
-- {article?.data.date.toLocaleDateString()} -
++ {article?.data.date.toLocaleDateString()} +
+ {article?.data.updated && ( ++ Updated on {article?.data.updated.toLocaleDateString()} +
+ )} +