Webhooks & API
concorbit provides webhooks for real-time event notifications and a REST API with token-based authentication for programmatic access. This page covers both features.
Webhooks URL: /settings/webhooks
Required permission: webhooks.manage
API Tokens URL: /settings/api-tokens
Required permission: api.tokens
Webhooks
Webhooks let concorbit push real-time notifications to your external systems whenever something happens in your workspace. Instead of polling the API, your server receives an HTTP POST request the moment an event occurs.
Accessing Webhooks
Go to Settings from the sidebar.
Click the Webhooks card (described as "Outgoing webhook endpoints and delivery logs").
Creating a Webhook
Click Add webhook in the top-right corner.
Fill in the form:
| Field | Description |
|---|---|
| URL | The HTTPS endpoint that will receive webhook payloads. Must be a valid URL starting with https://. |
| Events | A comma-separated list of event names to subscribe to (e.g., contact.created, contact.updated, invoice.paid). |
| Description | An optional note to help you remember what this webhook is for (e.g., "Sync new contacts to HubSpot"). |
Click Create webhook.
Available Webhook Events
concorbit fires webhook events for all major entities and actions. Event names follow the pattern entity.action. Common events include:
CRM Events:
contact.created, a new contact was addedcontact.updated, a contact's details were changedcontact.deleted, a contact was deletedcompany.created,company.updated,company.deleteddeal.created,deal.updated,deal.deleted,deal.won,deal.losttask.created,task.completedappointment.created,appointment.updated
Billing Events:
invoice.created,invoice.sent,invoice.paid,invoice.overduecredit_note.createdsubscription.created,subscription.cancelledpayment.received,payment.failed
Email Events:
campaign.sent,campaign.opened,campaign.clickedemail.bounced,email.complained
Vault Events:
vault.secret_created,vault.secret_accessed,vault.secret_revealed
Portal Events:
portal.user_invited,portal.user_logged_in
System Events:
user.invited,user.joined,user.deactivatedwebhook.failing, sent when a webhook endpoint starts failing
The exact list of available events may expand as new features are added.
Webhook Payload Format
Each webhook delivery sends a JSON POST request to your URL with this structure:
{
"event": "contact.created",
"timestamp": "2026-04-12T14:30:00Z",
"tenant_id": "uuid",
"data": {
"id": "uuid",
"name": "Jane Smith",
"email": "jane@example.com",
...
}
}
The data field contains the full entity payload relevant to the event.
Managing Webhooks
The webhook list shows each endpoint with:
URL: the destination endpoint.
Events: the subscribed event names.
Status badge: Active or Paused.
Actions per webhook:
| Action | Description |
|---|---|
| Pause | Temporarily stops deliveries without deleting the webhook. Events are not queued while paused. |
| Resume | Resumes deliveries for a paused webhook. |
| Delete | Permanently removes the webhook. |
Webhook Delivery and Retry
When an event fires:
concorbit sends an HTTP POST to your URL with the JSON payload.
Your server should respond with a 2xx status code within 30 seconds.
If the request fails (network error, timeout, or non-2xx response), concorbit retries with exponential backoff.
After multiple consecutive failures, the webhook is marked as failing and you receive a
webhook.failingnotification.
Best practices for your webhook receiver:
Respond with
200 OKas quickly as possible. Do heavy processing asynchronously.Implement idempotency, the same event may be delivered more than once during retries.
Use HTTPS endpoints only.
Testing Webhooks
To test your webhook integration:
Use a tool like webhook.site or RequestBin to create a temporary receiving URL.
Create a webhook in concorbit pointing to that URL.
Perform the action in concorbit that triggers the event (e.g., create a contact).
Check the receiving tool to see the payload.
API Tokens
API tokens provide programmatic access to the concorbit REST API. Each token is a personal access token tied to your user account and carries only the abilities (scopes) you explicitly grant it. The token can never exceed the permissions you hold yourself, and you can scope it down further to just the endpoints it needs.
Accessing API Tokens
Go to Settings from the sidebar.
Click the API Tokens card (described as "Manage personal access tokens for the API").
Creating a Token
Click Create token in the top-right corner.
Enter a Token name that describes its purpose (e.g., "CI/CD Pipeline", "Zapier Integration", "Mobile App").
Choose an Expires in window from the dropdown (defaults to 90 days).
Under Abilities, tick the scopes the token needs. A token can only call API endpoints whose ability it carries, so pick the minimum set. At least one ability must be selected before the Generate button enables.
Click Generate token.
Important: Copy the token immediately. It is displayed only once and cannot be retrieved later. Store it securely (e.g., in a password manager or environment variable).
The token is shown in a highlighted box with a "Copy" indicator. Click Dismiss to close the display.
Token List
The token list shows all your active tokens with:
Name: the label you gave the token.
Last used: how recently the token was used (e.g., "2h ago", "3d ago", "Never").
Expires: the expiration date, if set.
Revoking a Token
Click Revoke next to the token you want to disable.
The token is immediately invalidated. Any API requests using it will receive a 401 Unauthorized response.
Revocation is permanent. If you need access again, create a new token.
API Authentication
Include your token in the Authorization header of every API request:
Authorization: Bearer your-token-here
Example using curl:
curl -H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.concorbit.com/api/contacts
API Rate Limits
The concorbit API enforces rate limits to ensure fair usage:
Standard limit: 300 requests per minute per token.
Burst allowance: Short bursts above the limit are tolerated, but sustained excess triggers throttling.
Response headers: Every API response includes rate limit headers:
X-RateLimit-Limit, your per-minute limit.X-RateLimit-Remaining, requests remaining in the current window.Retry-After, seconds to wait before retrying (present only when throttled).
When throttled, the API returns HTTP 429 (Too Many Requests). Your integration should respect the Retry-After header and back off.
API Security Best Practices
Never expose tokens in client-side code (JavaScript, mobile apps with decompilable source). Use a backend proxy.
Use separate tokens for separate integrations. If one is compromised, you can revoke it without affecting others.
Rotate tokens periodically. Create a new token, update your integration, then revoke the old one.
Audit token usage. Check the "Last used" timestamp regularly. Revoke tokens that have not been used recently.
Related Documentation
Roles & Permissions. An API token can never exceed the creating user's permissions, and is further scoped to the abilities you grant it.
Audit Log. API actions are logged in the audit trail.
Security & Authentication, securing your account that owns the tokens.