Create customer sms inbound
Inbound SMS agent webhook (PILE-395). An SMS provider (Sendblue-style) POSTs each inbound text; a deterministic parser performs CRM ops on the sender’s customer record — knock/visit logging, quoted-$ → proposal deal, follow-up scheduling, and ‘what’s due’ list. Auth is a shared webhook secret via ?secret= or the x-sms-secret header compared against SMS_INBOUND_SECRET; the endpoint refuses (503 NOT_CONFIGURED) when the secret is unset so inbound is never unauthenticated. Retries dedupe on messageId.
POST
/workspaces/{organizationId}/customers/sms-inboundPath parameters
organizationIdstringrequiredRequest body
application/jsonfromstringrequiredmin length 4 · max length 40
textstringrequiredmin length 1 · max length 2000
tostringmax length 40
messageIdstringmax length 200
receivedAtstringResponses
200
SMS interpreted — actions taken plus the SMS reply text
okbooleanrequiredAllowed:
truededuplicatedbooleanrequiredcustomerobject | nullrequiredShow propertiesHide properties
idstringrequirednamestringrequiredphonestring | nullrequiredstatusIdstring | nullrequirednextStepTextstring | nullrequirednextStepDueAtstring | nullrequiredactionsobject[]requiredShow propertiesHide properties
Array of
objectOne of:
object
typestringrequiredAllowed:
interaction_loggedinteractionIdstringrequiredoutcomestringrequiredobject
typestringrequiredAllowed:
deal_createddealIdstringrequiredamountCentsnumberrequiredobject
typestringrequiredAllowed:
follow_up_setnextStepDueAtstringrequirednextStepTextstring | nullrequiredobject
typestringrequiredAllowed:
due_listitemsobject[]requiredShow propertiesHide properties
Array of
objectcustomerIdstringrequirednamestringrequirednextStepTextstring | nullrequirednextStepDueAtstring | nullrequiredreplyTextstringrequired401
Missing or invalid webhook secret
codestringrequiredmessagestringrequired503
SMS_INBOUND_SECRET not configured
codestringrequiredmessagestringrequired