Loop
v2 API · now in general availability

Feedback for
developers

The fastest way to collect, triage, and act on user feedback. Drop in the SDK, ship a widget, and pipe every signal straight into your stack.

Documentation
$npm i @loop/sdkcopy
feedback.tsnode 20
import { Loop } from '@loop/sdk';

const loop = new Loop(process.env.LOOP_API_KEY);

// every signal, one call
await loop.feedback.create(({
  user: { id: 'u_8f2c' },
  message: 'Webhook retries work flawlessly now',
  sentiment: 'positive',
  source: 'in-app-widget',
});

Trusted by engineering teams shipping fast

NorthwindHEXABUILDCobaltOutpostMainlinequanta_

Everything you need to close the loop

From the first SDK call to the resolved ticket. Built for teams that treat feedback as a primary signal, not an afterthought.

SDK integrations

First-class libraries for Node, Python, Go, and React. Type-safe, batteries included, three lines to first feedback.

nodepythongo

Feedback widget

A drop-in widget that matches your product. Themeable, accessible, and under 12kb. Ships sentiment and metadata automatically.

<script>react

Real-time webhooks

Stream every event to your stack with signed payloads, automatic retries, and exactly-once delivery guarantees.

signedretries
DEVELOPER EXPERIENCE

Integrate in minutes,
not hours

No vendor lock-in, no heavyweight dashboard to learn. The same ergonomic API across every language you ship in.

  • Idempotent writes — safe to retry from anywhere.
  • Typed responses with full editor autocomplete.
  • Local-first SDK with offline buffering.
import { Loop } from '@loop/sdk';

const loop = new Loop(process.env.LOOP_API_KEY);

await loop.feedback.create(({
  user: { id: 'u_8f2c' },
  message: 'Webhook retries work flawlessly',
  sentiment: 'positive',
});

Manage every signal in one place

Filter by sentiment, tag by release, assign to a teammate. The inbox turns scattered feedback into a triage queue your team actually clears.

app.loop.dev/inbox
Inbox8 open
Maya Okafor

The new webhook retry logic is exactly what we needed…

Dev Patel

Widget dark theme ignores our custom accent…

Lena Fischer

Would love a Go SDK — rewriting our backend…

MO
Maya Okafor
@mayacodes · Scale plan
Webhooks

"The new webhook retry logic is exactly what we needed — failed deliveries now recover automatically without us writing any backoff code. This shipped at the perfect time for our migration."

Positivevia API · 12m ago

Ready to start collecting?

Free up to 1,000 feedback items a month. No credit card, no sales call. Ship your first widget today.

See pricing