Skip to main content
The Typeform plugin handles incoming webhooks. Point your provider’s subscription URL at your Corsair HTTP handler (see Overview for setup context and the exact URL shape).
New to Corsair? See webhooks and hooks.

Webhook map

  • forms
    • formResponse (forms.formResponse)

HTTP handler setup

app/api/webhook/route.ts
import { processWebhook } from "corsair";
import { corsair } from "@/server/corsair";

export async function POST(request: Request) {
    const headers = Object.fromEntries(request.headers);
    const body = await request.json();
    const result = await processWebhook(corsair, headers, body);
    return result.response;
}

Events

Forms

Form Response

forms.formResponse A form was submitted — Typeform delivers the full response payload Payload
NameTypeRequiredDescription
event_idstringYes
event_typestringYes
form_responseobjectYes
{
  form_id: string,
  token: string,
  submitted_at: string,
  landed_at: string,
  hidden?: {
  },
  calculated?: {
    score?: number
  },
  definition?: {
    id?: string,
    title?: string,
    fields?: {
    }[]
  },
  answers?: {
  }[],
  variables?: {
    key?: string,
    type?: string,
    text?: string,
    number?: number
  }[],
  metadata?: {
    browser?: string,
    referer?: string,
    platform?: string,
    network_id?: string,
    user_agent?: string
  }
}
{
  event_id: string,
  event_type: string,
  form_response: {
    form_id: string,
    token: string,
    submitted_at: string,
    landed_at: string,
    hidden?: {
    },
    calculated?: {
      score?: number
    },
    definition?: {
      id?: string,
      title?: string,
      fields?: {
      }[]
    },
    answers?: {
    }[],
    variables?: {
      key?: string,
      type?: string,
      text?: string,
      number?: number
    }[],
    metadata?: {
      browser?: string,
      referer?: string,
      platform?: string,
      network_id?: string,
      user_agent?: string
    }
  }
}
webhookHooks example
typeform({
    webhookHooks: {
        forms: {
            formResponse: {
                before(ctx, args) {
                    return { ctx, args };
                },
                after(ctx, response) {
                },
            },
        },
    },
})