← All use cases
SaaS platforms

Your customers want surveys in your product. You don’t want to build a survey builder.

Each customer account gets its own survey builder, forms, and results inside your app, with no second login and no survey UI for your team to maintain.

Example: Tallyworks is a fictional product and all numbers are sample data.

Start 14-day Pro trial with the In-App CSAT Micro-Survey templateTalk to sales

Needs Pro. No card required for the trial.

9:41●●● ▮
Tapp.tallyworks.example
Acme Logistics · 90 seconds

How smooth was your first week with us?

Secured by Tallyworks

The phone is live: tap through the Tallyworks survey.

Why platforms add it

Your customers ask for surveys inside your product

B2B SaaS and vertical software whose customers want to survey their own customers, staff, or members.

“Can we send our own surveys from here?”

Account admins want to ask their customers or staff questions without exporting contacts into a separate form tool.

“Can it look like the rest of the app?”

A form with another logo and another domain in the middle of your product makes people hesitate.

“Can I see results without another login?”

Results belong next to the survey, visible only to the account that created it.

  • Surveys become a feature of your product
  • Each customer account sees only its own surveys and results
  • No builder, renderer, or exports for your team to maintain
How it works

Three steps from sign-up to live

Your backend signs the customer account (tenant), the person (user), what they may do (capabilities), and an optional business object (subject) into a five-minute embed token, together with your theme. ResponseDock renders the survey list, the builder, and results in an iframe and checks every API request against that signed context, so a hidden button is never the security boundary.

  1. Step 1

    Your server signs a session

    When someone opens the surveys page, your backend asks ResponseDock for a five-minute embed URL with the account, the person, and what they may do. The secret key never reaches the browser.

    server/surveys.ts
    const res = await fetch('https://api.responsedock.com/api/v1/auth/embed-token', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.RESPONSEDOCK_SECRET_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        workspaceId: process.env.RESPONSEDOCK_WORKSPACE_ID,
        role: 'admin',
        mode: 'workspace',
        allowedOrigin: 'https://app.yourplatform.com',
        tenant: { id: account.id, name: account.name },
        user: { id: user.id, name: user.name },
        capabilities: ['questionnaire:create', 'questionnaire:edit',
          'questionnaire:publish', 'results:view'],
        subject: { type: 'account', id: account.id, label: account.name },
        theme, // parsed from your version-controlled theme file
      }),
    });
    const { embedUrl } = await res.json(); // { token, expiresIn: 300, embedUrl }
  2. Step 2

    Your page renders the iframe

    Load the returned URL in an iframe. It sizes itself to its content through a resize message, so your page keeps control of scrolling.

    surveys.html
    <iframe id="surveys" src="EMBED_URL_FROM_YOUR_SERVER"
      title="Surveys" style="width:100%;border:0" allow="clipboard-write"></iframe>
    <script>
      const frame = document.getElementById('surveys');
      window.addEventListener('message', (event) => {
        if (event.origin !== 'https://app.responsedock.com'
          || event.source !== frame.contentWindow) return;
        if (event.data?.type === 'responsedock.lifecycle.resize') {
          frame.style.height = event.data.payload.height + 'px';
        }
      });
    </script>
  3. Step 3

    You keep track of what they create

    Store the IDs of new questionnaires against the account. When people should answer, request a respondent embed with their user ID and the surveys they may see.

    surveys.html
    if (event.data?.type === 'responsedock.questionnaire.created') {
      saveSurvey(accountId, event.data.questionnaire.id);
    }
    
    // Later, for someone who should answer (server side):
    // { role: 'respondent', allowedSurveyIds: [surveyId],
    //   externalUserId: member.id, allowedOrigin, workspaceId }
Product walkthrough

What your users see

ResponseDock supplies the survey engine. Your application keeps the relationship, context, and visual identity.

Your app signs the user, their account, and what they may do, and the survey list opens inside Tallyworks. No second login and no separate dashboard.

Example screens: Tallyworks is fictional and the data is sample data.

Start from a template

The In-App CSAT Micro-Survey template, ready to use

These are the template’s real questions. Tap through the phone, then change anything in the builder. The colors come from your theme, not from the template.

9:41●●● ▮
Tapp.tallyworks.example
In-App CSAT Micro-Survey · about 1 min

How satisfied are you with what you just did?

Very dissatisfiedVery satisfied
Secured by Tallyworks
  1. Rating · requiredHow satisfied are you with what you just did?
  2. Long textWhat would have made it better?
