From d832120e8fd61acf72c17cd0dfa2af79cd753a90 Mon Sep 17 00:00:00 2001 From: nusquama Date: Thu, 13 Nov 2025 14:26:44 +0100 Subject: [PATCH] creation --- .../readme-916.md | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 workflows/Store responses from Typeform into Airtable-916/readme-916.md diff --git a/workflows/Store responses from Typeform into Airtable-916/readme-916.md b/workflows/Store responses from Typeform into Airtable-916/readme-916.md new file mode 100644 index 000000000..f6d152e80 --- /dev/null +++ b/workflows/Store responses from Typeform into Airtable-916/readme-916.md @@ -0,0 +1,202 @@ +Store responses from Typeform into Airtable + +https://n8nworkflows.xyz/workflows/store-responses-from-typeform-into-airtable-916 + + +# Store responses from Typeform into Airtable + +--- +### 1. Workflow Overview + +This workflow automates the process of capturing new responses from a Typeform survey, storing these responses into an Airtable database, and sending a notification message to a Slack channel with the submitted data. It is designed primarily for organizations or teams that want to streamline form data collection and sharing through automated integration. + +The workflow’s logic is composed of the following blocks: + +- **1.1 Input Reception:** Captures new Typeform submissions via a webhook trigger. +- **1.2 Data Transformation:** Extracts and formats relevant form fields. +- **1.3 Data Storage:** Appends the formatted data to an Airtable base. +- **1.4 Notification:** Sends a summary message with the form data to a Slack channel. + +--- + +### 2. Block-by-Block Analysis + +#### 2.1 Input Reception + +- **Overview:** + This block listens for new responses submitted to a specific Typeform form. When a submission occurs, it triggers the workflow execution and provides the raw data for subsequent processing. + +- **Nodes Involved:** + - Typeform Trigger + +- **Node Details:** + + - **Typeform Trigger** + - **Type:** Trigger node (Typeform integration) + - **Technical Role:** Listens for new form submission events from Typeform via webhook. + - **Configuration:** + - Connected to a specific Typeform form identified by `formId` ("dpr2kxSL"). + - Uses provided Typeform API credentials ("Typeform Access Token") to authenticate API requests and webhook setup. + - Webhook ID is auto-generated for receiving events. + - **Key Expressions/Variables:** None at trigger; outputs raw submission JSON. + - **Input/Output Connections:** No input; output connects to Set node. + - **Version Requirements:** Requires n8n version supporting Typeform Trigger node v1. + - **Potential Failure Modes:** + - Authentication errors due to invalid or expired API token. + - Webhook registration failures if Typeform API limits are exceeded. + - Network timeouts or webhook delivery issues. + - **Sub-workflow:** None. + +#### 2.2 Data Transformation + +- **Overview:** + This block extracts specific answers from the raw Typeform submission JSON and maps them into simplified key-value pairs for easier consumption downstream. + +- **Nodes Involved:** + - Set + +- **Node Details:** + + - **Set** + - **Type:** Data manipulation node + - **Technical Role:** Selects and renames form answers into structured variables. + - **Configuration:** + - Configured to keep only the set fields (clearing all other data). + - Extracts two fields: + - `Name` from the question labeled "Let's start with your name." + - `Email` from the question labeled "What's your email address?" + - Uses expressions to access these fields dynamically from the incoming JSON. + - **Key Expressions/Variables:** + - `={{$json["Let's start with your name."]}}` + - `={{$json["What's your email address?"]}}` + - **Input/Output Connections:** Input from Typeform Trigger; output to Airtable node. + - **Version Requirements:** Compatible with n8n v1 expression syntax. + - **Potential Failure Modes:** + - Missing or differently named form fields causing expression failures or empty values. + - Data type mismatches if expected string is undefined. + - **Sub-workflow:** None. + +#### 2.3 Data Storage + +- **Overview:** + This block appends the extracted form data into an Airtable table as a new record. + +- **Nodes Involved:** + - Airtable + +- **Node Details:** + + - **Airtable** + - **Type:** API node (Airtable integration) + - **Technical Role:** Inserts new records into a specified Airtable base and table. + - **Configuration:** + - Operation set to "append" (add new record). + - Target table specified as "Table 1". + - Uses stored Airtable API credentials for authentication. + - No special options enabled (e.g., batch size, typecast). + - **Key Expressions/Variables:** Takes input JSON from Set node as record fields. + - **Input/Output Connections:** Input from Set; output to Slack node. + - **Version Requirements:** Requires n8n version supporting Airtable node v1. + - **Potential Failure Modes:** + - Authentication failure if Airtable API key is invalid or revoked. + - Table name mismatch or missing table causing API errors. + - Rate limits or API downtime. + - **Sub-workflow:** None. + +#### 2.4 Notification + +- **Overview:** + Sends a formatted message to a Slack channel to notify team members of the new form submission. + +- **Nodes Involved:** + - Slack + +- **Node Details:** + + - **Slack** + - **Type:** API node (Slack integration) + - **Technical Role:** Posts a message to a Slack channel. + - **Configuration:** + - Message text includes static and dynamic content: + - Static prefix "*New Submission* 🙌" + - Dynamic insertion of `Name` and `Email` variables from Set node. + - Target Slack channel set to "general". + - Uses Slack Bot credentials for authentication. + - No attachments or additional options configured. + - **Key Expressions/Variables:** + - `=*New Submission* 🙌\nName: {{$node["Set"].json["Name"]}}\nEmail: {{$node["Set"].json["Email"]}}` + - **Input/Output Connections:** Input from Airtable node; no output (end node). + - **Version Requirements:** Requires Slack node v1 and OAuth2 credentials configured with proper scopes (chat:write). + - **Potential Failure Modes:** + - Authentication errors due to invalid Slack bot token. + - Channel not found or bot not invited to the channel. + - Message formatting errors if variables are undefined. + - **Sub-workflow:** None. + +--- + +### 3. Summary Table + +| Node Name | Node Type | Functional Role | Input Node(s) | Output Node(s) | Sticky Note | +|------------------|---------------------|--------------------------|---------------------|----------------|----------------------------------------------------------------------------------------------| +| Typeform Trigger | Typeform Trigger | Captures new form responses | - | Set | | +| Set | Set | Extracts and formats form data | Typeform Trigger | Airtable | **Configure this Set node if your form uses different fields.** | +| Airtable | Airtable | Stores form data in Airtable | Set | Slack | | +| Slack | Slack | Sends notification to Slack | Airtable | - | | + +--- + +### 4. Reproducing the Workflow from Scratch + +1. **Create Typeform Trigger node:** + - Node Type: Typeform Trigger + - Configure credentials: Add and select “Typeform Access Token” with your API token. + - Set `formId` to your Typeform form's ID (e.g., "dpr2kxSL"). + - This node will auto-generate a webhook URL. Copy this URL and ensure it’s registered in your Typeform form settings (usually automatic with credentials). + +2. **Add Set node:** + - Node Type: Set + - Enable "Keep Only Set" option to remove all other incoming data. + - Add two string fields: + - `Name` with value expression: `={{$json["Let's start with your name."]}}` + - `Email` with value expression: `={{$json["What's your email address?"]}}` + - Connect output of Typeform Trigger to this Set node. + - Note: Adjust the field names in expressions if your Typeform question titles differ. + +3. **Add Airtable node:** + - Node Type: Airtable + - Configure credentials: Add and select “Airtable Credentials n8n” with your Airtable API key. + - Set operation to "Append". + - Select the target table (e.g., "Table 1"). + - Connect output of Set node to Airtable node. + +4. **Add Slack node:** + - Node Type: Slack + - Configure credentials: Add and select “Slack Bot Credentials” with OAuth2 token having `chat:write` scope. + - Set channel to "general" or your target Slack channel. + - Set message text to: + ``` + =*New Submission* 🙌 + Name: {{$node["Set"].json["Name"]}} + Email: {{$node["Set"].json["Email"]}} + ``` + - Connect output of Airtable node to Slack node. + +5. **Test the workflow:** + - Save and activate the workflow. + - Submit a test response in the configured Typeform. + - Confirm data is appended in Airtable and notification appears in Slack channel. + +--- + +### 5. General Notes & Resources + +| Note Content | Context or Link | +|-------------------------------------------------------------------------------------------------|-------------------------------------------------| +| Remember to update the Set node expressions if your Typeform question titles change. | Workflow configuration detail | +| Slack Bot token must have `chat:write` permission and be invited to the target channel ("general").| Slack API documentation: https://api.slack.com/ | +| Airtable API key needs appropriate permissions to modify the target base and table. | Airtable API docs: https://airtable.com/api | + +--- + +This comprehensive documentation enables users and AI agents to fully understand, reproduce, and maintain the workflow for integrating Typeform responses with Airtable and Slack notifications. \ No newline at end of file