# Posthog Deploy Integration

> Deploy PostHog integrations to Vercel, Fly.io, and Cloud Run platforms. Use when deploying PostHog-powered applications to production, configuring platform-specific secrets, or setting up deployment pipelines. Trigger with phrases like "deploy posthog", "posthog Vercel", "posthog production deploy", "posthog Cloud Run", "posthog Fly.io".

- Skill: `micsapp/posthog-deploy-integration` (Agent Skill)
- Install (CLI): `npx skillmds@latest add micsapp/posthog-deploy-integration`
- Raw SKILL.md: https://api.skillmd.com/api/skills/micsapp/posthog-deploy-integration/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- License: MIT
- Author: micsapp (https://skillmd.com/u/micsapp)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/micsapp/posthog-deploy-integration

---

# PostHog Deploy Integration

## Overview
Deploy PostHog analytics integration to production. Covers client-side snippet deployment, server-side event capture with `posthog-node`, reverse proxy setup to avoid ad blockers, and self-hosted PostHog deployment using Docker.

## Prerequisites
- PostHog project API key (starts with `phc_`)
- PostHog personal API key for server-side operations
- Platform CLI installed (vercel, docker, or gcloud)

## Instructions

### Step 1: Client-Side Integration
```typescript
// lib/posthog.ts
import posthog from "posthog-js";

export function initPostHog() {
  if (typeof window !== "undefined") {
    posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
      api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://us.i.posthog.com",
      capture_pageview: false, // Manual pageview tracking
      loaded: (posthog) => {
        if (process.env.NODE_ENV === "development") posthog.debug();
      },
    });
  }
}
```

### Step 2: Server-Side Event Capture
```typescript
// lib/posthog-server.ts
import { PostHog } from "posthog-node";

const posthog = new PostHog(process.env.POSTHOG_API_KEY!, {
  host: process.env.POSTHOG_HOST || "https://us.i.posthog.com",
});

export async function trackServerEvent(
  distinctId: string,
  event: string,
  properties?: Record<string, any>
) {
  posthog.capture({ distinctId, event, properties });
  await posthog.flush();
}
```

### Step 3: Reverse Proxy (Avoid Ad Blockers)
```typescript
// next.config.js - Proxy PostHog through your domain
module.exports = {
  async rewrites() {
    return [
      {
        source: "/ingest/static/:path*",
        destination: "https://us-assets.i.posthog.com/static/:path*",
      },
      {
        source: "/ingest/:path*",
        destination: "https://us.i.posthog.com/:path*",
      },
    ];
  },
};
```

### Step 4: Self-Hosted Docker Deployment
```bash
set -euo pipefail
# Deploy PostHog self-hosted
git clone https://github.com/PostHog/posthog.git
cd posthog
docker compose -f docker-compose.hobby.yml up -d

# Your PostHog instance at http://localhost:8000
```

### Step 5: Vercel Deployment
```bash
vercel env add NEXT_PUBLIC_POSTHOG_KEY production
vercel env add NEXT_PUBLIC_POSTHOG_HOST production
vercel env add POSTHOG_API_KEY production  # Server-side key
vercel --prod
```

## Error Handling
| Issue | Cause | Solution |
|-------|-------|----------|
| Events not appearing | Wrong API key | Verify `phc_` project key |
| Ad blocker blocking | Direct PostHog requests | Set up reverse proxy |
| Self-hosted slow | Under-provisioned | Increase Docker resources |
| Missing server events | Not flushing | Call `posthog.flush()` in serverless |

## Examples


**Basic usage**: Apply posthog deploy integration to a standard project setup with default configuration options.

**Advanced scenario**: Customize posthog deploy integration for production environments with multiple constraints and team-specific requirements.

## Resources
- [PostHog Documentation](https://posthog.com/docs)
- [PostHog Self-Hosting](https://posthog.com/docs/self-host)
- [PostHog Node SDK](https://posthog.com/docs/libraries/node)

## Next Steps
For webhook handling, see `posthog-webhooks-events`.

## Output

- Configuration files or code changes applied to the project
- Validation report confirming correct implementation
- Summary of changes made and their rationale
