Docs

Reakt is a micro-frontend. One script tag, a sandboxed iframe, and a small JSON API for when you want to send surveys yourself.

Embed SDK

Drop this in once. It defines a global Reakt object and loads nothing else until you open a survey.

Install
<script src="https://reakt.app/reakt.js"
        data-reakt-host="https://reakt.app"></script>
Open a survey
Reakt.open('post-checkout-vibe-check', {
  userId: 'usr_8812',
  plan: 'pro',
})

// Optional third argument
Reakt.open('post-checkout-vibe-check', {}, {
  position: 'center',   // 'corner' (default) | 'center'
  campaignId: 'cmp_...' // attribute the response to a campaign
})
Full surface
Reakt.open(slug, metadata?, options?)  // mount the widget
Reakt.close()                          // dismiss it
Reakt.on(eventKey, slug)               // map an event to a survey
Reakt.track(eventKey, metadata?)       // fire a mapped event
Reakt.onDone = (slug) => { ... }        // callback after submit

Events

If you would rather not hardcode slugs across your app, map event keys to surveys once and fire the events instead. Change the survey later without shipping code.

Event mapping
// Register your mappings once, at boot
Reakt.on('checkout.completed', 'post-checkout-vibe-check')
Reakt.on('ticket.closed', 'support-vibe-check')

// Then fire them from anywhere
Reakt.track('checkout.completed', { orderId: 'ord_5521' })

Trigger API

Returns a ready-to-send survey link so you can deliver it over SMS, email, push, or a printed QR code. Mint a key under Settings in your workspace.

Request and response
POST /api/v1/trigger
Authorization: Bearer rk_live_...
Content-Type: application/json

{
  "surveySlug": "post-checkout-vibe-check",
  "metadata": { "userId": "usr_8812", "channel": "sms" }
}

// 200 OK
{
  "ok": true,
  "url": "https://reakt.app/s/post-checkout-vibe-check?userId=usr_8812",
  "slug": "post-checkout-vibe-check",
  "campaignId": null
}
Fire a campaign instead
// Pass campaignId instead to fire a campaign and
// increment its send counter in one call.
{ "campaignId": "8f2c...", "metadata": { "userId": "usr_8812" } }

Errors: 401 invalid key, 404 unknown survey or campaign, 409 survey not live or campaign paused, 429 rate limited at 60 requests per minute per key.

Metadata

Metadata is how a reaction becomes useful. Attach whatever identifies the moment, then filter your dashboard by it. Up to 20 keys per response.

Attaching context
// Anything you attach shows up on the response row
Reakt.open('post-checkout-vibe-check', {
  userId: 'usr_8812',
  plan: 'pro',
  region: 'eu-west',
  experiment: 'checkout-v3',
})

Mobile

There is no native SDK yet. The embed route renders the survey with no surrounding chrome, so a WebView is the shortest path.

Embed URL
// iOS / Android WebView, or any plain iframe
https://reakt.app/embed/post-checkout-vibe-check?userId=usr_8812

Your snippets, pre-filled

The Embed & API page in your workspace shows all of this with your real slugs and host.

Open in workspace