LogoLogo
English
English
  • 👉Welcome
    • Overview
    • Quickstart Guide
  • 🌐Services
    • Sales Site Builder
    • Global Payments
    • Subscription Management
    • Onboarding Quizzes
    • Web-To-App
  • 🚀Getting Started
    • Adding A Project
      • Create A New Project
      • Project Settings
      • Payment Methods Configuration
      • Adding Social Login
    • Adding Sales Packages
      • Create A Sales Package
      • Package Settings
      • Price Settings
    • Designing Flows
      • Create A Flow
      • Configure Pages In Flows
      • Configure Languages
      • Designing Pages
      • Configuring Payment Options
      • User Registration Options
      • User Activation Options
      • Review Process
    • Managing Sales Sites
      • Create A Sales Site
      • Configuring Site Content
      • Domain Configuration
      • Configuring Integrations
      • Site Activation
      • Site Statistics
  • ⚙️Integrations
    • Webhooks
      • Subscription Status
      • Payments
      • Quiz Responses
      • Refunds
      • Registered Users
    • Google Analytics
    • Ad Platforms
    • Custom Integrations
    • Login SDK
    • API Services
      • Subscription Status Inquiry
      • Payment History Inquiry
      • Transaction Refund
      • Payment Transaction Inquiry
        • Payments Status Codes
      • Package Upgrade/Downgrade
  • 👫Customers
    • Tracking Subscribers
    • Tracking Payments
    • Cancellations and Refunds
  • 🔐Account
    • Account Settings
    • Users and Access
    • Payments and Pricing
  • Sign Up Now
  • Sign In
Powered by GitBook
On this page
  • Setup the Endpoint URL
  • Webhook Events Sending Rules
  • Events Format
  • Fields
  1. Integrations
  2. Webhooks

Quiz Responses

Learn how to get quiz responses to your server via webhooks

PreviousPaymentsNextRefunds

Last updated 5 months ago

This webhook service provides you with information about the answers to the questions in the quizs when you use the quiz feature on your sales sites. When you enable this webhook service, you will only receive responses from users who have completed a purchase. However, if you would like to receive answers from users who have not completed a purchase, you need to check the preference box in the webhook field.

Setup the Endpoint URL

Webhook events are sent to your server via HTTP POST. You configure the endpoint URL through Developer Tools / Webhooks menu under your project.

By default, webhook notifications include only the quiz responses from users who have paid. You can configure to also receive quiz responses from users who have not paid.

Webhook Events Sending Rules

The webhook notification for quiz responses will be sent within 5 minutes for users who have completed their payment. For users who haven’t completed payment, the notification will be sent within 30 minutes. Your server should return a 200 status code. Any other status code will be considered a failure by our backend, and the following retry process will apply:

  • If the first attempt fails, the next attempt will be made within 1 hour.

  • If the delivery fails again, it will be retried once per hour, up to a maximum of 10 attempts.

  • After 10 attempts, if the delivery is still unsuccessful, the process will be stopped.

Events Format

Webhook events are serialized in JSON. The body of a POST request to your server will contain the serialized event.

