Create a Feedback Widget for your Next.js site with two steps. The submitted message will be sent to your Slack channel.
No backend required! See the demo
yarn add @upstash/feedback
Then create a .env
file at the root directory of your application and add your webhook URL (Slack, Discord etc).
SLACK_WEBHOOK_URL='my-secret-webhook-url'
SLACK_WEBHOOK_URL
can be found at the Slack integration page in https://api.slack.com/messaging/webhooks
// pages/_app.js
import "@upstash/feedback/index.css";
import FeedbackWidget from "@upstash/feedback";
export default function MyApp({ Component, pageProps }) {
return (
<>
<FeedbackWidget />
<Component {...pageProps} />
</>
);
}
// pages/api/feedback.js
import createFeedbackAPI from "@upstash/feedback/api";
export default createFeedbackAPI({
webhooks: [process.env.SLACK_WEBHOOK_URL],
});
You can create multiple webhooks for multiple channels. Seperate them with a comma
[process.env.SLACK1_WEBHOOK_URL, process.env.SLACK2_WEBHOOK_URL, process.env.DISCORD_WEBHOOK_URL]
The options can be passed as React props
key type default accept user?
string metadata?
object null type?
string "form" 'form', 'rate', 'full' apiPath?
string 'api/feedback' themeColor?
string '#5f6c72' textColor?
string '#ffffff' title
string, React.ReactElement description
string, React.ReactElement showOnInitial?
boolean false If you already have an id (or email) for the current user, you can pass it to the component as a parameter, so the feedback will be stored together with the user's id.
<FeedbackWidget type="full" user={currentUser.email} />Also, you can set a user id just to hide email input, so the form can be submitted anonymously.
<FeedbackWidget type="full" user="anything" />