Webhooks / Overview
Overview
Per-organization HTTP endpoints that let external systems create or update contacts in Goliath without a user JWT.
Inbound webhooks give you a stable URL you can call from any external system — Airtable, Zapier, a custom CRM, a dialer — to push contact data directly into Goliath. No user session required.
How it works
- An org admin creates a webhook in Settings → Integrations → Webhooks
- Goliath generates a unique token and returns a full URL
- You
POSTJSON to that URL to create, find, or update contacts - Goliath processes the request — some endpoints are synchronous, others are queued asynchronously
Base URL shape
{WEBHOOK_BASE_URL}/{token}/contacts/{action}
WEBHOOK_BASE_URLis environment-specific. The full URL is shown in the product after creation.tokenis a UUID that identifies and authenticates your webhook- Everything after the token is the action path (e.g.
/contacts/create-with-ai)
Endpoints
| Path | Mode | Description |
|---|---|---|
contacts/create-with-ai |
Async | AI extraction — best for unstructured text |
contacts/create |
Async | Structured create — use when data is already clean |
contacts/find |
Sync | Search contacts by name, phone, or email |
contacts/update |
Sync | Patch an existing contact by ID |
Async vs sync
Two of the endpoints return immediately and queue work in the background. Two run synchronously and return results inline.
| Mode | Endpoints | What you get back |
|---|---|---|
| Async | create-with-ai, create |
{ success, acknowledged, eventId } — contact may not exist yet |
| Sync | find, update |
Full result or updated contact ID inline |
Managing webhooks
| Action | Who | How |
|---|---|---|
| Create | Org admin only | Settings → Integrations → Webhooks → Set Up |
| List | Any org member | Settings → Integrations → Webhooks — non-admins see the label but not the URL |
| Enable / disable | Org admin | Toggle active state — inactive tokens return 401 |
| Delete | Org admin | Removes the token permanently |
Authentication
See Authentication for full details on token auth and the alternative JWT path.
Security
- Treat the full webhook URL as a secret. It is bearer-equivalent — anyone with the URL can call it.
- The URL may appear in proxy logs, browser network panels, and third-party request logs. Rotate the token if it is exposed.
- Tokens are org-scoped. A token from one org cannot access another org’s data.