Frequently asked

Quick, honest answers.

If your question isn't here, it's probably in the docs or the privacy policy.

Setup

How do I install the SDK?

Two steps. First, grab the file: /sdk/ef-sdk.js — drop it in your extension folder next to background.js. Second, in background.js:

import { ExtensionFeedback } from "./ef-sdk.js";

ExtensionFeedback.init({
  apiKey:  "ef_live_…",
  install: true,
});

That's everything. Walk through the quickstart for a fuller version.

Do I need new manifest permissions?

No. The SDK uses chrome.runtime.setUninstallURL() and chrome.runtime.onInstalled, which are free, plus chrome.storage.local. Most extensions already have "storage"; if yours doesn't, add it.

Where do I get my API key?

Sign up at /signup, then go to Register an extension. After registration we mint an ef_live_… key and show it once. We hash it on the server and can't show it again, but you can rotate it any time from the extension's edit page.

What does the install/uninstall page look like?

Like the preview on the homepage: small framed page with your extension's logo, headline, optional reason chips, optional free-form text, and optional email opt-in. Configurable per page from /dashboard/extensions/<slug>.

Privacy & trust

What does the SDK actually collect?

Nothing personal. The SDK makes exactly one HTTPS POST on first install to /api/v1/install, sending only your apiKey, the extension ID, and the random per-install ID — and receives a per-install signing secret used to authenticate subsequent feedback URLs. That's the only network activity. After that, the SDK only sets URLs that Chrome opens; the hosted page (which Chrome opens) sends the form fields the user actually filled in. Full schema on the privacy page.

Are IPs stored?

Only as an HMAC-SHA256 hash with a server-side secret. We cannot reverse it. Used to count and rate-limit; never linked to identity.

What about free-form text and email?

Both auto-NULLed in the database 90 days after submission. The row stays so analytics keep working; the personal-ish content is gone.

Can users opt out of being surveyed?

Yes — one click on /opt-out. We then drop every submission from that browser, for every extension, forever. The opt-out cookie is a random 128-bit ID; not tied to any account.

Will the Chrome Web Store flag my extension?

An uninstall URL is an explicitly supported Chrome feature. You're not collecting anything you weren't entitled to. A short note in your privacy policy mentioning the uninstall feedback page is good practice.

Account

Why don't you send email for verification?

Two reasons. (1) Every email we send is something we have to deliver, defend, and worry about being marked spam. (2) It lets users sign up, verify, and forget — leaving stale accounts. We use email purely as a unique identifier; signup generates a strong random password and a one-time recovery code that you save once.

I lost my password. How do I recover?

Visit /reset, enter your email and the recovery code you saved at signup. We rotate both secrets and show you the new ones once.

Can I delete my account and all data?

Yes. /dashboard/account → "Delete account permanently." Type DELETE, confirm with your password, and the account plus every registered extension, every submission, and every uploaded image is gone immediately.

Pricing & future

What does it cost?

Free during the alpha. When pricing lands there will be a free tier and at least one paid tier; existing accounts will get at least 30 days' notice and grace.

Is the SDK open source?

Yes — MIT-licensed. Source on GitHub: github.com/USSupportLLC/ExtensionFeedback. The single bundled file is also served directly at /sdk/ef-sdk.js. Issues and PRs welcome.

What's coming next?

Image uploads for logos and per-step troubleshooting guides; CSV export of submissions; webhook delivery for new submissions; deeper microsurvey types.