Integration Guide

Choose your integration path

Three ways to add Swake to your product. Pick the one that fits your team's workflow.

Easiest · No installation

No-Code Setup

Paste a single <script> snippet into your HTML. No npm, no builds, no deployments. Identify users with one function call and link to your portal with a data attribute.

Best for: Marketing sites, landing pages, or any product where you can't deploy a native SDK.

  • Copy-paste HTML snippet
  • Swake('identify', {...}) API
  • Portal link interception (data-swake-link)
  • Shareable survey URLs
  • Portal login integration
  • Custom domain & branding
Set up No-Code
Recommended · Full featured

SDK Integration

Native SDKs for React Native, React, Next.js, Vue, Angular, Svelte, and more. Get the full UI — feedback forms, surveys, notifications, voting boards — in your app's native style.

Best for: Mobile apps and web apps where you want built-in UI components and full feature access.

  • 10 frameworks supported
  • Built-in feedback form UI
  • In-app surveys & NPS
  • Voting boards
  • Push notifications
  • Full theme customization
  • Ad serving
Browse SDKs
Advanced · Full control

REST API / Custom UI

Use the public REST API directly to build your own feedback UI. Full access to submissions, users, surveys, and analytics — design the experience entirely your way.

Best for: Teams with specific UI requirements, existing design systems, or non-standard platforms.

  • Full REST API access
  • Submit & query feedback
  • User management
  • Survey responses
  • Webhook events
  • HMAC authentication
API ReferenceAPI docs coming soon

Feature comparison

FeatureNo-CodeSDKCustom UI
Setup time< 5 min15–30 minHours
User identification
Portal link handoff
Built-in feedback form UICustom
In-app surveysShareable links onlyCustom
Voting boardsCustom
Push notificationsCustom
Custom brandingPortal onlyTheme tokens
Ad servingCustom
Technical requirementHTML editorNode.js / npmServer-side API calls

See the difference

No-Code (HTML)
html
<!-- Paste in <head> -->
<script>
  !function(w,d,i,s){w[i]=w[i]||function(){
    (w[i].q=w[i].q||[]).push(arguments)
  };var t=d.createElement(s);t.async=1;
  t.src="https://cdn.swake.io/sdk.js";
  d.head.appendChild(t)
  }(window,document,"Swake","script");
</script>
<script>
  Swake('identify', {
    appID: 'ep_live_...',
    user: { id: 'user_123', email: 'jane@acme.com' }
  });
</script>
SDK (TypeScript)
typescript
import Swake from '@swake/react-native';

// Initialise once at app startup
Swake.init({ apiKey: 'ep_live_...' });

// Identify after the user logs in
Swake.identify({
  userId: 'user_123',
  email: 'jane@acme.com',
  name: 'Jane Smith',
});

Not sure which option is right for you?

Talk to us — we'll help you pick the right path for your stack and team.

Get in touch