Skip to main content

Implement Survey

This is where our apps truly shines, we every conceivable cases, and if we don't message us.

Using web endpoint

1. Share the url

This is a quick and easy way to share your web link. You can provide a link for your users to following

Target URL
https://quick-feedback.xyz/endpoint/survey-question?key=API_KEY

2. Embed it in your website

<iframe
title="Inline feedback"
width="400"
height="300"
src="https://quick-feedback.xyz/endpoint/survey-question?key=API_KEY"
></iframe>
https://quick-feedback.xyz/endpoint/survey-question?key=API_KEY

3. Share it using auto-generated QR codes

URL for QR
https://quick-feedback.xyz/endpoint/survey-question?key=API_KEY&qr=true
https://quick-feedback.xyz/endpoint/survey-question?key=API_KEY&qr=true

More on using Endpoints

APIs

1. REST API

Fetching survey questions

Using api keys, you can fetch a survey or post feedbacks.

Survey question
const apiURL = "https://quick-feedback.xyz/api/survey-question?key=API_KEY";

fetch(apiURL)
.then((res) => console.log(res.json()))
.catch((err) => console.error(err));
response.json
{
"id": 5,
"api_key": "API_KEY",
"title": "Site performance",
"question": "How would you rate our website load time",
"data": null
}

Post the feedback

To post a feedback, you need post

Example.ts
fetch("https://quick-feedback.xyz/api/post-feedback?key=API_KEY", {
method: "POST",
body: JSON.stringify({
rating: 5,
message:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
}),
});

2. Emails

This will automatically send email to the email address provided

Email trigger
https://quick-feedback.xyz/api/survey-question?key=API_KEY&email=example@email.com
<div className="email-container">
<h2>Survey title</h2>
<p>Survey Question</p>
<p>
<strong>
We value your feedback! Please take a moment to rate our service
</strong>
</p>
<p>
<a
href="https://quick-feedback.xyz/api/survey-question?key={{apiKey}}&hash={{hashValue}}"
className="button"
target="_blank"
>
Rate your experience
</a>
</p>
<p className="footer">
If you did not request this survey, you can ignore this email.
</p>
</div>

More on using APIs

Node

If you are using node.js, you can use npm

npm
# download the package
npm install quick-feedback

Fetching surveys

index.ts
import createFB from "quick-feedback";

const quickFB = createFB("API_KEY");
const { data, error } = quickFB.get("survey-question");
response.json
{
"id": 5,
"api_key": "API_KEY",
"title": "Site performance",
"question": "How would you rate our website load time",
"data": null
}

Posting feedbacks

index.ts
const { data, error } = quickFB.post({
rating: 5,
message:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
});
response.json
{
"status": 201,
"statusText": "Successful"
}

More on using Nodejs

Scripts

index.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Sample</title>
</head>
<body>
<div id="container">JS not supported</div>
<script src="https://cdn.jsdelivr.net/npm/quick-feedback@latest/dist/index.js"></script>
</body>
</html>
const quickFB = new QuickFB();

// initialise with api key to use anywhere
quickFB.init("API_KEY");

quickFB.render("#container", {
/** options **/
});

// uses api key: API_KEY
const survey = quickFB.fetchSurvey();

// fetch with a specific api key
const survey = quickFB.fetchSurvey("API_KEY");
response.json
{
"id": 5,
"api_key": "API_KEY",
"title": "Site performance",
"question": "How would you rate our website load time"
}

React

React Elements

import React from "react";
import { QBForm } from "react-quick-feedback";

function ReviewForm() {
return <QBForm apiKey="API_KEY" />;
}

Hooks

Written in pure javascript, to support react as well as react-native

import React from "react";
import { useForm } from "quick-feedback-hooks";

function ReviewForm() {
const { state, handleSubmit, errorMSG, onChange } = useForm("API_KEY");
if (state.succeeded) {
return <Text>Thanks for your feedback!</Text>;
}

return (
<View>
<TextInput
value={value.message}
onChangeText={(value) => console.log("message", value)}
/>
<TextInput
value={String(value.rating)}
onChangeText={(value) => console.log("message", value)}
/>
<TextInput
value={value.params?.gender}
onChangeText={(value) => console.log("params.gender", value)}
/>
<Text style={{ color: "red" }}>{errorMSG}</Text>
<Button title="Submit" onPress={handleSubmit} />
</View>
);
}