nps

Record Nps Response

Record NPS survey response and trigger automated actions.

Public endpoint - No authentication required (survey responses come from the /nps/[placement_id] page linked in survey emails).

Actions by Score:

  • 9-10 (Promoter): Slack celebration + referral-request task (+24h)
  • 7-8 (Passive): Slack note + follow-up task (+3 days)
  • 0-6 (Detractor): URGENT Slack alert + founder-call-today task

Rewritten for Neon (R2 Wave 1, Epic 1.4a) — the previous version wrote Airtable-era field names ("NPS_Score", "Client") that NeonService's strict column allow-lists silently dropped, so no response was ever actually saved.

is_smoke=true = prod-smoke dry-run: validates the placement, returns the category, writes nothing, pings nobody.

post/api/nps/response

Request

  • Base URL: https://api.ruzora.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.ruzora.com/api/nps/response
  • Auth: none declared

Request body

placement_idstring required

Placement ID

scoreinteger required

NPS score from 0-10

commentstring nullable

Optional feedback comment

survey_type'30_day' | '90_day' | '180_day' | 'annual' required

Which milestone survey this is

respondent_emailstring nullable

Email of person responding

is_smokeboolean

Prod-smoke dry-run: validates the placement and returns the category, but writes nothing and pings nobody. Keeps synthetic responses out of real NPS stats.

Response

Successful Response

placement_idstring required
scoreinteger required
category'Promoter' | 'Passive' | 'Detractor' required
commentstring nullable
survey_typestring required
response_datestring date-time required
actions_triggeredstring[]

Actions taken based on score

Changes

No recorded changes to this operation across all 1 revision of this API.