# Doc: https://www.hipaatizer.com/docs/integrations/airtable > LLM view for https://www.hipaatizer.com/docs/integrations/airtable This file contains all documentation content in a single document following the llmstxt.org standard. ## Airtable HIPAAtizer doesn't have a native Airtable integration, but you can connect the two using **Webhooks**. Each time a form is submitted, HIPAAtizer sends a POST request to the Airtable API and creates a new record in the table you specify. You control exactly which form fields map to which Airtable columns. :::caution[HIPAA Notice] Airtable is HIPAA-compliant only under an **Enterprise plan** with an active **Business Associate Agreement (BAA)** in place. If your form collects Protected Health Information (PHI), make sure your Airtable account is properly configured before sending any form data there. Airtable HIPAA compliance details ::: --- ## Prerequisites Before you begin, you'll need: - An active HIPAAtizer account with at least one **published** form. - An Airtable account with a base and table ready to receive records. - The **Unique Names** of the form fields you want to send to Airtable. You can find these in the Form Builder by clicking on any field and checking its **Unique Name** property. --- ## Step 1: Find Your Airtable Credentials You'll need three pieces of information from Airtable before configuring the webhook. ### Base ID Your base ID is visible in the URL when you have your base open in Airtable. It looks like this: ``` https://airtable.com/appXXXXXXXXXXXXXX/... ``` The value starting with `app` is your base ID. ### Table Name Use the exact name of the table as it appears in Airtable (e.g., `Referral Intake`, `Contacts`, `Submissions`). ### Personal Access Token 1. Go to airtable.com/create/tokens (or navigate to your **Account → Developer Hub → Personal access tokens**). 2. Click **Create new token**. 3. Give it a name (e.g., `HIPAAtizer`). 4. Under **Scopes**, add `data.records:write`. 5. Under **Access**, add the specific base you want to write to. 6. Click **Create token** and copy the value, you won't be able to see it again. Airtable personal access tokens guide --- ## Step 2: Open the Webhook Settings 1. Go to **My Forms** and click the **Form Settings** icon for the form you want to connect. 2. Open the **Integrations** tab and select **Webhooks**. 3. Click **Add Webhook** and choose the **Airtable - Create Record** template as a starting point. The template pre-fills the URL, HTTP method, Authorization header, and a sample request body so you only need to plug in your own values. If you already have an Airtable webhook configured, click **Edit webhook** on it instead. :::tip Starting from the **Airtable - Create Record** template is the fastest way to get going. You can always tweak any field after it loads. ::: --- ## Step 3: Configure the URL and Authorization ### URL In the **URL** field, enter your Airtable API endpoint: ``` https://api.airtable.com/v0/{baseId}/{tableIdOrName} ``` Replace `{baseId}` with your base ID (e.g., `appXXXXXXXXXXXXXX`) and `{tableIdOrName}` with your exact table name. **Example:** ``` https://api.airtable.com/v0/appABCDEFGHIJKLMN/Referral%20Intake ``` :::tip If your table name contains spaces, encode them as `%20` in the URL, or use the table ID (starts with `tbl`) instead of the name. ::: ### HTTP Method Set the **HTTP Method** to **POST**. ### Authorization Header In the **Custom Headers** section, you'll see an `Authorization` row already added. Replace `{PersonalAccessToken}` in the value field with the personal access token you generated in Step 1: | Key | Value | |-----|-------| | `Authorization` | `Bearer your_token_here` | --- ## Step 4: Build the Request Body The request body tells Airtable what record to create and what values to put in each field. It follows Airtable's Create Records API format. Click inside the **Request** field and use the **Insert Fields & Variables** button to add form variables as field values. The JSON structure looks like this: ```json { "records": [ { "fields": { "Your Airtable Field Name": "${yourFormFieldUniqueName}", "Another Field": "${anotherUniqueName}" } } ] } ``` - **JSON keys** (left side) are your exact Airtable column names. - **Values** (right side) use HIPAAtizer form variables: the `${uniqueName}` syntax where `uniqueName` is the **Unique Name** of the field in the Form Builder. **Example** for a referral intake form: ```json { "records": [ { "fields": { "Patient Name": "${patientName}", "Date of Birth": "${dateOfBirth}", "Payer Type": "${payerType}", "Submission ID": "${submissionId}", "Submission PDF": "${downloadPdfLink}" } } ] } ``` :::info You can include system variables like `${submissionId}` and `${downloadPdfLink}` alongside form field variables. This lets you link each Airtable record back to the original HIPAAtizer submission. [Full list of available variables](https://www.hipaatizer.com/docs/integrations/form-builder/variables#form-variables) ::: Click **Save** when you're done. --- ## Step 5: Test the Integration Submit a test entry through your form. Then check: 1. The **Logs** section in the Webhook settings panel, a successful delivery shows a `200` or `201` status. 2. Your Airtable table, a new record should appear with the values you mapped. If no record appears, check the Logs for an error message and refer to the Troubleshooting section below. --- ## Troubleshooting ### Record not created: status 401 or 403 Your personal access token is invalid, expired, or doesn't have write access to the base. 1. Go back to Airtable → **Developer Hub → Personal access tokens**. 2. Verify the token has the `data.records:write` scope and access to the correct base. 3. If the token has expired, create a new one and update the Authorization header in the webhook settings. ### Record not created: status 404 The base ID or table name in the URL is incorrect. 1. Double-check your base ID in the Airtable URL: it starts with `app`. 2. Make sure the table name matches exactly, including capitalization. If the name has spaces, encode them as `%20` or use the table ID instead. ### Fields arriving as null or empty The form variable name in the request body doesn't match the field's Unique Name in the form builder. 1. Open the form in the **Form Builder** and click on the field in question. 2. Check the **Unique Name** property in the right panel. 3. Update the variable in the request body to match: the syntax is `${uniqueName}`. :::tip If you updated your form (renamed fields, added pages), the Unique Names may have changed. Any webhook that referenced the old names will need to be updated to match the current field names. ::: ### Fields arriving as null after a form update If you recently updated or republished your form, field Unique Names may have changed. Re-open the webhook, verify each `${variable}` against the current form fields, and update any that no longer match. --- ## Related - [Webhooks Overview](https://www.hipaatizer.com/docs/integrations/form-builder/settings/integrations) - [Form Variables](https://www.hipaatizer.com/docs/integrations/form-builder/variables#form-variables) - [Keragon Integration](https://www.hipaatizer.com/docs/integrations/airtable/keragon) - [Zapier Integration](https://www.hipaatizer.com/docs/integrations/airtable/zapier)