{
  "client": {
    "subscriberId": "test123@gmail.com",
    "subscriberName" "name surname",
    "email": "test123@gmail.com",
    "uuid": "29de05a7-5a6f-4107-b15a-1c8abdefad95",
    "isPayer": 1,
    "platform": "Mac OS",
    "country": "TR",
    "language": "en",
    "utmSource": null,
    "utmMedium": null,
    "utmCampaign": null,
    "utmContent": null,
    "utmTerm": null,
    "paymentModule": "generate",
    "flowId": 600,
    "siteId": 38,
    "ip": 192.168.1.1
  },
  "questions": {
    "5706": {
      "questionId": "question1",
      "questionName": "Question 1",
      "question": "Question Title",
      "settings": "{\"backgroundColor\":\"\",\"forceDesktopBG\":true,\"backgroundImage\":{\"desktop\":\"\",\"tablet\":\"\",\"mobile\":\"\"}}",
      "sequence": 1,
      "displayedSequence": 1,
      "required": 1,
      "isMultiple": 0,
      "typeId": 0,
      "typeName": "SingleSelection",
      "isLogic": false
    },
    "5707": {
      "questionId": "question2",
      "questionName": "Question 2",
      "question": "Question Title",
      "settings": "{\"backgroundColor\":\"\",\"forceDesktopBG\":true,\"backgroundImage\":{\"desktop\":\"\",\"tablet\":\"\",\"mobile\":\"\"}}",
      "sequence": 2,
      "displayedSequence": 2,
      "required": 1,
      "isMultiple": 0,
      "typeId": 2,
      "typeName": "IconBox",
      "isLogic": false
    },
    "5708": {
      "questionId": "question3",
      "questionName": "Question 3",
      "question": "Question Title",
      "settings": "{\"backgroundColor\":\"\",\"forceDesktopBG\":true,\"backgroundImage\":{\"desktop\":\"\",\"tablet\":\"\",\"mobile\":\"\"}}",
      "sequence": 3,
      "displayedSequence": 3,
      "required": 1,
      "isMultiple": 0,
      "typeId": 7,
      "typeName": "SingleLineInput",
      "isLogic": false
    },
    "5710": {
      "questionId": "question5",
      "questionName": "Question 5",
      "question": "Question Title",
      "settings": "{\"backgroundColor\":\"\",\"forceDesktopBG\":true,\"backgroundImage\":{\"desktop\":\"\",\"tablet\":\"\",\"mobile\":\"\"}}",
      "sequence": 5,
      "displayedSequence": 4,
      "required": 1,
      "isMultiple": 0,
      "typeId": 8,
      "typeName": "Location",
      "isLogic": false
    },
    "5711": {
      "questionId": "question6",
      "questionName": "Question 6",
      "question": "Question Title",
      "settings": "{\"backgroundColor\":\"\",\"forceDesktopBG\":true,\"backgroundImage\":{\"desktop\":\"\",\"tablet\":\"\",\"mobile\":\"\"}}",
      "sequence": 6,
      "displayedSequence": 5,
      "required": 1,
      "isMultiple": 0,
      "typeId": 5,
      "typeName": "DateInput",
      "isLogic": false
    },
    "5712": {
      "questionId": "question7",
      "questionName": "Question 7",
      "question": "Question Title",
      "settings": "{\"backgroundColor\":\"\",\"forceDesktopBG\":true,\"backgroundImage\":{\"desktop\":\"\",\"tablet\":\"\",\"mobile\":\"\"}}",
      "sequence": 7,
      "displayedSequence": 6,
      "required": 1,
      "isMultiple": 0,
      "typeId": 6,
      "typeName": "TimeInput",
      "isLogic": false
    },
    "5713": {
      "questionId": "question8",
      "questionName": "Question 8",
      "question": "Question Title",
      "settings": "{\"backgroundColor\":\"\",\"forceDesktopBG\":true,\"backgroundImage\":{\"desktop\":\"\",\"tablet\":\"\",\"mobile\":\"\"}}",
      "sequence": 8,
      "displayedSequence": 7,
      "required": 1,
      "isMultiple": 0,
      "typeId": 10,
      "typeName": "FileUpload",
      "isLogic": false
    }
  },
  "answers": {
    "5706": {
      "answerDate": "2024-01-10 10:47:25",
      "answer": null,
      "answerOptions": [
        {
          "optionId": 8215,
          "name": "Option örnek 1",
          "type": "image",
          "image": ""
        }
      ]
    },
    "5707": {
      "answerDate": "2024-01-10 10:47:25",
      "answer": null,
      "answerOptions": [
        {
          "optionId": 8218,
          "name": "Option örnek 4",
          "type": "image",
          "image": ""
        }
      ]
    },
    "5708": {
      "answerDate": "2024-01-10 10:47:29",
      "answer": "UserTest"
    },
    "5710": {
      "answerDate": "2024-01-10 10:47:34",
      "answer": {
        "value": "Turkey",
        "mainValue": "Türkiye",
        "id": 1,
        "type": "local-country",
        "longitude": "34.9249653",
        "latitude": "38.9597594"
      }
    },
    "5711": {
      "answerDate": "2024-01-10 10:47:36",
      "answer": "03-01-2024"
    },
    "5712": {
      "answerDate": "2024-01-10 10:47:39",
      "answer": "13:47"
    },
    "5713": {
      "answerDate": "2024-01-10 10:47:50",
      "answer": "[\"https://zotlo-3api-assets.mobylonia.com/3p-images/site_media/2024/01/10/66184374-874e-43f0-9713-f97.png\"]"
    }
  }
}

Fields

Field
Description

client.subscriberId

Subscriber ID which can be email or phone number.

client.subscriberName

Name and surname of the registered user.

client.email

Subscriber email.

client.uuid

Unique user ID.

client.isPayer

Value is sent as 1 if the user has made a successful payment, otherwise 0. If it is 1, it indicates that the purchase transaction has been completed, if it is 0, it indicates that the purchase transaction has not been completed.

client.platform

User device OS.

client.country

User country.

client.language

User language.

client.utmSource

UTM source parameter.

client.utmCampaign

UTM campaign parameter.

client.utmContent

UTM content parameter.

client.utmTerm

UTM term parameter.

client.paymentModule

It specifies which module the process belongs to. It takes the generate value for Zotlo Self Service and the store value for the marketplace.

client.flowId

It is the ID in Zotlo of the flow added to the sales site.

client.siteId

It is the ID information of the sales site in Zotlo.

client.ip

User's IP Information.

questions

Question details.

questions.questionId

Question ID

questions.questionName

Question name.

questions.question

Quetion title.

questions.settings

Question design settings.

questions.sequence

Question order.

questions.displayedSequence

Question order seen by the user.

questions.required

Value is 1 if answer is required for the question otherwise 0.

questions.isMultiple

Value is 1 if multiple answers are allowed for the question otherwise 0.

questions.typeId

Question type, possible values:

0 : Multiple choice

2 : Image chooser

4 : Info page

5 : Date

6 : Time

7 : Single row text

8 : Location

9 : Ending page

10 : file upload

questions.typeName

Question type name.

questions.isLogic

true if question has a logic false otherwise.

answers

It is information about the answers answered in the survey. If there is multi-language support, the answers are sent in the language in which the user answered.

answers.answerDate

Answer date.

answers.answer

Answers to the question.

answers.answerOptions.optionId

Option ID if question is a multi select type.

answers.answerOptions.name

Option text if Option ID if question is a multi select type.

answers.answerOptions.type

It is the answer type of the question. It can take image or text values.

answers.answerOptions.image

This is the image of the answer.

⚙️