Skip to content
Pile
Esc
↑↓navigate↵open⌘Jpreview

Create customer quick knock

Mobile log-a-knock quick-add (PILE-671): dedupes on normalized name or street address so a second knock at the same building updates the existing customer, then logs the interaction with the same outcome→stage/next-step rules as POST /customers/{id}/interactions and optionally bridges a quoted amount into a proposal-stage deal.

POST/workspaces/{organizationId}/customers/quick-knock
Authorization
AuthorizationBearer token · headerrequired

Workspace API key (Authorization: Bearer <key>). Issue keys under Settings → Developer or POST /workspaces/{organizationId}/tokens.

Path parameters
organizationIdstringrequired
Request body
application/json
namestringrequired
min length 1 · max length 200
addressLine1string
max length 300
citystring
max length 120
statestring
max length 60
postalCodestring
max length 20
phonestring
max length 60
outcomestringrequired
Allowed:talkedsent_infoneeds_emailquotedcallbackno_answernot_interestedspam
summarystring
max length 2000
channelstring
Allowed:visitcallemailsmsnote
nextStepPresetstring
Allowed:tomorrowthree_daysnext_weeknone
nextStepDueAtstring | null
nextStepTextstring | null
quotedAmountCentsinteger
max 1000000000
dealTitlestring
min length 1 · max length 200
Responses
201

Knock logged against a found-or-created customer

customerobjectrequired
Show properties
idstringrequired
organizationIdstringrequired
namestringrequired
urlstring | nullrequired
domainstring | nullrequired
bookingUrlstring | nullrequired
notesstring | nullrequired
logoUrlstring | nullrequired
externalIdstring | nullrequired
phonestring | nullrequired
addressstring | nullrequired
verticalstring | nullrequired
neighborhoodstring | nullrequired
sourcestring | nullrequired
sourceSessionIdstring | nullrequired
sourceAgentSlugstring | nullrequired
readinessstring | nullrequired
nextActionstring | nullrequired
fitstring | nullrequired
fitScorenumber | nullrequired
fitStatusstring | nullrequired
processorstring | nullrequired
evidenceUristring | nullrequired
tierIdstring | nullrequired
statusIdstring | nullrequired
ownerIdstring | nullrequired
nextStepTextstring | nullrequired
nextStepDueAtstring | nullrequired
needsHumanboolean | nullrequired
needsHumanReasonstring | nullrequired
priorityScorenumber | nullrequired
customFieldsobjectrequired
createdAtstringrequired
updatedAtstringrequired
eventobjectrequired
Show properties
idstringrequired
customerIdstringrequired
outcomestringrequired
Allowed:talkedsent_infoneeds_emailquotedcallbackno_answernot_interestedspam
notestring | nullrequired
createdAtstringrequired
channelstringrequired
Allowed:visitcallemailsmsnote
dealobject | nullrequired
Show properties
idstringrequired
organizationIdstringrequired
customerIdstringrequired
namestringrequired
externalIdstring | nullrequired
stagestringrequired
Allowed:leadqualifiedproposalnegotiationwonlost
amountCentsnumber | nullrequired
currencystring | nullrequired
expectedCloseAtstring | nullrequired
descriptionstring | nullrequired
closedAtstring | nullrequired
archivedAtstring | nullrequired
nextStepTextstring | nullrequired
nextStepDueAtstring | nullrequired
needsHumanboolean | nullrequired
needsHumanReasonstring | nullrequired
priorityScorenumber | nullrequired
contactIdsstring[]required
customFieldsobjectrequired
createdAtstringrequired
updatedAtstringrequired
createdbooleanrequired
stageAdvancedbooleanrequired
stageBlockedbooleanrequired
Try it
Server
Authorization
Parameters
Bodyapplication/json
Request
curl -X POST 'https://pile.nyc/workspaces/string/customers/quick-knock' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "addressLine1": "string",
  "city": "string",
  "state": "string",
  "postalCode": "string",
  "phone": "string",
  "outcome": "talked",
  "summary": "string",
  "channel": "visit",
  "nextStepPreset": "tomorrow",
  "nextStepDueAt": "string",
  "nextStepText": "string",
  "quotedAmountCents": 1,
  "dealTitle": "string"
}'
Response
{
  "customer": {
    "id": "string",
    "organizationId": "string",
    "name": "string",
    "url": "string",
    "domain": "string",
    "bookingUrl": "string",
    "notes": "string",
    "logoUrl": "string",
    "externalId": "string",
    "phone": "string",
    "address": "string",
    "vertical": "string",
    "neighborhood": "string",
    "source": "string",
    "sourceSessionId": "string",
    "sourceAgentSlug": "string",
    "readiness": "string",
    "nextAction": "string",
    "fit": "string",
    "fitScore": 0,
    "fitStatus": "string",
    "processor": "string",
    "evidenceUri": "string",
    "tierId": "string",
    "statusId": "string",
    "ownerId": "string",
    "nextStepText": "string",
    "nextStepDueAt": "string",
    "needsHuman": true,
    "needsHumanReason": "string",
    "priorityScore": 0,
    "customFields": {
      "property1": "string",
      "property2": "string"
    },
    "createdAt": "string",
    "updatedAt": "string"
  },
  "event": {
    "id": "string",
    "customerId": "string",
    "outcome": "talked",
    "note": "string",
    "createdAt": "string",
    "channel": "visit"
  },
  "deal": {
    "id": "string",
    "organizationId": "string",
    "customerId": "string",
    "name": "string",
    "externalId": "string",
    "stage": "lead",
    "amountCents": 0,
    "currency": "string",
    "expectedCloseAt": "string",
    "description": "string",
    "closedAt": "string",
    "archivedAt": "string",
    "nextStepText": "string",
    "nextStepDueAt": "string",
    "needsHuman": true,
    "needsHumanReason": "string",
    "priorityScore": 0,
    "contactIds": [
      "string"
    ],
    "customFields": {
      "property1": "string",
      "property2": "string"
    },
    "createdAt": "string",
    "updatedAt": "string"
  },
  "created": true,
  "stageAdvanced": true,
  "stageBlocked": true
}

Was this page helpful?