Native everywhere your product runs

Ship feedback in three lines.

Same anonymous-first guarantee in every SDK. Three platforms, two slugs, one bottom sheet. Plus outbound integrations to Jira, Slack, and any HTTPS endpoint.

FlutterAvailable

Published on pub.dev as insightdive_sdk. Two modes: modal bottom sheet managed by the SDK, or inline widget you place anywhere in your tree. Streams lifecycle events (viewed / started / completed / dismissed).

// pubspec.yaml
dependencies:
  insightdive_sdk: ^0.3.0

// Modal — SDK manages the sheet
Insightdive.configure(
  tenant: 'acme',
  survey: 'onboarding',
  apiKey: 'ik_…', // Admin → Settings → API
);
await Insightdive.show(context);

// Inline — you control placement & lifecycle
InsightdiveSurvey(
  options: Insightdive.options,
  onEvent: (e) {
    if (e is FeedbackCompleted) setState(() => _show = false);
  },
)

Web / JavaScriptAvailable

Published on npm as @insightdive/sdk. Two display modes: modal bottom sheet (overlay on the page) or inline embed (iframe dropped directly into your layout). Full TypeScript types. Works from React, Vue, Angular, vanilla JS — or drop the CDN script with no build step.

import { Insightdive } from '@insightdive/sdk';

Insightdive.configure({
  tenant: 'acme',
  survey: 'onboarding',
  apiKey: 'ik_abc123...',
});

// Modal — bottom sheet overlay
const result = await Insightdive.show();
// result.status === 'completed' | 'dismissed'

// Inline — embedded iframe (container needs explicit CSS height)
Insightdive.embed(document.getElementById('survey-slot'));

.NET / Avalonia & C#Available

Published on NuGet as Insightdive. Two display modes: dialog window (460×680, non-blocking) or inline control (InsightdiveSurveyControl embedded directly in your layout). Two targets: net8.0 with full Avalonia UI + screenshot capture; netstandard2.0 for status-check only (no UI dependency).

# Install
dotnet add package Insightdive

// App.axaml.cs — one-shot setup at startup
InsightdiveSDK.Configure(new InsightdiveOptions {
    Tenant            = "acme",
    Survey            = "onboarding",
    ApiKey            = "ik_abc123...",  // Admin → Settings → API
    ProductVersion    = Assembly.GetEntryAssembly()?.GetName().Version?.ToString(),
    ProductIdentifier = "myapp-desktop",
    Locale            = CultureInfo.CurrentCulture.Name,
    Theme             = "dark",
});

// Dialog window — opens as a 460×680 non-blocking window
if (await InsightdiveSDK.Instance.IsAvailableAsync())
    await InsightdiveSDK.Instance.ShowAsync(this);

// Inline control — embed directly in your layout (net8.0)
var token   = await InsightdiveSDK.Instance.FetchEmbedTokenAsync();
var url     = UrlBuilder.SurveyUrl(InsightdiveSDK.Instance.Options, token);
var control = new InsightdiveSurveyControl(InsightdiveSDK.Instance, url);
MyPanel.Children.Add(control);

REST APIAvailable

Server-to-server endpoints for backends that already collect feedback. Bearer-token auth scoped to your workspace. Useful for forwarding from existing forms or batch imports.

# Public — embed clients call this to decide whether to show the entry point
GET https://<tenant>.insightdive.com/api/v1/surveys/<survey>/status

# Server-to-server — Authorization: Bearer <tenant API key>
POST https://<tenant>.insightdive.com/api/v1/submissions

JiraAvailable

Two-click ticket creation from any insight. Maps sentiment, summary, and transcript into the issue body. Per-project Jira project keys, or a default fallback. Atlassian API token — no admin role required.

Slack & generic webhooksAvailable

Push new insights, AI summaries, and theme runs to a Slack incoming webhook — or any HTTPS endpoint. Payloads are signed with HMAC SHA-256 so you can verify they came from us.

Pick your platform. Ship in an afternoon.

The full integration guide for your stack lives in the admin — generated against your project's slug and tenant.

Get your workspace