Email transparency at Khan Academy
Whenever we mention that almost all Khan Academy email is visible to everybody on the team, people always wanna know more.
The idea is unapologetically copied from Stripe. Whether they originally came up with it or not I dunno (edit: they did). We certainly didn’t. But by now we’ve added enough of our own little tweaks to warrant contributing back. Here’s the how and why of “radical email transparency” at Khan.
How we got started
- Step 1) Read Stripe’s post.
- Step 2) Get forwarded Stripe’s post by at least 3 other devs within a couple days.
- Step 3) Implement a super hacky version of Stripe’s post
That all happened ~10 months ago. I’d absolutely do it again. I’m not gonna list all the ways this is different than Stripe’s — our system is just a bit simpler/smaller/stupider.
How our hacky version works
Every team has two email addresses: one for team members and one for the team’s “blackhole.” analytics-team@khanacademy.org and analytics-blackhole@khanacademy.org.

The -team@ address is for emailing all members of the team.
When you send email to analytics-team@, you expect everyone on the analytics team to read it.
Subscribing to analytics-team@ means analytics-related email will land in your priority inbox as soon as it’s sent, and you’re expected to read it.
The -blackhole@ address is for anything else that has anything to do with analytics.
When you CC:analytics-blackhole@, you don’t expect subscribers to immediately read it.
Subscribing to analytics-blackhole@ means you’ll receive analytics-related email, but it’ll get filtered out of your inbox and you’re not expected to read it unless you feel like it.
There’re two additional catch-all lists for the entire dev team: dev-team@ and dev-blackhole@. So we currently have ~24 lists. dev-team@, dev-blackhole@, analytics-team@, analytics-blackhole@, mobile-team@, mobile-blackhole@, i18n-team@, i18n-blackhole@, …
Anybody in the org can join any of these email lists. analytics-team@ is usually just team members, but analytics-blackhole@ has all sorts of lookie-loo subscribers who’re interested in analytics happenings.
All email to analytics-team@ gets forwarded to analytics-blackhole@, so lookie-loo -blackhole@ subscribers will get updates sent to -team@ automatically.
When you receive an email via a -blackhole@ list, it is automatically tagged as blackhole and filtered out of your inbox.
If an email is directly addressed TO:you@ or TO:your-team@, it’ll stay in your inbox regardless of any CC:-blackhole@.

Best practice when sending email: unless you have good reason not to, CC dev-blackhole@ or any of the other -blackhole@ lists.
Best practice when reading email: read the emails in your blackhole on your own schedule, if and when you want.
Between these buckets and best practices we have the tools we need to make the contents of any email open to anyone interested without burying ourselves in a deadly deluge.
Example emails
- Jace emails Ms. Monkey (an analytics teammate of his) about a new experiment being run.
TO:msmonkey@,CC:analytics-blackhole@ - Tom emails the internationalization team about a change that may affect the way usage statistics are calculated for non-English users.
TO:i18n-team@,CC:analytics-blackhole@ - I email Mr. Gorilla asking when he’d like to demo his latest work for the company.
TO:mrgorilla@,CC:dev-blackhole@ - Craig emails the infrastructure team with a summary of upcoming priorities.
TO:infrastructure-team@ - I email Marcia about a personal career matter that shouldn’t involve others.
TO:marcia@.
How it’s technically implemented
Google Groups ‘n’ Gmail filters. You’re about to see how hacky the rabbit hole goes.
Google Groups
- Each team gets their own
-team@and-blackhole@groups. - Each
-blackhole@group is a member of its respective-team@group. - Group settings:
- Permissions | “Who can join this group?” ==> “Anyone in the organization”
- Description includes “(email-transparency)”
- Information | Directory | Check “List this group in the directory”
- We setup a short URL to a google groups search for “(email-transparency)” — now anybody can go to khanacademy.org/r/email-transparency and subscribe to whatever lists they want.
Gmail Filters
- Everybody has the following filters. Our setup doc has 'em exported to xml, which everybody imports via Gmail | Settings | Filters | Import filters.
- Matches: to:(*-blackhole.khanacademy.org)
Do this: Apply label “blackhole” - Matches: from:(-me) to:(*-blackhole.khanacademy.org -me -*-team.khanacademy.org)
Do this: Skip Inbox
- Matches: to:(*-blackhole.khanacademy.org)
- Now emails received via blackhole lists are labeled and filtered out of your inbox unless they were addressed to you or your team.
Why I’m happy
This experiment pushed my personal comfort zone at first — “wait, is it really ok for everyone to see this?” — but I feel great about an email culture that’s open by default and wouldn’t wanna go back.
Trusting devs to subscribe to whatever content they find helpful makes me happy. Trusting everyone to not waste time reading email that’s unimportant for them has worked out. We’ve seen a lot of value from -blackhole@ subscribers getting news they wouldn’t otherwise have seen.
You know those moments right before you send an email when you sit there and type names into CC, then delete 'em, then re-type 'em, all because you’re trying to figure out who cares? That’s gone. It’s up to the subscribers. Just send it to the critical people and CC a blackhole list. Fewer email decisions.
You know those once-in-a-while emails that’re full of insight? Bullet-point priority breakdowns and strong opinions and team schedule updates? Sometimes they’re only read by one or two people, maybe because the author doesn’t feel comfortable blasting all@company.com. That’s just silly. I like 'em in an open, searchable spot. Blackholes are perfect.

You know how your inbox is already overloaded and the last thing you want is more email? No problem, don’t subscribe. Or only subscribe to -blackhole@ lists and only skim 'em once in a blue moon. I do the latter.
You know how you keep saying you want to keep your team as flat as possible for as long as possible? Avoiding titles is one thing, sure. But flattening communication — trusted access for everybody — is huge.
Openness and trust has been a big part of Khan Academy’s dev team since the start. This experiment kinda fit right in.
Why I’m not so happy
Our biggest problem, by far, comes from imperfections in the gmail filter setup. Filters have no way of knowing which lists you’re subscribed to, so if somebody sends an email to analytics-team@ and dev-blackhole@ and you receive the email, we don’t know if it should stay in your inbox or not. You may’ve received it via the blackhole list, but if you’re subscribed to analytics-team it shouldn’t disappear to the blackhole.
Right now we err on the side of safety by not removing anything from your inbox if it was sent to a -team@ address, but this means some messages that should be in your blackhole are not. Stripe has tried to work around this via a library to automatically generate complicated gmail filter combinations, but that doesn’t feel quite right for us. It’s a bit complicated for newcomers to use, and it requires reconfiguring your filters every time you join or unjoin a new list.
I’m sure there are tools out there that could solve this — probably by abandoning google groups altogether. Ideas welcome.
I’m also not in love with the google groups UX that lets people find/join/unjoin lists: khanacademy.org/r/email-transparency. No question there are tools that’d handle this use case better. Supposedly Stripe built a custom interface on the Groups API.つ ◕_◕ ༽つ giff open source plz!
Anybody else on this train?
Have others experimented w/ email transparency? We won’t go back. But as you now know our setup is far from perfect. Would be interested in learning from others.