Team Collaboration
Unhook’s team collaboration features enable development teams to share webhook URLs while maintaining individual development environments, streamlining webhook testing and debugging across the entire team.
Overview
Team collaboration in Unhook provides:
Shared webhook URLs across your entire team
Individual developer environments with automatic routing
Real-time team activity monitoring
Centralized webhook configuration management
Seamless onboarding for new team members
How It Works
Shared Webhook URLs
Instead of each developer having their own webhook URL, the entire team uses a single shared URL:
https://unhook.sh/wh_team_webhook_id
This URL is configured in your webhook provider (Stripe, GitHub, Clerk, etc.) and automatically routes webhooks to the active developer.
Intelligent Routing
When a webhook is received, Unhook intelligently routes it to the appropriate developer:
Webhook Reception
Provider sends webhook to the shared URL
Active Session Detection
Unhook identifies which team member is currently active
Automatic Routing
Webhook is delivered to the active developer’s local environment
Team Visibility
All team members can see the webhook event in their dashboard
Team Setup
Creating a Team Webhook
Create a new webhook in the Unhook dashboard
Set webhook type to “Team”
Invite team members to the webhook
Share the webhook URL with your team
Team Member Onboarding
New team members can join easily:
# 1. Install Unhook CLI
npm install -g @unhook/cli
# 2. Initialize with team webhook
npx @unhook/cli init --webhook-id wh_team_webhook_id
# 3. Start listening
unhook listen --port 3000
Configuration Sharing
Share webhook configuration across your team:
# unhook.yaml (shared in repository)
webhookId : "wh_team_webhook_id"
destination :
- name : "local"
url : "http://localhost:3000/api/webhooks"
source :
- name : "stripe"
- name : "github"
delivery :
- source : "stripe"
destination : "local"
- source : "github"
destination : "local"
Features
Real-time Team Activity
Monitor team activity in real-time:
Active Developers See which team members are currently online
Webhook Events View all webhook events across the team
Event Routing Track which developer received each webhook
Team Statistics Monitor team-wide webhook performance
Individual Environments
Each developer maintains their own local environment:
# Developer 1
unhook listen --client-id dev1 --port 3000
# Developer 2
unhook listen --client-id dev2 --port 3001
# Developer 3
unhook listen --client-id dev3 --port 3002
Centralized Configuration
Manage webhook configuration centrally:
# Team configuration (unhooked.yaml)
webhookId : "wh_team_webhook_id"
team :
name : "Development Team"
members :
- id : "dev1"
name : "Alice"
port : 3000
- id : "dev2"
name : "Bob"
port : 3001
- id : "dev3"
name : "Charlie"
port : 3002
Use Cases
Development Team Workflow
Shared Development :
All developers use the same webhook URL
Webhooks route to the active developer
No need to update provider settings
Testing Coordination :
Coordinate webhook testing across the team
Avoid conflicts when multiple developers test simultaneously
Share webhook events for debugging
Onboarding :
New developers get immediate access to webhooks
No manual URL sharing or configuration
Consistent development environment
Feature Development
# Feature branch development
git checkout feature/new-payment-flow
# Start webhook listener
unhook listen --client-id feature-payment --port 3000
# Test new payment webhooks
# Webhooks automatically route to your environment
Production Testing
# Production webhook testing
unhook listen --client-id prod-test --port 3000
# Test production webhooks safely
# Isolated from other team members
Configuration Examples
Basic Team Setup
# unhook.yaml
webhookId : "wh_team_webhook_id"
destination :
- name : "local"
url : "http://localhost:3000/api/webhooks"
delivery :
- destination : "local"
Advanced Team Configuration
# unhook.yaml
webhookId : "wh_team_webhook_id"
clientId : "dev1" # Unique identifier for this developer
destination :
- name : "stripe-handler"
url : "http://localhost:3000/api/webhooks/stripe"
- name : "github-handler"
url : "http://localhost:3000/api/webhooks/github"
source :
- name : "stripe"
- name : "github"
delivery :
- source : "stripe"
destination : "stripe-handler"
- source : "github"
destination : "github-handler"
Environment-Specific Configuration
# unhook.dev.yaml
webhookId : "wh_team_dev"
destination :
- name : "local"
url : "http://localhost:3000/api/webhooks"
# unhook.staging.yaml
webhookId : "wh_team_staging"
destination :
- name : "local"
url : "http://localhost:3001/api/webhooks"
Team Management
Inviting Team Members
From the dashboard :
Go to your team webhook settings
Click “Invite Member”
Enter their email address
Send invitation
Via CLI :
unhook team invite user@example.com
Managing Permissions
Control team member access:
View : Can see webhook events
Replay : Can replay webhook events
Configure : Can modify webhook settings
Admin : Full administrative access
Team Activity Monitoring
Track team activity:
# View team status
unhook team status
# See active members
unhook team members
# Check webhook routing
unhook team routing
Best Practices
Team Coordination
Use meaningful client IDs : dev1
, feature-payment
, prod-test
Coordinate testing times : Avoid conflicts when testing simultaneously
Share webhook events : Use the dashboard to share important events
Document configurations : Keep webhook configs in version control
Development Workflow
Feature branches : Use different client IDs for feature development
Environment isolation : Separate dev, staging, and production webhooks
Testing coordination : Communicate when testing webhooks
Event sharing : Share relevant events for debugging
Configuration Management
Version control : Keep webhook configs in your repository
Environment variables : Use env vars for sensitive information
Documentation : Document webhook setup for new team members
Regular updates : Keep configurations up to date
Troubleshooting
Common Team Issues
Check if you’re the active developer
Verify your client ID is unique
Ensure your local server is running
Multiple Developers Active
Coordinate testing times with your team
Use different client IDs for isolation
Check team activity in the dashboard
Verify you have the correct permissions
Check team membership status
Contact your team admin
Use environment-specific configs
Avoid conflicting port numbers
Coordinate configuration changes
Debug Team Routing
# Check team status
unhook team status
# View routing information
unhook team routing --verbose
# Check your client ID
unhook status
Security Considerations
Team Access Control
Role-based permissions : Control access based on team roles
Audit logging : Track who accessed what webhook data
Secure sharing : Webhook data is encrypted and secure
Access revocation : Remove team member access when needed
Data Privacy
Organization isolation : Teams can only access their own webhooks
Event privacy : Webhook events are private to your team
Secure transmission : All data is encrypted in transit
No data retention : Webhook payloads are not permanently stored
Integration Examples
Stripe Team Webhooks
# Team Stripe configuration
webhookId : "wh_team_stripe"
destination :
- name : "stripe-handler"
url : "http://localhost:3000/api/webhooks/stripe"
delivery :
- destination : "stripe-handler"
Configure in Stripe dashboard: https://unhook.sh/wh_team_stripe
GitHub Team Webhooks
# Team GitHub configuration
webhookId : "wh_team_github"
destination :
- name : "github-handler"
url : "http://localhost:3000/api/webhooks/github"
delivery :
- destination : "github-handler"
Configure in GitHub repository: https://unhook.sh/wh_team_github
Multi-Provider Team Setup
# Comprehensive team setup
webhookId : "wh_team_comprehensive"
destination :
- name : "stripe-handler"
url : "http://localhost:3000/api/webhooks/stripe"
- name : "github-handler"
url : "http://localhost:3000/api/webhooks/github"
- name : "clerk-handler"
url : "http://localhost:3000/api/webhooks/clerk"
source :
- name : "stripe"
- name : "github"
- name : "clerk"
delivery :
- source : "stripe"
destination : "stripe-handler"
- source : "github"
destination : "github-handler"
- source : "clerk"
destination : "clerk-handler"
Next Steps