People are often surprised when they see how we use Campsite to build Campsite. In the spirit of “working with the garage door up” I want to share exactly how we’ve set up our channels to keep conversations organized and easy to find:
All-company channels
These are used less often, but posts here are usually high-signal and are good for creating shared context about what’s happening inside of Campsite on any given week.
- 📣 Announcements — announcements or reminders about things that impact everyone on the team, like holidays.
- 🚢 Ships — our internal changelog; every time we ship to staff or customers, we post about it here for visibility.
- 🏕️ Investor updates — we share quarterly updates with our investors and cross-post them internally for transparency with all our existing (and future!) teammates.
Team-specific channels
As a small company, we don’t have many sub-teams: everyone here is an engineer and works directly on product, code, and design every day. With that in mind, having team-specific channels for things like engineering and product helps add context when triaging notifications or catching up on unread posts.
- 🛠️ Engineering — a great place to ask process-related questions (How do we do X at Campsite?), RFCs about upcoming architecture changes, or eng-specific announcements like workflow changes.
- 🧪 Product — for sharing broader product plans, proposing new initiatives or asking questions about why Campsite works the way it works.
➡️ View a sample post: Native CSS transitions for poppers
Project-specific channels
We create channels for each unique project we work on internally. They’re where we broadcast updates, ask questions, get design feedback, and share customer feedback.
After a project finishes, we archive the channels to keep our workspace tidy. Every conversation is easy to find later; if needed, we can restore a project-specific channel for follow-up conversations if we archived it too soon.
Here are a few project-specific channels we’re working on now:
- 📝 Drafts — shipping soon!
- 🤝 Guests — shipping soon!
- 🔌 API (beta) — shipping soon!
- ✈️ Offsites & meetups — a dedicated channel to plan each of twice-per-year offsites. Next up: NYC in October!
➡️ View a sample post: Starting simple with channel-scoped invite links
Meta/dogfooding channels
These channels are hard to categorize, but play an important role in our day-to-day operation:
- 🎁 Feedback — our outlet for all internal non-bug feedback. If it’s a product idea, UX nit, or observation about how we can improve Campsite, it goes here. If someone finds a reproducible bug, we file it in Linear directly.
- 🌅 Daily updates — an automated daily post where we can share the progress we make each day on different projects. Learn more about how we run our daily standups.
➡️ View a sample post: August 14, 2024
Alert channels
We rely on our Zapier integration (and upcoming API beta) to create posts on Campsite from activity in our other apps and tools. This helps us consolidate tools, keeps conversations visible, and makes it easy to find decisions later.
- 💌 Customer support — we pipe in all of our customer support emails (we use Plain) so that everyone on the team has visibility into what our customers are asking for or confused about.
- 📊 Org reports — we run a daily job that helps us understand which organizations are expanding or contracting so that we can be proactive with outreach. Learn more about how we discover customers who are about to churn.
- 🔗 Slack connect — if customers prefer to chat here, we meet them where they are. Our Zapier integration notifies us whenever a customer asks a question in a Slack Connect channel.
- 💰 Stripe — every customer upgrade or cancellation is posted here for the team to understand the health of the business and celebrate wins together.
Private channels
We generally recommend teams stick with open channels by default — they become self-documenting archives of decision making that everyone can benefit from in the future.
But of course, some conversations are better held with a smaller group, usually to clarify an idea or decision before sharing it more broadly.
- 🤠 Founders — my co-founder and I use a private shared channel for most of our daily conversations. Posts help us keep track of multiple ongoing topics.
Guest channels (clients, contractors, and customers)
We’re rolling out guest roles soon! This will unlock new ways to collaborate with contractors and clients, making Campsite even more useful for agencies and larger teams.
- 🤫 Campsite insiders — a channel where our customers can give feedback or chat directly with our team. This is a new experiment — let me know if you’re using Campsite and want to join!
➡️ View a sample post: What we’re working on · September 2024
Just for fun channels
Posts are great for non-work related conversations, too, like shitposting or sharing design inspo. Posts are async-friendly, expressive, and naturally become a useful archive of ideas to mine from later.
- 🤡 Noob — an outlet for questions that might feel silly or dumb at first glance but usually end up sparking a lot of “TIL” replies.
- 💩 Shitposts — links to tweets, articles, or off-topic screenshots. Warning: may be spicy.
- ✨ Inspo — screenshots and recordings of beautiful software we want to study and learn from.
- 🌁 Photostream — the occasional real-life photo update, like sharing vacation highlights or team photos when we meet in person.
➡️ View a sample post: Fix for brew + mysql9 updates
A general philosophy on channels
- When in doubt, prefer fewer high-traffic channels to many low-traffic, overly-specific ones. Swimming in lots of posts will clarify how posts should be categorized into a new channel.
- Regularly prune inactive channels as they naturally die or project ship to keep your workspace clean.
- Prefer open channels over private channels. Teams should work with the garage door up to develop shared context and make it easy to find decisions later, even if the original author is no longer around.