Skip to main content
POST …/contacts/create Use this endpoint when your data is already clean and structured. No AI extraction is performed — fields are mapped directly to the contact record. This endpoint is asynchronous. It enqueues the work and returns immediately. Also accessible at POST …/contacts (same behavior).

Request

POST {WEBHOOK_BASE_URL}/{token}/contacts/create
Content-Type: application/json
{
  "full_name": "John Doe",
  "phone_number": "5550000001",
  "contact_email": "john.doe@example.com",
  "contact_address": "123 Main St, Springfield, USA 00000",
  "tags": ["motivated-seller"],
  "source": "Airtable Import",
  "contributors": ["Sarah Smith"]
}

Body fields

FieldTypeRequiredDescription
full_namestringNo*Contact’s full name
phone_numberstringNo*Contact’s phone number
contact_emailstringNo*Contact’s email address
contact_addressstringNoContact’s address — linked to a property if found
notestringNoCreates a note on the contact
tagsstring[]NoApplied to the contact after creation
sourcestringNoDefaults to Webhook if omitted
contributorsstring[]NoFull names of org users to assign as contributors
At least one of full_name, phone_number, or contact_email is required. If none are provided the request is accepted (200) but no contact is created. Validation happens in the async worker, not at the HTTP layer.
first_name and last_name are supported but deprecated. Use full_name instead.

Deduplication

Goliath deduplicates contacts on ingest using one of two strategies:
  • Name + phone or email — when a name is present alongside a phone or email
  • Phone or email only — when no name is provided
If a match is found, the existing contact is updated rather than a new one being created.

Responses

New event
200 OK

{
  "success": true,
  "acknowledged": true,
  "eventId": "a1b2c3d4-0000-0000-0000-000000000000"
}
Duplicate event
200 OK

{
  "success": true,
  "acknowledged": true
}
A 200 response means the request was accepted and queued — not that the contact exists yet. Duplicate events return 200 without an eventId.