diff --git a/src/products/ProductComparisonTable.tsx b/src/products/ProductComparisonTable.tsx
new file mode 100644
index 0000000000..802945ba89
--- /dev/null
+++ b/src/products/ProductComparisonTable.tsx
@@ -0,0 +1,461 @@
+// Libraries
+import React, {FC, Fragment} from 'react'
+
+// Components
+import {
+ Table,
+ Button,
+ ComponentColor,
+ ComponentSize,
+ Heading,
+ HeadingElement,
+ Alignment,
+ Icon,
+ IconFont,
+ VerticalAlignment,
+} from '@influxdata/clockface'
+
+export const ProductComparisonTable: FC = () => {
+ const comparisonTableContents = [
+ {
+ groupDetails: {
+ title: 'Performance and scale',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ features: [
+ {
+ feature: 'Writes',
+ serverless: <>5MB/5 mins (free) / 300MB/5 mins (paid)>,
+ dedicated: <>No applied service quota>,
+ clustered: <>Scalable>,
+ },
+ {
+ feature: 'Queries (data read)',
+ serverless: <>300MB/5 mins (free) / 3000MB/5 mins (paid)>,
+ dedicated: <>No applied service quota>,
+ clustered: <>Scalable>,
+ },
+ {
+ feature: 'Data retention',
+ serverless: <>30 days (free) / Unlimited (paid)>,
+ dedicated: <>Unlimited>,
+ clustered: <>Unlimited>,
+ },
+ {
+ feature: 'Cardinality',
+ serverless: <>Contact sales about how to scale>,
+ dedicated: <>Unlimited>,
+ clustered: <>Unlimited>,
+ },
+ {
+ feature: 'Databases (buckets)',
+ serverless: <>2 (free) / Unlimited (paid)>,
+ dedicated: <>Unlimited>,
+ clustered: <>Unlimited>,
+ },
+ {
+ feature: 'Notification rules',
+ serverless: <>2 (free) / Unlimited (paid)>,
+ dedicated: <>N/A>,
+ clustered: <>N/A>,
+ },
+ {
+ feature: 'Multi-organization data access and management',
+ serverless: <>1 (free) / 3 (pay-as-you-go) / 20 (annual plan)>,
+ dedicated: <>N/A>,
+ clustered: <>N/A>,
+ },
+ ],
+ },
+ {
+ groupDetails: {
+ title: 'Operational efficiency',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ features: [
+ {
+ feature: 'Storage costs',
+ serverless: <>90% lower than with InfluxDB OSS>,
+ dedicated: <>90% lower than with InfluxDB OSS>,
+ clustered: <>90% lower than with InfluxDB OSS>,
+ },
+ {
+ feature: 'Tiered storage',
+ serverless: ,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ ],
+ },
+ {
+ groupDetails: {
+ title: 'Security and reliability',
+ serverless: (
+
+ See security details
+
+ ),
+ dedicated: (
+
+ See details
+
+ ),
+ clustered: (
+
+ See details
+
+ ),
+ },
+ features: [
+ {
+ feature: 'End-to-end encryption',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'SOC 2 Certified',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'ISO 27001/27018',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Configurable for GDPR compliance',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Disaster recovery support',
+ serverless: <>>,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Technical support SLA',
+ serverless: <>>,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Private networking',
+ serverless: <>>,
+ dedicated: <>Available as an add-on>,
+ clustered: <>>,
+ },
+ {
+ feature: 'SAML/SSO',
+ serverless: <>>,
+ dedicated: 'Available as an add-on',
+ clustered: ,
+ },
+ {
+ feature: 'OAuth',
+ serverless: ,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ {
+ feature: 'Secrets',
+ serverless: ,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ {
+ feature: 'IdP integration',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: ,
+ },
+ {
+ feature: 'Powerfull access control',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: ,
+ },
+ {
+ feature: 'Audit logging for compliance',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: ,
+ },
+ {
+ feature: 'High-available SLA guarantee',
+ serverless: ,
+ dedicated: ,
+ clustered: <>>,
+ },
+ ],
+ },
+ {
+ groupDetails: {
+ title: 'Query languages',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ features: [
+ {
+ feature: 'SQL',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'InfluxQL',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Flux',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ ],
+ },
+ {
+ groupDetails: {
+ title: 'Integrations',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ features: [
+ {
+ feature: 'Snowflake',
+ serverless: ,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ {
+ feature: 'Amazon AWS',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Google Cloud Platform',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ {
+ feature: 'Azure',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ {
+ feature: 'Tableau',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Superset',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Grafana',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Chronograf',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'Kapacitor',
+ serverless: ,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ {
+ feature: 'Telegraf',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'VS Code',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ ],
+ },
+ {
+ groupDetails: {
+ title: 'APIs',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ features: [
+ {
+ feature: 'v3 gRPC query',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'v1 HTTP write',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'v1 HTTP query',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'v2 HTTP write',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'v2 HTTP query',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ ],
+ },
+ {
+ groupDetails: {
+ title: 'Storage',
+ serverless: <>>,
+ dedicated: <>>,
+ clustered: <>>,
+ },
+ features: [
+ {
+ feature: 'Apache Parquet',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ {
+ feature: 'S3 compatible object storage',
+ serverless: ,
+ dedicated: ,
+ clustered: ,
+ },
+ ],
+ },
+ ]
+
+ return (
+
+
+
+
+
+
+ InfluxDB Cloud Serverless
+
+
+ Smaller workloads, multi-tenant service
+
+
+
+
+
+ InfluxDB Cloud Dedicated
+
+
+ Scaled workloads, on dedicated infrastructure
+
+
+
+
+
+ InfluxDB Cloud Clustered
+
+
+ Scaled worloads, on-prem, private cloud, or hybrid
+
+
+
+
+
+
+ {comparisonTableContents.map(group => (
+
+
+
+ {group.groupDetails.title}
+
+
+ {group.groupDetails.serverless}
+
+
+ {group.groupDetails.dedicated}
+
+
+ {group.groupDetails.clustered}
+
+
+ {group.features.map(feature => (
+
+ {feature.feature}
+
+ {feature.serverless}
+
+
+ {feature.dedicated}
+
+
+ {feature.clustered}
+
+
+ ))}
+
+ ))}
+
+
+ )
+}
diff --git a/src/products/ProductsPage.tsx b/src/products/ProductsPage.tsx
new file mode 100644
index 0000000000..06ca492ae3
--- /dev/null
+++ b/src/products/ProductsPage.tsx
@@ -0,0 +1,33 @@
+// Libraries
+import React, {FC} from 'react'
+
+// Components
+import {
+ AppWrapper,
+ FunnelPage,
+ Heading,
+ HeadingElement,
+ InfluxColors,
+} from '@influxdata/clockface'
+import {ProductComparisonTable} from 'src/products/ProductComparisonTable'
+
+const ProductsPage: FC = () => (
+
+
+
+ Run InfluxDB 3.0 where you need it
+
+
+ Select the deployment option that works for you
+
+
+
+
+)
+
+export default ProductsPage
diff --git a/src/shared/containers/GetOrganizations.tsx b/src/shared/containers/GetOrganizations.tsx
index a29d01af1c..e956d84ec5 100644
--- a/src/shared/containers/GetOrganizations.tsx
+++ b/src/shared/containers/GetOrganizations.tsx
@@ -6,7 +6,7 @@ import {identify} from 'rudder-sdk-js'
// Components
import PageSpinner from 'src/perf/components/PageSpinner'
-import {CheckoutPage, OperatorPage} from 'src/shared/containers'
+import {CheckoutPage, ProductsPage, OperatorPage} from 'src/shared/containers'
const NoOrgsPage = lazy(() => import('src/organizations/containers/NoOrgsPage'))
const NotebookTemplates = lazy(
() => import('src/flows/components/FromTemplatePage')
@@ -120,6 +120,9 @@ const GetOrganizations: FunctionComponent = () => {
/>
+ {CLOUD && account.isUpgradeable === true && (
+
+ )}
{CLOUD && account.isUpgradeable === true && (
)}
diff --git a/src/shared/containers/index.tsx b/src/shared/containers/index.tsx
index 9c5f517ef2..9b9ed169a1 100644
--- a/src/shared/containers/index.tsx
+++ b/src/shared/containers/index.tsx
@@ -92,6 +92,8 @@ export const OrgOverlay = lazy(() => import('src/operator/OrgOverlayWrapper'))
export const CheckoutPage = lazy(() => import('src/checkout/CheckoutPage'))
+export const ProductsPage = lazy(() => import('src/products/ProductsPage'))
+
export const SubscriptionsLanding = lazy(
() => import('src/writeData/subscriptions/components/SubscriptionsLanding')
)