Manage PostHog subscriptions — scheduled email, Slack, or webhook deliveries of insight or dashboard snapshots. Use when the user wants to subscribe to an insight or dashboard, check existing subscriptions, change delivery frequency, add or remove recipients, or stop receiving updates.
This skill guides you through managing PostHog subscriptions. Subscriptions deliver scheduled snapshots of insights or dashboards via email, Slack, or webhook.
Use this skill when the user:
Subscriptions and alerts serve different purposes:
If the user says "notify me when this drops below 100", use alerts. If the user says "send me this every morning", use subscriptions.
Before creating a new subscription, check if one already exists.
Use subscriptions-list with optional filters:
insight query parameter with the insight IDdashboard query parameter with the dashboard IDtarget_type as email, slack, or webhookAlways ask the user whether they want email or Slack delivery before creating a subscription. Do not assume a channel — ask explicitly:
Would you like to receive this via email or Slack?
If the user says Slack, you must verify the integration is available (see step 2). If the user doesn't have a preference, suggest email as the simplest option.
Email requires no setup — it works out of the box. You just need the user's email address.
Get it from the user context or from org-members-list.
Slack requires a connected Slack integration. Before creating a Slack subscription:
integrations-list and look for an integration where kind is "slack"id — you'll need it as integration_idSlack isn't connected to this project yet. You can set it up in Project settings > Integrations. In the meantime, would you like to receive this via email instead?
Slack setup requires an OAuth flow in the browser — it cannot be done via MCP.
Webhook requires the user to provide a URL. Verify it looks like a valid URL before submitting.
Get the insight ID or dashboard ID. If the user provides a URL like /project/2/insights/pKxzopBG,
fetch the insight first with insight-get to get the numeric ID.
| User says | Parameters |
|---|---|
| "every day" / "daily" / "every morning" | frequency: "daily" |
| "every week" / "weekly" | frequency: "weekly" |
| "every Monday" | frequency: "weekly", byweekday: ["monday"] |
| "every month" / "monthly" | frequency: "monthly" |
| "twice a week" | frequency: "weekly", interval: 1, byweekday: ["monday", "thursday"] |
subscriptions-createFor an insight subscription via email:
{
"insight": 12345,
"target_type": "email",
"target_value": "[email protected]",
"frequency": "daily",
"start_date": "2025-01-01T09:00:00Z"
}
For a dashboard subscription (requires selecting which insights to include, max 6):
{
"dashboard": 67,
"dashboard_export_insights": [101, 102, 103],
"target_type": "email",
"target_value": "[email protected]",
"frequency": "weekly",
"byweekday": ["monday"],
"start_date": "2025-01-01T09:00:00Z"
}
For Slack delivery, include the integration_id from step 2:
{
"insight": 12345,
"target_type": "slack",
"target_value": "#general",
"integration_id": 789,
"frequency": "daily",
"start_date": "2025-01-01T09:00:00Z"
}
Use subscriptions-partial-update with the subscription ID. Common updates:
{"frequency": "weekly", "byweekday": ["monday"]}target_value with the full comma-separated listtarget_type and target_value togetherSubscriptions are soft-deleted. Use subscriptions-partial-update:
{
"id": 456,
"deleted": true
}
When the user doesn't specify details:
"daily"integrations-list returns Slack integrations but creation still fails, the integration may be misconfigureddashboard_export_insights. If the user doesn't specify which insights, fetch the dashboard with dashboard-get and select the first 6 insights from its tilesControl Philips Hue lights and scenes via the OpenHue CLI.