EveryHello Feedback
Ask for feedback at the moment it matters.
Trigger a detailed report or a five-face experience rating from your own interface. Attach trusted user identity and application context when it helps your team understand the submission.
Two feedback modes, one SDK
Experience mode submits a one-tap score. Report mode collects a bug, idea, or general observation, with an optional user identity and attachment.
Interactive example. Nothing is submitted.
Acme Studio
Feedback
How was your experience?
Choose the face that best matches the moment.
Install the Feedback SDK
Create and activate Feedback in your workspace, allow your production domains, then add the generated script before the closing </body> tag.
<script
src="https://www.geteveryhello.com/sdk.js"
data-feedback-key="fdb_YOUR_KEY"
async
></script>Trigger Feedback from HTML
Declarative triggers work with buttons or links added before or after the SDK loads. The SDK listens for clicks on the feedback attribute.
<button data-everyhello-feedback="report">
Send feedback
</button>
<button data-everyhello-feedback="experience">
Rate your experience
</button>Open a specific report type
Use bug, idea, or general when the surrounding action already tells you what the visitor intends to submit.
<button
data-everyhello-feedback="report"
data-everyhello-feedback-type="bug"
>
Report a problem
</button>Open Feedback from JavaScript
Programmatic triggers are useful after checkout, onboarding, task completion, cancellation, or an error boundary where your application already has useful context.
window.EveryHello.feedback.open({
mode: "report",
type: "bug",
context: { orderId: "ORDER-123" }
});| Method | Purpose |
|---|---|
| open(options) | Open report or experience mode. Options can include report type and one-time context. |
| close() | Close the open feedback dialog. |
| identify(user) | Attach an external user ID, name, and email to future submissions. |
| setContext(value) | Merge persistent application context into future submissions. |
| reset() | Clear the identified user and persistent context, typically at sign out. |
| on(name, callback) | Listen for ready, open, close, submitted, or error events. Returns an unsubscribe function. |
| off(name, callback) | Remove a previously registered callback. |
Identify the visitor and add context
Identification prevents visitors from retyping information your application already knows. Context should contain only fields that help someone review the feedback.
window.EveryHello.feedback.identify({
id: currentUser.id,
name: currentUser.name,
email: currentUser.email
});
window.EveryHello.feedback.setContext({
plan: "growth",
workspaceId: currentWorkspace.id
});Reset on sign out
Clear identity and context before another person uses the same browser session.
window.EveryHello.feedback.reset();Listen for SDK events
Events let your application respond to widget state without controlling the submission request itself.
const unsubscribe = window.EveryHello.feedback.on(
"submitted",
({ submissionId, kind, rating }) => {
console.log({ submissionId, kind, rating });
}
);
// Stop listening when your view is removed.
unsubscribe();| Event | Payload |
|---|---|
| ready | No required fields. The iframe is ready to receive identity, context, and open commands. |
| open | The active mode. |
| close | No required fields. |
| submitted | Submission ID, kind, and rating when experience mode was used. |
| error | An error code such as submit_failed. |
Submission data
Depending on the selected mode and the values you provide, a submission can include:
- Feedback kind, message, rating, and an optional PNG, JPG, WebP, or PDF attachment up to 5 MB.
- External user ID, name, and email.
- Custom context set globally or supplied for one open action.
- Source URL without query or fragment details, page title, locale, viewport size, browser user agent, visitor ID, and SDK version.
Do not pass secrets or regulated data
EveryHello is not offered as a HIPAA-compliant service. Avoid tokens, passwords, payment details, protected health information, and unnecessary personal data in feedback context.
Content Security Policy
Merge the EveryHello sources into an existing restrictive policy.
Content-Security-Policy:
script-src 'self' https://www.geteveryhello.com;
frame-src https://www.geteveryhello.com;