AckdbSourceCreateRequest
Declare a custom source with eventTypeField. identityLinkTypes may be empty for a closed source containing only person_only types; otherwise include domain.
Properties
sourceTypestringrequiredpattern /^[a-z][a-z0-9_]*$/Lowercase source identifier (e.g. `app_usage`).
displayNamestringrequiredHuman-readable name.
descriptionstringrequiredWhat data this source carries.
versionstringOptional source version string.
queryingGuidestringOptional agent-facing guidance on how to query this source's events.
identityLinkTypesarray ofrequiredMay be empty when every declared event is person_only and allowCustomEventTypes is false. Otherwise must include domain. Add domain before adding company event types or allowing custom types.
eventTypeFieldstringrequiredREQUIRED. Which content.metadata field determines the event type.
eventTypePrefixstringrequiredNamespace prefix for event types.
defaultContentNaturestringOptional default content nature applied to events that don't specify one.
"conversational""structured""activity-signal"allowCustomEventTypesbooleanOptional HubSpot-custom-objects escape hatch: accept unknown event types and skip per-event validation.
defaultTraitsarray ofOptional default traits (each key must be `<sourceType>_*`).
eventsarray ofOptional event type definitions to create alongside the source.
contextOnlybooleanThis source's events describe a PERSON but anchor to a company (`job` → the employer, `education` → the school), so the entities it mints are context rather than accounts (#493). A company whose only ingested evidence comes from such sources is hidden from the Companies grain and excluded from every score population. NULLABLE: `null` means never-decided and lets the pack loader seed it; `true`/`false` is a decision the loader will not overwrite.
Example
{
"sourceType": "app_usage",
"displayName": "App Usage",
"description": "string",
"version": "string",
"queryingGuide": "string",
"identityLinkTypes": [
"domain",
"app_account_id"
],
"eventTypeField": "event_type",
"eventTypePrefix": "app_usage_",
"defaultContentNature": "conversational",
"allowCustomEventTypes": false,
"defaultTraits": [
{
"traitKey": "app_usage_dau",
"valueType": "number",
"description": "string",
"allowedValues": [
"string"
]
}
],
"events": [
{
"eventType": "string",
"description": "string",
"category": "string",
"rationale": "string",
"contentNature": "conversational",
"eventScope": "person",
"fields": {},
"promotedMetadataFields": [
"string"
],
"traitHints": [
{
"traitKey": "string",
"computeHint": "string",
"updateStrategy": "always"
}
],
"ingestExample": {},
"replacesEvents": [
"string"
],
"contactMapping": {
"role": "string",
"nameField": "string",
"emailField": "string",
"titleField": "string",
"externalIdField": "string",
"externalIdType": "string",
"linkedinUrlField": "string",
"phoneField": "string",
"departmentField": "string",
"excludeWhen": {},
"startedAtField": "string",
"endedAtField": "string",
"externalIdScope": "person",
"endsPrior": false,
"isPrimary": false
},
"contactMappings": [
{
"$ref": "See AckdbContactMappingInput"
}
]
}
],
"contextOnly": false
}