Automate and distribute Typeform surveys.

Using our official Typeform integration

  • Create any tasks possible with the Typeform API.

  • Use io.runTask() and the official SDK or fetch.

  • Example code using Typeform

    Below is a working code example of how you can use Typeform with These samples are open source and maintained by the community, you can copy and paste them into your own projects.

    import { TriggerClient } from "";
    import { Airtable } from "";
    import { Typeform } from "";
    const typeform = new Typeform({
    id: "typeform",
    token: process.env.TYPEFORM_TOKEN!,
    const airtable = new Airtable({
    id: "airtable",
    token: process.env.AIRTABLE_TOKEN!,
    //this is the type definition for the table
    type Submission = {
    id: string;
    name: string;
    email: string;
    emailContactEnabled: boolean;
    // This job populates an Airtable table when a new submission is created in Typeform
    id: "typeform-new-submission-update-airtable",
    name: "On new Typeform submission update Airtable",
    version: "1.0.0",
    integrations: {
    trigger: typeform.onFormResponse({
    // to get uid & tag instructions can be found here:
    uid: "<your-form-id>",
    tag: "<your-tag>",
    run: async (payload, io, ctx) => {
    // You can get your base-id and table-name from airtable
    const table = io.airtable
    if (payload.form_response.answers[0].type !== "text") {
    throw new Error("The first answer is not a name");
    const name = payload.form_response.answers[0].text;
    if (payload.form_response.answers[1].type !== "email") {
    throw new Error("The second answer is not an email");
    const email = payload.form_response.answers[1].email;
    if (payload.form_response.answers[2].type !== "choice") {
    throw new Error("The third answer is not a choice");
    const emailContactEnabled =
    payload.form_response.answers[2].choice.label === "Yes";
    //create a new record
    const newRecords = await table.createRecords("create records", [
    fields: {
    id: payload.event_id,
    await"A new form submission was created.", {