Troubleshooting

The widget does not appear

Check these in order:

  • Both script tags are present and sit just before the closing </body> tag, with the config script first and the widget.min.js script second.
  • window.FeedbackFlowConfig is set before widget.min.js loads. If you set it after, the widget reads an empty config.
  • apiKey is filled in with a real project key, not the YOUR_API_KEY placeholder.
  • No ad blocker or content blocker is hiding the launcher. Test in a private window with extensions disabled.

Invalid API key

If submissions fail with an authentication error, the key is wrong or has been rotated. Open your project page, regenerate the key, and update the apiKey value on your site. Regenerating replaces the old key immediately, so any site still using the old value stops submitting.

Content Security Policy errors

If your site sends a Content-Security-Policy header, allow FeedbackFlow in two directives:

  • script-src must allow https://usefeedbackflow.com so widget.min.js can load.
  • connect-src must allow https://usefeedbackflow.com so the widget can submit feedback.

A blocked resource shows up in the browser console as a CSP violation naming the directive to fix.

Feedback from an integration is not arriving

For inbound integrations (Slack, Intercom, Zendesk), check the source side:

  • The webhook Request URL matches the one shown on the integration setup screen, including your project ID.
  • The signing secret entered in FeedbackFlow matches the one from the provider.
  • The provider is actually sending events: Slack needs the bot invited to the channel and the message.channels event subscribed, Intercom needs the conversation.user.created topic, and Zendesk needs a trigger that runs the webhook when a ticket is created.

See the integration guides for the exact steps per provider.