diff --git a/src/hooks/productData/ai_observability.tsx b/src/hooks/productData/ai_observability.tsx index 5ac24bfc51e0..349c76063d56 100644 --- a/src/hooks/productData/ai_observability.tsx +++ b/src/hooks/productData/ai_observability.tsx @@ -47,6 +47,10 @@ export const aiObservability = { description: 'Track costs, performance, and usage of your AI features', handle: 'ai_observability', type: 'ai_observability', + // The billing service still exposes this product under its original type + // (`llm_analytics`) from before the "AI Observability" rename. Billing data is + // joined on this value so pricing/calculator surfaces can find it. + billingType: 'llm_analytics', slug: 'ai-observability', color: 'purple', colorSecondary: 'green-2', diff --git a/src/hooks/useCustomers.tsx b/src/hooks/useCustomers.tsx index 423e99424fbd..16dab8533a2a 100644 --- a/src/hooks/useCustomers.tsx +++ b/src/hooks/useCustomers.tsx @@ -758,7 +758,7 @@ const CUSTOMER_DATA: Record = { 'product_analytics', 'session_replay', 'surveys', - 'llm_analytics', + 'ai_observability', 'warehouse_sources', ], industries: ['Ad Tech', 'Hospitality', 'Digital Signage'], diff --git a/src/hooks/useProducts.tsx b/src/hooks/useProducts.tsx index d16f46847c0a..93983b0289b4 100644 --- a/src/hooks/useProducts.tsx +++ b/src/hooks/useProducts.tsx @@ -48,9 +48,13 @@ export default function useProducts() { const [products, setProducts] = useState( initialProducts.map((product) => { + // Products are joined to live billing data by type. A product can override + // the key the billing service uses via `billingType` (e.g. AI Observability + // is still `llm_analytics` upstream); otherwise the handle is the key. + const billingType = (product as { billingType?: string }).billingType || product.handle const billingData = product.billingData || - billingProducts.find((billingProduct: any) => billingProduct.type === product.handle) + billingProducts.find((billingProduct: any) => billingProduct.type === billingType) const paidPlan = billingData?.plans.find((plan: any) => plan.tiers) const startsAt = paidPlan?.tiers?.find((tier: any) => tier.unit_amount_usd !== '0')?.unit_amount_usd const freeLimit = paidPlan?.tiers?.find((tier: any) => tier.unit_amount_usd === '0')?.up_to