> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Find the errors your paying accounts hit – Self-driving pocket guide Canonical URL: https://posthog.com/docs/self-driving/pocket-guide/errors-your-best-accounts-hit > **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.posthog.com` instead of `https://app.posthog.com` (app host for links). ## On this page - [What the scout looks at](#what-the-scout-looks-at) - [The report in your inbox](#the-report-in-your-inbox) - [The scout itself](#the-scout-itself) - [Add this to your scout troop](#add-this-to-your-scout-troop) Chapter 08 # Find the errors your paying accounts hit – Self-driving pocket guide This scout reports [issues](https://posthog.com/docs/error-tracking/issues-and-exceptions.md) concentrated in your paying accounts. The issue list sorts by occurrences, users, or sessions, so an issue four paying accounts keep hitting can rank below a free account's retry loop. ## What the scout looks at `TypeError: Cannot read properties of null` fired 2,340 times this week across 31 accounts. Four of them pay you and send 9% of your traffic, but they carry 71% of the issue, so the scout reports it. An issue spread evenly across your accounts gets no report, and neither does an issue driven by one client retrying. ## The report in your inbox The [report](https://posthog.com/docs/self-driving/reports.md) names the issue and the accounts, with each account's share of the issue next to its share of your traffic Fig. 1. Click **Ask AI** on the report to ask who else is affected, whether the problem is new, or what to do next. P11One issue is 71% concentrated in four paying accounts 2Four paying accounts carry 71% of one issue while making up 9% of traffic – it does not rank in your top ten by volume3Scout · errors by account value4ReadyActionable53h ago ArchiveReview6 Fig. 1 – The report as it lands: the claim on the card, the accounts and the comparison inside it.Hover over the figure to learn about each element. ## The scout itself With [group analytics](https://posthog.com/docs/product-analytics/group-analytics.md), each `$exception` event carries the account that sent it. The scout compares each account's share of an issue with its share of your traffic over the last seven days Fig. 2. It checks which accounts pay you by their [Stripe](https://posthog.com/docs/data-pipelines/sources/stripe.md) customer ID in Customer analytics, and it only reports issues that fired in the last 24 hours. signals-scout-errors-by-account-value/SKILL.md ```markdown --- name: signals-scout-errors-by-account-value description: > Finds error tracking issues concentrated in commercially significant accounts – the ones a count-ranked issue list buries – and files each as a report weighted by what the account is worth rather than by how often it fired. allowed_tools: - emit_report - edit_report --- # Errors your best accounts hit Rank issues by whose money is behind them, not by how loudly they fire. Narrower than `signals-scout-error-tracking`, which watches the whole exception surface – bursts, stuck loops, multi-fingerprint clusters, status regressions – and discriminates on the ratio between `count` and `distinct_users`. That scout answers "is this reaching real people". This one adds the half it cannot see: **which people**, and what they pay. It also sits beside `signals-scout-customer-analytics`, which already watches per-account health weighted by commercial ownership – but watches engagement, not errors. Borrow its join, not its subject. ## Discriminator Emit a report when an issue's exceptions concentrate in accounts carrying commercial weight, and that concentration is not explained by those accounts simply being your busiest. Concretely, all three: - **(a)** The issue's affected accounts skew to accounts with a `stripe_customer_id`, an assigned `csm` / `account_executive`, or a plan tier above your floor. - **(b)** Their share of the issue is meaningfully above their share of your overall traffic. An account that is 40% of your events being 40% of an issue is not a finding. - **(c)** The issue is live – firing in the last 24h, not a resolved issue's tail. Write nothing when the issue is spread evenly across the fleet. That is a broad regression and it belongs to `signals-scout-error-tracking`, which will already have it. Write nothing when a single account is the entire issue **and** it is one client retrying. High `count`, low `distinct_users`, one account is a stuck loop, not a customer-impacting bug – the canonical error scout's table already names that shape. ## Getting oriented Four reads cold-start a run: - `scout-scratchpad-search` (`text=account-value`, then `text=exception`) – the group-type index you discovered last time, accounts already reported on, and issues ruled out as fleet-wide. - `scout-project-profile-get` – confirm `error_tracking` is in `products_in_use` and `$exception` has fresh 24h volume. Nothing fresh, close out. - `inbox-reports-list` – an issue you have reported on before that is still firing is an **edit**, not a new report. - **Discover the account group index.** Do not assume one. Which `$group_N` the account roster keys to varies by project: ```sql SELECT g.index AS group_type_index, count(DISTINCT a.external_id) AS matched, (SELECT count() FROM system.accounts WHERE external_id != '') AS total FROM system.accounts a INNER JOIN groups g ON g.key = a.external_id WHERE a.external_id != '' GROUP BY group_type_index ORDER BY matched DESC ``` Record the winning index as `pattern:account-value:group-type` so later runs skip this. No overlap on any index means the roster is not joined to events – close out `join-unlinked` and say so, because that is a setup problem worth a human knowing about. ## The query that does the work Issues by account, against each account's share of overall traffic. Substitute the discovered index for `$group_1`. ```sql -- Shares are window sums over every account, so paid accounts are measured against the whole -- issue and fleet, and each CTE scans events once. WITH fleet AS ( SELECT gk, all_events, all_events / sum(all_events) OVER () AS fleet_share FROM ( SELECT $group_1 AS gk, count() AS all_events FROM events WHERE timestamp > now() - INTERVAL 7 DAY AND $group_1 != '' GROUP BY gk ) ), errs AS ( SELECT issue, gk, hits, distinct_users, hits / sum(hits) OVER (PARTITION BY issue) AS issue_share FROM ( SELECT properties.$exception_issue_id AS issue, $group_1 AS gk, count() AS hits, uniq(person_id) AS distinct_users FROM events WHERE event = '$exception' AND timestamp > now() - INTERVAL 7 DAY AND $group_1 != '' GROUP BY issue, gk ) ) SELECT e.issue, a.name, e.hits, e.distinct_users, f.all_events, round(e.issue_share, 3) AS issue_share, round(f.fleet_share, 4) AS fleet_share, round(e.issue_share / f.fleet_share, 1) AS concentration FROM errs e INNER JOIN fleet f ON f.gk = e.gk INNER JOIN system.accounts a ON a.external_id = e.gk WHERE JSONExtractString(a.properties, 'stripe_customer_id') != '' -- Most concentrated pairs first, with an explicit limit so the default of 100 rows can't cut them off. ORDER BY concentration DESC LIMIT 500 ``` `issue_share` well above `fleet_share`, so a `concentration` well above 1, is the finding. Equal is noise. ## What a good report says Name the issue, name the accounts, and give the reader the comparison that makes it a finding – their share of the issue against their share of your traffic. A report that says "this error hit enterprise customers" without that ratio is not actionable, because every error hits some customers. Say what you cannot see. You are ranking by commercial weight, which is a proxy for impact, not impact itself. An account hitting an error on a page nobody uses is still an account hitting an error. ## Schedule Daily. Account concentration shifts on the timescale of deploys, not months – but it only writes when a live issue skews, so most days are silent. ``` Show full example Fig. 2 – The scout itself – the file an agent follows on a schedule. - [Error Tracking](https://posthog.com/docs/error-tracking.md) Every exception of the last seven days, grouped by issue and by the account that hit it. - Customer analytics Your account roster, so an exception resolves to an organization rather than an anonymous person. - [Revenue analytics](https://posthog.com/docs/data-warehouse.md) What those accounts pay, so an issue can be ranked by money rather than by volume. ## Add this to your scout troop You'll need these to run this scout. - Required[Error Tracking](https://posthog.com/docs/error-tracking/installation.md) instrumented, with exceptions reaching PostHog - RequiredGroup analytics configured, so exceptions carry the account that hit them – without it there is nothing to join an issue to - RecommendedRevenue connected to persons, through revenue events or a mapped warehouse source. Without it the scout can rank by account weight but not by amount - OptionalA CSM or account executive assigned on your accounts, which is what makes weight legible [Add this scout](https://app.posthog.com/inbox/config#createScout=eyJuYW1lIjoic2lnbmFscy1zY291dC1lcnJvcnMtYnktYWNjb3VudC12YWx1ZSIsImRlc2NyaXB0aW9uIjoiRmluZHMgZXJyb3IgdHJhY2tpbmcgaXNzdWVzIGNvbmNlbnRyYXRlZCBpbiBjb21tZXJjaWFsbHkgc2lnbmlmaWNhbnQgYWNjb3VudHMg4oCTIHRoZSBvbmVzIGEgY291bnQtcmFua2VkIGlzc3VlIGxpc3QgYnVyaWVzIOKAkyBhbmQgZmlsZXMgZWFjaCBhcyBhIHJlcG9ydCB3ZWlnaHRlZCBieSB3aGF0IHRoZSBhY2NvdW50IGlzIHdvcnRoIHJhdGhlciB0aGFuIGJ5IGhvdyBvZnRlbiBpdCBmaXJlZC5cbiIsImJvZHkiOiIjIEVycm9ycyB5b3VyIGJlc3QgYWNjb3VudHMgaGl0XG5cblJhbmsgaXNzdWVzIGJ5IHdob3NlIG1vbmV5IGlzIGJlaGluZCB0aGVtLCBub3QgYnkgaG93IGxvdWRseSB0aGV5IGZpcmUuXG5cbk5hcnJvd2VyIHRoYW4gYHNpZ25hbHMtc2NvdXQtZXJyb3ItdHJhY2tpbmdgLCB3aGljaCB3YXRjaGVzIHRoZSB3aG9sZSBleGNlcHRpb24gc3VyZmFjZSDigJMgYnVyc3RzLFxuc3R1Y2sgbG9vcHMsIG11bHRpLWZpbmdlcnByaW50IGNsdXN0ZXJzLCBzdGF0dXMgcmVncmVzc2lvbnMg4oCTIGFuZCBkaXNjcmltaW5hdGVzIG9uIHRoZSByYXRpb1xuYmV0d2VlbiBgY291bnRgIGFuZCBgZGlzdGluY3RfdXNlcnNgLiBUaGF0IHNjb3V0IGFuc3dlcnMgXCJpcyB0aGlzIHJlYWNoaW5nIHJlYWwgcGVvcGxlXCIuIFRoaXMgb25lXG5hZGRzIHRoZSBoYWxmIGl0IGNhbm5vdCBzZWU6ICoqd2hpY2ggcGVvcGxlKiosIGFuZCB3aGF0IHRoZXkgcGF5LlxuXG5JdCBhbHNvIHNpdHMgYmVzaWRlIGBzaWduYWxzLXNjb3V0LWN1c3RvbWVyLWFuYWx5dGljc2AsIHdoaWNoIGFscmVhZHkgd2F0Y2hlcyBwZXItYWNjb3VudCBoZWFsdGhcbndlaWdodGVkIGJ5IGNvbW1lcmNpYWwgb3duZXJzaGlwIOKAkyBidXQgd2F0Y2hlcyBlbmdhZ2VtZW50LCBub3QgZXJyb3JzLiBCb3Jyb3cgaXRzIGpvaW4sIG5vdCBpdHNcbnN1YmplY3QuXG5cbiMjIERpc2NyaW1pbmF0b3JcblxuRW1pdCBhIHJlcG9ydCB3aGVuIGFuIGlzc3VlJ3MgZXhjZXB0aW9ucyBjb25jZW50cmF0ZSBpbiBhY2NvdW50cyBjYXJyeWluZyBjb21tZXJjaWFsIHdlaWdodCwgYW5kXG50aGF0IGNvbmNlbnRyYXRpb24gaXMgbm90IGV4cGxhaW5lZCBieSB0aG9zZSBhY2NvdW50cyBzaW1wbHkgYmVpbmcgeW91ciBidXNpZXN0LlxuXG5Db25jcmV0ZWx5LCBhbGwgdGhyZWU6XG5cbi0gKiooYSkqKiBUaGUgaXNzdWUncyBhZmZlY3RlZCBhY2NvdW50cyBza2V3IHRvIGFjY291bnRzIHdpdGggYSBgc3RyaXBlX2N1c3RvbWVyX2lkYCwgYW4gYXNzaWduZWRcbiAgYGNzbWAgLyBgYWNjb3VudF9leGVjdXRpdmVgLCBvciBhIHBsYW4gdGllciBhYm92ZSB5b3VyIGZsb29yLlxuLSAqKihiKSoqIFRoZWlyIHNoYXJlIG9mIHRoZSBpc3N1ZSBpcyBtZWFuaW5nZnVsbHkgYWJvdmUgdGhlaXIgc2hhcmUgb2YgeW91ciBvdmVyYWxsIHRyYWZmaWMuIEFuXG4gIGFjY291bnQgdGhhdCBpcyA0MCUgb2YgeW91ciBldmVudHMgYmVpbmcgNDAlIG9mIGFuIGlzc3VlIGlzIG5vdCBhIGZpbmRpbmcuXG4tICoqKGMpKiogVGhlIGlzc3VlIGlzIGxpdmUg4oCTIGZpcmluZyBpbiB0aGUgbGFzdCAyNGgsIG5vdCBhIHJlc29sdmVkIGlzc3VlJ3MgdGFpbC5cblxuV3JpdGUgbm90aGluZyB3aGVuIHRoZSBpc3N1ZSBpcyBzcHJlYWQgZXZlbmx5IGFjcm9zcyB0aGUgZmxlZXQuIFRoYXQgaXMgYSBicm9hZCByZWdyZXNzaW9uIGFuZCBpdFxuYmVsb25ncyB0byBgc2lnbmFscy1zY291dC1lcnJvci10cmFja2luZ2AsIHdoaWNoIHdpbGwgYWxyZWFkeSBoYXZlIGl0LlxuXG5Xcml0ZSBub3RoaW5nIHdoZW4gYSBzaW5nbGUgYWNjb3VudCBpcyB0aGUgZW50aXJlIGlzc3VlICoqYW5kKiogaXQgaXMgb25lIGNsaWVudCByZXRyeWluZy4gSGlnaFxuYGNvdW50YCwgbG93IGBkaXN0aW5jdF91c2Vyc2AsIG9uZSBhY2NvdW50IGlzIGEgc3R1Y2sgbG9vcCwgbm90IGEgY3VzdG9tZXItaW1wYWN0aW5nIGJ1ZyDigJMgdGhlXG5jYW5vbmljYWwgZXJyb3Igc2NvdXQncyB0YWJsZSBhbHJlYWR5IG5hbWVzIHRoYXQgc2hhcGUuXG5cbiMjIEdldHRpbmcgb3JpZW50ZWRcblxuRm91ciByZWFkcyBjb2xkLXN0YXJ0IGEgcnVuOlxuXG4tIGBzY291dC1zY3JhdGNocGFkLXNlYXJjaGAgKGB0ZXh0PWFjY291bnQtdmFsdWVgLCB0aGVuIGB0ZXh0PWV4Y2VwdGlvbmApIOKAkyB0aGUgZ3JvdXAtdHlwZSBpbmRleFxuICB5b3UgZGlzY292ZXJlZCBsYXN0IHRpbWUsIGFjY291bnRzIGFscmVhZHkgcmVwb3J0ZWQgb24sIGFuZCBpc3N1ZXMgcnVsZWQgb3V0IGFzIGZsZWV0LXdpZGUuXG4tIGBzY291dC1wcm9qZWN0LXByb2ZpbGUtZ2V0YCDigJMgY29uZmlybSBgZXJyb3JfdHJhY2tpbmdgIGlzIGluIGBwcm9kdWN0c19pbl91c2VgIGFuZCBgJGV4Y2VwdGlvbmBcbiAgaGFzIGZyZXNoIDI0aCB2b2x1bWUuIE5vdGhpbmcgZnJlc2gsIGNsb3NlIG91dC5cbi0gYGluYm94LXJlcG9ydHMtbGlzdGAg4oCTIGFuIGlzc3VlIHlvdSBoYXZlIHJlcG9ydGVkIG9uIGJlZm9yZSB0aGF0IGlzIHN0aWxsIGZpcmluZyBpcyBhbiAqKmVkaXQqKixcbiAgbm90IGEgbmV3IHJlcG9ydC5cbi0gKipEaXNjb3ZlciB0aGUgYWNjb3VudCBncm91cCBpbmRleC4qKiBEbyBub3QgYXNzdW1lIG9uZS4gV2hpY2ggYCRncm91cF9OYCB0aGUgYWNjb3VudCByb3N0ZXJcbiAga2V5cyB0byB2YXJpZXMgYnkgcHJvamVjdDpcblxuICBgYGBzcWxcbiAgU0VMRUNUIGcuaW5kZXggQVMgZ3JvdXBfdHlwZV9pbmRleCxcbiAgICAgICAgIGNvdW50KERJU1RJTkNUIGEuZXh0ZXJuYWxfaWQpIEFTIG1hdGNoZWQsXG4gICAgICAgICAoU0VMRUNUIGNvdW50KCkgRlJPTSBzeXN0ZW0uYWNjb3VudHMgV0hFUkUgZXh0ZXJuYWxfaWQgIT0gJycpIEFTIHRvdGFsXG4gIEZST00gc3lzdGVtLmFjY291bnRzIGFcbiAgSU5ORVIgSk9JTiBncm91cHMgZyBPTiBnLmtleSA9IGEuZXh0ZXJuYWxfaWRcbiAgV0hFUkUgYS5leHRlcm5hbF9pZCAhPSAnJ1xuICBHUk9VUCBCWSBncm91cF90eXBlX2luZGV4XG4gIE9SREVSIEJZIG1hdGNoZWQgREVTQ1xuICBgYGBcblxuICBSZWNvcmQgdGhlIHdpbm5pbmcgaW5kZXggYXMgYHBhdHRlcm46YWNjb3VudC12YWx1ZTpncm91cC10eXBlYCBzbyBsYXRlciBydW5zIHNraXAgdGhpcy4gTm9cbiAgb3ZlcmxhcCBvbiBhbnkgaW5kZXggbWVhbnMgdGhlIHJvc3RlciBpcyBub3Qgam9pbmVkIHRvIGV2ZW50cyDigJMgY2xvc2Ugb3V0IGBqb2luLXVubGlua2VkYCBhbmRcbiAgc2F5IHNvLCBiZWNhdXNlIHRoYXQgaXMgYSBzZXR1cCBwcm9ibGVtIHdvcnRoIGEgaHVtYW4ga25vd2luZyBhYm91dC5cblxuIyMgVGhlIHF1ZXJ5IHRoYXQgZG9lcyB0aGUgd29ya1xuXG5Jc3N1ZXMgYnkgYWNjb3VudCwgYWdhaW5zdCBlYWNoIGFjY291bnQncyBzaGFyZSBvZiBvdmVyYWxsIHRyYWZmaWMuIFN1YnN0aXR1dGUgdGhlIGRpc2NvdmVyZWRcbmluZGV4IGZvciBgJGdyb3VwXzFgLlxuXG5gYGBzcWxcbi0tIFNoYXJlcyBhcmUgd2luZG93IHN1bXMgb3ZlciBldmVyeSBhY2NvdW50LCBzbyBwYWlkIGFjY291bnRzIGFyZSBtZWFzdXJlZCBhZ2FpbnN0IHRoZSB3aG9sZVxuLS0gaXNzdWUgYW5kIGZsZWV0LCBhbmQgZWFjaCBDVEUgc2NhbnMgZXZlbnRzIG9uY2UuXG5XSVRIXG4gIGZsZWV0IEFTIChcbiAgICBTRUxFQ1QgZ2ssIGFsbF9ldmVudHMsIGFsbF9ldmVudHMgLyBzdW0oYWxsX2V2ZW50cykgT1ZFUiAoKSBBUyBmbGVldF9zaGFyZVxuICAgIEZST00gKFxuICAgICAgU0VMRUNUICRncm91cF8xIEFTIGdrLCBjb3VudCgpIEFTIGFsbF9ldmVudHNcbiAgICAgIEZST00gZXZlbnRzXG4gICAgICBXSEVSRSB0aW1lc3RhbXAgPiBub3coKSAtIElOVEVSVkFMIDcgREFZIEFORCAkZ3JvdXBfMSAhPSAnJ1xuICAgICAgR1JPVVAgQlkgZ2tcbiAgICApXG4gICksXG4gIGVycnMgQVMgKFxuICAgIFNFTEVDVCBpc3N1ZSwgZ2ssIGhpdHMsIGRpc3RpbmN0X3VzZXJzLFxuICAgICAgICAgICBoaXRzIC8gc3VtKGhpdHMpIE9WRVIgKFBBUlRJVElPTiBCWSBpc3N1ZSkgQVMgaXNzdWVfc2hhcmVcbiAgICBGUk9NIChcbiAgICAgIFNFTEVDVCBwcm9wZXJ0aWVzLiRleGNlcHRpb25faXNzdWVfaWQgQVMgaXNzdWUsICRncm91cF8xIEFTIGdrLFxuICAgICAgICAgICAgIGNvdW50KCkgQVMgaGl0cywgdW5pcShwZXJzb25faWQpIEFTIGRpc3RpbmN0X3VzZXJzXG4gICAgICBGUk9NIGV2ZW50c1xuICAgICAgV0hFUkUgZXZlbnQgPSAnJGV4Y2VwdGlvbidcbiAgICAgICAgQU5EIHRpbWVzdGFtcCA-IG5vdygpIC0gSU5URVJWQUwgNyBEQVlcbiAgICAgICAgQU5EICRncm91cF8xICE9ICcnXG4gICAgICBHUk9VUCBCWSBpc3N1ZSwgZ2tcbiAgICApXG4gIClcblNFTEVDVCBlLmlzc3VlLCBhLm5hbWUsIGUuaGl0cywgZS5kaXN0aW5jdF91c2VycyxcbiAgICAgICBmLmFsbF9ldmVudHMsXG4gICAgICAgcm91bmQoZS5pc3N1ZV9zaGFyZSwgMykgQVMgaXNzdWVfc2hhcmUsXG4gICAgICAgcm91bmQoZi5mbGVldF9zaGFyZSwgNCkgQVMgZmxlZXRfc2hhcmUsXG4gICAgICAgcm91bmQoZS5pc3N1ZV9zaGFyZSAvIGYuZmxlZXRfc2hhcmUsIDEpIEFTIGNvbmNlbnRyYXRpb25cbkZST00gZXJycyBlXG5JTk5FUiBKT0lOIGZsZWV0IGYgT04gZi5nayA9IGUuZ2tcbklOTkVSIEpPSU4gc3lzdGVtLmFjY291bnRzIGEgT04gYS5leHRlcm5hbF9pZCA9IGUuZ2tcbldIRVJFIEpTT05FeHRyYWN0U3RyaW5nKGEucHJvcGVydGllcywgJ3N0cmlwZV9jdXN0b21lcl9pZCcpICE9ICcnXG4tLSBNb3N0IGNvbmNlbnRyYXRlZCBwYWlycyBmaXJzdCwgd2l0aCBhbiBleHBsaWNpdCBsaW1pdCBzbyB0aGUgZGVmYXVsdCBvZiAxMDAgcm93cyBjYW4ndCBjdXQgdGhlbSBvZmYuXG5PUkRFUiBCWSBjb25jZW50cmF0aW9uIERFU0NcbkxJTUlUIDUwMFxuYGBgXG5cbmBpc3N1ZV9zaGFyZWAgd2VsbCBhYm92ZSBgZmxlZXRfc2hhcmVgLCBzbyBhIGBjb25jZW50cmF0aW9uYCB3ZWxsIGFib3ZlIDEsIGlzIHRoZSBmaW5kaW5nLiBFcXVhbCBpcyBub2lzZS5cblxuIyMgV2hhdCBhIGdvb2QgcmVwb3J0IHNheXNcblxuTmFtZSB0aGUgaXNzdWUsIG5hbWUgdGhlIGFjY291bnRzLCBhbmQgZ2l2ZSB0aGUgcmVhZGVyIHRoZSBjb21wYXJpc29uIHRoYXQgbWFrZXMgaXQgYSBmaW5kaW5nIOKAk1xudGhlaXIgc2hhcmUgb2YgdGhlIGlzc3VlIGFnYWluc3QgdGhlaXIgc2hhcmUgb2YgeW91ciB0cmFmZmljLiBBIHJlcG9ydCB0aGF0IHNheXMgXCJ0aGlzIGVycm9yIGhpdFxuZW50ZXJwcmlzZSBjdXN0b21lcnNcIiB3aXRob3V0IHRoYXQgcmF0aW8gaXMgbm90IGFjdGlvbmFibGUsIGJlY2F1c2UgZXZlcnkgZXJyb3IgaGl0cyBzb21lXG5jdXN0b21lcnMuXG5cblNheSB3aGF0IHlvdSBjYW5ub3Qgc2VlLiBZb3UgYXJlIHJhbmtpbmcgYnkgY29tbWVyY2lhbCB3ZWlnaHQsIHdoaWNoIGlzIGEgcHJveHkgZm9yIGltcGFjdCwgbm90XG5pbXBhY3QgaXRzZWxmLiBBbiBhY2NvdW50IGhpdHRpbmcgYW4gZXJyb3Igb24gYSBwYWdlIG5vYm9keSB1c2VzIGlzIHN0aWxsIGFuIGFjY291bnQgaGl0dGluZyBhblxuZXJyb3IuXG5cbiMjIFNjaGVkdWxlXG5cbkRhaWx5LiBBY2NvdW50IGNvbmNlbnRyYXRpb24gc2hpZnRzIG9uIHRoZSB0aW1lc2NhbGUgb2YgZGVwbG95cywgbm90IG1vbnRocyDigJMgYnV0IGl0IG9ubHkgd3JpdGVzXG53aGVuIGEgbGl2ZSBpc3N1ZSBza2V3cywgc28gbW9zdCBkYXlzIGFyZSBzaWxlbnQuIiwic291cmNlIjoicG9ja2V0X2d1aWRlIn0)Opens PostHog with it prefilled. Review it, then hit Create. Not set up yet? One command installs PostHog, connects GitHub, and turns on a default troop of scouts. That troop doesn't include this one – add it above once you're set up. ``` npx @posthog/wizard self-driving ``` See also: [Scouts](https://posthog.com/docs/self-driving/scouts.md) · [Group analytics](https://posthog.com/docs/product-analytics/group-analytics.md) · [Revenue analytics](https://posthog.com/docs/revenue-analytics/start-here.md) · [Size the impact of an issue](https://posthog.com/learn/error-tracking/pocket-guide/errors-in-paying-hosts.md)