Skip to main content
POST …/contacts/create-with-ai The recommended endpoint for messy or unstructured data — obituaries, scraped listings, form submissions, notes. Goliath’s AI extracts name, phone, email, and address from the text and creates or updates the contact automatically. This endpoint is asynchronous. It enqueues the work and returns immediately. The contact may not exist yet when you receive the response.

Request

POST {WEBHOOK_BASE_URL}/{token}/contacts/create-with-ai
Content-Type: application/json
{
  "unstructured_text": "John Doe passed away on January 1st. He lived at 123 Main St, Springfield. His daughter Jane can be reached at jane.doe@example.com or 555-000-0001.",
  "tags": ["probate", "springfield"],
  "source": "Obituary Scraper",
  "contributors": ["Sarah Smith"]
}

Body fields

FieldTypeRequiredDescription
unstructured_textstring or string[]YesThe raw text for AI extraction. Arrays are joined with newlines. Non-string items are dropped.
full_namestringNoOverrides the AI-resolved name
phone_numberstringNoOverrides the AI-resolved phone
contact_emailstringNoOverrides the AI-resolved email
contact_addressstringNoOverrides the AI-resolved address
notestringNoAdditional context passed into the AI flow
tagsstring[]NoApplied to the contact after creation
sourcestringNoDefaults to Webhook if omitted
contributorsstring[]NoFull names of org users to assign as contributors
If unstructured_text is missing or empty after trimming, no contact work is performed — even though the request returns 200. Always ensure this field has meaningful content.
first_name and last_name are supported but deprecated on create flows. Use full_name instead.

Responses

New event
200 OK

{
  "success": true,
  "acknowledged": true,
  "eventId": "a1b2c3d4-0000-0000-0000-000000000000"
}
Duplicate event (same payload already received)
200 OK

{
  "success": true,
  "acknowledged": true
}
Duplicate detection is based on a hash of the payload. If a duplicate is detected, the response is still 200 but eventId is omitted. No duplicate contact is created.

Deprecated alias

POST …/contacts/unstructured is a deprecated alias for this endpoint. It behaves identically but should not be used in new integrations.