Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ Prioritize potential churn risks, low engagement, and accounts where something i
A lot of valuable context lives in past conversations:

- **BuildBetter** — recordings of customer success, sales, and onboarding calls. Use <PrivateLink url="https://app.buildbetter.app/people">People</PrivateLink> to search companies or contacts and see call history, or use direct search / AI chat.
- **Pylon** — Slack channel history. The <PrivateLink url="https://app.usepylon.com/accounts">account</PrivateLink> page is linked to Salesforce accounts that have a Slack channel. Filter by Owner (mapped to the account owner in Salesforce) to view all Slack/Teams interactions for your accounts.
- **[SupportHog](/handbook/growth/sales/slack-channels)** — Slack channel history. Our own tool links [shared Slack (and MS Teams) channels](/handbook/growth/sales/slack-channels) to Salesforce accounts so you can view Slack/Teams interactions for your accounts.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't know how specific we want to be -
It's not that SupportHog links to Salesforce. I actually think that Abe was looking at syncing all conversations.
Maybe worth mentioning here that you can go to conversations and view tickets from your accounts by filtering on your own name tag (will be ae_emaillocalpart or csm_emailloalpart)

- **Vitally** — Zendesk and email conversations under <PrivateLink url="https://posthog.vitally-eu.io/conversations/active/">Active Conversations</PrivateLink>. See who the key contacts have been, who's supported them in the past, and how frequently they raise tickets.

