FeedByte

Events

Webhook event catalog.

Each event has id, type, created, organizationId, and data. Handle by type. Ignore unknown types so new events do not break your endpoint.

response.submitted

Fires when a respondent submits a survey.

{
  "id": "evt_2Q8m0k1",
  "type": "response.submitted",
  "created": "2026-09-16T11:47:00.000Z",
  "organizationId": "org_7c",
  "data": {
    "responseId": "res_91",
    "surveyId": "survey_1N",
    "stationId": "station_2K",
    "locationId": "loc_4B",
    "linkId": "link_8f",
    "durationSeconds": 12,
    "flagged": false,
    "metadata": {
      "callId": "c-8841",
      "agentId": "agt_12",
      "queue": "retention",
      "client": {
        "userAgent": "Mozilla/5.0 …",
        "locale": "en"
      }
    }
  }
}

linkId and partner keys in metadata are present when the respondent used a Capture link. Direct /s/{surveyId} submits still fire this event; linkId is then omitted and metadata holds only client telemetry.

if (event.type === "response.submitted") {
  await crm.note(event.data.responseId, event.data.metadata);
}

response.flagged

Fires when quality filtering marks a speed trap or straight-lining.

{
  "id": "evt_2Q8m0k2",
  "type": "response.flagged",
  "created": "2026-09-16T11:47:01.000Z",
  "organizationId": "org_7c",
  "data": {
    "responseId": "res_91",
    "surveyId": "survey_1N",
    "reasons": ["speed_trap"]
  }
}

alert.triggered

Fires when a survey alert policy matches (low sentiment, NPS detractor, keyword, and so on).

{
  "id": "evt_2Q8m0k3",
  "type": "alert.triggered",
  "created": "2026-09-16T11:47:04.000Z",
  "organizationId": "org_7c",
  "data": {
    "policyId": "pol_3",
    "surveyId": "survey_1N",
    "responseId": "res_91",
    "stationId": "station_2K",
    "severity": "high"
  }
}

task.created / task.assigned / task.updated

Fires when a follow-up task is created, assigned, or updated in the organization.

{
  "id": "evt_2Q8m0k4",
  "type": "task.assigned",
  "created": "2026-09-16T11:48:00.000Z",
  "organizationId": "org_7c",
  "data": {
    "taskId": "task_12",
    "assigneeUserId": "user_9",
    "surveyId": "survey_1N",
    "responseId": "res_91"
  }
}

loyalty.tokens_claimed

Fires when a participant verifies and claims tokens for a response.

{
  "id": "evt_2Q8m0k5",
  "type": "loyalty.tokens_claimed",
  "created": "2026-09-16T11:50:00.000Z",
  "organizationId": "org_7c",
  "data": {
    "participantId": "part_5",
    "responseId": "res_91",
    "tokens": 10
  }
}

loyalty.redemption.created / loyalty.redemption.fulfilled

Fires when a reward is redeemed, and again when staff mark it fulfilled (or cancelled — data.status is cancelled).

{
  "id": "evt_2Q8m0k6",
  "type": "loyalty.redemption.created",
  "created": "2026-09-16T12:01:00.000Z",
  "organizationId": "org_7c",
  "data": {
    "redemptionId": "red_8",
    "rewardId": "rew_2",
    "participantId": "part_5",
    "status": "pending"
  }
}

Fires when a public menu is opened from a QR or a direct link.

{
  "id": "evt_2Q8m0k8",
  "type": "menu.scanned",
  "created": "2026-09-16T13:10:00.000Z",
  "organizationId": "org_7c",
  "data": {
    "menuId": "menu_1",
    "locationId": "loc_4B",
    "source": "qr"
  }
}

report.ready

Fires when a generated report is ready to download.

{
  "id": "evt_2Q8m0k9",
  "type": "report.ready",
  "created": "2026-09-16T13:20:00.000Z",
  "organizationId": "org_7c",
  "data": {
    "reportId": "rep_6",
    "template": "monthly_summary"
  }
}

On this page