# Docs ## Docs - [API Keys](https://docs.withsurface.com/docs/api-reference/api-keys.md): Learn how to create and manage API keys for the Surface API - [Generate Form](https://docs.withsurface.com/docs/api-reference/forms/generate-form.md): Programmatically create a new form from a source template using the API - [Component Response Shapes](https://docs.withsurface.com/docs/api-reference/responses/component-response-shapes.md): Reference documentation for all supported component response shapes - [Get All Responses](https://docs.withsurface.com/docs/api-reference/responses/get-all-responses.md): Retrieve all form responses for your environment - [Get Form Responses](https://docs.withsurface.com/docs/api-reference/responses/get-form-responses.md): Retrieve responses for a specific form - [Form Events](https://docs.withsurface.com/docs/events/form-events.md): Learn about the events emitted by Surface forms that can be used with Google Tag Manager, Google Ads, and Meta Ads. - [Google Ads Tracking](https://docs.withsurface.com/docs/events/google-ads-tracking.md): Add GTM Container ID to Surface Form to configure various marketing tags from a single place - [Google Analytics Tracking](https://docs.withsurface.com/docs/events/google-analytics-tracking.md): Track Surface Form events in Google Analytics using Google Tag Manager (GTM) - [Google Tag Manager Integration](https://docs.withsurface.com/docs/events/google-tag-manager.md): A step-by-step guide to connect Surface Form events to Google Tag Manager (GTM) - [Meta Ads Tracking](https://docs.withsurface.com/docs/events/meta-ads-tracking.md): Track Surface Form conversions in Meta Ads - [Step 2: Create External Form](https://docs.withsurface.com/docs/external-forms/create-external-form.md): Create an external form in Surface Labs - [Step 3.1: Create Multi-Step HTML Form](https://docs.withsurface.com/docs/external-forms/create-multi-step-html-form.md): Create a multi-step HTML form - [Step 1: Embed Surface Scripts](https://docs.withsurface.com/docs/external-forms/embedding.md): Add Surface Scripts to your Site - [Step 3.2: Modify Form Fields](https://docs.withsurface.com/docs/external-forms/modify-form-fields.md): Modify form fields in Multi-Step HTML Form - [External HTML Forms Integration](https://docs.withsurface.com/docs/external-forms/overview.md): Complete guide to linking and tracking external HTML forms with Surface - [Step 3.3: Submit Form](https://docs.withsurface.com/docs/external-forms/submit-form.md): Submit Multi-Step HTML Form - [Direct Link](https://docs.withsurface.com/docs/form-embedding/direct-link.md): Automatically trigger the form to appear when the page loads - [Inline Form Embed](https://docs.withsurface.com/docs/form-embedding/inline.md): Embed your form inline with the rest of your page - [Email Input Field Trigger](https://docs.withsurface.com/docs/form-embedding/input-field.md): Triggering via email input field submission - [Optimize Loading Speed](https://docs.withsurface.com/docs/form-embedding/optimize.md): Optimize Surface Forms loading speed for better performance - [Popup Form Embed](https://docs.withsurface.com/docs/form-embedding/popup.md): Display your form as a popup modal - [Slideover Form Embed](https://docs.withsurface.com/docs/form-embedding/slideover.md): Display your form as a full page slide-over - [Widget Form Embed](https://docs.withsurface.com/docs/form-embedding/widget.md): Display your form as a customizable widget on your website - [Claude OAuth Setup](https://docs.withsurface.com/docs/mcp-server/claude-oauth-setup.md): Connect Surface to Claude via OAuth using the Connectors feature — no API key required - [MCP Server](https://docs.withsurface.com/docs/mcp-server/overview.md): Connect any MCP-compatible AI assistant to Surface Forms and query your data with natural language - [API Setup](https://docs.withsurface.com/docs/mcp-server/setup.md): Connect the Surface Forms MCP server to your AI assistant - [Tool Reference](https://docs.withsurface.com/docs/mcp-server/tools.md): Complete reference for all 22 MCP tools available in the Surface Forms MCP server - [Form Analytics](https://docs.withsurface.com/docs/platform/form-analytics.md): Track views, starts, completions, drop-offs, and conversion rates to optimize form performance - [Conditional Logic](https://docs.withsurface.com/docs/platform/form-builder/conditional-logic.md): Control how users move through your form with conditional logic and branching flows - [Form Builder](https://docs.withsurface.com/docs/platform/form-builder/form-builder.md): Create powerful, conversion-optimized forms with our no-code builder - [Workflows](https://docs.withsurface.com/docs/platform/form-builder/workflows.md): Build powerful follow-up workflows for every form submission and website visitor - [Leads Table](https://docs.withsurface.com/docs/platform/leads-table.md): A unified view of all your leads with automatic enrichment and scoring - [Response Table](https://docs.withsurface.com/docs/platform/response-table.md): Your central hub for managing all form submissions with advanced filtering and lead insights - [Installation](https://docs.withsurface.com/docs/surface-tag/installation.md): Embed the surface tag - [HubSpot Tracking](https://docs.withsurface.com/docs/tracking/hubspot-tracking.md): Learn how to add HubSpot tracking script to your Surface forms for enhanced analytics and visitor insights. - [Website Visitor De-anonymization](https://docs.withsurface.com/docs/website-visitor-deanonymization/overview.md): Reveal anonymous website visitors with Surface's built-in identification technology - [HubSpot](https://docs.withsurface.com/docs/workflows/hubspot.md): This guide will help you integrate HubSpot with Surface Forms - [Salesforce](https://docs.withsurface.com/docs/workflows/salesforce.md): Connect your forms with Salesforce to automatically create contacts and opportunities - [Slack](https://docs.withsurface.com/docs/workflows/slack.md): This guide will help you integrate Slack with Surface - [Zapier](https://docs.withsurface.com/docs/workflows/zapier.md): Utilize Zapier to send Surface form submission data to various destinations and trigger actions. - [API based Conditional Logic](https://docs.withsurface.com/guides/control-form-logic-based-on-api.md): Conditional Form Logic Based on Your API Response - [Email Sequences with Customer.io and Calendly](https://docs.withsurface.com/guides/email-sequences-customerio-calendly/overview.md): Complete guide to running email sequences triggered by Surface form submissions, with automatic exit when leads book a meeting - [Step 1: Webhook Trigger Campaigns](https://docs.withsurface.com/guides/email-sequences-customerio-calendly/step-1-webhook-trigger.md): Create two webhook-triggered campaigns in Customer.io—one for partial submissions and one for completed—each with its own URL - [Step 2: Configure Surface Workflow](https://docs.withsurface.com/guides/email-sequences-customerio-calendly/step-2-surface-workflow.md): Set up the Surface Workflow Builder to send form data to Customer.io via webhook when leads submit (partial or completed) - [Step 3: Event-Based Email Campaigns](https://docs.withsurface.com/guides/email-sequences-customerio-calendly/step-3-event-campaigns.md): Create event-triggered campaigns for partial and completed form submissions with customizable follow-up emails and delays - [Step 4: Calendly Meeting Check](https://docs.withsurface.com/guides/email-sequences-customerio-calendly/step-4-calendly-check.md): Add a webhook node to check if the lead has booked a Calendly meeting—exit the campaign if yes, continue if no - [Email Sequences with HubSpot](https://docs.withsurface.com/guides/email-sequences-hubspot/overview.md): Enroll leads in HubSpot email sequences when they submit or drop off your Surface form - [Step 1: Create HubSpot Form](https://docs.withsurface.com/guides/email-sequences-hubspot/step-1-hubspot-form.md): Create a HubSpot form with all fields optional except email so partial Surface submissions can be recorded - [Step 2: Create HubSpot Sequence](https://docs.withsurface.com/guides/email-sequences-hubspot/step-2-hubspot-sequence.md): Create a HubSpot sequence with automated emails, personalization tokens, and meeting link - [Step 3: Add Follow-Up Emails and Delays](https://docs.withsurface.com/guides/email-sequences-hubspot/step-3-follow-up-delays.md): Add more sequence steps with follow-up emails and business-day delays between each - [Step 4: Add Automation](https://docs.withsurface.com/guides/email-sequences-hubspot/step-4-automation.md): Create a HubSpot automation that enrolls contacts in your sequence when they submit the form - [Step 5: Connect HubSpot Form with Surface Workflow](https://docs.withsurface.com/guides/email-sequences-hubspot/step-5-surface-workflow.md): Set up a Surface workflow to send form submissions to your HubSpot form so leads get enrolled in your sequence - [Step 1: Embed Surface Tag](https://docs.withsurface.com/guides/embedding/framer/embedding.md): Add a Surface Tag to your Framer Site - [Inline](https://docs.withsurface.com/guides/embedding/framer/inline.md): Embed a Surface Form inline - [Email Input Field Trigger](https://docs.withsurface.com/guides/embedding/framer/input-field.md): Triggering via email input field submission - [Step 3: Optimize](https://docs.withsurface.com/guides/embedding/framer/optimize.md): Optimize Surface Form loading speed - [Framer Integration](https://docs.withsurface.com/guides/embedding/framer/overview.md): Complete guide to embedding Surface Forms in your Framer site - [Popup](https://docs.withsurface.com/guides/embedding/framer/popup.md): Embed a Surface Form popup - [Slideover](https://docs.withsurface.com/guides/embedding/framer/slideover.md): Embed a Surface Form slideover - [Step 1: Embed Surface Tag](https://docs.withsurface.com/guides/embedding/next/app-router/embedding.md): Add a Surface Tag to your Next.js Site - [Inline](https://docs.withsurface.com/guides/embedding/next/app-router/inline.md): Embed a Surface Form inline - [Email Input Field Trigger](https://docs.withsurface.com/guides/embedding/next/app-router/input-field.md): Triggering via email input field submission - [Step 3: Optimize](https://docs.withsurface.com/guides/embedding/next/app-router/optimize.md): Optimize Surface Form loading speed - [Popup](https://docs.withsurface.com/guides/embedding/next/app-router/popup.md): Embed a Surface Form popup - [Slideover](https://docs.withsurface.com/guides/embedding/next/app-router/slideover.md): Embed a Surface Form slideover - [Next.js Integration](https://docs.withsurface.com/guides/embedding/next/overview.md): Complete guide to embedding Surface Forms in your Next.js site - [Step 1: Embed Surface Tag](https://docs.withsurface.com/guides/embedding/next/page-router/embedding.md): Add a Surface Tag to your Next.js Site - [Inline](https://docs.withsurface.com/guides/embedding/next/page-router/inline.md): Embed a Surface Form inline - [Email Input Field Trigger](https://docs.withsurface.com/guides/embedding/next/page-router/input-field.md): Triggering via email input field submission - [Step 3: Optimize](https://docs.withsurface.com/guides/embedding/next/page-router/optimize.md): Optimize Surface Form loading speed - [Popup](https://docs.withsurface.com/guides/embedding/next/page-router/popup.md): Embed a Surface Form popup - [Slideover](https://docs.withsurface.com/guides/embedding/next/page-router/slideover.md): Embed a Surface Form slideover - [Step 1: Embed Surface Tag](https://docs.withsurface.com/guides/embedding/react/embedding.md): Add a Surface Tag to your React Site - [Inline](https://docs.withsurface.com/guides/embedding/react/inline.md): Embed a Surface Form inline - [Email Input Field Trigger](https://docs.withsurface.com/guides/embedding/react/input-field.md): Triggering via email input field submission - [Step 3: Optimize](https://docs.withsurface.com/guides/embedding/react/optimize.md): Optimize Surface Form loading speed - [React.js Integration](https://docs.withsurface.com/guides/embedding/react/overview.md): Complete guide to embedding Surface Forms in your React.js site - [Popup](https://docs.withsurface.com/guides/embedding/react/popup.md): Embed a Surface Form popup - [Slideover](https://docs.withsurface.com/guides/embedding/react/slideover.md): Embed a Surface Form slideover - [Step 1: Embed Surface Tag](https://docs.withsurface.com/guides/embedding/unbounce/embedding.md): Add a Surface Tag to your Unbounce Site - [Inline](https://docs.withsurface.com/guides/embedding/unbounce/inline.md): Embed a Surface Form inline - [Email Input Field Trigger](https://docs.withsurface.com/guides/embedding/unbounce/input-field.md): Triggering via email input field submission - [Step 3: Optimize](https://docs.withsurface.com/guides/embedding/unbounce/optimize.md): Optimize Surface Form loading speed - [Unbounce Integration](https://docs.withsurface.com/guides/embedding/unbounce/overview.md): Complete guide to embedding Surface Forms in your Unbounce site - [Popup](https://docs.withsurface.com/guides/embedding/unbounce/popup.md): Embed a Surface Form popup - [Slideover](https://docs.withsurface.com/guides/embedding/unbounce/slideover.md): Embed a Surface Form slideover - [Step 1: Embed Surface Tag](https://docs.withsurface.com/guides/embedding/webflow/embedding.md): Add a Surface Tag to your Webflow Site - [Inline](https://docs.withsurface.com/guides/embedding/webflow/inline.md): Embed a Surface Form inline - [Email Input Field Trigger](https://docs.withsurface.com/guides/embedding/webflow/input-field.md): Triggering via email input field submission - [Step 3: Optimize](https://docs.withsurface.com/guides/embedding/webflow/optimize.md): Optimize Surface Form loading speed - [Webflow Integration](https://docs.withsurface.com/guides/embedding/webflow/overview.md): Complete guide to embedding Surface Forms in your Webflow site - [Popup](https://docs.withsurface.com/guides/embedding/webflow/popup.md): Embed a Surface Form popup - [Slideover](https://docs.withsurface.com/guides/embedding/webflow/slideover.md): Embed a Surface Form slideover - [Get started with your framework](https://docs.withsurface.com/guides/embedding/website-editors.md): Integrate Surface Forms with popular website builders and frameworks - [Enable Cloudflare Turnstile](https://docs.withsurface.com/guides/enable-cloudflare-turnstile.md): Learn how to enable **Cloudflare Turnstile** and add the widget to your Surface Form to protect your forms from spam and abuse. - [Creating Your First Surface Form](https://docs.withsurface.com/guides/first-form.md): Learn how to create your first Surface Form - [Step 3: Add Surface Domain to HubSpot](https://docs.withsurface.com/guides/hubspot-forms/add-surface-domain.md): Add forms.withsurface.com to HubSpot's Additional Site Domains for proper tracking and form submissions - [Step 1: Configure HubSpot Form](https://docs.withsurface.com/guides/hubspot-forms/configure-hubspot-form.md): Configure your HubSpot form to accept submissions from Surface Forms - [HubSpot Tracking](https://docs.withsurface.com/guides/hubspot-forms/configure-tracking.md): Add HubSpot tracking script to your Surface form for enhanced analytics and visitor insights - [Step 2: Configure HubSpot in Surface Workflow](https://docs.withsurface.com/guides/hubspot-forms/configure-workflow.md): Set up workflows in Surface to send form submissions to HubSpot - [Custom Configuration](https://docs.withsurface.com/guides/hubspot-forms/manual-setup.md): Select your target HubSpot form and define exactly how fields map between Surface and HubSpot - [One Click Setup](https://docs.withsurface.com/guides/hubspot-forms/one-click-setup.md): Create HubSpot forms from Surface and start syncing partial & complete submissions - [Connect Surface to your HubSpot forms](https://docs.withsurface.com/guides/hubspot-forms/overview.md): Configure Surface Forms to supercharge your HubSpot forms with partial response tracking, user journey insights, and more. - [Send Data to Airtable](https://docs.withsurface.com/guides/send-data-to-airtable.md): Learn how to send Surface Form submissions to Airtable using webhooks - [Send Data to Clay](https://docs.withsurface.com/guides/send-data-to-clay.md): Learn how to send Surface Form submissions to Clay using webhooks and the HTTP Request action - [Send Data to HubSpot](https://docs.withsurface.com/guides/send-data-to-hubspot.md): Learn how to send Surface Form submissions directly to HubSpot using the built-in HubSpot action in the Workflow Builder - [Send Data to Surface using Webhooks](https://docs.withsurface.com/guides/send-data-to-surface.md): Learn how to send data to Surface using webhooks - [Ready to boost your conversions rates?](https://docs.withsurface.com/home.md): Start converting website visitors into leads in minutes ## OpenAPI Specs - [openapi](https://docs.withsurface.com/api-reference/openapi.json)