AskNicely · AsyncAPI Specification

Asknicely Webhooks

Version

View Spec View on GitHub CompanyCustomer ExperienceNet Promoter ScoreSurveysFeedbackReputation ManagementSaaSCustomer SuccessReviewsSMSAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-06'
method: searched
source: https://asknicely.zendesk.com/hc/en-us/articles/47782734299540-Triggering-Webhooks-in-AskNicely
spec_type: Webhooks
asyncapi_published: false
description: >-
  AskNicely publishes no AsyncAPI document, but it does operate a real outbound webhook surface: a
  one-way, real-time push of survey response data to a URL configured in the Webhooks app. The webhook is
  configured entirely in the UI (App Store > Webhooks) — there is no REST endpoint to register,
  enumerate, rotate or delete a webhook subscription, and no signing secret is documented.
surface:
  direction: outbound (AskNicely -> your endpoint)
  transport: HTTP POST
  content_type: application/json
  configuration: In-product, App Store > Webhooks. Enter a callback URL and optional custom headers; clear the URL to disable.
  registration_api: false
  subscription_management_api: false
  event_filtering: false
  delivery_guarantees: not published
  retry_policy: not published
  signature_verification: not published
  authentication_of_callback: >-
    Custom HTTP headers configured in the Webhooks app are the only mechanism — the receiver supplies a
    static token that AskNicely echoes on every request. There is no HMAC payload signature.
  docs:
  - https://asknicely.zendesk.com/hc/en-us/articles/47782734299540-Triggering-Webhooks-in-AskNicely
  - https://asknicely.zendesk.com/hc/en-us/articles/47819959059092--AskNicely-Webhook
events:
- name: response.submitted
  trigger: A contact submits a survey score.
  note: >-
    AskNicely does not name its events — there is one webhook that fires for both submission and update.
    The names here are API Evangelist labels for the two documented trigger conditions; the payload
    itself carries no event-type field.
  discriminator: count == 1
- name: response.updated
  trigger: A contact changes their score or comment after submitting, or leaves a comment later.
  discriminator: count > 1
payload:
  envelope:
    count: >-
      Integer that increments by 1 for each webhook fired for a given response. This is the ONLY way to
      distinguish an original submission from a subsequent update — there is no event type.
    person: Contact object — id, name, firstname, lastname, email, created (unix), segment, plus configured custom fields.
    question: >-
      Response object — id, score, comment, sent/opened/responded (unix), segment, deliverymethod,
      survey_template, review_site, theme, life_cycle, AI-generated fields (ai_question_1..n), scorecard
      fields, and any account custom data fields.
  example:
    count: 1
    person:
      id: '163012'
      name: Firstname Lastname
      firstname: Firstname
      lastname: Lastname
      email: tester@asknice.ly
      created: '1774990112'
      segment: general
    question:
      id: '345094'
      score: '10'
      comment: The gym was great, love it!
      sent: '1774990116'
      opened: '1774990122'
      responded: '1774990125'
      segment: general
      deliverymethod: email
      survey_template: Default
      review_site: null
      theme: null
      life_cycle: null
      ai_question_1: The gym was great, love it!
      ai_question_2: 'No'
      ai_question_3: abc
      scorecard1: Great Knowledge & Advice
      scorecard2: null
  source: https://asknicely.zendesk.com/hc/en-us/articles/47782734299540-Triggering-Webhooks-in-AskNicely
testing:
  recommended_tool: requestcatcher.com
  detail: AskNicely recommends generating a temporary catch URL to verify delivery.
relationship_to_rest:
  detail: >-
    The webhook is the push counterpart of the getResponses REST operation. AskNicely is explicit that
    webhooks cannot be used for historical backfill — use /responses for that.
gaps:
- No AsyncAPI (or any machine-readable event) document.
- No event-type field in the payload; the only submission-vs-update discriminator is an incrementing counter.
- No webhook registration/management API — configuration is UI-only.
- No payload signature; authentication of the callback relies on a static custom header.
- No published retry, ordering or delivery-guarantee semantics.