### Product usage analysis
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,20 @@ We use [Zendesk Support](https://posthoghelp.zendesk.com/agent) as our internal

### Tickets from Slack

Customers can [create tickets from Slack](/handbook/engineering/support-hero#pylon-to-create-zendesk-tickets-from-slack-posts) by adding the 🎫 emoji reaction. This means they can get help even when you're asleep or on holiday. Let your customer know about this, and remind them now and then.
Customers can [create tickets from Slack](/handbook/engineering/support-hero#creating-zendesk-tickets-from-slack-posts) by adding the 🎫 emoji reaction (or mentioning `@SupportHog`). This means they can get help even when you're asleep or on holiday. Let your customer know about this, and remind them now and then.

If it isn't working, check that you've [invited Pylon to the channel](/handbook/growth/sales/slack-channels). Fill out the [automated message asking for `Group` and `Severity`](/handbook/engineering/support-hero#pylon-to-create-zendesk-tickets-from-slack-posts) so the ticket goes to the right team — customers often forget, so fill it for them. Check [feature ownership](/handbook/engineering/feature-ownership) if you're not sure who owns a product area.

If you're working on a ticket the customer raised in Slack, let support know to avoid duplicate effort. Leave an internal note in Zendesk.
If you're working on a ticket the customer raised in Slack, let support know to avoid duplicate effort. Leave an internal note in PostHog.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can now assign this to yourself in PostHog as we don't have seat issues. Keep it assigned to yourself while you're working on the ticket and either set it to resolved when you're done or assign it to Team Support when you want to escalate it.


> Tip: Customer messages from Pylon channels also go to [#support-customer-success](https://posthog.slack.com/archives/C05MUMZLC13). Find the ticket there and reply in the thread — that also creates an internal note in Zendesk.
> Tip: Customer messages from SupportHog channels also go to [#support-managed-customers](https://posthog.slack.com/archives/C05MUMZLC13). Find the ticket there and follow the link to see the ticket in PostHog.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

at the moment it's only when a ticket is created by customers - I can update it to any time they send a reply to the ticket as well if you want?


## Investigating issues

Ask for specifics: links to the insight, feature flag, or dashboard; a screenshot or the exact error message.

If it helps, log in as the customer. Clicking a link from their PostHog instance will sometimes offer a "log in as" option. Otherwise, go to <PrivateLink url="https://us.posthog.com/admin/">US admin</PrivateLink> (<PrivateLink url="https://eu.posthog.com/admin/">EU admin</PrivateLink>), search for the org or user, and click "Log in as user". If you don't see that option, ask <TeamMember name="Dana Zou" photo /> to add you as a staff member in admin.

Use our [docs](/docs), [troubleshooting tips](/handbook/support/troubleshooting-tips), and search Slack, Zendesk, GitHub, and Pylon for similar issues. If you've just joined, spend 30 mins to an hour investigating yourself before asking for help — onboarding is when you learn the products best. Use common sense based on urgency.
Use our [docs](/docs), [troubleshooting tips](/handbook/support/troubleshooting-tips), and search Slack, Zendesk, and GitHub for similar issues. If you've just joined, spend 30 mins to an hour investigating yourself before asking for help — onboarding is when you learn the products best. Use common sense based on urgency.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess this list is missing PostHog support


Keep the customer in the loop while you investigate — progress, blockers, next steps.

Expand Down
14 changes: 2 additions & 12 deletions contents/handbook/cs-and-onboarding/how-we-work.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,9 @@ You will run into questions that you don't know the answer to from time to time

Most of our customers use Slack, and it's a great way for us to be responsive to them. Everyone has the permission in Slack to create a Connect channel with a customer, and you should do this as early as possible in your relationship with them.

When you've created the channel you should also add Pylon, which is used to sync Slack conversations with Zendesk so that our Support and Engineering teams can work on customer issues in a familiar context.
When you've created the channel you should also add SupportHog, our own tool that syncs Slack conversations with PostHog so that our Support and Engineering teams can work on customer issues in a familiar context. Follow the [shared Slack channel setup steps](/handbook/growth/sales/slack-channels#setting-up-a-shared-slack-channel-via-slack-connect) to invite SupportHog and configure the channel.

To add Pylon to your customer channel:

1. In the Slack desktop app, click the channel name.
2. On the Settings tab, click Add apps.
3. Type Pylon and click Add.
4. In the popup that appears in the Slack channel, select Customer Channel.
5. Add yourself as the Account Owner.
6. Click Enable.
7. Add Tim, Charles, and Abigail to the channel.

Once enabled, you can add the :ticket: emoji to a Slack thread to create a new Ticket in Zendesk. Customers can also do this. Make sure that a Group and Severity are selected or the ticket won't be routed properly.
Once it's in the channel, you can add the :ticket: emoji to a Slack thread — or mention `@SupportHog` — to create a new ticket in Zendesk. Customers can also do this.

> It's your job to ensure your customer issues are resolved, make sure you follow up with Support and Engineering if you feel like the issue isn't getting the right level of attention.

Expand Down
2 changes: 1 addition & 1 deletion contents/handbook/cs-and-onboarding/new-hire-onboarding.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ In-person onboarding typically happens this week (3-4 days led by your team lead
- Walking through your book of business with your team lead - prioritisation, where to start, who to reach out to first.
- Digging into individual customers - what they're using, where they are in the lifecycle, any open issues, recent conversations.
- Demo practice and feedback.
- Seeing how the systems we use (Vitally, PostHog data, Pylon, Zendesk) come together day-to-day.
- Seeing how the systems we use (Vitally, PostHog data, Zendesk) come together day-to-day.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add PostHog support to the list

- A no-stupid-questions session - bring everything you've been wondering about from Week 1.
- First look at signals - what Vitally tags and alerts are, how the team uses them. You won't be confidently responding to them yet, but that comes over the rest of the month.

Expand Down
10 changes: 3 additions & 7 deletions contents/handbook/engineering/operations/support-hero.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,6 @@ As a business we need to ensure we are focusing support on our paying customers,

\* Try to be especially responsive to any customers marked as `Sales/CS Top 20`. This set of customers is regularly reviewed by the sales team, and this priority is applied to those customers we'd like to have an especially fantastic support experience.

\*\* Due to the way we're using Pylon, "new" tickets from high prio customer Slack channels only appear as `New` in Zendesk for a few seconds, then a webhook updates the ticket and quickly changes it to `Open`.

### What if I need to confirm priority by checking a customer's MRR?

You've got a couple of options. By order of quickness:
Expand Down Expand Up @@ -267,7 +265,7 @@ We use [Zendesk Support](https://posthoghelp.zendesk.com) as our internal platfo

Zendesk allows us to manage all our customer conversations in one place and reply through Slack or email.

Zendesk is populated with new tickets when issues are sent via the in-app [Support panel](https://us.posthog.com/home#panel=support) (the `Help` tab in the righthand sidebar), from people outside the PostHog GitHub organization adding issues to the `posthog` and `posthog.com` repos, and new [community questions](/questions). High priority customers also have Slack channels they can post support questions in. We can [create Zendesk tickets from Slack questions via Pylon.](#pylon-to-create-zendesk-tickets-from-slack-posts)
Zendesk is populated with new tickets when issues are sent via the in-app [Support panel](https://us.posthog.com/home#panel=support) (the `Help` tab in the righthand sidebar), from people outside the PostHog GitHub organization adding issues to the `posthog` and `posthog.com` repos, and new [community questions](/questions). High priority customers also have Slack channels they can post support questions in. We can [create Zendesk tickets from Slack questions via SupportHog.](#creating-zendesk-tickets-from-slack-posts)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a bit wrong, but seems fine for now - I'll be going through replacing all the Zendesk wording soon enough


The Zendesk tickets will include links to the GitHub issue, Slack thread, or the community question so we can answer in the appropriate platform. After replying to a community question, make an `internal note` on the Zendesk ticket confirming that you've replied outside of Zendesk, and set the [ticket status](#ticket-status) accordingly when submitting the internal note.

Expand Down Expand Up @@ -340,11 +338,9 @@ This looks at the Content Warning field on the Zendesk Organization, and adds th

If you do discover any potentially offensive content in a customer account then please update this field on the Zendesk Organization so that other team members are aware of the content.

### Pylon to create Zendesk tickets from Slack posts

We use [Pylon](https://usepylon.com/) to create Zendesk tickets from Slack posts. To do so, add the `:ticket:` (🎫) emoji reaction to the post that you want to create a Zendesk ticket from.
### Creating Zendesk tickets from Slack posts

Adding the `:ticket:` emoji reaction will cause Pylon to add a couple of replies in a thread under the post. The last of those replies includes options for the Zendesk ticket you're creating: Use the `Group` menu to send the ticket to the appropriate team, and the `Severity` menu to set the severity flag on the Zendesk ticket, then hit the `Submit` button.
We use [SupportHog](/handbook/growth/sales/slack-channels), our own tool, to create PostHog Support tickets from Slack posts. To do so, add the `:ticket:` (🎫) emoji reaction to the post that you want to create a Zendesk ticket from, or mention `@SupportHog` in the thread.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also a bit wrong - but maybe for me to clean up with the zendesk changes


Zendesk tickets created this way will normally be marked as high priority tickets. You can respond to them either in Zendesk or Slack, as there is a two-way sync.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Reach out before customers ask, even if it’s just to say, “We’re aware and

| Level | Description | Examples | Channels | Cadence |
| ----- | ----- | ----- | ----- | ----- |
| **SEV 0 – Emergency** | Existential service failure; all or most customers impacted with no workaround. CMOC sends immediately via broadcast. Account owners do **not** gate comms. | Full platform outage, data loss, security breach with active customer impact. | Pylon broadcast → Email → DM/SMS | Immediate broadcast, then every 15–30 min; postmortem within 24h |
| **SEV 0 – Emergency** | Existential service failure; all or most customers impacted with no workaround. CMOC sends immediately via broadcast. Account owners do **not** gate comms. | Full platform outage, data loss, security breach with active customer impact. | Slack broadcast → Email → DM/SMS | Immediate broadcast, then every 15–30 min; postmortem within 24h |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think there's a broadcast

| **SEV 1 – Critical** | Major outage or data loss; widespread impact. | API unavailable, ingestion halted, login failures. | Slack → Email → (DM or SMS if needed) | Every 30–60 min; postmortem within 48h |
| **SEV 2 – Major** | Partial degradation or downtime; workaround available. | Replay or query delays \>30 min, flag evaluation slow. | Slack or Email | Every 1–2 hrs |
| **SEV 3 – Minor** | Limited impact or slow recovery. | Billing sync delays, isolated org issues. | Slack | Start and close |
Expand All @@ -44,9 +44,9 @@ Reach out before customers ask, even if it’s just to say, “We’re aware and

### **Emergency (SEV 0)**

> **This overrides the standard workflow.** CMOC sends directly to all affected customer channels via Pylon broadcast without waiting for account owners. Account owners follow up individually once online.
> **This overrides the standard workflow.** CMOC sends directly to all affected customer channels via Slack broadcast without waiting for account owners. Account owners follow up individually once online.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think there's a broadcast

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also what's CMOC?


**Initial broadcast (Pylon):**
**Initial broadcast (SupportHog):**

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think there's a broadcast


We're investigating a major incident affecting [feature/service]. [Symptom — e.g., "Event ingestion is fully stopped" or "The PostHog app is unreachable."]

Expand Down Expand Up @@ -143,7 +143,7 @@ Heads up — maintenance on \[system\] from \[time window\]. No downtime expecte

### **Workflow**

> **SEV 0 override:** For SEV 0 incidents, the CMOC skips steps 4–5 and sends the initial message directly via [Pylon broadcast](#using-pylon-for-broadcasts) to all affected customer channels. Account owners are notified in [#group-cs-sales-support](https://posthog.slack.com/archives/C090RCG671C) simultaneously, and take over individual follow-up threads once online. The CMOC continues to own broadcast updates until the incident is resolved or downgraded.
> **SEV 0 override:** For SEV 0 incidents, the CMOC skips steps 4–5 and sends the initial message directly via Slack broadcast to all affected customer channels. Account owners are notified in [#group-cs-sales-support](https://posthog.slack.com/archives/C090RCG671C) simultaneously, and take over individual follow-up threads once online. The CMOC continues to own broadcast updates until the incident is resolved or downgraded.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think I understand enough about what this is and if it still works that way

1. **Incident declared** (Engineering).
2. **CMOC activated**, notified of impact.
3. **Assess customer impact**, this <PrivateLink url="https://us.posthog.com/project/2/insights/EBiXOD91">insight</PrivateLink> (or this <PrivateLink url="https://docs.google.com/spreadsheets/d/1EyV55L0vWTfD4W02j5A3Vx3YZYPUODmQQC1toFPcKXU/edit?gid=1396499197#gid=1396499197">Google Sheet</PrivateLink> as a backup) will help you understand which customers are using which components in which cloud environment.
Expand All @@ -163,20 +163,3 @@ Heads up — maintenance on \[system\] from \[time window\]. No downtime expecte
4. **Account Owner sends the message** to their customers. Example outbound: “We’re investigating an outage affecting event ingestion. Updates every 30 minutes.”
5. **During:** “Root cause identified (Redis queue saturation). Fix in progress.”
6. **Resolution:** “Resolved at 11:42 UTC. Write-up soon.”

## Using Pylon for broadcasts

It's best that communications are shared directly from the account owner; however, if speed is of the essence, i.e. for a SEV 1 or security issue, and some folks are not yet working or on PTO, the CMOC can use Pylon to send a broadcast to all customer Slack channels en masse:

1. Log into app.usepylon.com with your PostHog Slack account.
2. Go to the _Broadcasts_ link on the left-hand side of the navigation.
3. Click _Create Broadcast_ in the top right-hand corner of the UI.
4. Enter the message you want to send, ensuring the formatting looks correct in the preview on the right-hand side.
5. Ensure the Send as option is set to PostHog, not your own user (unless you want to handle 450+ potential separate threads)
6. Click _Next_ in the top right-hand corner of the UI.
7. Select your audience. You can use the filters to select all channels not owned by specific people, e.g., those who are currently online and communicating 1:1 with customers.
8. Make sure you click _Add to Audience_ to add the selected channels to the broadcast.
9. Click _Next_ in the top right-hand corner of the UI.
10. Set the engagement notification channel to be [#support-customer-success](https://posthog.slack.com/archives/C05MUMZLC13)
11. Check that you're happy with the message and audience and click _Send Now_ in the top right of the UI.
12. Ask everyone online to monitor [#support-customer-success](https://posthog.slack.com/archives/C05MUMZLC13) for replies and respond where necessary.
2 changes: 1 addition & 1 deletion contents/handbook/growth/sales/crm.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ As a general principle, we try to make sure as much customer communication as po

For existing customers, you'll sometimes send emails directly from <PrivateLink url="https://posthog.vitally-eu.io/">Vitally</PrivateLink>. To ensure these also make it to Salesforce, first look up your _Email to Salesforce Address_ from the [personal settings page](https://posthog.lightning.force.com/lightning/settings/personal/EmailToSalesforceUserSetup/home) in Salesforce, and then add it to your <PrivateLink url="https://posthog.vitally-eu.io/settings/profile/gmail">Vitally gmail settings</PrivateLink>.

All Slack messages sync up with the corresponding account in Salesforce. We use [Pylon](https://app.usepylon.com) for this sync, so make sure Pylon is added to the customer Slack channel integrations and the channel is [linked to the Salesforce account](https://app.usepylon.com/integrations/salesforce?tab=account-mapping) properly for the sync to work smoothly.
All Slack messages sync up with the corresponding account in Salesforce. We use [SupportHog](/handbook/growth/sales/slack-channels) for this sync, so make sure SupportHog is [added to the customer Slack channel](/handbook/growth/sales/slack-channels) and the channel's name is recorded on the relevant Salesforce account record for the sync to work smoothly.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is how this works.


You are most likely to use the following regularly:

Expand Down
4 changes: 2 additions & 2 deletions contents/handbook/growth/sales/customer-onboarding.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ We'll need them to be able to demo their product to us, as well as attend two or

Ideally we will also have them in Slack Connect channel so that we can provide responsive support and expose them to the wider PostHog team.

Some customers may wish to use MS Teams rather than Slack - we can sync our Slack with Teams via Pylon to do this. First you will need an MS Teams licence - ask Simon for one. Then, follow the instructions on [the link here](https://docs.usepylon.com/bridges/microsoft-teams/setup) to get set up.
Before adding the customer into the channel, remember to test it on both sides to ensure the integration is working correctly.
Some customers may wish to use MS Teams rather than Slack - SupportHog works in Teams too. See [Using MS Teams](/handbook/growth/sales/slack-channels#using-ms-teams) on the shared channels page for how to get set up.
Before adding the customer into the channel, remember to test it to ensure ticket creation is working correctly.

## Day 0 - Session: Kick off

Expand Down
Loading
Loading