Reviewers click the exact spot and leave a note. Every pin lands in one inbox, with a screenshot, grouped by page. You promote the keepers to GitHub or Asana with one click. Nothing gets lost. Nothing spams your tracker.
A screenshot in Slack. An email that says "the button feels off." A note from a call you were sure you'd remember. Feedback about your site arrives everywhere except your issue tracker, so you become the human router, re-typing it into tickets by hand and hoping nothing slipped through.
Feedback someone took the time to give should end up where work actually happens.
Paste one script tag into your demo site or landing page. That's the whole integration, simple enough to hand an AI agent mid-build.
Reviewers click the exact spot and leave a note. Pinpoint captures the position, the viewport, and a screenshot, then posts it to your inbox, grouped by page.
Review pins once, in one place. One click turns a pin into a GitHub issue or Asana task with the screenshot attached. Dismiss the rest, so your tracker only sees what you've vetted.
Create a project in the dashboard, copy your snippet, paste it before
</body>. You're collecting pins.
<script src="https://www.pinpointplugin.com/embed/SITE_KEY.js" async></script>
From then on, every pin finds its way to your inbox, and nothing reaches your tracker without your say-so.
The embed endpoint serves a loader that injects the stylesheet, the widget, and the wiring. Assets are vendored by Pinpoint, nothing asked of the host page.
Visitors only ever see their own pins. The widget never fetches anything back; Pinpoint is write-only from the page's point of view.
Pins carry stable client IDs, so the loader can re-post anything unsynced on the next visit and Pinpoint dedupes without double-logging.
The 500×250 thumbnail is stored and hosted by Pinpoint, so a promoted GitHub issue can actually show what the reviewer saw.
Project keys live in HTML by design. Rate limiting and per-project scoping keep a leaked key boring. The worst it can do is file feedback.
pinpoint.js is MIT, framework-free, and ~10KB. What you're looking at is its
documented onPinAdd hook, fully realized. The widget needs no changes.