Last updated:

Content is the main pillar of our marketing strategy. As our products are quite technical in nature, we believe that frequent and regular content output helps improve acquisition and ongoing product engagement. The blog is where we publish interesting product content, share feature updates, and tell PostHog stories.

Content & SEO strategy

Content & SEO is a long-term strategy. We are focused on generating a sustained output of high quality content that is genuinely valuable to users. Rather than scale up content output for the sake of it, our strategy is to go deeper and create better content as we grow, not simply push out more articles for its own sake. For this reason, we never set ourselves specific content output targets.

We win on depth, not breadth, of content. We believe a small number of high quality pieces > a larger number of medium quality pieces.

We use Ahrefs to track and optimize our ranking for the keywords that we think are target customers are using to search for solutions like PostHog online. If you need access, please ask Andy.

The top keywords are then used as the basis of our content strategy. We bucket our content into three buckets:

  • SEO-optimized content, written by the Marketing team. The purpose of these is to improve our topical authority and visibility in areas relevant to our target audience, and generate organic inbound demand and word of mouth awareness.

  • Tutorials, written mostly by the Marketing team. The purpose of these is to encourage new signups (because we show potential users how to solve their problems using PostHog), as well as helping existing customers. Some tutorials are also SEO-optimized, especially when they cover general product analytics topics (e.g. 'how to calculate and reduce churn.')

  • Brand building and community engagement, written by anyone on the team, with the Marketing team acting as editors. These can be about anything, and their purpose is to drive one-off spikes in awareness through virality on sites like Hacker News and Reddit.

Andy and Ian are currently the main people responsible for our regular content output. James H, Joe, and Charles are also frequent contributors.

You can view planned content on the Marketing project board using the "content" label filter.

All planned content will have an issue created for it. We also maintain a long list of possible content ideas in this GitHub issue.

Join our #content-ideas Slack channel, raise an issue, or comment on the ideas long list issue to suggest a content idea. Community members can suggest them to Andy directly or via the User slack channel!

Content categories

As we have a few different places where content lives on our site, follow these guidelines to figure out where your content fits best. Sometimes you will find that the content you've created fits better in Docs rather than on the Blog.

  1. Blog post = Virtually all SEO-specific content (e.g. 7 best open source analytics solutions); brand building content (e.g. CEO diaries, news).
  2. Tutorials = Anything that basically explains 'how to do X'. This includes content created for SEO purposes that explains how do something in PostHog (e.g. how to build an AARRR funnel).
  3. Docs = Reference documentation for PostHog.

The Marketing team is responsible for 1. and 2., while 3. sits with the Website & Docs team. Feel free to step on toes though if you see something that could be improved in our Docs - just don't merge it without approval from that team.

Production workflow

  • Create a GitHub issue: Create a new blog post issue in the repo. Use the New blog post idea issue template. Fill in the required information as well as adding any additional information that you feel is beneficial to someone reviewing the issue. Add this issue to the Marketing GitHub project.

  • Write the blog post: We write up a concise blog post about the discussion or tutorial (with the help of the transcript, if available). This is where we add more context to the topic and include links to other content for further reading. The length of a blog post can vary wildly. If based on a video a 60-minute interview usually yields a ~1,500-word blog post.

  • Get feedback: Once written, if the blog post is to be published on the PostHog blog, push it to GitHub and create a Pull Request for feedback. See Publishing for more information. If the blog post is going to be published on an external site, use Google Docs to get feedback.

  • Artwork: Things that are more interesting to the eye are more likely to be clicked on. Each blog post or tutorial need an accompanying image. Learn more in the Publishing section below.

Publishing to the blog

Our Marketing project board is our source of truth for all content. We use the 'content' label for all issues and PRs.

