{"id":36225,"date":"2026-01-28T19:42:53","date_gmt":"2026-01-28T12:42:53","guid":{"rendered":"https:\/\/dps.media\/huong-dan-dang-ky-form-lark-n8n\/"},"modified":"2026-01-28T20:16:32","modified_gmt":"2026-01-28T13:16:32","slug":"huong-dan-dang-ky-form-lark-n8n","status":"publish","type":"post","link":"http:\/\/dps.media\/en\/huong-dan-dang-ky-form-lark-n8n\/","title":{"rendered":"Guide to Registering Form Lark in n8n \u2013 3 Simple Steps 2026"},"content":{"rendered":"<h2>Introduction to Lark Form subscription in n8n<\/h2>\n<p>Integrating Lark Forms with n8n opens up many possibilities for automating your workflow. When a new form is submitted or an approval is created, n8n can automatically receive notifications and process data according to the workflow you have set up. However, to establish this connection, you need to correctly follow the procedure for subscribing a form with the Lark API.<\/p>\n<p>In this article, I will guide you through 3 detailed basic steps to subscribe a new Lark Form. Once completed, you will be able to reuse this process for any future forms without having to figure it out from scratch.<\/p>\n<h2>1. Get the Approval Code (Form Identifier)<\/h2>\n<p>The Approval Code is the unique ID of each form template in the Lark system. This is the most important information so that Lark knows which form n8n wants to \u201clisten\u201d for events from. Each form will have a unique code, and you need to get this exact code to ensure the webhook works correctly.<\/p>\n<h3>How to get the Approval Code<\/h3>\n<p><strong>Step 1:<\/strong> Log in to Lark and access your Approval or Forms management section.<\/p>\n<p><strong>Step 2:<\/strong> Open the form you want to integrate with n8n. You can open the form in Design mode or in the Approval Management section.<\/p>\n<p><strong>Step 3:<\/strong> Look at the browser's URL address bar. The Approval Code is usually located right in the URL, possibly appearing after the parameter <code>definitionCode=<\/code> or located between forward slashes.<\/p>\n<h3>Specific example<\/h3>\n<p>Suppose the URL of the form you are opening is:<\/p>\n<p><code>https:\/\/example.larksuite.com\/approval\/definitionCode=8C49EDF7-8116-448C-8131-83D2071B632E<\/code><\/p>\n<p>Then your Approval Code is: <code>8C49EDF7-8116-448C-8131-83D2071B632E<\/code><\/p>\n<p>Copy this code and save it in a safe place; you will need to use it in step 3.<\/p>\n<h2>2. Get the Tenant Access Token (Authentication Key)<\/h2>\n<p>The Tenant Access Token is an authentication string that helps the Lark API confirm that your application (in this case, the Approval-N8N app) has the right to perform operations with the form. This is the information that many people often overlook or do not know how to obtain when setting up for the first time.<\/p>\n<h3>Why is a Tenant Access Token needed?<\/h3>\n<p>Lark uses the OAuth 2.0 mechanism to secure the API. Every request sent to the Lark API needs a valid token in the header for authentication. If the token is missing or invalid, the API will return a 401 Unauthorized error.<\/p>\n<h3>Fastest way to get the Tenant Access Token<\/h3>\n<p><strong>Method 1: Use Lark API Explorer (Recommended for beginners)<\/strong><\/p>\n<ol>\n<li>Access <strong>Lark API Explorer<\/strong> (usually located at <code>https:\/\/open.larksuite.com\/api-explorer<\/code>).<\/li>\n<li>In the top left corner, select the correct App you created (e.g., Approval-N8N).<\/li>\n<li>Lark will automatically display a token string starting with <code>t-<\/code> in the side pane. This is your Tenant Access Token.<\/li>\n<li>Copy this entire token string (including the <code>t-<\/code>).<\/li>\n<\/ol>\n<p><strong>Method 2: Call the API to get the Token (For experienced users)<\/strong><\/p>\n<p>You can also directly call the endpoint <code>\/auth\/v3\/tenant_access_token\/internal<\/code> with the App ID and App Secret to get the token. However, this method is more complex and requires you to manage App credentials.<\/p>\n<h3>Important note about Token expiration<\/h3>\n<p><strong>This token is only valid for 2 hours.<\/strong> After 2 hours, the token will expire and you need to get a new one. This is why in the \u201cQuick Tip\u201d section at the end of the post, I will guide you on how to automate this token retrieval so you don't have to do it manually every time.<\/p>\n<p>If you are setting up for the first time and just want to test, manually getting the token from API Explorer is enough. But if you need to register multiple forms or want the system to run long-term, refer to the automation section at the end of the post.<\/p>\n<h2>3. Configure the HTTP Request Node in n8n<\/h2>\n<p>Once you have both pieces of important information (Approval Code and Tenant Access Token), you will use them to configure an HTTP Request node in n8n. This node will send a subscribe command to the Lark API, requesting Lark to send webhooks to n8n whenever an event occurs with the form.<\/p>\n<h3>Detailed configuration steps<\/h3>\n<p><strong>Step 1: Create a new HTTP Request node in n8n<\/strong><\/p>\n<p>In your workflow, add a new node and select the type <strong>HTTP Request<\/strong>.<\/p>\n<p><strong>Step 2: Set the Method<\/strong><\/p>\n<p>Select the method as <strong>POST<\/strong>. This is the standard method for sending a subscribe command to the Lark API.<\/p>\n<p><strong>Step 3: Set the URL<\/strong><\/p>\n<p>The URL will look like this:<\/p>\n<p><code>https:\/\/open.larksuite.com\/open-apis\/approval\/v4\/approvals\/{{Approval_Code}}\/subscribe<\/code><\/p>\n<p>Where you need to replace <code>{{Approval_Code}}<\/code> with the Approval Code you obtained in step 1.<\/p>\n<p><strong>Example:<\/strong> If your Approval Code is <code>8C49EDF7-8116-448C-8131-83D2071B632E<\/code>, then the full URL will be:<\/p>\n<p><code>https:\/\/open.larksuite.com\/open-apis\/approval\/v4\/approvals\/8C49EDF7-8116-448C-8131-83D2071B632E\/subscribe<\/code><\/p>\n<p><strong>Step 4: Set the Headers<\/strong><\/p>\n<p>The Headers section is very important because it contains the authentication information. You need to add a new header with the following information:<\/p>\n<ul>\n<li><strong>Name:<\/strong> <code>Authorization<\/code><\/li>\n<li><strong>Value:<\/strong> <code>Bearer [Tenant_Access_Token]<\/code><\/li>\n<\/ul>\n<p><strong>Extremely important note:<\/strong> There must be the word <code>Bearer<\/code> (capitalized B) and a space before the token string. Many people make the mistake of forgetting the space or misspelling Bearer, leading to the API returning an authentication error.<\/p>\n<p><strong>Example:<\/strong> If your token is <code>t-g1044ghHGHJKL...<\/code>, then the value in the header will be:<\/p>\n<p><code>Bearer t-g1044ghHGHJKL...<\/code><\/p>\n<p><strong>Step 5: Test and Execute<\/strong><\/p>\n<p>After completing the configuration, press Execute to test. If everything is correct, you will receive a success response from the Lark API, confirming that the form has been successfully subscribed.<\/p>\n<h2>\ud83d\udca1 Quick Tip: Automate Token retrieval for next time<\/h2>\n<p>As mentioned, the Tenant Access Token is only valid for 2 hours. If you need to register many forms or want the system to automatically renew the token, you should create a separate workflow to automate this process.<\/p>\n<h3>Automatic workflow consists of 2 nodes<\/h3>\n<p><strong>Node 1: Get Tenant Access Token automatically<\/strong><\/p>\n<p>Create an HTTP Request node with the following configuration:<\/p>\n<ul>\n<li><strong>Method:<\/strong> POST<\/li>\n<li><strong>URL:<\/strong> <code>https:\/\/open.larksuite.com\/open-apis\/auth\/v3\/tenant_access_token\/internal<\/code><\/li>\n<li><strong>Body (JSON):<\/strong><\/li>\n<\/ul>\n<pre><code>{\n  \"app_id\": \"YOUR_APP_ID\",\n  \"app_secret\": \"YOUR_APP_SECRET\"\n}<\/code><\/pre>\n<p>This node will return a new token every time it is executed. You can save this token into a variable to use for the next node.<\/p>\n<p><strong>Node 2: Use Token to Subscribe Form<\/strong><\/p>\n<p>Use the token from Node 1 to send the subscribe command as instructed in step 3. You can use the expression <code>{{$node[\"Node1\"].json[\"tenant_access_token\"]}}<\/code> to get the token from the output of Node 1.<\/p>\n<h3>Benefits of automation<\/h3>\n<p>With this workflow, every time you need to register a new form, you only need to:<\/p>\n<ol>\n<li>Get the Approval Code from the URL (30 seconds)<\/li>\n<li>Paste the Approval Code into Node 2 (10 seconds)<\/li>\n<li>Execute workflow (5 seconds)<\/li>\n<\/ol>\n<p>No need to go to API Explorer to get the token manually anymore!<\/p>\n<h2>Conclusion<\/h2>\n<p>Subscribing to a Lark Form in n8n is not complicated if you master 3 basic steps: Get the Approval Code, get the Tenant Access Token, and configure the HTTP Request node. Once set up, you can leverage the power of n8n to automate all processes related to your forms.<\/p>\n<p>If you encounter difficulties during the setup process or want me to send the automatic token retrieval workflow template, please leave a comment below!<\/p>\n<style>\r\n.lwrp.link-whisper-related-posts{\r\n            \r\n            margin-top: 40px;\nmargin-bottom: 30px;\r\n        }\r\n        .lwrp .lwrp-title{\r\n            \r\n            \r\n        }.lwrp .lwrp-description{\r\n            \r\n            \r\n\r\n        }\r\n        .lwrp .lwrp-list-container{\r\n        }\r\n        .lwrp .lwrp-list-multi-container{\r\n            display: flex;\r\n        }\r\n        .lwrp .lwrp-list-double{\r\n            width: 48%;\r\n        }\r\n        .lwrp .lwrp-list-triple{\r\n            width: 32%;\r\n        }\r\n        .lwrp .lwrp-list-row-container{\r\n            display: flex;\r\n            justify-content: space-between;\r\n        }\r\n        .lwrp .lwrp-list-row-container .lwrp-list-item{\r\n            width: calc(33% - 20px);\r\n        }\r\n        .lwrp .lwrp-list-item:not(.lwrp-no-posts-message-item){\r\n            \r\n            max-width: 150px;\r\n        }\r\n        .lwrp .lwrp-list-item img{\r\n            max-width: 100%;\r\n            height: auto;\r\n            object-fit: cover;\r\n            aspect-ratio: 1 \/ 1;\r\n        }\r\n        .lwrp .lwrp-list-item.lwrp-empty-list-item{\r\n            background: initial !important;\r\n        }\r\n        .lwrp .lwrp-list-item .lwrp-list-link .lwrp-list-link-title-text,\r\n        .lwrp .lwrp-list-item .lwrp-list-no-posts-message{\r\n            \r\n            \r\n            \r\n            \r\n        }@media screen and (max-width: 480px) {\r\n            .lwrp.link-whisper-related-posts{\r\n                \r\n                \r\n            }\r\n            .lwrp .lwrp-title{\r\n                \r\n                \r\n            }.lwrp .lwrp-description{\r\n                \r\n                \r\n            }\r\n            .lwrp .lwrp-list-multi-container{\r\n                flex-direction: column;\r\n            }\r\n            .lwrp .lwrp-list-multi-container ul.lwrp-list{\r\n                margin-top: 0px;\r\n                margin-bottom: 0px;\r\n                padding-top: 0px;\r\n                padding-bottom: 0px;\r\n            }\r\n            .lwrp .lwrp-list-double,\r\n            .lwrp .lwrp-list-triple{\r\n                width: 100%;\r\n            }\r\n            .lwrp .lwrp-list-row-container{\r\n                justify-content: initial;\r\n                flex-direction: column;\r\n            }\r\n            .lwrp .lwrp-list-row-container .lwrp-list-item{\r\n                width: 100%;\r\n            }\r\n            .lwrp .lwrp-list-item:not(.lwrp-no-posts-message-item){\r\n                \r\n                max-width: initial;\r\n            }\r\n            .lwrp .lwrp-list-item .lwrp-list-link .lwrp-list-link-title-text,\r\n            .lwrp .lwrp-list-item .lwrp-list-no-posts-message{\r\n                \r\n                \r\n                \r\n                \r\n            };\r\n        }<\/style>\r\n<div id=\"link-whisper-related-posts-widget\" class=\"link-whisper-related-posts lwrp\">\r\n            <div class=\"lwrp-title\">Related Posts<\/div>    \r\n        <div class=\"lwrp-list-container\">\r\n                                <div class=\"lwrp-list lwrp-list-row-container lwrp-list-double-row\">\r\n                <div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/top-6-providers-high-quality-vps-rental\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Top 6 High-Quality VPS Rental Providers<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/rent-facebook-groups-the-fastest-way-to-3x-4x-your-revenue\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Hire a Facebook Group: The Fastest Way to Triple or Quadruple Sales<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/which-departments-functions-and-tasks-does-the-marketing-department-include\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">What Departments Does a Marketing Room Consist Of? Functions and Responsibilities<\/span><\/a><\/div>                <\/div>\r\n                            <div class=\"lwrp-list lwrp-list-row-container lwrp-list-double-row\">\r\n                <div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/what-is-local-seo-and-how-does-it-work\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">What is local SEO and how does it work?<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/kinh-nghiem-booking-pr-bao-chi-tranh-chat-chem\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Experience Booking PR in Vietnamese Press: How to Avoid Getting \u201cOvercharged\u201d on Price and Article Delays?<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/top-15-reputable-website-design-companies-in-ho-chi-minh-city-2026\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Top 15 Reputable Website Design Companies in Ho Chi Minh City (2026)<\/span><\/a><\/div>                <\/div>\r\n                <\/div>\r\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction to Registering Form Lark in n8n Integrating Lark Forms with n8n opens up many workflow automation possibilities. When a new form is submitted or an approval is created, n8n can automatically receive notifications and process data according to [\u2026]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[926,1895,1205],"tags":[],"class_list":["post-36225","post","type-post","status-publish","format-standard","hentry","category-automation","category-n8n","category-n8n-marketing"],"acf":[],"rankmath_keywords":{"primary":"\u0111\u0103ng k\u00fd Form Lark","secondary":[""]},"yoast_keywords":{"primary":"","secondary":[]},"yoast_focuskw":"","rankmath_focuskw":"\u0111\u0103ng k\u00fd Form Lark","seo_keywords":{"primary":"\u0111\u0103ng k\u00fd Form Lark","secondary":[""]},"_links":{"self":[{"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts\/36225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/comments?post=36225"}],"version-history":[{"count":1,"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts\/36225\/revisions"}],"predecessor-version":[{"id":36226,"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts\/36225\/revisions\/36226"}],"wp:attachment":[{"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/media?parent=36225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/categories?post=36225"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dps.media\/en\/wp-json\/wp\/v2\/tags?post=36225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}