fix: add internal links

This commit is contained in:
Carl-Gerhard Lindesvärd
2025-12-02 13:59:53 +01:00
parent a7a357eb0f
commit 50ef4c0d94
38 changed files with 652 additions and 10 deletions

View File

@@ -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.
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).

View File

@@ -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.

View File

@@ -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.

View File

@@ -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:

View File

@@ -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.

View File

@@ -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)

View File

@@ -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.
**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.

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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"
}
]
}
}

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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),

View File

@@ -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({
</div>
<div className="col">
<p className="font-medium">{author.name}</p>
<p className="text-muted-foreground text-sm">
{article?.data.date.toLocaleDateString()}
</p>
<div className="row gap-2">
<p className="text-muted-foreground text-sm">
{article?.data.date.toLocaleDateString()}
</p>
{article?.data.updated && (
<p className="text-muted-foreground text-sm italic">
Updated on {article?.data.updated.toLocaleDateString()}
</p>
)}
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,80 @@
import { FeatureCardContainer } from '@/components/feature-card';
import { Section, SectionHeader } from '@/components/section';
import type { RelatedLinks } from '@/lib/compare';
import { ArrowRightIcon, BookOpenIcon, GitCompareIcon } from 'lucide-react';
import Link from 'next/link';
interface RelatedLinksProps {
relatedLinks?: RelatedLinks;
}
export function RelatedLinksSection({ relatedLinks }: RelatedLinksProps) {
if (
!relatedLinks ||
(!relatedLinks.articles?.length && !relatedLinks.alternatives?.length)
) {
return null;
}
return (
<Section className="container">
<SectionHeader
title="Related resources"
description="Explore more comparisons and guides to help you choose the right analytics tool"
variant="sm"
/>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6 mt-12">
{relatedLinks.articles && relatedLinks.articles.length > 0 && (
<div className="col gap-4">
<div className="row gap-2 items-center mb-2">
<BookOpenIcon className="size-5 text-muted-foreground" />
<h3 className="text-lg font-semibold">Articles</h3>
</div>
<div className="col gap-3">
{relatedLinks.articles.map((article) => (
<Link key={article.url} href={article.url}>
<FeatureCardContainer className="hover:border-primary/30 transition-colors">
<div className="row gap-3 items-center">
<div className="col gap-1 flex-1 min-w-0">
<h4 className="text-base font-semibold group-hover:text-primary transition-colors">
{article.title}
</h4>
</div>
<ArrowRightIcon className="opacity-0 group-hover:opacity-100 size-4 shrink-0 text-muted-foreground group-hover:text-primary group-hover:translate-x-1 transition-all duration-300" />
</div>
</FeatureCardContainer>
</Link>
))}
</div>
</div>
)}
{relatedLinks.alternatives && relatedLinks.alternatives.length > 0 && (
<div className="col gap-4">
<div className="row gap-2 items-center mb-2">
<GitCompareIcon className="size-5 text-muted-foreground" />
<h3 className="text-lg font-semibold">Other comparisons</h3>
</div>
<div className="col gap-3">
{relatedLinks.alternatives.map((alternative) => (
<Link key={alternative.url} href={alternative.url}>
<FeatureCardContainer className="hover:border-primary/30 transition-colors">
<div className="row gap-3 items-center">
<div className="col gap-1 flex-1 min-w-0">
<h4 className="text-base font-semibold group-hover:text-primary transition-colors">
{alternative.name} alternative
</h4>
</div>
<ArrowRightIcon className="opacity-0 group-hover:opacity-100 size-4 shrink-0 text-muted-foreground group-hover:text-primary group-hover:translate-x-1 transition-all duration-300" />
</div>
</FeatureCardContainer>
</Link>
))}
</div>
</div>
)}
</div>
</Section>
);
}

View File

@@ -17,6 +17,7 @@ import { ComparisonTable } from './_components/comparison-table';
import { FeaturesShowcase } from './_components/features-showcase';
import { MigrationSection } from './_components/migration-section';
import { PricingSection } from './_components/pricing-section';
import { RelatedLinksSection } from './_components/related-links';
import { TechnicalComparison } from './_components/technical-comparison';
import { UseCases } from './_components/use-cases';
import { WhoShouldChoose } from './_components/who-should-choose';
@@ -213,6 +214,10 @@ export default async function ComparePage({
<CompareFaq faqs={data.faqs} pageUrl={pageUrl} />
</div>
{data.related_links && (
<RelatedLinksSection relatedLinks={data.related_links} />
)}
<CtaBanner
title={'Ready to make the switch?'}
description="Test OpenPanel free for 30 days, you'll not be charged anything unless you upgrade to a paid plan."

View File

@@ -9,6 +9,7 @@ import { getOgImageUrl, getPageMetadata } from '@/lib/metadata';
import { formatEventsCount } from '@/lib/utils';
import { PRICING } from '@openpanel/payments/prices';
import type { Metadata } from 'next';
import Link from 'next/link';
import Script from 'next/script';
const title = 'OpenPanel Cloud Pricing';
@@ -58,6 +59,7 @@ export default function SupporterPage() {
</HeroContainer>
<Pricing />
<PricingTable />
<ComparisonSection />
<Testimonials />
<Faq />
<CtaBanner />
@@ -107,3 +109,25 @@ function PricingTable() {
</Section>
);
}
function ComparisonSection() {
return (
<Section className="container">
<SectionHeader
title="How do we compare?"
description={
<>
See how OpenPanel stacks up against other analytics tools in our{' '}
<Link
href="/articles/open-source-web-analytics"
className="underline hover:text-primary transition-colors"
>
comprehensive comparison of open source web analytics tools
</Link>
.
</>
}
/>
</Section>
);
}

View File

@@ -31,7 +31,7 @@ const faqData = [
{
question: 'How does OpenPanel compare to other analytics tools?',
answer:
'We have a dedicated compare page where you can see how OpenPanel compares to other analytics tools. You can find it [here](/compare).',
'We have a dedicated compare page where you can see how OpenPanel compares to other analytics tools. You can find it [here](/compare). You can also read our comprehensive guide on the [best open source web analytics tools](/articles/open-source-web-analytics).',
},
{
question: 'How does OpenPanel compare to Mixpanel?',

View File

@@ -33,7 +33,7 @@ export function SectionHeader({
}: {
label?: string;
title: string | React.ReactNode;
description?: string;
description?: string | React.ReactNode;
className?: string;
align?: 'center' | 'left';
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';

View File

@@ -158,6 +158,17 @@ export interface CompareMigration {
};
}
export interface RelatedLink {
title?: string;
name?: string;
url: string;
}
export interface RelatedLinks {
articles?: RelatedLink[];
alternatives?: RelatedLink[];
}
export interface CompareData {
url: string;
slug: string;
@@ -175,6 +186,7 @@ export interface CompareData {
use_cases: CompareUseCases;
faqs: CompareFaqs;
benefits_section?: CompareBenefitsSection;
related_links?: RelatedLinks;
ctas: {
primary: CompareCta;
secondary: CompareCta;

View File

@@ -10,7 +10,6 @@ import { type InferPageType, loader } from 'fumadocs-core/source';
import { lucideIconsPlugin } from 'fumadocs-core/source/lucide-icons';
import { toFumadocsSource } from 'fumadocs-mdx/runtime/server';
import type { CompareData } from './compare';
import { url } from './layout.shared';
// See https://fumadocs.dev/docs/headless/source-api for more info
export const source = loader({