Build or buy

What building it yourself involves

A survey feature your customers rely on is more than a form. Estimate the work with your own numbers.

What you would build and run

  • A builder with 15 question types, conditional logic, drafts, and versions
  • Respondent forms in 18 languages, including right-to-left layouts
  • File uploads with type and size limits
  • Live results and CSV, Excel, and PDF exports
  • Tenant isolation and per-user permissions, enforced on every request
  • Theming that matches your product before first paint
  • Bot protection: Cloudflare Turnstile, honeypot and timing checks, rate limits
  • Email invitations, a reminder, and unsubscribe handling
  • Webhooks and lifecycle events for your backend

Your estimate

Enter your own estimate to compare it with our list prices.

Engineer-weeks × 5 days × your day rate. Maintenance, security reviews, and support are not included. Our figures are list prices from the pricing table.

Three ways to give customers surveys in your product
QuestionSelf-hosted survey componentEmbed from a form toolResponseDock
A builder your customers useUsually a form renderer; an editor, if the library has one, is yours to integrate and hostIn the vendor’s app, with its own loginEmbedded in your app, signed in through your session
Results per customer accountYou build storage, results views, and exportsIn the vendor’s accounts, outside your platformScoped to the signed tenant and subject
Your brandYes, you style itDepends on the vendor’s planYour logo and colors on every plan; no ResponseDock branding from Pro; custom domain on Business
Who maintains itYour team: updates, security, hostingThe vendor; you maintain the account mappingResponseDock; you maintain one token endpoint

General categories, not specific products. Read all four approaches, including when ResponseDock is not the right choice.

Plans

What’s included on Pro

Surveys inside your product, under your brand. $39 per month. Needs Pro. No card required for the trial.

Pro · $39 per month

Surveys inside your product, under your brand

  • 10,000 responses / month
  • 50 surveys · 3 workspaces · 10 team members
  • 100 AI survey generations / month
  • 2,000 survey invitation emails / month
  • Embedded builder and results with signed sessions
  • Respondent embeds: inline, modal, or hosted
  • Browser SDK and React SDK (preview), API keys, and webhooks
  • Registration forms
  • Basic white-label: remove ResponseDock branding from surveys
Start 14-day Pro trial with the In-App CSAT Micro-Survey template

When you need Business or Platform

Business · $149 per month

Your domain, 10 client workspaces, full white-label

50,000 responses / month · 200 surveys · 10 workspaces · 25 team members · 500 AI survey generations / month · 10,000 survey invitation emails / month · Full white-label, including a custom domain (set up with our team) · Option to send invitation emails without “via ResponseDock”

Platform · Custom

For platforms offering surveys to their own customers

Survey limits across all tenants, full white-label and custom domain, DPA, and priority support. Price on request.

Compare all plans →

Honest limits

What it does not do (yet)

  • Feedback analysis (themes, sentiment, opportunity scores) runs in your ResponseDock dashboard. It is not shown inside embedded sessions.
  • The React SDK is a preview, and the npm packages are not published yet. Load the hosted browser SDK script instead.
  • A custom domain for ResponseDock-hosted pages needs Business. On Pro, share links can point at a page in your app that embeds the survey.
  • Invitation emails show “via ResponseDock” unless the workspace has full white-label (Business or Platform) with branding turned off.
FAQ

Questions platforms ask

How do we keep each customer’s surveys separate?

Your server signs the tenant and, optionally, a subject such as a customer account into the embed token. Every list, read, edit, publish, results, and export request is checked against that signed context on the API. Values in the URL or request body cannot widen it.

What do we have to build?

One server endpoint that calls POST /api/v1/auth/embed-token with your secret key, an iframe that loads the returned embedUrl, and, optionally, a listener that stores the IDs of questionnaires your customers create.

Which plan do we need?

Pro ($39 per month) includes the embedded workspace, the SDK, API keys, webhooks, and basic white-label, and you can try it for 14 days without a card. Business adds full white-label with a custom domain and 10 workspaces. Platform sets limits across all your tenants and is priced on request.

Can our customers start from a template?

Yes. Sessions signed with questionnaire:create get a “Start from a template” option next to the blank questionnaire, with the built-in templates and the ones saved in your workspace. The new questionnaire is filed under the signed subject and uses your brand, not colors from the template.

Can our customers’ respondents answer without an account?

Yes. Public surveys open from a share link or QR code. For signed-in users of your product, request a respondent embed with the user’s ID so each person can answer once.