Loop
Sign inGet started
Getting started

Introduction

Loop is a developer feedback platform to collect, triage, and act on user feedback with an SDK, a drop-in widget, and signed real-time webhooks.

What is Loop?

Loop is a feedback platform built for developers. It gives you everything you need to collect, triage, and act on user feedback without stitching together forms, spreadsheets, and ad-hoc scripts. Send feedback through a typed SDK, drop a widget into your app, and react to changes in real time through signed webhooks.

Every piece of feedback becomes a structured feedback item you can query, filter, and route — from a one-line bug report to a glowing review.

Core concepts

A feedback item is the central object in Loop. It has a stable shape across every SDK and the REST API:

Field Type Description
id string Unique identifier, e.g. fb_3a91
user object The end user who submitted it (user.id)
message string The feedback text
sentiment positive | neutral | negative How the user feels
source string Where it came from, e.g. in-app-widget
tag string Optional label for routing and triage
status open | resolved Triage state
createdAt string (ISO 8601) When it was created

How the pieces fit together

Loop is made of three layers that share the same data model:

  • SDK — typed clients for JavaScript/TypeScript, Python, and Go. Create and query feedback from your backend or scripts.
  • Drop-in widget — a small embed that collects feedback from inside your app and forwards it to your account as source: 'in-app-widget'.
  • Signed webhooks — real-time, HMAC-signed events (feedback.created, feedback.resolved) delivered to your endpoint with automatic retries and exactly-once delivery.

A typical flow looks like this:

  1. A user submits feedback through the widget or your own UI.
  2. Loop stores it as a feedback item and assigns sentiment and a stable id.
  3. A feedback.created webhook fires to your endpoint.
  4. Your team triages it — adding tags, then marking it resolved.

A first taste

Here is the smallest possible example of creating a feedback item with the SDK:

import { Loop } from '@loop/sdk';

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

await loop.feedback.create({
  user: { id: 'u_8f2c' },
  message: 'The new export flow is much faster, thank you!',
  sentiment: 'positive',
  source: 'in-app-widget',
});

That single call validates your API key, stores the item, and triggers any webhooks you have configured — no extra wiring required.

Plans

Loop offers three plans so you can start small and scale as your feedback volume grows:

Plan Included volume Best for
Free 1,000 items / month Side projects and early-stage products
Pro Higher monthly quota Growing teams with steady feedback volume
Scale Highest quota + SLA High-traffic apps and large organizations

You can start on Free with no credit card and upgrade when you approach your monthly item limit.

Where to go next

  • Quickstart — install the SDK and send your first feedback item in minutes.
  • Authentication — manage API keys and authenticate requests.
  • Feedback API — the full reference for creating and listing feedback.
  • Webhooks — receive and verify signed real-time events.
  • SDKs — install and use the JavaScript, Python, and Go clients.

Loop stays out of your way: a small, predictable surface area so you can spend your time acting on feedback instead of plumbing it.

NEXT →
Quickstart