PageSourceSearch

https://posthog.com/component---src-pages-context-warehouse-use-cases-tsx-6d7daab3cbdf52da6e13.js

js posthog.com collected 2026-09-24 07:58:27 UTC 16,805 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunkposthog_com=self.webpackChunkposthog_com||[]).push([[352],{13656:function(e,t,s){s.r(t),s.d(t,{default:function(){return T}});var r=s(19371),n=s(30758),o=s(2212),a=s(72753),i=s(40891),l=s(88821),d=s(8462),c=s(40435),u=s(33721),h=s(71167),m=s(36501),p=s(21195),x=s(49271);var g=s(79440),b=s(32144);const f=(0,g.P)({viewBox:b.di,body:b.rf,meta:{slug:"chart-hog",name:"Chart Hog",namespace:"hoggies",figmaNodeId:"276:1822",aspectRatio:1,tags:["hog","solo","chart","product analytics","easel","bar chart","sweater vest","teal","clipboard","pointer"]}});var w=s(87404);const v=(0,g.P)({viewBox:w.di,body:w.rf,meta:{slug:"doc-brown",name:"Doc Brown",namespace:"hoggies",figmaNodeId:"276:1885",aspectRatio:1,tags:["hog","solo","endpoints","connection","electric","plugs","scientist","doc","back to the future"]}});var y=s(86070);function j(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),s.push.apply(s,r)}return s}function k(e){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{};t%2?j(Object(s),!0).forEach(function(t){(0,r.A)(e,t,s[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):j(Object(s)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(s,t))})}return e}const N=e=>{let{children:t}=e;return(0,y.jsx)(h.x,{type:"highlight",color:"rgba(235, 157, 42, 0.2)",strokeWidth:1,padding:2,delay:300,multiline:!0,children:(0,y.jsx)("span",{className:"font-bold text-red dark:text-yellow",children:t})})},P=[{title:"Turn product usage into revenue",Icon:x.IconTrending,iconColor:"text-green",recipes:[{question:"Which features drive revenue?",href:"/pocket-guides/context-warehouse/features-drive-revenue",ingredients:[{label:"PostHog events",kind:"ph"},{label:"Stripe",kind:"ext"}],uncover:"Join PostHog's usage data to Stripe to discover which features drive the most revenue per user."},{question:"Which onboarding steps turn trials into paying customers?",href:"/pocket-guides/context-warehouse/onboarding-conversion",ingredients:[{label:"PostHog funnels",kind:"ph"},{label:"Stripe",kind:"ext"}],uncover:"Build a funnel, flag who pays, and find the correlations so you can optimize the onboarding."},{question:"Which accounts are ready to upsell?",href:"/pocket-guides/context-warehouse/upsell-ready-accounts",ingredients:[{label:"PostHog usage",kind:"ph"},{label:"Stripe plans",kind:"ext"}],uncover:"Compare product usage against current plan limits in Stripe to automatically flag users ready to be upsold."}]},{title:"See churn coming",Icon:x.IconWarning,iconColor:"text-red",recipes:[{question:"What do customers do right before they cancel?",href:"/pocket-guides/context-warehouse/pre-cancellation-behavior",ingredients:[{label:"PostHog events",kind:"ph"},{label:"Stripe / Chargebee",kind:"ext"}],uncover:"Pull cancellation data from Stripe or Chargebee and examine the usage patterns preceding them to spot early-warning signals."},{question:"Do support tickets predict churn?",href:"/pocket-guides/context-warehouse/support-tickets-churn",ingredients:[{label:"PostHog usage",kind:"ph"},{label:"Zendesk / Intercom",kind:"ext"}],uncover:"Was that last ticket the last straw? This skill joins data from PostHog, Zendesk, Chargebee, and Stripe to spot which support trends lead to churn."},{question:"Are our biggest accounts our happiest ones?",href:"/pocket-guides/context-warehouse/value-vs-engagement",ingredients:[{label:"PostHog groups",kind:"ph"},{label:"Salesforce / HubSpot",kind:"ext"}],uncover:"Map ARR against engagement to flag at-risk accounts and protect your biggest accounts before they wobble."}]},{title:"Spend smarter on growth",Icon:x.IconTarget,iconColor:"text-blue",recipes:[{question:"Which channels bring customers who stick?",href:"/pocket-guides/context-warehouse/acquisition-channels-retention",ingredients:[{label:"PostHog acquisition",kind:"ph"},{label:"Stripe",kind:"ext"},{label:"Google / Meta Ads",kind:"ext"}],uncover:"Rank marketing channels by the revenue they bring in, so you can spend budget better."},{question:"Which leads deserve the sales team's time?",href:"/pocket-guides/context-warehouse/lead-scoring",ingredients:[{label:"PostHog usage",kind:"ph"},{label:"HubSpot / Salesforce",kind:"ext"}],uncover:"Score leads by usage and highlight the warmest ones that Sales have overlooked to create a PQL list."},{question:"Did the feature we shipped move revenue?",href:"/pocket-guides/context-warehouse/feature-revenue-impact",ingredients:[{label:"PostHog experiments",kind:"ph"}
1,{label:"Stripe",kind:"ext"}],uncover:"Usage went up after launch. But did revenue? This skill creates an experiment to find out and ship what works."}]}],S=e=>{let{children:t}=e;return(0,y.jsx)("span",{className:"font-code text-[0.9em] text-primary",children:t})},H={name:"modeling-warehouse-foundations",href:"/pocket-guides/context-warehouse/warehouse-foundations",builds:(0,y.jsxs)(y.Fragment,{children:["The groundwork for everything else: PostHog views or dbt, the ",(0,y.jsx)(S,{children:"view-create"})," to"," ",(0,y.jsx)(S,{children:"view-materialize"})," workflow, warehouse joins, currency conversion, and registering a model in the data catalog so nobody builds a rival copy."]}),rule:"Decide person vs. group once. That choice shapes every model you build after it."},A=[{name:"modeling-revenue-metrics",href:"/pocket-guides/context-warehouse/revenue-metrics",builds:"MRR, ARR, expansion and contraction, ARPU, LTV, and revenue per account.",rule:"MRR right now and MRR over time are two different models. A live snapshot never turns into a trend, so know which one you need before you build it."},{name:"modeling-conversion-metrics",href:"/pocket-guides/context-warehouse/conversion-metrics",builds:"Funnel and step conversion rates, drop-off, and time-to-convert.",rule:"Pin the time box first: signup to paid within 30 minutes and within 30 days are different metrics, not the same one measured loosely."},{name:"modeling-activation-metrics",href:"/pocket-guides/context-warehouse/activation-metrics",builds:"An activated flag per user or account, plus an activation rate.",rule:"Activation is the early behavior that predicts whether people stick around — test it against retention lift. If it doesn't lift, it isn't activation."},{name:"modeling-product-usage-metrics",href:"/pocket-guides/context-warehouse/product-usage-metrics",builds:"Retention, stickiness, and lifecycle models.",rule:(0,y.jsxs)(y.Fragment,{children:["Retention of ",(0,y.jsx)(S,{children:"$pageview"}),' and retention of your core action tell very different stories. Model the one that means "got value".']})},{name:"modeling-dimension-tables",href:"/pocket-guides/context-warehouse/dimension-tables",builds:(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(S,{children:"dim_country"}),", ",(0,y.jsx)(S,{children:"dim_plan"}),", ",(0,y.jsx)(S,{children:"dim_date"}),", and the other lookup tables every model joins to."]}),rule:(0,y.jsxs)(y.Fragment,{children:["One row per entity — a duplicate key multiplies every fact joined to it. And don't hand-roll currency:"," ",(0,y.jsx)(S,{children:"convertCurrency()"})," already ships with PostHog."]})}],I=()=>(0,y.jsx)(u.s,{items:m.b.children});function q(e){let{label:t,kind:s}=e;const r="ph"===s?"bg-red/10 text-red border-red/20 dark:bg-yellow/10 dark:text-yellow dark:border-yellow/20":"bg-blue/10 text-blue border-blue/20";return(0,y.jsx)("span",{className:"inline-flex items-center gap-1.5 text-[12.5px] font-semibold px-1.5 py-0.5 rounded border "+r,children:t})}const O=e=>{let{href:t}=e;const s=(0,l.c)().get((0,i.l2)(t)),{0:r,1:o}=(0,n.useState)(!1);return(0,y.jsxs)("div",{className:"mt-auto flex items-center gap-2 pt-4",children:[(0,y.jsx)(a.E0,{to:t,size:"sm",children:"Read the guide"}),(0,y.jsx)(a.E0,{type:"secondary",size:"sm",disabled:!(null!=s&&s.raw),onClick:()=>{null!=s&&s.raw&&(navigator.clipboard.writeText(s.raw),o(!0),window.setTimeout(()=>o(!1),1500))},children:r?"Copied":"Copy skill"})]})};function R(e){let{recipe:t}=e;return(0,y.jsxs)("div",{className:"flex h-full flex-col bg-primary border border-primary rounded p-5",children:[(0,y.jsx)("p",{className:"text-[17px] font-bold leading-tight mb-4 m-0",children:t.question}),(0,y.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 mb-4",children:t.ingredients.map((e,t)=>(0,y.jsxs)(n.Fragment,{children:[t>0&&(0,y.jsx)("span",{className:"font-bold text-muted text-sm",children:"+"}),(0,y.jsx)(q,k({},e))]},t))}),(0,y.jsx)("p",{className:"text-[14.5px] text-secondary m-0",children:t.uncover}),(0,y.jsx)(O,{href:t.href})]})}function C(e){let{skill:t}=e;return(0,y.jsxs)("div",{className:"flex h-full flex-col bg-primary border border-primary rounded p-5",children:[(0,y.jsx)("p",{className:"font-code text-[13.5px] font-bold leading-tight m-0 mb-3 break-words text-red dark:text-yellow",children:t.name}),(0,y.jsx)("p",{className:"text-[14.5px] text-secondary m-0",children:t.builds}),(0,y.jsx)("div",{className:"border-t border-primary mt-4 mb-2"}),(0,y.jsx)("p",{className:"text-[11px] font-bold uppercase tracking-wide text-green mt-2 mb-1",children:"The rule it enforces"}),(0,y.jsx)("p",{className:"text-[14.5px] text-secondary m-0",children:t.rule}),(0,y.jsx)(O,{href:t.href})]})}var T=function(){return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d.Ay,{title:"Use cases - Context Warehouse",description:"Questions worth asking when you combine PostHog data with your business data."}),(0,y.jsx)(c.Ay,{leftSidebar:(0,y.jsx)(I,{}),title:"use-cases.md",hideTitle:!0,children:(0,y.jsxs)("div",{className:"max-w-7xl mx-auto",children:[(0,y.jsx)("div",{className:"not-prose mt-2 @xl:mt-4 pb-2",children:(0,y.jsxs)("div",{className:"grid items-start gap-6 @lg/reader-content:grid-cols-[1fr_280px]",children:[(0,y.jsxs)("div",{children:[(0,y.jsxs)("div",{className:"prose",children:[(0,y.jsxs)("h1",{className:"!m-0 text-3xl font-bold !leading-[1.12] tracking-tight @md/reader-content:text-4xl @3xl/reader-content:text-5xl",children:[(0,y.jsx)(N,{children:"Data questions"})," worth asking"]}),(0,y.jsx)("p",{className:"!mb-0 !mt-5 max-w-lg text-base leading-relaxed text-secondary @xl/reader-content:text-[17px]",children:"Your warehouse already holds all your PostHog data. Add an external source or two and you can answer questions neither could answer alone - these skills show you how."})]}),(0,y.jsx)("div",{className:"mt-6 w-fit",children:(0,y.jsx)(a.E0,{to:"/pocket-guides/context-warehouse",size:"md",children:"See all templates"})})]}),(0,y.jsx)("div",{className:"hidden justify-center @lg/reader-content:flex",children:(0,y.jsx)(f,{size:280,className:"w-full max-w-[280px]"})})]})}),P.map((e,t)=>(0,y.jsxs)("div",{className:(0===t?"mt-6":"mt-12")+" not-prose",children:[(0,y.jsx)("div",{className:"mb-5",children:(0,y.jsxs)("h2",{className:"flex items-center gap-2 m-0 text-2xl font-bold @md/reader-content:text-3xl",children:[(0,y.jsx)(e.Icon,{className:"size-5 shrink-0 @md/reader-content:size-6 "+e.iconColor}
1),e.title]})}),(0,y.jsx)("div",{className:"grid grid-cols-1 @md:grid-cols-2 @xl:grid-cols-3 gap-4",children:e.recipes.map((e,t)=>(0,y.jsx)(R,{recipe:e},t))})]},t)),(0,y.jsxs)("div",{className:"mt-14 not-prose",children:[(0,y.jsxs)("div",{className:"mb-5",children:[(0,y.jsxs)("h2",{className:"flex items-center gap-2 m-0 text-2xl font-bold @md/reader-content:text-3xl",children:[(0,y.jsx)(x.IconDatabase,{className:"size-5 shrink-0 @md/reader-content:size-6 text-purple"}),"From a one-off answer to a model that lasts"]}),(0,y.jsx)("p",{className:"text-[15px] text-secondary mt-1 mb-0",children:"A query answers the question today. A model answers it every day. These skills turn a metric definition into a durable, reusable model, strengthened by an opinion on what good looks like, just for spiciness."})]}),(0,y.jsx)("div",{className:"mb-4",children:(0,y.jsxs)("div",{className:"flex overflow-hidden rounded border border-primary bg-primary",children:[(0,y.jsx)("div",{className:"w-1 shrink-0 bg-green","aria-hidden":!0}),(0,y.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col p-5",children:[(0,y.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[(0,y.jsx)("span",{className:"font-code text-[13.5px] font-bold leading-tight break-words text-red dark:text-yellow",children:H.name}),(0,y.jsx)("span",{className:"rounded-full border border-green/20 bg-green/10 px-1.5 py-0.5 text-[11px] font-bold uppercase tracking-wide text-green",children:"Start here"})]}),(0,y.jsx)("p",{className:"m-0 text-[14.5px] text-secondary",children:H.builds}),(0,y.jsx)("div",{className:"mt-4 mb-2 border-t border-primary"}),(0,y.jsx)("p",{className:"mb-1 mt-2 text-[11px] font-bold uppercase tracking-wide text-green",children:"The rule it enforces"}),(0,y.jsx)("p",{className:"m-0 text-[14.5px] text-secondary",children:H.rule}),(0,y.jsx)(O,{href:H.href})]})]})}),(0,y.jsx)("div",{className:"grid grid-cols-1 @md:grid-cols-2 @xl:grid-cols-3 gap-4",children:A.map(e=>(0,y.jsx)(C,{skill:e},e.name))}),(0,y.jsxs)("p",{className:"text-[14.5px] text-secondary mt-5 mb-0",children:["Install the"," ",(0,y.jsx)(o.A,{to:"/docs/model-context-protocol/claude-code",className:"font-semibold",children:"PostHog AI plugin"})," ","in your coding agent, or open"," ",(0,y.jsx)(o.A,{to:"/docs/posthog-desktop/skills",className:"font-semibold",children:"PostHog Desktop"}),", then ask for the model you want, the Skills are already pre-loaded. More on"," ",(0,y.jsx)(o.A,{to:"/docs/data-warehouse/views",className:"font-semibold",children:"views"})," ","and"," ",(0,y.jsx)(o.A,{to:"/context-warehouse/data-modeling",className:"font-semibold",children:"data modeling"}),"."]})]}),(0,y.jsx)("div",{className:"not-prose relative mt-14 overflow-hidden rounded-md border border-primary p-4 @md/reader-content:p-6 "+p.jF,children:(0,y.jsxs)("div",{className:"grid items-center gap-6 @lg/reader-content:grid-cols-[1fr_190px]",children:[(0,y.jsxs)("div",{children:[(0,y.jsx)("h3",{className:"mt-0 mb-3 text-2xl font-bold",children:"Got a different question?"}),(0,y.jsxs)("p",{className:"mt-0 mb-4 text-secondary",children:["With ",(0,y.jsx)("strong",{className:"text-primary",children:"800+ warehouse sources"})," including payments, CRMs, support desks, ad platforms, your production database, chances are your question is already answerable."," ",(0,y.jsx)(o.A,{to:"/docs/data-warehouse/sources",state:{newWindow:!0},className:"font-semibold",children:"See every source →"})]}),(0,y.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,y.jsx)(a.E0,{to:"https://app.posthog.com/data-management/sources",externalNoIcon:!0,size:"md",children:"Get Started"}),(0,y.jsxs)("p",{className:"mb-0 text-sm text-secondary",children:["Not using PostHog?"," ",(0,y.jsx)(o.A,{to:"https://app.posthog.com/signup",external:!0,className:"font-semibold text-red dark:text-yellow",children:"Sign up"})]})]})]}),(0,y.jsx)("div",{className:"hidden justify-center @lg/reader-content:flex",children:(0,y.jsx)(v,{size:190,className:"w-full max-w-[190px]"})})]})})]})})]})}},36501:function(e,t,s){s.d(t,{b:function(){return r}});s(63629);const r={name:"PostHog context warehouse",url:"/context-warehouse",children:[{name:"PostHog context warehouse"},{name:"Overview",url:"/context-warehouse"},{name:"Start here",url:"/context-warehouse/use-cases"},{name:"Is PostHog warehouse native?",url:"/context-warehouse/warehouse-native"},{name:"The context gap report",url:"/the-context-gap-report"},{name:"Data tools"},{name:"Managed Warehouse",url:"/context-warehouse/managed-warehouse"},{name:"PostHog AI",url:"/context-warehouse/posthog-ai"},{name:"Data sources & import (ELT)",url:"/context-warehouse/sources"},{name:"CDP",url:"/cdp"},{name:"Data modeling",url:"/context-warehouse/data-modeling"},{name:"SQL editor",url:"/context-warehouse/sql-editor"},{name:"Business intelligence (BI)",url:"/context-warehouse/business-intelligence"},{name:"Reverse ETL & export",url:"/context-warehouse/reverse-etl-export"},{name:"Integrations"},{name:"Integration library",url:"/context-warehouse/integrations-library"}]}},88821:function(e,t,s){s.d(t,{c:function(){return a}});
1var r=s(30758),n=s(63629),o=s(40891);function a(){const e=(0,n.useStaticQuery)("3999490356");return(0,r.useMemo)(()=>{var t;return new Map(((null==e||null===(t=e.skills)||void 0===t?void 0:t.nodes)||[]).map(e=>{var t,s;return[(0,o.l2)(e.fields.slug.replace(/\/SKILL$/,"")),{name:null===(t=e.frontmatter)||void 0===t?void 0:t.name,description:null===(s=e.frontmatter)||void 0===s?void 0:s.description,raw:e.rawBody}]}))},[e])}}}]);
2//# sourceMappingURL=component---src-pages-context-warehouse-use-cases-tsx-6d7daab3cbdf52da6e13.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.