Teams
Share webhook endpoints across your team. Invite members, assign roles, manage permissions, and inspect incoming requests together in a shared real-time dashboard.
Updated Nov 2026
Share webhook endpoints with teammates so everyone can see incoming requests and edit settings together.
For what teams use it for, pricing examples and how it compares, see Webhook testing for teams.
Plan and Pricing
Teams are billed per team, not per account, on one subscription with two plans. Both start at 2 seats:
- Teams, $12/seat/month, billed monthly on a 30-day period that starts when the team subscribes. Every seat adds 100,000 requests per period to one pool shared by the whole team; the rest follows Pro (31-day retention for team-billed requests, 100 parsed attachment pages and 20 AI assists for the team).
- Team Business, $35/seat/month or $350/seat/year: Business for each seat and for the endpoints shared with the team. Every seat adds 250,000 requests, 2,000 parsed attachment pages and 250 AI assists to what the team shares; the team gets 90-day retention for team-billed requests, up to 50 layouts per endpoint, one custom inbound domain, file drops, and page blocks and page overage. On the annual plan the allowance still renews every month. Members' personal endpoints follow their own plan.
How it works:
- Any account can create a team, on Free, Pro or Business alike. Personal plans have no bearing on team access.
- A team does nothing until it has an active subscription. Until then it is suspended: invites, endpoint sharing, and member access to shared endpoints are blocked, though the team and its data are kept.
- Seats are the member cap. A team holds exactly as many members as it has purchased seats, and the owner occupies one of them.
- Seats are also the quota. The pool is the seats times the plan's per-seat requests.
- Moving up applies at once. Teams to Team Business, or monthly to annual, changes the plan right away: the unused part of the current price is credited and the new price is charged now. Within the month that is the rest of the period, and the team gets the extra requests and parsed pages for it in the same proportion, with the full allowance from the renewal; a move to annual starts a new year at once, with a fresh allowance. The dialog shows about what the card is charged before you confirm.
- Moving down waits for the renewal. Team Business to Teams, or annual to monthly, takes effect when the current period ends (at the end of the year on the annual plan), and you can keep your plan until then. When Team Business ends, its monthly page blocks, page overage and extra domains end with it, and the team's custom domain stops receiving mail.
- Adding seats charges right away, removing seats waits for the renewal. Added seats cost their share of the rest of the current period, shown to the cent before you confirm and charged to the card on file; if the card is declined, no seats are added. Removed seats stay until the period ends and the subscription renews at the lower count, with nothing charged or credited in between. Until then the team cannot take on more members than the lower count, and you can keep your current seats at any time from the team page. Prices include VAT where it applies.
The team owner manages all of this from the team page: subscribe, change the plan, add or remove seats, cancel, and resubscribe. Invoices and payment method on the same page opens Polar's customer portal for the team's invoices, receipts and card. Seats and members are managed on the team page only. Canceling keeps the team active until the current period ends, then suspends it; nothing is deleted.
Creating a Team
- Open the Teams page from the avatar dropdown in the header
- Click New Team and enter a name
- You are the team owner: you can invite members, manage the team, and delete it
- Subscribe from the team page to activate it: pick the plan and the number of seats you need (2 or more)
Inviting Members
- Go to your team's manage page
- Enter a teammate's email in the Invite Member field
- Any email address works: they get an invite email, and if they don't have an account yet, the invite is waiting for them after they sign up with that address (email/password or GitHub/Google)
- They'll see the invite on their Teams page and can accept or decline
Each accepted invite claims a seat. When members equal seats, the team is full: add a seat before inviting anyone else. Removing a member (or a member leaving) frees their seat for reuse and unshares the endpoints they had shared with the team.
Sharing Endpoints
You can share any endpoint you own with one or more teams:
From endpoint settings:
- Open the endpoint's Settings tab in the dashboard
- In the Team sharing section, click Share next to a team
- Click again to unshare
In the dashboard:
- Your shared endpoints show as
slug (Shared with TeamName)in the endpoint switcher - Endpoints shared with you appear in a Shared with me section as
slug (TeamName)
Permissions
| Action | Owner | Member |
|---|---|---|
| View requests | Yes | Yes |
| Edit mock response | Yes | Yes |
| Rename endpoint | Yes | Yes |
| Delete endpoint | Yes | No |
| Share/unshare | Yes | No |
| Invite members | Yes | No |
| Remove members | Yes | No |
| Manage billing | Yes | No |
| Delete team | Yes | No |
Quota and Retention
Sharing an endpoint with an active team moves its billing to that team:
- Requests draw from the team pool: seats × 100,000 per period on Teams, seats × 250,000 on Team Business, tracked on the team, not on any member's account
- Retention is 31 days for team-billed requests (90 with Team Business), whatever plan the endpoint owner is on
- One team per request: if an endpoint is shared with several active teams, the oldest share is billed
- Suspended teams don't bill: while a team has no active subscription, requests on its shared endpoints fall back to the endpoint owner's personal quota and retention
- Extra requests: the owner can add monthly blocks, one-time blocks, or overage to the pool in blocks of 25,000, the same as on Pro (see Extra requests)
- When the pool and its extra requests are exhausted the receiver returns
429 Too Many Requestswith aRetry-Afterpointing at the team's period reset
From the CLI, SDK, and MCP Server
An API key carries exactly the team access of the account it belongs to, so everything below works with a key from your account page or with whk auth login. Unclaimed agent keys have no team access until a human claims them.
Shared endpoints behave like your own. Any endpoint shared with you through a subscribed team can be listed, inspected, streamed, searched, and forwarded by slug. Each endpoint carries sharedWith (yours, shared with a team) or fromTeams (shared with you: every one of your teams it is shared with, with fromTeam naming the oldest share) so you can tell them apart. A team filter matches any of those; it takes a team id or a unique team name.
whk list --team Payments # endpoints tied to one team, by name or id
whk listen <shared-slug> # stream a teammate's endpoint
whk tunnel 3000 --endpoint <shared-slug>
whk requests search --q invoice # covers shared endpoints tooManage sharing and membership without the browser. whk teams mirrors the team page; the SDK exposes the same operations under client.teams; the MCP server exposes list_teams, list_team_members, share_endpoint, and unshare_endpoint.
whk teams list # seats, pooled usage, status
whk teams members Payments
whk teams share my-stripe --team Payments # owner only; needs an active team
whk teams unshare my-stripe --team Payments
whk teams invite Payments dev@example.com # sends an email; acceptance claims a seat
whk teams invites # invites waiting for you
whk teams accept <invite-id>const teams = await client.teams.list();
await client.teams.share(teams[0].id, "my-stripe");
const shared = await client.endpoints.list({ team: teams[0].name });Invites are deliberately not exposed as MCP tools: accepting one claims a paid seat and inviting sends real email, so those stay with people. Creating, renaming, or deleting teams, removing members, and billing remain dashboard actions; billing routes reject API keys.
Quota. whk usage and the MCP get_usage tool show each subscribed team's pool under your personal plan. In the SDK, teams.list() returns requestsUsed, requestLimit, seats, and periodEnd per team.
How It Works
- Sharing is view and edit only: team members can see requests, rename the endpoint and change its responses, but cannot change its forwarding, layouts or other settings, delete it, or clear its requests
- Real-time updates work for shared endpoints: team members see new requests instantly via SSE
- A stream that is open when a team's subscription lapses keeps running until the 30-minute rotation; the reconnect is then refused
- Deleting a team cancels its subscription and releases every seat; the endpoints themselves are untouched and stay with their owners