Custom presentations
Contents
Custom presentations are PostHog's version of landing pages.
They're designed to look like product slideshows, but can be more easily customized to include slides with custom content that span multiple products.
They can be used to tailor content for:
- a particular persona
- the needs of a specific company
- an individual
This is an MVP and ultimately needs to be refactored a bit. Check with Cory Watilo if you'd like to use this feature.
The example below shows a presentation that is personalized for a particular company and includes the person within PostHog assigned to that account.

Features
- Sources slide structure and content from a json file (one per primary persona)
- Custom presentations can source content from default slides but also override content to personalize it further
- Can enrich with a target company using Clearbit
- Supports some variables like
{companyName}and{companyLogo}that can be used within slides
- Supports some variables like
- Connects with Salesforce to personalize the presentation with the assigned rep
- Embeds a Default.com scheduling form
- Supports a lead form
- Can optionally hide slide thumbnails and presenter notes
- And yes, they're fully responsive, and if an uploaded screenshot has a dark mode equivalent, it will be used in dark mode
How it works
Presentations are accessed via the URL pattern:
Examples:
The system will:
- Look up company data from Clearbit (using the company's URL)
- Load the appropriate presentation JSON
- Render slides with company-specific data
- Display sales rep information if available
Presentation structure
Here's a general structure for a presentation using the various templates. You can add multiple product slides by adding additional entries. See a full example on GitHub in product-engineers.json.
Templates
Different templates support different features.
stacked
Content is stacked top to bottom and optionally supports an image which replaces the default Hogzilla background image.

The above example does not use the image prop, thus Hogzilla is included.
product
This imports the useProduct.ts hook to fetch product data based on the handle passed in. It allows it to access things like the product name, icon, color, and array of screenshots.

In the above example, it uses the "home" screenshot from the llm_analytics product:
columns
This is a multi-column layout that supports multiple products or features side-by-side.
There is currently no logic to wrap items, so it works best for 2-4 columns for now.

pricing

booking

Customization
Overriding default content
You can create an entirely personalized presentation, use the dream-customers folder. Set the json filename to the company's domain name and inside the file, set an arbitrary ID that will be used in the URL, like:
Reference content from any persona file with inherit, or override the content by adding your own.
Display options
Use the config object in the JSON file that supplies the content for the presentation to customize how the presentation renders. This can be done for a persona, a specific company, or an individual.
All properties
The thumbnails, notes, and form values can be overridden in the query string (independently), like:
These configuration options are remembered when using the Share your windows link generator in the Active windows pane. This is useful for sending a link to someone that will open multiple windows and also remember the display options of a presentation.
Product presentations
The above properties also work for product presentations, like:
Lead form
The lead form is hidden by default but can be enabled in a persona's JSON file, or displayed manually using the query param &form=true.
Non-personalized (industry-specific) landing pages show avatars of the

Company-specific landing pages show the

This is because different URL patterns are intended for different purposes.
| Path | Purpose | Team |
|---|---|---|
/for/{company}/{persona} | Outbound | New Business Sales Team |
/for/{persona} | Inbound | Product-Led Sales Team |
Small team
The small team in the config object can be overridden for any persona, company, persona within a specific company, or completely custom landing page.
This can also be overridden to show a specific small team using &t={id} using mappings in the TEAM_QUERY_MAP in src/components/Presentation/index.tsx and works for product presentations, use case landing pages, personalized landing pages, and custom presentations.
| ID | Small Team |
|---|---|
| 1 | sales-cs |
| 2 | sales-product-led |
On landing pages personalized to a specific company, we check if the account is assigned in Salesforce. This takes priority over any small team assignment in JSON and the t query param.