Submit a PR to posthog/ with the following content:

  • A new Markdown file (md, mdx) in /contents/blog/

  • Any assets added to a new folder under contents/images/blog/

  • Each post should have artwork. If you deem your post worthy of custom art, add the Artwork project board to your post's issue. Please ensure you have a target publish date specified in the issue - at least 3 working days out, so we have time to produce artwork. Lottie will create the artwork and add the image to your issue.) Once that's done, be sure to save the post image to the relevant directory.

    • We encourage custom artwork on posts that will be (or are likely to be) amplified, whether paid or organic. But we also maintain a library of reusable artwork. Andy will select an appropriate image in this scenario.

    • Blog artwork is displayed in three places: above the post itself, on the /blog index page, and is also used as the post's Open Graph image.

    • We have two display modes for how the post image and title appear. Use the featuredImage property in the post's frontmatter like in this example.

      1. If the post's image has a white background or has text that needs to be unobfuscated, use featuredImageType: standard. (This will prevent our Open Graph Image generator from overlaying the title and author info on the image, and will stack the artwork and blog title on the actual blog post page.)
      2. Otherwise, use featuredImageType: full. This should generally be used unless you're sure you need the above option.
  • Add the author of the post as an array (not a string), like in this example. If this is your first time posting to the blog, add yourself to authors.json.

  • Assign the post just one category and any relevant tags using category and tags in the frontmatter section, as follows:

    category: Startups
    - Guides
    - Open source

The following are our pre-approved categories and tags. Please don't create new ones without Andy's approval:


  • Inside PostHog: Behind-the-scenes on our culture, what we’re doing
  • Using PostHog: Guides about doing stuff in PostHog
  • PostHog news: Product updates, release notes and announcements
  • CEO diaries: Insights from James Hawkins
  • Startups: Guides and insights on startup life
  • HogMail: The PostHog newsletter on the blog
  • Product growth: Guides about product analytics, growth hacking et al.
  • Engineering: Blogs about engineering at PostHog
  • General: Category for blog posts with no obvious category


  • Guides: Any and all guides from all categories (actionable)
  • Explainers: Blogs explaining a concept or idea (non-actionable)
  • Product analytics: Blogs about about product analytics
  • Product metrics: Blogs about metrics and what to track
  • Session recording: Blogs about using session recording
  • Feature flags: Blogs about using feature flags
  • Marketing: Blogs about marketing
  • Privacy: Blogs about GDPR and other fun stuff
  • Open source: Blogs about open source products and projects
  • Release notes: PostHog release notes
  • Product updates: General product updates
  • Comparisons: PostHog vs other things
  • ClickHouse: Blogs about ClickHouse
  • Y Combinator: Blogs about YC
  • Add a meta description using description in the frontmatter section (optional)

  • Set the date of the blog post to the intended publishing date in the format YYYY-MM-DD. Posts dated in the future won't display on the site until their specified date, though a build is required day-of in order to publish the post. (The Website & Docs team or other Vercel admins can kick off a manual build.)

  • Create an annotation on for the content to track the effect.

Fully completed and correct frontmatter should look like this:

date: 2021-06-10
title: PostHog raises $15 million Series B for open source product analytics
rootPage: /blog
sidebar: Blog
showTitle: true
hideAnchor: true
featuredImage: ../images/blog/series-b/series-b-baby.png
featuredImageType: full
author: ["joe-martin"]
categories: ["Product analytics", "Guides"]


We repurpose and distribute content in a mixture of channels - those we want to be good at, and those we put minimal effort into out of habit and good practice.

High effort

  • SEO - Andy
  • Newsletter - Andy
  • PostHog LinkedIn - Andy (but other people post here as well)
  • PostHog Twitter - Charles (but other people post here as well)
  • James' personal Twitter - James H
  • YouTube - Ian

Low effort/hygiene

  • User Slack - whoever wrote the content
  • Hacker News - only for Show HN announcements, otherwise do not post here and hope others do it outside PostHog
  • LinkedIn paid ads - Charles (outsourced)
  • Twitter paid ads - Andy (outsourced)


Was this page useful?

Next article


We do three types of sponsorships - commercial, charitable, and open source. Our objectives with commercial sponsorships are to: Enhance word of mouth - this is our most effective acquisition channel Reach more relevant communities, especially those users that are not active on social media Make more effective use of our budget in less popular channels Measuring attribution directly is basically impossible with sponsorship activities, so we try hard to make sure we are targeting the right…

Read next article