Back to Integrations
    AN

    Voice Capture for Any Web Form

    Embed voice capture in any web form that accepts custom HTML — your own app, a landing page, a CMS block, or a survey tool with an HTML question type. One div and one script tag.

    Available

    Before you start

    • A Voice Capture project and its project key. The Free Trial includes 250 credits and asks for no card.
    • A page where you can add custom HTML and a script tag. That is the whole requirement — your own web app, a CMS block, a landing page, or any survey tool that exposes an HTML or embed question type.
    • The input the widget should attach to, identified by a stable id or CSS selector. You put that selector in data-target; if the id is generated fresh on every render, pin it down first.
    • A unique identifier per respondent if you want to join transcripts back to your own records — a URL parameter, a cookie value or a UUID you generate. It goes in data-session.
    • About five minutes, and no server-side work: the widget runs entirely in the respondent’s browser.

    Setup Guide

    1

    Add the widget HTML

    Add this code wherever you want the voice widget to appear. Replace proj_XXXXXXXX with your project key and the data-target selector with the id of your input field.

    Step 1
    <div id="genius-voice-q1"
         data-project="proj_XXXXXXXX"
         data-question="q1"
         data-lang="es"
         data-target="#your-input-id"></div>
    <script src="https://api.voicecapture.ai/voice.js"></script>
    2

    Load the script after the field exists

    The widget looks for data-target when it initialises. On a static page the script tag after the form is enough. In a single-page app where the field is rendered by your own JavaScript, place the embed inside the same component so it mounts together with the input, rather than in the document head.

    3

    Fill in the session identifier

    Replace the data-session placeholder with whatever value identifies the respondent in your system — a query parameter, a logged-in user id, an order number. This is the only part of the generic embed nobody can do for you, and it is what turns a pile of transcripts into rows you can join.

    4

    Record a test answer, then export

    Open the page, record ten or fifteen seconds and check the dashboard. The transcript should arrive within about half a minute, carrying the session value you set. Export to CSV on any plan, or to Excel on a paid credit pack.

    Session ID

    SESSION_ID

    Replace with a unique identifier for each respondent. This could be a URL parameter, cookie value, or generated UUID.

    What your respondents see

    A single microphone button wherever you placed the div, with your prompt text on it. Recording uses the browser’s own audio API — no plugin, no app, no download, and the same permission prompt any site asking for a microphone would show.

    They can record, play it back and re-record before submitting. If microphone access is unavailable or refused, the widget does not mount and your existing input carries on working, so a form never becomes unanswerable because voice failed.

    It is responsive by default and works on mobile browsers, which is where the difference between a typed answer and a spoken one is largest.

    Where the answers end up

    Audio uploads when the respondent stops and is transcribed automatically. Audio files are not kept — only the resulting text — and everything travels over an encrypted connection.

    Each recording is stored against your project key, the question id you set, and whatever you put in data-session. Because the generic embed has no platform merge code to read, that session value is entirely yours to supply, and it is the difference between transcripts you can join to your own data and transcripts you cannot.

    Read and edit transcripts in the dashboard as they arrive, then export to CSV, or to Excel on a paid credit pack. Spoken answers run about twice as many words as typed answers to the same question; the sample and the caveats are in how we measured this.

    Troubleshooting

    The widget does not render

    data-target matched nothing when the script ran. Either the selector is wrong, or the input is created later by your own code. Confirm the selector in the browser console first, then move the embed so it loads after the field exists.

    It renders twice

    The embed ran twice, which usually means a single-page app re-mounted the component. Give the container a fixed id and check whether that id is already in the document before creating another one — the same guard the platform-specific snippets use.

    Recordings never reach the dashboard

    Check the project key. It is the data-project value, it fails silently when wrong, and a partial copy from the dashboard is the usual cause.

    Transcripts arrive with no session

    data-session was still a placeholder, or resolved to an empty string. The transcript is not lost — it is simply unjoinable, so fix the value and re-test before fieldwork rather than after.

    What this integration does not do

    • It needs custom HTML and a script tag. A platform that allows neither cannot take any embedded voice widget — that is a limit of the host, not of this integration, and Typeform is the usual example.
    • It does not know who your respondent is. Session joining is yours to arrange through data-session.
    • It is one widget per input. Several open ends means several embeds with distinct ids.
    • It does not submit the transcript through your own form pipeline. The text goes to Voice Capture and comes back at export.
    • Transcription is automatic, not flawless. Transcripts are editable in the dashboard and low-confidence ones are flagged rather than quietly dropped.

    Start with the fundamentals

    If this is your first voice study rather than your first embed, the long-form guide covers question wording, sample, fieldwork monitoring and analysis.

    The complete guide to voice surveys in market research

    Need help?

    Our AI assistant can walk you through the setup step by step.

    Open AI Chat

    Your next study deserves better insights

    Set up Voice Capture in under 5 minutes. No credit card. No commitment.

    Get Started Free
    © 2026 Voice Capture. All rights reserved.

    We use cookies to improve your experience and analyze site traffic. Learn more