[{"data":1,"prerenderedAt":213},["ShallowReactive",2],{"blog-exit-survey-questions":3},{"blogData":4,"relatedArticles":29},{"id":5,"title":6,"author":7,"authorImage":8,"authorProfile":9,"coverImg":10,"coverImgAlt":11,"createdAt":12,"description":13,"featured":14,"jsonld":15,"keywords":16,"metaDescription":17,"metaImage":18,"metaTitle":19,"publishedAt":20,"slug":21,"updatedAt":22,"__hash__":23,"body":24,"coverImgWidth":25,"coverImgHeight":26,"readingStats":27},"blog\u002Fblog\u002Fexit-survey-questions.md","Top Exit Survey Questions to Ask To Improve Employee Retention","Harish Kumar",null,"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fharish-kumar2424\u002F","https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Fan_illustration_of_top_employee_exit_survey_questions_to_ask_2ef76165cd.png","an illustration of top employee exit survey questions to ask","2025-02-12T00:43:25.533Z","Improve employee retention with exit surveys! Ask the right questions to gain candid feedback and enhance the employee experience. Try a free template today!",false,[],"best exit survey questions,\nexit survey questions,\nexit interview survey questions,\nexit interview survey,","Find the best exit survey questions to gather honest feedback from departing employees and improve retention. Get a ready-to-use survey template now!",[],"Top Exit Survey Questions to Ask To Improve Retention","2025-02-12T00:47:37.942Z","exit-survey-questions","2025-02-12T04:32:55.117Z","NCxGk_GB0vyN-oiljm6ZOS_mnHxd4pEMSPY1tJg-VKE","![an illustration of top employee exit survey questions to ask](https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Fan_illustration_of_top_employee_exit_survey_questions_to_ask_2ef76165cd.png)\n\nWhen employees decide to leave the company, understanding **[their reasons](https:\u002F\u002Fwww.indeed.com\u002Fcareer-advice\u002Fcareer-development\u002Freasons-employees-leave)** can help improve retention and create a better workplace. A good exit survey lets employees share honest feedback about their experiences. They can do this without the stress of a face-to-face talk.\n\nBy asking good exit interview questions, organizations can find trends. This helps improve the exit interview process and refine workplace policies.\n\nIn this post, we will look at the **best exit survey questions** to ask. We will also discuss how to get honest feedback. Finally, we will review the best tools for making an effective exit survey.\n\n## Why Exit Surveys Matter\nHigh turnover rates can be expensive. However, companies can use exit surveys to learn from leaving employees. This helps improve employee retention. Gathering employee feedback helps businesses understand:\n\n\n* The key factors behind an employee’s decision to leave\n\n* How company culture influences satisfaction and engagement\n\n* Ways to enhance the employee experience for future hires\n\n* Opportunities to refine management, training, and compensation structures\n\nAn effective exit survey helps the organization and lets departing employees share their thoughts. This happens on a positive note before they leave.\n\n### Goals of an Exit Survey\nBefore drafting your exit interview questions, it’s essential to define clear objectives:\n\n\n* Identify reasons for leaving – Was it career growth, compensation, or workplace dynamics?\n\n* Evaluate company policies – Were there issues with management, workload, or training?\n\n* Measure employee engagement – Did employees feel valued and supported?\n\n* Gather improvement insights – What could be done differently to improve retention?\n\nUsing an **[online exit survey template](\u002Ftemplates\u002Femployee-exit-interview-survey-2493\u002F)** can help standardize the exit interview process, making it easier to analyze feedback.\n\n### Top Exit Survey Questions to Ask\n\u003Ciframe src=\"https:\u002F\u002Fbevdkbdf.formester.com\u002Ff\u002F0e112d96-17f0-452c-b245-0d8db4fc0eb9\" width=\"100%\" height=\"592.5\">\u003C\u002Fiframe>\n\n**1. General Experience**\n- How would you describe your overall employee experience?\n- What was the biggest factor in your decision to leave?\n- Would you recommend this company to a friend? Why or why not?\n\n**2. Work Environment and Culture**\n- How would you describe the company culture?\n- Did you feel supported by your colleagues and management?\n- What aspects of the work environment could be improved?\n\n**3. Job Role and Responsibilities**\n- Did your role align with your expectations?\n- Were your skills utilized effectively?\n- Did you find your workload manageable?\n\n**4. Career Growth and Development**\n- Were there enough opportunities for professional development?\n- How effective was the training and onboarding process?\n- Did leadership support your career growth?\n\n**5. Compensation and Benefits**\n- Was your compensation competitive?\n- Did you find the benefits package satisfactory?\n- What suggestions do you have for improving employee benefits?\n\n**6. Management and Leadership**\n- How well did your manager provide feedback and support?\n- Was communication from leadership clear and transparent?\n- What changes would you suggest for better management?\n\n**7. Final Thoughts**\n- What could have made you stay at the company?\n- Do you have any suggestions for improving the employee experience?\n- Any additional candid feedback you’d like to share?\n\n### How to Use Exit Survey Data Effectively\nCollecting responses is just the first step. To make the most of your exit survey results:\n\n- Look for patterns – Identify trends in departing employees' responses.\n- Act on feedback – Address issues impacting employee retention before they lead to more resignations.\n- Improve hiring and training – Use insights to refine onboarding, management, and career development strategies.\n\nTo automate this process, try using an **[AI-powered survey builder](\u002Fai-survey-generator\u002F)** that generates tailored questions based on your needs.\n\n### Best Practices for Conducting Exit Surveys\n- Keep it concise – Employees are more likely to complete a short, focused survey.\n- Ensure anonymity – Honest feedback is more likely when responses are confidential.\n- Use a mix of questions – Include multiple-choice, rating scales, and open-ended responses.\n- Make it digital – Online surveys simplify data collection and analysis.\n\n### Tools for Conducting Exit Surveys\nThere are many online tools available for conducting exit surveys. **[Formester](\u002F)** is an excellent choice for HR teams because it offers:\n\n- Pre-made **[survey templates](\u002Ftemplates\u002Fcategories\u002Fsurvey-forms\u002F)**\n- AI-generated surveys for quick customization\n- Anonymous feedback collection for deeper insights\n\nWant to explore more ways to use survey forms? Check out **[this guide](\u002Fblog\u002F5-things-you-can-do-with-survey-forms\u002F)** for additional ideas.\n\n### Conclusion\nExit surveys are a crucial tool for understanding departing employees and improving employee retention. By asking the right exit survey questions, businesses can improve the workplace. They can analyze trends and act on feedback. This helps create a better environment for current and future employees.\n\nReady to build your own exit survey? **[Start using Formester](https:\u002F\u002Fapp.formester.com\u002Fusers\u002Fsign_up)** to collect candid feedback with ease! \n\n\n",1214,630,{"text":28},"4 min read",[30,58,176,194],{"title":31,"author":32,"authorImage":8,"authorProfile":33,"coverImg":34,"coverImgAlt":35,"createdAt":36,"description":37,"featured":14,"jsonld":38,"keywords":39,"metaDescription":40,"metaImage":41,"metaTitle":48,"publishedAt":49,"slug":50,"updatedAt":51,"__hash__":52,"body":53,"id":54,"coverImgWidth":55,"coverImgHeight":26,"readingStats":56},"Top benefits of using online form builder","Vivek Badani","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fvivek--badani\u002F","https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Ftop_benefits_of_using_online_top_benefits_of_using_online_form_builder_9be49f0817.png","Cover image for the blog, \"Top benefits of using online form builder\"","2024-04-07T10:04:52.974Z","As we grow our business, so do our clients or customers. Eventually it becomes hard to keep a track of them. Collecting and maintaining their details such as name, email addresses, phone numbers, project preferences, budget, and among other things helps us analyze our clientele over a period of time.",[],"online form builder, form builder, benefits of online form builder, benefits of form builder","Are you looking for the best online form builder? Learn about the benefits of using an online form builder and how it can help you save time and money.",[42,45],{"id":43,"imageURL":44},151,"https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Ftop_benefits_of_using_online_top_benefits_of_using_online_form_builder_4d3b7020ff.png",{"id":46,"imageURL":47},152,"https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Ftop_benefits_of_using_online_formester_landing_page_6fa49e6fb0.png","Top Benefits Of Using Online, No-Code Form Builders In 2023!","2022-10-18T00:00:00.000Z","top-benefits-of-using-online-form-builder","2026-01-28T05:53:54.714Z","ARo41zoy8GdTh5QLg9lL1No1Fy54rdZZVRzBWMITF8I","\nAs we grow our business, so do our clients or customers. Eventually\nit becomes hard to keep a track of them. Collecting and maintaining their\ndetails such as name, email addresses, phone numbers, project preferences,\nbudget, and among other things helps us analyze our clientele over a period of\ntime.\n\nHaving such information is crucial to keep a record of whom we work with and also what we can do to offer better services for long term business relationships.\n\nTo make our jobs easier, we use an [online form builder](\u002F) that helps us create a simple data collection form such as surveys or registration documents.\n\n![Top benefits of using online form builder](https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Ftop_benefits_of_using_online_top_benefits_of_using_online_form_builder_651030e8bd.png 'Top benefits of using online form builder')\n\n## Why should you use an online form builder\n\nThere are a number of benefits to using an online form builder. If you have ever been in charge of creating a form and collecting data from customers, then this will help you understand the importance of using an online form builder.\n\n### 1. Make your life easy\n\nOnline form builders offer a variety of features that make the process of creating, updating and managing forms easy. You can use online form software as a tool for creating registration pages, surveys or surveys with questionnaires.\n\nThese kinds of applications are used by many companies because they help them save time and money.\n\nAnother benefit is the ability to build forms in any format – If you have ever tried using an old-fashioned word processor program like Microsoft Word on your computer then you know how difficult it can be if there is no template available for this particular type of file format (for example: PDF).\n\nWith an online form builder however there are no limits whatsoever; all types of input methods including tables and text boxes will work just fine!\n\n### 2. A mobile friendly format\n\nCreating mobile friendly online forms means that when someone visits your site on their smartphone or tablet device they'll see exactly what they expect — something readable without any unnecessary distractions detracting from its functionality.\n\nTools such as [Formester](\u002F) make it super easy for you to build an online form that is not just compatible with desktop browsers but also for mobiles or tablets.\n\n### 3. Responsive design\n\nWe have now reached a stage where there’s so many interesting online form builders in option. And nearly all of them offer a responsive design that’s intuitive and time saving.\n\nResponsive design helps you worry less about how your online form appears as it adapts to both desktop or mobile versions and is also easy for your clients to use without any hindrance.\n\n### 4. Online forms are simple to use\n\nOnline form builders are easy to use. There’s no need for you to code or hire a designer, so you can save time and money by working with some of the best online form builders on the market today. You can create forms in minutes and share them with your team by simply uploading it through an online interface.\n\nOnline form builders make it easy for businesses of all kinds to customize their own forms without having any technical knowledge or experience in design software like Photoshop or Illustrator.\n\n### 5. Other benefits in a nutshell\n\n- You can share your forms on your website or social media and collect data in real time.\n\n- You can also share your forms with your clients, which is a great way to get feedback on how they are using your product or service.\n\n- You can collect data from multiple sources like email addresses and phone numbers, but it's important that you ensure that none of this personal information is shared publicly.\n\n- Online form builders can be used to collect important customer information such as the client’s needs, wants and preferences, among others.\n\n## How to choose an online form builder\n\nBy now, we all know that online form builders are great for creating forms without having to know any HTML. They're also useful if you want to create forms that look good on mobile devices. However, there are some things you need to consider before using one.\n\n- First, make sure you choose a form builder that offers features that fit your needs and requirements. Some form builders allow you to customize the appearance of your form, while others let you build forms in minutes.\n\n- Also, make sure you understand how the form builder works. Some require you to upload files, while others don't.\n\n- Finally, make sure you test your form thoroughly. It may seem obvious, but testing your form is important because it helps you identify problems before they become major issues.\n\nIn the Formester blog, we have already covered this topic - [Best Online Form Builders 2022: How to Choose the Ideal One?](\u002Fblog\u002Fbest-online-form-builders\u002F 'Best online form builders 2022'). We have listed out the factors to consider before you choose which tool will be the right choice for you.\n\n## Why should you opt Formester\n\nWhile there are plenty of options available for users to select any of the top listed online form builders, here are some key reasons you should consider using Formester to build your first ever form for your business.\n\n![A screenshot of the Formester landing page showing a drag-and-drop form builder](https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Ftop_benefits_of_using_online_formester_landing_page_61cba2a3a1.png 'A screenshot of the Formester landing page showing a drag-and-drop form builder')\n\n### 1. You get full control\n\nEach online form builder that’s available has its own pros and cons. But one of the major benefits of using Formester is that it helps you have control of the form building interface with an extremely easy drag-and-drop option and is intuitive in nature.\n\n### 2. Easy to build\n\nThe other major pluses of using Formester is its ease to build drag-and-drop features that require little to no instructions. The [text-easy HTML form builder](\u002F 'Formester') dashboard is designed in such a way that a user can explore the different tools that’s available without feeling overwhelmed.\n\n### 3. Easy to embed\n\nWe all know that when it comes to embeds, we may assume it will be a complex process that involves coding or integrating other content management softwares with your business social media accounts. But with Formester, all of it happens with a simple click of a button.\n\n### 4. Realtime notification\n\nCreating an online form using an online tool is one aspect, while tracking, maintaining and analysing the form’s data is another vital step that helps you understand your clients or customers as they fill in.\n\nWith Formester, you get informed with real-time data that helps you focus on what’s important for your business. You can opt for such details and be notified on your email, slack or any other 100 apps.\n\n### 5. Have control over your data\n\nWhile collecting data using online forms can be good for your business, it is also vital that you make it clear to your clients or customers that you won’t be sharing any of their personal details to other third party players.\n\nFormester helps you to easily import and export data. It is also easy to migrate from other tools which the team guides in a seamless process.\n\n### 6. Protection from spams\n\nWhile online forms can help you filter new clients or customers, it can also attract spam bots. Formester has considered this aspect as well as it offers users a simple one-click Recaptcha to curb spam and to keep your email list spam-free.\n\n### 7. Strong analytics\n\nFormester’s inbuilt analytic tools help you understand how users interact with your form. The detailed insights can help you improvise your engagement and conversion rates and identify trends.\n\n### 8. Affordable pricing\n\nThe free Formester version helps you build unlimited forms. However, our users prefer our PRO version as it is cheap and budget-friendly. It also unlocks a lot of features. So say goodbye to messy inboxes and hello to organized forms.\n[Sign up for free now](https:\u002F\u002Fapp.formester.com\u002Fusers\u002Fsign_up)!\n\n","blog\u002Fblog\u002Ftop-benefits-of-using-online-form-builder.md",1200,{"text":57},"7 min read",{"title":59,"author":60,"authorImage":8,"authorProfile":61,"coverImg":62,"coverImgAlt":63,"createdAt":64,"description":65,"featured":14,"jsonld":66,"keywords":165,"metaDescription":65,"metaImage":166,"metaTitle":167,"publishedAt":168,"slug":169,"updatedAt":170,"__hash__":171,"body":172,"id":173,"coverImgWidth":25,"coverImgHeight":26,"readingStats":174},"How to Send HTML Form Data to Google Sheets for Free","Harsh Shah","https:\u002F\u002Flinkedin.com\u002Fin\u002Fharshshahseo","https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002FHow_to_Make_User_Research_Survey_1_ec282fa0b6.png","a cover of a blog post that talks about sending contact form data to google sheets","2025-03-06T18:34:23.526Z","Push HTML form submissions straight into Google Sheets, free. Working Apps Script code, a no-code option, and a method-by-method comparison so you pick once.",[67],{"@graph":68,"@context":164},[69,83,113,150],{"@id":70,"@type":71,"image":62,"author":72,"headline":59,"publisher":74,"description":65,"dateModified":80,"datePublished":81,"mainEntityOfPage":82},"https:\u002F\u002Fformester.com\u002Fblog\u002Fhow-to-send-contact-form-data-to-google-sheets-free\u002F#article","Article",{"url":9,"name":7,"@type":73},"Person",{"logo":75,"name":78,"@type":79},{"url":76,"@type":77},"https:\u002F\u002Fformester.com\u002Flogo.png","ImageObject","Formester","Organization","2026-06-09","2025-03-06","https:\u002F\u002Fformester.com\u002Fblog\u002Fhow-to-send-contact-form-data-to-google-sheets-free\u002F",{"name":84,"step":85,"tool":99,"@type":107,"totalTime":108,"estimatedCost":109},"How to send HTML form data to Google Sheets with Apps Script",[86,90,93,96],{"name":87,"text":88,"@type":89},"Create the Sheet","Open Google Sheets, create a new spreadsheet, name the tab Submissions, and add column headers in row 1 that match the name attributes on your HTML form inputs.","HowToStep",{"name":91,"text":92,"@type":89},"Open Apps Script and paste the doPost function","Inside the Sheet, open Extensions then Apps Script. Paste the doPost script provided in this guide. Save the project.",{"name":94,"text":95,"@type":89},"Run initialSetup and deploy the web app","Pick initialSetup in the function dropdown and click Run. Approve the OAuth prompt. Click Deploy, New deployment, Web app, Execute as Me, Anyone has access. Copy the deployment URL.",{"name":97,"text":98,"@type":89},"Wire the deployment URL into your HTML form","Point your form's fetch endpoint or action attribute at the deployment URL. Submit a test entry. The row appears in the Sheet within a second.",[100,103,105],{"name":101,"@type":102},"Google Sheets","HowToTool",{"name":104,"@type":102},"Google Apps Script",{"name":106,"@type":102},"HTML form on your site","HowTo","PT30M",{"@type":110,"value":111,"currency":112},"MonetaryAmount","0","USD",{"@type":114,"mainEntity":115},"FAQPage",[116,122,126,130,134,138,142,146],{"name":117,"@type":118,"acceptedAnswer":119},"Is it really free to send HTML form data to Google Sheets?","Question",{"text":120,"@type":121},"Yes. Google Apps Script is free with any Google account, capped at one Sheets write per second per user. Google Forms is free. Formester's free plan includes unlimited submissions.","Answer",{"name":123,"@type":118,"acceptedAnswer":124},"How secure is form data in Google Sheets?",{"text":125,"@type":121},"Google encrypts data at rest and in transit. Lock sharing to specific accounts, neutralize formula characters on input to prevent CSV injection, and do not use a Sheet for payment data or passwords.",{"name":127,"@type":118,"acceptedAnswer":128},"What is the rate limit on Apps Script writes to Sheets?",{"text":129,"@type":121},"Roughly 100 requests per 100 seconds per user, per Google's published quotas. A contact form sustaining one submission per second sits comfortably inside that envelope.",{"name":131,"@type":118,"acceptedAnswer":132},"Can I send file uploads from the form into Google Sheets?",{"text":133,"@type":121},"Sheets cannot hold a file. Write the file to Google Drive via Apps Script and store the Drive URL in the cell, or use a no-code builder that handles file uploads natively.",{"name":135,"@type":118,"acceptedAnswer":136},"How do I add CAPTCHA or spam protection?",{"text":137,"@type":121},"The script in this guide ships a honeypot field. For more, add Google reCAPTCHA v3 on the client and verify the token server-side before writing to the Sheet.",{"name":139,"@type":118,"acceptedAnswer":140},"How do I get an email when someone submits the form?",{"text":141,"@type":121},"Add MailApp.sendEmail inside the doPost function in Apps Script. Or use the autoresponder feature in a no-code builder and skip the code.",{"name":143,"@type":118,"acceptedAnswer":144},"Can I use this on Netlify, Vercel, or any static site?",{"text":145,"@type":121},"Yes. The Apps Script deployment URL is a fetch target. It works from any frontend, hosted anywhere, with no backend on your side.",{"name":147,"@type":118,"acceptedAnswer":148},"Can I move from this setup to a database later?",{"text":149,"@type":121},"Easily. Sheets is a great starter store. When you cross a few hundred submissions a week, route the same form to a database or CRM in parallel with the Sheet.",{"@type":151,"itemListElement":152},"BreadcrumbList",[153,158,162],{"item":154,"name":155,"@type":156,"position":157},"https:\u002F\u002Fformester.com\u002F","Home","ListItem",1,{"item":159,"name":160,"@type":156,"position":161},"https:\u002F\u002Fformester.com\u002Fblog\u002F","Blog",2,{"item":82,"name":59,"@type":156,"position":163},3,"https:\u002F\u002Fschema.org","how to send contact form data to google sheets free,\ncontact form template,\ncontact form automation,",[],"HTML Form to Google Sheets: 3 Free Methods (Code)","2026-06-15T04:53:58.393Z","how-to-send-contact-form-data-to-google-sheets-free","2026-06-15T04:53:58.398Z","SpJtH4MN2xn0shG-jzP6RaMox4pENmrLXV3OuYWeFbk","![a cover of a blog post that talks about sending contact form data to google sheets](https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002FHow_to_Make_User_Research_Survey_1_ec282fa0b6.png)\n\n\u003Cstyle>\n\u002F* batch-1 blog normalisation *\u002F\n.fmstr-blog-lead {\n  font-size: 17px !important;\n  line-height: 1.65 !important;\n  color: #475467 !important;\n  font-weight: 400 !important;\n  margin: 0 0 16px !important;\n}\n.fmstr-blog-lead a { color: #6941c6 !important; font-weight: 500; }\n.fmstr-blog-lead a:hover { text-decoration: underline !important; }\n.fmstr-blog-lead strong { color: #101828; font-weight: 700; }\nsection[class^=\"fmstr-cmp-\"], section[class*=\" fmstr-cmp-\"] {\n  padding-top: 28px !important;\n  padding-bottom: 28px !important;\n}\n@media (max-width: 540px) {\n  section[class^=\"fmstr-cmp-\"], section[class*=\" fmstr-cmp-\"] {\n    padding-top: 24px !important;\n    padding-bottom: 24px !important;\n  }\n}\n\u003C\u002Fstyle>\n\n\u003Cstyle id=\"fmstr-blog-mobile-fullwidth-v3\">\n@media (max-width: 760px) {\n  .art-section { padding-left: 12px !important; padding-right: 12px !important; }\n}\n@media (max-width: 540px) {\n  .art-section { padding-left: 6px !important; padding-right: 6px !important; padding-top: 24px !important; }\n  section[class^=\"fmstr-cmp-\"], section[class*=\" fmstr-cmp-\"] {\n    padding-left: 0 !important; padding-right: 0 !important;\n    overflow-x: hidden !important; box-sizing: border-box !important;\n  }\n  section[class^=\"fmstr-cmp-\"] *, section[class^=\"fmstr-cmp-\"] *::before, section[class^=\"fmstr-cmp-\"] *::after { box-sizing: border-box !important; }\n  section[class^=\"fmstr-cmp-\"] > *, section[class^=\"fmstr-cmp-\"] > * > * { min-width: 0 !important; }\n  section[class^=\"fmstr-cmp-\"] [class*=\"__container\"] {\n    padding-left: 0 !important; padding-right: 0 !important;\n    max-width: 100% !important; width: 100% !important;\n  }\n  section[class^=\"fmstr-cmp-\"] [class*=\"__card\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__step\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__panel\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__tool\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__verdict\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__row\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__fix\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__callout\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__quote\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__tldr\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__answer\"],\n  section[class^=\"fmstr-cmp-\"] [class*=\"__faq\"],\n  section[class^=\"fmstr-cmp-\"] details {\n    padding-left: 14px !important; padding-right: 14px !important;\n    margin-left: 0 !important; margin-right: 0 !important;\n  }\n  section[class^=\"fmstr-cmp-\"] p, section[class^=\"fmstr-cmp-\"] li { font-size: 15px !important; line-height: 1.6 !important; }\n  section[class^=\"fmstr-cmp-\"] h2 { font-size: 22px !important; line-height: 1.22 !important; }\n  section[class^=\"fmstr-cmp-\"] h3 { font-size: 18px !important; line-height: 1.3 !important; }\n  section[class^=\"fmstr-cmp-\"] h4 { font-size: 16px !important; line-height: 1.35 !important; }\n  section[class^=\"fmstr-cmp-\"] table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; width: 100% !important; }\n  section[class^=\"fmstr-cmp-\"] img, section[class^=\"fmstr-cmp-\"] iframe, section[class^=\"fmstr-cmp-\"] video { max-width: 100% !important; height: auto !important; }\n  section[class^=\"fmstr-cmp-\"] pre, section[class^=\"fmstr-cmp-\"] code {\n    white-space: pre-wrap !important; overflow-wrap: anywhere !important; word-break: break-word !important;\n  }\n  section[class^=\"fmstr-cmp-\"] pre { overflow-x: auto; }\n  .fmstr-blog-lead { font-size: 16.5px !important; }\n}\n\u003C\u002Fstyle>\n\n\u003Cp class=\"fmstr-blog-lead\">If you have a contact form, an opt-in widget, or a custom HTML form on your site, you can route every submission straight into a Google Sheet without a database, a Zapier subscription, or a paid backend. Three free methods get you there. Two need code. One does not.\u003C\u002Fp>\n\n\u003Cp class=\"fmstr-blog-lead\">This guide gives you the working Apps Script (paste-ready), the no-code path, and a side-by-side comparison so you know which one to pick before you start.\u003C\u002Fp>\n\n\u003Cstyle>\n.fmstr-cmp-tmpl-tldr a { text-decoration: none !important; }\n.fmstr-cmp-tmpl-tldr {\n--c-card: #f7f3ff;\n--c-fg-1: #101828; --c-fg-2: #475467; --c-fg-3: #697586;\n--c-violet-500: #7f56d9; --c-violet-600: #6941c6; --c-violet-700: #5b34b1;\n--c-edge: #e4d7ff; --c-border: #d6c2f7;\n--c-shadow: 0 1px 3px rgba(16,24,40,.05);\nbackground: transparent;\npadding: 28px 0 40px;\nfont-family: inherit;\ncolor: var(--c-fg-1);\ntext-align: left !important; overflow-x: hidden; -webkit-text-size-adjust: 100%;}\n.fmstr-cmp-tmpl-tldr *, .fmstr-cmp-tmpl-tldr *::before, .fmstr-cmp-tmpl-tldr *::after { box-sizing: border-box; }\n.fmstr-cmp-tmpl-tldr__container { max-width: 1200px; margin: 0 auto; }\n.fmstr-cmp-tmpl-tldr__card {\nbackground: var(--c-card);\nborder: 1px solid var(--c-border);\nborder-left: 4px solid var(--c-violet-500);\nborder-radius: 14px;\npadding: 22px 26px;\nbox-shadow: var(--c-shadow);\ndisplay: flex; flex-direction: column; gap: 12px;\n}\n.fmstr-cmp-tmpl-tldr__label {\nfont-size: 12px !important;\nfont-weight: 700 !important;\nletter-spacing: 0.08em !important;\ntext-transform: uppercase;\ncolor: var(--c-violet-700) !important;\ndisplay: inline-flex;\nalign-items: center;\ngap: 8px;\nmargin: 0 !important;\n}\n.fmstr-cmp-tmpl-tldr__label::before {\ncontent: \"\";\nwidth: 8px; height: 8px; border-radius: 9999px;\nbackground: var(--c-violet-500);\ndisplay: inline-block;\n}\n.fmstr-cmp-tmpl-tldr__body {\nfont-size: 16px !important;\nline-height: 1.65 !important;\ncolor: var(--c-fg-1);\nmargin: 0 !important;\nfont-weight: 500 !important;\n}\n.fmstr-cmp-tmpl-tldr__body strong { color: var(--c-violet-700); font-weight: 700; }\n.fmstr-cmp-tmpl-tldr__list {\nmargin: 0 !important; padding: 0 0 0 20px !important;\ndisplay: flex; flex-direction: column; gap: 8px;\nfont-size: 15.5px; line-height: 1.6; color: var(--c-fg-1);\n}\n.fmstr-cmp-tmpl-tldr__list li { margin: 0; }\n.fmstr-cmp-tmpl-tldr__list strong { color: var(--c-violet-700); font-weight: 700; }\n\n@media (max-width: 540px) {\n.fmstr-cmp-tmpl-tldr { padding: 20px 0 28px; }\n.fmstr-cmp-tmpl-tldr__card { padding: 18px 20px; }\n.fmstr-cmp-tmpl-tldr__body { font-size: 15px !important; }\n.fmstr-cmp-tmpl-tldr__list { font-size: 14.5px; }\n}\n\n\n\u002F* mobile-safety-v2 *\u002F\n.fmstr-cmp-tmpl-tldr img, .fmstr-cmp-tmpl-tldr table, .fmstr-cmp-tmpl-tldr pre, .fmstr-cmp-tmpl-tldr iframe, .fmstr-cmp-tmpl-tldr video { max-width: 100%; }\n.fmstr-cmp-tmpl-tldr > * { min-width: 0; }\n.fmstr-cmp-tmpl-tldr [class*='__grid'] > *, .fmstr-cmp-tmpl-tldr [class*='__list'] > *, .fmstr-cmp-tmpl-tldr [class*='__cards'] > * { min-width: 0; max-width: 100%; }\n@media (max-width: 540px) {\n  .fmstr-cmp-tmpl-tldr pre { overflow-x: auto; -webkit-overflow-scrolling: touch; }\n  .fmstr-cmp-tmpl-tldr table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }\n}\n\u003C\u002Fstyle>\n\n\u003Csection class=\"fmstr-cmp-tmpl-tldr\" aria-labelledby=\"fmstr-cmp-tmpl-tldr-label\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-tldr__container\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-tldr__card\">\n\u003Cp class=\"fmstr-cmp-tmpl-tldr__label\" id=\"fmstr-cmp-tmpl-tldr-label\">Quick answer\u003C\u002Fp>\n\u003Cp class=\"fmstr-cmp-tmpl-tldr__body\">You can push HTML form submissions into a Google Sheet for free with three methods. Pick one in 30 seconds:\u003C\u002Fp>\n\u003Cul class=\"fmstr-cmp-tmpl-tldr__list\">\n\u003Cli>\u003Cstrong>Google Forms\u003C\u002Fstrong> (2 minutes, no code): use it when the form does not need to live on your own domain.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Google Apps Script\u003C\u002Fstrong> (20-40 minutes, paste-ready code below): use it when you already have an HTML form on your site and are fine maintaining a script.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No-code builder like \u003Ca href=\"https:\u002F\u002Fformester.com\u002F\">Formester\u003C\u002Fa>\u003C\u002Fstrong> (5 minutes, no code): use it when you want spam control, conditional logic, and Sheets sync in one place.\u003C\u002Fli>\n\u003Cli>Apps Script caps at roughly one Sheets write per second per user, which is plenty for a contact form.\u003C\u002Fli>\n\u003Cli>Never store payment data or passwords in Sheets. It is a great inbox, not a vault.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\u003C\u002Fsection>\n\n\n\u003Cstyle>\n.fmstr-cmp-tmpl-cmp a { text-decoration: none !important; }\n.fmstr-cmp-tmpl-cmp a.fmstr-cmp-tmpl-cmp__link { color: var(--c-violet-600) !important; font-weight: 600; }\n.fmstr-cmp-tmpl-cmp a.fmstr-cmp-tmpl-cmp__link:hover { text-decoration: underline !important; }\n.fmstr-cmp-tmpl-cmp {\n--c-card: #ffffff;\n--c-fg-1: #101828; --c-fg-2: #475467; --c-fg-3: #697586;\n--c-violet-500: #7f56d9; --c-violet-600: #6941c6; --c-violet-700: #5b34b1;\n--c-tint: #f7f3ff; --c-edge: #e4d7ff;\n--c-border: #eaecf0;\n--c-shadow: 0 1px 3px rgba(16,24,40,.05);\n--c-good: #12b76a; --c-bad: #f04438;\nbackground: transparent;\npadding: 48px 0;\nfont-family: inherit;\ncolor: var(--c-fg-1);\ntext-align: left !important;\noverflow-x: hidden;\n}\n.fmstr-cmp-tmpl-cmp *, .fmstr-cmp-tmpl-cmp *::before, .fmstr-cmp-tmpl-cmp *::after { box-sizing: border-box; }\n.fmstr-cmp-tmpl-cmp > *, .fmstr-cmp-tmpl-cmp > * > * { min-width: 0; }\n.fmstr-cmp-tmpl-cmp__container { max-width: 1200px; margin: 0 auto; }\n.fmstr-cmp-tmpl-cmp__head { margin: 0 0 28px !important; }\n.fmstr-cmp-tmpl-cmp__h2 {\nfont-size: clamp(26px, 3vw, 36px) !important; font-weight: 700 !important; line-height: 1.15 !important;\nletter-spacing: -.02em !important; margin: 0 !important; color: var(--c-fg-1);\n}\n.fmstr-cmp-tmpl-cmp__intro { color: var(--c-fg-3); font-size: 17px !important; line-height: 1.6 !important; margin: 14px 0 0 !important; }\n.fmstr-cmp-tmpl-cmp__grid {\ndisplay: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;\n}\n.fmstr-cmp-tmpl-cmp__card {\nbackground: var(--c-card);\nborder: 1px solid var(--c-border);\nborder-radius: 14px;\npadding: 22px;\nbox-shadow: var(--c-shadow);\ndisplay: flex; flex-direction: column; gap: 12px;\nmin-width: 0;\n}\n.fmstr-cmp-tmpl-cmp__card--featured {\nborder-color: var(--c-edge);\nbackground: var(--c-tint);\nbox-shadow: 0 4px 18px rgba(105,65,198,.10);\n}\n.fmstr-cmp-tmpl-cmp__chip {\ndisplay: inline-flex; align-items: center;\nfont-size: 11px !important; font-weight: 700 !important; letter-spacing: 0.08em !important;\ntext-transform: uppercase; color: var(--c-violet-700) !important;\nbackground: var(--c-tint); border: 1px solid var(--c-edge);\npadding: 4px 10px; border-radius: 9999px;\nalign-self: flex-start;\n}\n.fmstr-cmp-tmpl-cmp__name {\nfont-size: 18px !important; font-weight: 700 !important; color: var(--c-fg-1);\nmargin: 0 !important; line-height: 1.3 !important;\n}\n.fmstr-cmp-tmpl-cmp__best {\nfont-size: 13.5px !important; color: var(--c-fg-3); margin: 0 !important;\n}\n.fmstr-cmp-tmpl-cmp__best strong { color: var(--c-fg-1); font-weight: 600; }\n.fmstr-cmp-tmpl-cmp__divider {\nheight: 1px; background: var(--c-border); margin: 4px 0; border: 0;\n}\n.fmstr-cmp-tmpl-cmp__list {\nmargin: 0; padding: 0; list-style: none;\ndisplay: flex; flex-direction: column; gap: 8px;\n}\n.fmstr-cmp-tmpl-cmp__item {\ndisplay: block; position: relative; padding-left: 26px;\nfont-size: 14px; line-height: 1.5; color: var(--c-fg-2);\n}\n.fmstr-cmp-tmpl-cmp__item::before {\ncontent: \"\\2713\";\nposition: absolute; left: 0; top: 0.05em;\ncolor: var(--c-good); font-weight: 700; line-height: 1.45;\n}\n.fmstr-cmp-tmpl-cmp__item--con::before { content: \"\\2717\"; color: var(--c-bad); position: absolute; left: 0; top: 0.05em; font-weight: 700; }\n.fmstr-cmp-tmpl-cmp__rules {\nmargin: 28px 0 0; padding: 18px 22px;\nbackground: var(--c-tint); border: 1px solid var(--c-edge);\nborder-radius: 12px;\ndisplay: flex; flex-direction: column; gap: 8px;\n}\n.fmstr-cmp-tmpl-cmp__rules-label {\nfont-size: 11px !important; font-weight: 700 !important; letter-spacing: 0.08em !important;\ntext-transform: uppercase; color: var(--c-violet-700) !important; margin: 0 !important;\n}\n.fmstr-cmp-tmpl-cmp__rules-list {\nmargin: 0 !important; padding: 0 0 0 20px !important;\nfont-size: 14.5px; line-height: 1.6; color: var(--c-fg-1);\ndisplay: flex; flex-direction: column; gap: 6px;\n}\n\n@media (max-width: 920px) {\n.fmstr-cmp-tmpl-cmp__grid { grid-template-columns: 1fr; gap: 12px; }\n}\n@media (max-width: 540px) {\n.fmstr-cmp-tmpl-cmp { padding: 36px 0; }\n.fmstr-cmp-tmpl-cmp__card { padding: 18px 20px; }\n}\n\n\n\u002F* mobile-safety-v2 *\u002F\n.fmstr-cmp-tmpl-cmp img, .fmstr-cmp-tmpl-cmp table, .fmstr-cmp-tmpl-cmp pre, .fmstr-cmp-tmpl-cmp iframe, .fmstr-cmp-tmpl-cmp video { max-width: 100%; }\n.fmstr-cmp-tmpl-cmp > * { min-width: 0; }\n.fmstr-cmp-tmpl-cmp [class*='__grid'] > *, .fmstr-cmp-tmpl-cmp [class*='__list'] > *, .fmstr-cmp-tmpl-cmp [class*='__cards'] > * { min-width: 0; max-width: 100%; }\n@media (max-width: 540px) {\n  .fmstr-cmp-tmpl-cmp pre { overflow-x: auto; -webkit-overflow-scrolling: touch; }\n  .fmstr-cmp-tmpl-cmp table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }\n}\n\u003C\u002Fstyle>\n\n\u003Csection class=\"fmstr-cmp-tmpl-cmp\" aria-labelledby=\"fmstr-cmp-tmpl-cmp-h2\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-cmp__container\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-cmp__head\">\n\u003Ch2 class=\"fmstr-cmp-tmpl-cmp__h2\" id=\"fmstr-cmp-tmpl-cmp-h2\">Which method should you pick?\u003C\u002Fh2>\n\u003Cp class=\"fmstr-cmp-tmpl-cmp__intro\">Three free routes from form submission to a Google Sheet row. Match the method to where you already are.\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003Cdiv class=\"fmstr-cmp-tmpl-cmp__grid\">\n\n\u003Cdiv class=\"fmstr-cmp-tmpl-cmp__card\">\n\u003Cspan class=\"fmstr-cmp-tmpl-cmp__chip\">Method 1\u003C\u002Fspan>\n\u003Ch3 class=\"fmstr-cmp-tmpl-cmp__name\">Google Forms\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-cmp__best\">\u003Cstrong>Best for:\u003C\u002Fstrong> A form you do not need to embed on your own site.\u003C\u002Fp>\n\u003Chr class=\"fmstr-cmp-tmpl-cmp__divider\">\n\u003Cul class=\"fmstr-cmp-tmpl-cmp__list\">\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">2-minute setup, no code at all.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">Free with any Google account.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">Responses auto-link to a Sheet.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item fmstr-cmp-tmpl-cmp__item--con\">Lives on a Google URL, not your domain.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item fmstr-cmp-tmpl-cmp__item--con\">Limited design control.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"fmstr-cmp-tmpl-cmp__card\">\n\u003Cspan class=\"fmstr-cmp-tmpl-cmp__chip\">Method 2\u003C\u002Fspan>\n\u003Ch3 class=\"fmstr-cmp-tmpl-cmp__name\">Google Apps Script\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-cmp__best\">\u003Cstrong>Best for:\u003C\u002Fstrong> A custom HTML form you already have on your site.\u003C\u002Fp>\n\u003Chr class=\"fmstr-cmp-tmpl-cmp__divider\">\n\u003Cul class=\"fmstr-cmp-tmpl-cmp__list\">\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">Free forever, no usage cap on Sheets writes (within Google quotas).\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">Paste-ready code, no edits required.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">Stays on your domain, no third-party branding.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item fmstr-cmp-tmpl-cmp__item--con\">20-40 minute setup.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item fmstr-cmp-tmpl-cmp__item--con\">You maintain the script and the deployment.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"fmstr-cmp-tmpl-cmp__card fmstr-cmp-tmpl-cmp__card--featured\">\n\u003Cspan class=\"fmstr-cmp-tmpl-cmp__chip\">Method 3 &middot; No-code\u003C\u002Fspan>\n\u003Ch3 class=\"fmstr-cmp-tmpl-cmp__name\">Formester\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-cmp__best\">\u003Cstrong>Best for:\u003C\u002Fstrong> Embedding on any site with spam control, conditional logic, and Sheets sync.\u003C\u002Fp>\n\u003Chr class=\"fmstr-cmp-tmpl-cmp__divider\">\n\u003Cul class=\"fmstr-cmp-tmpl-cmp__list\">\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">5-minute setup, no code at all.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">Free plan includes unlimited responses.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">Native \u003Ca class=\"fmstr-cmp-tmpl-cmp__link\" href=\"https:\u002F\u002Fformester.com\u002Fintegrations\u002F\">Google Sheets integration\u003C\u002Fa>, OAuth, retries handled.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item\">Spam filtering, conditional logic, analytics built in.\u003C\u002Fli>\n\u003Cli class=\"fmstr-cmp-tmpl-cmp__item fmstr-cmp-tmpl-cmp__item--con\">Branded footer on the free plan.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fdiv>\n\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"fmstr-cmp-tmpl-cmp__rules\">\n\u003Cp class=\"fmstr-cmp-tmpl-cmp__rules-label\">Decision rule\u003C\u002Fp>\n\u003Cul class=\"fmstr-cmp-tmpl-cmp__rules-list\">\n\u003Cli>If the form already exists in HTML and you are fine maintaining a script, use Apps Script.\u003C\u002Fli>\n\u003Cli>If you do not need to embed the form on your own domain, use Google Forms.\u003C\u002Fli>\n\u003Cli>If you want zero maintenance, spam control, conditional logic, and Google Sheets sync in one place, use a no-code form builder like Formester.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\u003C\u002Fsection>\n\n\n\u003Cstyle>\n.fmstr-cmp-tmpl-steps a { text-decoration: none !important; }\n.fmstr-cmp-tmpl-steps a.fmstr-cmp-tmpl-steps__link { color: var(--c-violet-600) !important; font-weight: 600; }\n.fmstr-cmp-tmpl-steps a.fmstr-cmp-tmpl-steps__link:hover { text-decoration: underline !important; }\n.fmstr-cmp-tmpl-steps {\n--c-card: #ffffff;\n--c-fg-1: #101828; --c-fg-2: #475467; --c-fg-3: #697586;\n--c-violet-500: #7f56d9; --c-violet-600: #6941c6; --c-violet-700: #5b34b1;\n--c-tint: #f7f3ff; --c-edge: #e4d7ff;\n--c-border: #eaecf0;\n--c-code-bg: #0f172a; --c-code-fg: #e2e8f0;\n--c-shadow: 0 1px 3px rgba(16,24,40,.05);\nbackground: transparent;\npadding: 48px 0;\nfont-family: inherit;\ncolor: var(--c-fg-1);\ntext-align: left !important;\noverflow-x: hidden;\n}\n.fmstr-cmp-tmpl-steps *, .fmstr-cmp-tmpl-steps *::before, .fmstr-cmp-tmpl-steps *::after { box-sizing: border-box; }\n.fmstr-cmp-tmpl-steps > *, .fmstr-cmp-tmpl-steps > * > * { min-width: 0; }\n.fmstr-cmp-tmpl-steps__container { max-width: 1200px; margin: 0 auto; }\n.fmstr-cmp-tmpl-steps__head { margin: 0 0 28px !important; }\n.fmstr-cmp-tmpl-steps__h2 {\nfont-size: clamp(26px, 3vw, 36px) !important; font-weight: 700 !important; line-height: 1.15 !important;\nletter-spacing: -.02em !important; margin: 0 !important; color: var(--c-fg-1);\n}\n.fmstr-cmp-tmpl-steps__intro { color: var(--c-fg-3); font-size: 17px !important; line-height: 1.6 !important; margin: 14px 0 0 !important; }\n.fmstr-cmp-tmpl-steps__list {\ndisplay: flex; flex-direction: column; gap: 14px;\nmargin: 0; padding: 0; list-style: none;\n}\n.fmstr-cmp-tmpl-steps__item {\nbackground: var(--c-card);\nborder: 1px solid var(--c-border);\nborder-radius: 14px;\npadding: 22px 24px;\nbox-shadow: var(--c-shadow);\ndisplay: flex; gap: 12px;\nalign-items: flex-start;\nmin-width: 0;\n}\n.fmstr-cmp-tmpl-steps__num {\nflex-shrink: 0;\nwidth: 26px; line-height: 1; height: 26px; border-radius: 7px;\nbackground: var(--c-tint);\nborder: 1px solid var(--c-edge);\ncolor: var(--c-violet-700) !important;\nfont-weight: 800; font-size: 13px;\ndisplay: inline-flex; align-items: center; justify-content: center;\n}\n.fmstr-cmp-tmpl-steps__main { flex: 1; min-width: 0; }\n.fmstr-cmp-tmpl-steps__title {\nfont-size: 17px !important; font-weight: 700 !important; line-height: 1.3 !important;\ncolor: var(--c-fg-1); margin: 0 0 6px !important;\n}\n.fmstr-cmp-tmpl-steps__body {\nfont-size: 15px !important; line-height: 1.6 !important;\ncolor: var(--c-fg-2); margin: 0 0 10px !important;\n}\n.fmstr-cmp-tmpl-steps__body:last-child { margin-bottom: 0 !important; }\n.fmstr-cmp-tmpl-steps__body code {\nbackground: #f4f4f7; padding: 1px 6px; border-radius: 5px;\nfont-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\nfont-size: 13.5px; color: var(--c-violet-700);\nborder: 1px solid var(--c-border);\n}\n.fmstr-cmp-tmpl-steps__code {\nmargin: 12px 0 4px;\nbackground: var(--c-code-bg);\ncolor: var(--c-code-fg);\nborder-radius: 10px;\npadding: 16px 18px;\noverflow-x: auto;\nfont-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\nfont-size: 13px;\nline-height: 1.6;\nwhite-space: pre;\nmax-width: 100%;\n}\n.fmstr-cmp-tmpl-steps__code-label {\ndisplay: block; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\nfont-size: 11.5px; font-weight: 700; letter-spacing: 0.06em;\ntext-transform: uppercase; color: #94a3b8;\nmargin: 0 0 10px;\n}\n.fmstr-cmp-tmpl-steps__note {\nmargin: 12px 0 0 !important; padding: 12px 14px;\nbackground: var(--c-tint); border: 1px solid var(--c-edge);\nborder-radius: 10px;\nfont-size: 14px !important; line-height: 1.55 !important;\ncolor: var(--c-fg-1);\n}\n.fmstr-cmp-tmpl-steps__note strong { color: var(--c-violet-700); font-weight: 700; }\n\n@media (max-width: 540px) {\n.fmstr-cmp-tmpl-steps { padding: 36px 0; }\n.fmstr-cmp-tmpl-steps__item { padding: 18px 20px; gap: 14px; }\n.fmstr-cmp-tmpl-steps__num { width: 34px; height: 34px; font-size: 15px; }\n.fmstr-cmp-tmpl-steps__title { font-size: 16px !important; }\n.fmstr-cmp-tmpl-steps__body { font-size: 14.5px !important; }\n.fmstr-cmp-tmpl-steps__code { font-size: 12px; padding: 14px 16px; }\n}\n\n\n\u002F* mobile-safety-v2 *\u002F\n.fmstr-cmp-tmpl-steps img, .fmstr-cmp-tmpl-steps table, .fmstr-cmp-tmpl-steps pre, .fmstr-cmp-tmpl-steps iframe, .fmstr-cmp-tmpl-steps video { max-width: 100%; }\n.fmstr-cmp-tmpl-steps > * { min-width: 0; }\n.fmstr-cmp-tmpl-steps [class*='__grid'] > *, .fmstr-cmp-tmpl-steps [class*='__list'] > *, .fmstr-cmp-tmpl-steps [class*='__cards'] > * { min-width: 0; max-width: 100%; }\n@media (max-width: 540px) {\n  .fmstr-cmp-tmpl-steps pre { overflow-x: auto; -webkit-overflow-scrolling: touch; }\n  .fmstr-cmp-tmpl-steps table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }\n}\n\n\n\n\u002F* mobile-inline-num *\u002F\n@media (max-width: 540px) {\n  .fmstr-cmp-tmpl-steps__item { padding: 18px 16px; gap: 10px; flex-direction: row; align-items: flex-start; }\n  .fmstr-cmp-tmpl-steps__num { width: 28px; height: 28px; font-size: 13px; border-radius: 8px; }\n}\n\n\u002F* step-inline-num-restructure *\u002F\n.fmstr-cmp-tmpl-steps__item { display: block !important; }\n.fmstr-cmp-tmpl-steps__title { display: block; }\n.fmstr-cmp-tmpl-steps__num { display: inline-block !important; vertical-align: 2px; margin-right: 8px; padding: 2px 8px; width: auto !important; height: auto !important; border-radius: 6px; font-size: 12.5px !important; line-height: 1.3 !important; }\n@media (max-width: 540px) {\n  .fmstr-cmp-tmpl-steps__num { font-size: 11.5px !important; padding: 2px 7px; margin-right: 6px; }\n}\n\u003C\u002Fstyle>\n\n\u003Csection class=\"fmstr-cmp-tmpl-steps\" aria-labelledby=\"fmstr-cmp-tmpl-steps-h2\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-steps__container\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-steps__head\">\n\u003Ch2 class=\"fmstr-cmp-tmpl-steps__h2\" id=\"fmstr-cmp-tmpl-steps-h2\">Method 2: Google Apps Script, full working setup\u003C\u002Fh2>\n\u003Cp class=\"fmstr-cmp-tmpl-steps__intro\">\u003Cstrong>Method 1 is one click in Google Forms. Method 3 is a no-code toggle in Formester.\u003C\u002Fstrong> The only method that needs a real walkthrough is Method 2. Here it is, in full.\u003C\u002Fp>\n\u003Cp class=\"fmstr-cmp-tmpl-steps__intro\">Paste-ready code that handles any field name in your HTML form, sanitizes against \u003Ca class=\"fmstr-cmp-tmpl-steps__link\" href=\"https:\u002F\u002Fowasp.org\u002Fwww-community\u002Fattacks\u002FCSV_Injection\">CSV formula injection\u003C\u002Fa>, and works with both \u003Ccode>application\u002Fjson\u003C\u002Fcode> and standard form-encoded submissions.\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003Col class=\"fmstr-cmp-tmpl-steps__list\">\n\n\u003Cli class=\"fmstr-cmp-tmpl-steps__item\">\n\u003Ch3 class=\"fmstr-cmp-tmpl-steps__title\">\u003Cspan class=\"fmstr-cmp-tmpl-steps__num\" aria-hidden=\"true\">1\u003C\u002Fspan>Create the Sheet\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-steps__body\">Open \u003Ca class=\"fmstr-cmp-tmpl-steps__link\" href=\"https:\u002F\u002Fdocs.google.com\u002Fspreadsheets\u002F\">Google Sheets\u003C\u002Fa> and create a new spreadsheet. Name the tab \u003Ccode>Submissions\u003C\u002Fcode>. In row 1, add column headers that match the \u003Ccode>name\u003C\u002Fcode> attributes on your form inputs. Add \u003Ccode>timestamp\u003C\u002Fcode> as the first column. The script reads row 1 as the source of truth for column mapping, so a typo in a header is a typo in the data.\u003C\u002Fp>\n\u003Cp class=\"fmstr-cmp-tmpl-steps__body\">Example row 1: \u003Ccode>timestamp | name | email | message\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\n\u003Cli class=\"fmstr-cmp-tmpl-steps__item\">\n\u003Ch3 class=\"fmstr-cmp-tmpl-steps__title\">\u003Cspan class=\"fmstr-cmp-tmpl-steps__num\" aria-hidden=\"true\">2\u003C\u002Fspan>Open Apps Script and paste the code\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-steps__body\">Inside the Sheet, go to Extensions, then Apps Script. Delete the boilerplate and paste this:\u003C\u002Fp>\n\u003Cpre class=\"fmstr-cmp-tmpl-steps__code\">\u003Cspan class=\"fmstr-cmp-tmpl-steps__code-label\">Code.gs\u003C\u002Fspan>const SHEET_NAME = 'Submissions';\nconst SCRIPT_PROP = PropertiesService.getScriptProperties();\n\nfunction initialSetup() {\n  const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();\n  SCRIPT_PROP.setProperty('key', activeSpreadsheet.getId());\n}\n\nfunction doPost(e) {\n  const lock = LockService.getScriptLock();\n  lock.tryLock(10000);\n\n  try {\n    const doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty('key'));\n    const sheet = doc.getSheetByName(SHEET_NAME);\n\n    const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];\n    const nextRow = sheet.getLastRow() + 1;\n\n    \u002F\u002F Honeypot: if a hidden field named \"website\" is filled, drop the submission.\n    if (e.parameter.website) {\n      return ContentService.createTextOutput(JSON.stringify({ result: 'ignored' }))\n        .setMimeType(ContentService.MimeType.JSON);\n    }\n\n    const sanitize = (value) =&gt; {\n      if (typeof value !== 'string') return value;\n      \u002F\u002F Block CSV \u002F formula injection\n      return \u002F^[=+\\-@]\u002F.test(value) ? \"'\" + value : value;\n    };\n\n    const newRow = headers.map((header) =&gt; {\n      if (header === 'timestamp') return new Date();\n      return sanitize(e.parameter[header] || '');\n    });\n\n    sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);\n\n    return ContentService\n      .createTextOutput(JSON.stringify({ result: 'success', row: nextRow }))\n      .setMimeType(ContentService.MimeType.JSON);\n  } catch (err) {\n    return ContentService\n      .createTextOutput(JSON.stringify({ result: 'error', error: err.toString() }))\n      .setMimeType(ContentService.MimeType.JSON);\n  } finally {\n    lock.releaseLock();\n  }\n}\u003C\u002Fpre>\n\u003Cp class=\"fmstr-cmp-tmpl-steps__body\">Save the script. Then in the function dropdown at the top of the editor, pick \u003Ccode>initialSetup\u003C\u002Fcode> and click Run once. Approve the OAuth prompt when Google asks. You will only do this once.\u003C\u002Fp>\n\u003C\u002Fli>\n\n\u003Cli class=\"fmstr-cmp-tmpl-steps__item\">\n\u003Ch3 class=\"fmstr-cmp-tmpl-steps__title\">\u003Cspan class=\"fmstr-cmp-tmpl-steps__num\" aria-hidden=\"true\">3\u003C\u002Fspan>Deploy as a web app\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-steps__body\">Click Deploy, then New deployment. Pick Web app. Set Execute as: Me. Set Who has access: Anyone. Click Deploy. Copy the long URL that ends in \u003Ccode>\u002Fexec\u003C\u002Fcode>. That URL is your form endpoint.\u003C\u002Fp>\n\u003Cdiv class=\"fmstr-cmp-tmpl-steps__note\">\u003Cstrong>Heads-up:\u003C\u002Fstrong> every time you change the script, redeploy and grab the new URL. Old URLs keep working at the old script version, which is the most common cause of \"I updated my code and nothing changed\" complaints.\u003C\u002Fdiv>\n\u003C\u002Fli>\n\n\u003Cli class=\"fmstr-cmp-tmpl-steps__item\">\n\u003Ch3 class=\"fmstr-cmp-tmpl-steps__title\">\u003Cspan class=\"fmstr-cmp-tmpl-steps__num\" aria-hidden=\"true\">4\u003C\u002Fspan>Wire up your HTML form\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-steps__body\">Drop this into your page. Replace \u003Ccode>PASTE_YOUR_DEPLOYMENT_URL_HERE\u003C\u002Fcode> with the URL from step 3.\u003C\u002Fp>\n\u003Cpre class=\"fmstr-cmp-tmpl-steps__code\">\u003Cspan class=\"fmstr-cmp-tmpl-steps__code-label\">index.html\u003C\u002Fspan>&lt;form id=\"contact-form\"&gt;\n  &lt;input type=\"text\" name=\"name\" required placeholder=\"Name\" \u002F&gt;\n  &lt;input type=\"email\" name=\"email\" required placeholder=\"Email\" \u002F&gt;\n  &lt;textarea name=\"message\" required placeholder=\"Message\"&gt;&lt;\u002Ftextarea&gt;\n  &lt;!-- Honeypot: hidden from humans, filled by bots --&gt;\n  &lt;input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\" style=\"position:absolute;left:-9999px\" \u002F&gt;\n  &lt;button type=\"submit\"&gt;Send&lt;\u002Fbutton&gt;\n&lt;\u002Fform&gt;\n\n&lt;script&gt;\n  const form = document.getElementById('contact-form');\n  const endpoint = 'PASTE_YOUR_DEPLOYMENT_URL_HERE';\n\n  form.addEventListener('submit', async (e) =&gt; {\n    e.preventDefault();\n    const data = new FormData(form);\n    try {\n      await fetch(endpoint, { method: 'POST', body: data });\n      form.reset();\n      alert('Thanks. We will be in touch.');\n    } catch (err) {\n      alert('Something went wrong. Try again in a minute.');\n    }\n  });\n&lt;\u002Fscript&gt;\u003C\u002Fpre>\n\u003Cp class=\"fmstr-cmp-tmpl-steps__body\">Submit a test entry. The row should appear in your Sheet within a second.\u003C\u002Fp>\n\u003Cdiv class=\"fmstr-cmp-tmpl-steps__note\">\u003Cstrong>Rate limit to know about:\u003C\u002Fstrong> Google caps the Sheets-backed Apps Script at roughly \u003Ca class=\"fmstr-cmp-tmpl-steps__link\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fsheets\u002Fapi\u002Flimits\">100 requests per 100 seconds per user\u003C\u002Fa>, or one write per second. For a contact form that is plenty. If you expect bursts (a launch, a paid ad campaign), queue submissions or use a builder that handles retries.\u003C\u002Fdiv>\n\u003C\u002Fli>\n\n\u003C\u002Fol>\n\u003C\u002Fdiv>\n\u003C\u002Fsection>\n\n\u003Cstyle>\n.fmstr-cmp-tmpl-midcta a { text-decoration: none !important; }\n.fmstr-cmp-tmpl-midcta { background: transparent; padding: 48px 0; font-family: inherit; color: #101828; overflow-x: hidden; }\n.fmstr-cmp-tmpl-midcta *, .fmstr-cmp-tmpl-midcta *::before, .fmstr-cmp-tmpl-midcta *::after { box-sizing: border-box; }\n.fmstr-cmp-tmpl-midcta__container { max-width: 1200px; margin: 0 auto; }\n.fmstr-cmp-tmpl-midcta__card { width: 100%; background: linear-gradient(135deg, #f7f3ff 0%, #faf7ff 100%); border: 1px solid #e4d7ff; border-radius: 18px; padding: 48px 32px; text-align: center; box-shadow: 0 4px 24px rgba(127, 86, 217, 0.08); }\n.fmstr-cmp-tmpl-midcta__inner { max-width: 760px; margin: 0 auto; }\n.fmstr-cmp-tmpl-midcta__eyebrow { display: inline-block; padding: 4px 12px; background: #ffffff; border: 1px solid #e4d7ff; border-radius: 9999px; color: #5b34b1 !important; font-size: 11.5px !important; font-weight: 700 !important; letter-spacing: 0.06em !important; text-transform: uppercase; margin: 0 0 14px !important; }\n.fmstr-cmp-tmpl-midcta__h2 { font-size: clamp(22px, 3vw, 28px) !important; font-weight: 700 !important; line-height: 1.2 !important; letter-spacing: -0.02em !important; margin: 0 0 12px !important; color: #101828 !important; }\n.fmstr-cmp-tmpl-midcta__body { font-size: 16px !important; line-height: 1.55 !important; color: #475467 !important; margin: 0 0 22px !important; }\n.fmstr-cmp-tmpl-midcta__cta { display: inline-flex !important; align-items: center; gap: 8px; background: #7f56d9 !important; color: #ffffff !important; border: 1px solid #7f56d9 !important; padding: 12px 26px !important; border-radius: 9999px !important; font-size: 15px !important; font-weight: 600 !important; text-decoration: none !important; transition: background .15s ease, transform .15s ease; }\n.fmstr-cmp-tmpl-midcta__cta:hover { background: #6941c6 !important; border-color: #6941c6 !important; color: #ffffff !important; text-decoration: none !important; transform: translateY(-1px); }\n.fmstr-cmp-tmpl-midcta__cta::after { content: \"\\2192\"; transition: transform .15s ease; }\n.fmstr-cmp-tmpl-midcta__cta:hover::after { transform: translateX(2px); }\n.fmstr-cmp-tmpl-midcta__strip { font-size: 13px !important; color: #697586 !important; margin: 20px 0 0 !important; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 6px 14px; width: 100%; }\n.fmstr-cmp-tmpl-midcta__strip span { color: #d6c2f7; }\n@media (max-width: 760px) {\n  .fmstr-cmp-tmpl-midcta__card { padding: 36px 22px; }\n}\n@media (max-width: 540px) {\n  .fmstr-cmp-tmpl-midcta { padding: 32px 0; }\n  .fmstr-cmp-tmpl-midcta__card { padding: 26px 16px; border-radius: 14px; }\n  .fmstr-cmp-tmpl-midcta__h2 { font-size: 20px !important; }\n  .fmstr-cmp-tmpl-midcta__body { font-size: 15px !important; }\n  .fmstr-cmp-tmpl-midcta__cta { padding: 11px 22px !important; font-size: 14.5px !important; width: 100%; justify-content: center; }\n  .fmstr-cmp-tmpl-midcta__strip { font-size: 12.5px !important; gap: 4px 10px; }\n}\n\u003C\u002Fstyle>\n\n\u003Csection class=\"fmstr-cmp-tmpl-midcta\" aria-labelledby=\"fmstr-cmp-tmpl-midcta-h2\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-midcta__container\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-midcta__card\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-midcta__inner\">\n\u003Cspan class=\"fmstr-cmp-tmpl-midcta__eyebrow\">No-code path\u003C\u002Fspan>\n\u003Ch2 class=\"fmstr-cmp-tmpl-midcta__h2\" id=\"fmstr-cmp-tmpl-midcta-h2\">Send HTML form data to Google Sheets, without writing a single line of code\u003C\u002Fh2>\n\u003Cp class=\"fmstr-cmp-tmpl-midcta__body\">Drop in a Formester form, connect Google Sheets, done. Two-way sync, free plan, no script to maintain.\u003C\u002Fp>\n\u003Ca class=\"fmstr-cmp-tmpl-midcta__cta\" href=\"https:\u002F\u002Fapp.formester.com\u002Fusers\u002Fsign_up\" style=\"background: #7f56d9 !important; color: #ffffff !important; border-color: #7f56d9 !important; text-decoration: none !important;\">Start free on Formester\u003C\u002Fa>\n\u003Cp class=\"fmstr-cmp-tmpl-midcta__strip\">Free forever plan\u003Cspan>&bull;\u003C\u002Fspan>No credit card\u003Cspan>&bull;\u003C\u002Fspan>Setup in 2 minutes\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\u003C\u002Fsection>\n\n\u003Cstyle>\n\u002F* host-link-override *\u002F\n.fmstr-cmp-tmpl-faq a { text-decoration: none !important; }\n.fmstr-cmp-tmpl-faq {\n--c-card: #ffffff;\n--c-fg-1: #101828; --c-fg-2: #475467; --c-fg-3: #697586;\n--c-violet-600: #6941c6;\n--c-tint: #f7f3ff; --c-edge: #e4d7ff;\n--c-border: #eaecf0; --c-chip-bg: #f4f4f7;\n--c-shadow: 0 1px 3px rgba(16,24,40,.05);\n\nbackground: transparent; padding: 56px 24px;\nfont-family: inherit;\ncolor: var(--c-fg-1);\ntext-align: left !important; overflow-x: hidden; -webkit-text-size-adjust: 100%;}\n.fmstr-cmp-tmpl-faq *, .fmstr-cmp-tmpl-faq *::before, .fmstr-cmp-tmpl-faq *::after { box-sizing: border-box; }\n.fmstr-cmp-tmpl-faq__container { max-width: 1200px; margin: 0 auto; }\n.fmstr-cmp-tmpl-faq__h2 { font-size: clamp(26px, 3vw, 36px) !important; font-weight: 700 !important; line-height: 1.15 !important; letter-spacing: -.02em !important; margin: 0 !important; color: var(--c-fg-1); text-align: left; }\n.fmstr-cmp-tmpl-faq__intro { color: var(--c-fg-3); font-size: 17px !important; line-height: 1.6 !important; margin: 14px 0 28px !important; text-align: left; }\n.fmstr-cmp-tmpl-faq__list { display: flex; flex-direction: column; gap: 12px; }\n.fmstr-cmp-tmpl-faq__item {\nbackground: var(--c-card); border: 1px solid var(--c-border);\nborder-radius: 14px; box-shadow: var(--c-shadow); overflow: hidden;\n}\n.fmstr-cmp-tmpl-faq__item > summary {\npadding: 18px 22px; cursor: pointer; font-weight: 600; font-size: 16.5px;\ncolor: var(--c-fg-1); display: flex; align-items: center; gap: 14px;\nlist-style: none;\n}\n.fmstr-cmp-tmpl-faq__item > summary::-webkit-details-marker { display: none; }\n.fmstr-cmp-tmpl-faq__item > summary::before {\ncontent: \"\"; width: 28px; height: 28px; border-radius: 8px; flex-shrink: 0;\nbackground-color: var(--c-chip-bg);\nbackground-image: url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' width='14' height='14' viewBox='0 0 14 14' fill='none' stroke='%2375747f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5l4 4 4-4'\u002F%3E%3C\u002Fsvg%3E\");\nbackground-repeat: no-repeat; background-position: center;\ntransition: transform .15s ease, background-color .15s ease;\n}\n.fmstr-cmp-tmpl-faq__item[open] > summary::before { transform: rotate(180deg); background-color: var(--c-tint); }\n.fmstr-cmp-tmpl-faq__item[open] > summary { color: var(--c-violet-600) !important; }\n.fmstr-cmp-tmpl-faq__answer { padding: 0 22px 22px 64px; color: var(--c-fg-2); font-size: 15.5px; line-height: 1.7; }\n.fmstr-cmp-tmpl-faq__answer a { color: var(--c-violet-600) !important; text-decoration: none !important; font-weight: 600; }\n.fmstr-cmp-tmpl-faq__answer a:hover { text-decoration: underline !important; }\n.fmstr-cmp-tmpl-faq__answer code {\nbackground: var(--c-chip-bg); padding: 1px 6px; border-radius: 5px;\nfont-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\nfont-size: 13.5px; color: var(--c-violet-600);\nborder: 1px solid var(--c-border);\n}\n\n@media (max-width: 760px) {\n.fmstr-cmp-tmpl-faq { padding: 40px 16px; }\n.fmstr-cmp-tmpl-faq__intro { font-size: 15.5px !important; text-align: left; }\n.fmstr-cmp-tmpl-faq__item > summary { padding: 16px 16px; font-size: 15.5px; gap: 12px; }\n.fmstr-cmp-tmpl-faq__item > summary::before { width: 26px; height: 26px; }\n.fmstr-cmp-tmpl-faq__answer { padding: 0 16px 18px 16px; font-size: 15px; line-height: 1.65; }\n}\n\n\n\u002F* mobile-safety-v2 *\u002F\n.fmstr-cmp-tmpl-faq img, .fmstr-cmp-tmpl-faq table, .fmstr-cmp-tmpl-faq pre, .fmstr-cmp-tmpl-faq iframe, .fmstr-cmp-tmpl-faq video { max-width: 100%; }\n.fmstr-cmp-tmpl-faq > * { min-width: 0; }\n.fmstr-cmp-tmpl-faq [class*='__grid'] > *, .fmstr-cmp-tmpl-faq [class*='__list'] > *, .fmstr-cmp-tmpl-faq [class*='__cards'] > * { min-width: 0; max-width: 100%; }\n@media (max-width: 540px) {\n  .fmstr-cmp-tmpl-faq pre { overflow-x: auto; -webkit-overflow-scrolling: touch; }\n  .fmstr-cmp-tmpl-faq table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }\n}\n\u003C\u002Fstyle>\n\n\u003Csection class=\"fmstr-cmp-tmpl-faq\" aria-labelledby=\"fmstr-cmp-tmpl-faq-h2\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__container\">\n\u003Ch2 class=\"fmstr-cmp-tmpl-faq__h2\" id=\"fmstr-cmp-tmpl-faq-h2\">Frequently asked questions\u003C\u002Fh2>\n\u003Cp class=\"fmstr-cmp-tmpl-faq__intro\">Common questions about routing HTML form data into Google Sheets for free.\u003C\u002Fp>\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__list\">\n\n\u003Cdetails class=\"fmstr-cmp-tmpl-faq__item\">\n\u003Csummary>Is it really free to send HTML form data to Google Sheets?\u003C\u002Fsummary>\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__answer\">Yes. Google Apps Script is free with any Google account, with the rate limit of one Sheets write per second per user. Google Forms is free. Formester's free plan includes unlimited submissions. You only start paying when your volume crosses Google's API quota or a builder's free-plan cap.\u003C\u002Fdiv>\n\u003C\u002Fdetails>\n\n\u003Cdetails class=\"fmstr-cmp-tmpl-faq__item\">\n\u003Csummary>How secure is form data in Google Sheets?\u003C\u002Fsummary>\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__answer\">Google encrypts data at rest and in transit. The risk is in sharing and CSV injection, not the storage. Lock down sharing to specific accounts, do not share by link, neutralize formula characters on input (the script above does this), and never use a Sheet for payment data or passwords.\u003C\u002Fdiv>\n\u003C\u002Fdetails>\n\n\u003Cdetails class=\"fmstr-cmp-tmpl-faq__item\">\n\u003Csummary>What is the rate limit on Apps Script writes to Sheets?\u003C\u002Fsummary>\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__answer\">Roughly 100 requests per 100 seconds per user, per Google's published quotas. For a contact form that allows a sustained one submission per second, with bursts handled by retries.\u003C\u002Fdiv>\n\u003C\u002Fdetails>\n\n\u003Cdetails class=\"fmstr-cmp-tmpl-faq__item\">\n\u003Csummary>Can I send file uploads from the form into Google Sheets?\u003C\u002Fsummary>\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__answer\">Sheets cannot hold a file, but it can hold a link. With Apps Script, you can write the file to Google Drive and write the Drive URL into the cell. With a no-code builder, the \u003Ca href=\"https:\u002F\u002Fformester.com\u002Ffeatures\u002F\">file upload field in Formester\u003C\u002Fa> handles this and stores the file separately.\u003C\u002Fdiv>\n\u003C\u002Fdetails>\n\n\u003Cdetails class=\"fmstr-cmp-tmpl-faq__item\">\n\u003Csummary>How do I add CAPTCHA or spam protection?\u003C\u002Fsummary>\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__answer\">The script above includes a honeypot field. For more, add Google reCAPTCHA v3 on the client and verify the token server-side before writing to the Sheet. Builders ship CAPTCHA, rate limiting, and IP blocks as a toggle.\u003C\u002Fdiv>\n\u003C\u002Fdetails>\n\n\u003Cdetails class=\"fmstr-cmp-tmpl-faq__item\">\n\u003Csummary>How do I get an email when someone submits the form?\u003C\u002Fsummary>\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__answer\">Add \u003Ccode>MailApp.sendEmail({ to: 'you@example.com', subject: 'New form submission', body: JSON.stringify(e.parameter) })\u003C\u002Fcode> inside the \u003Ccode>doPost\u003C\u002Fcode> function in the script. Or use the \u003Ca href=\"https:\u002F\u002Fformester.com\u002Ffeatures\u002Fautoresponder-email\u002F\">autoresponder feature\u003C\u002Fa> in Formester and skip the code.\u003C\u002Fdiv>\n\u003C\u002Fdetails>\n\n\u003Cdetails class=\"fmstr-cmp-tmpl-faq__item\">\n\u003Csummary>Can I use this on Netlify, Vercel, or any static site?\u003C\u002Fsummary>\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__answer\">Yes. The Apps Script deployment URL is just a \u003Ccode>fetch\u003C\u002Fcode> target. It works from any frontend, hosted anywhere, with no backend on your side.\u003C\u002Fdiv>\n\u003C\u002Fdetails>\n\n\u003Cdetails class=\"fmstr-cmp-tmpl-faq__item\">\n\u003Csummary>Can I move from this setup to a database later?\u003C\u002Fsummary>\n\u003Cdiv class=\"fmstr-cmp-tmpl-faq__answer\">Easily. Sheets is a great starter store. When you cross a few hundred submissions a week, route the same form to a database or CRM in parallel with the Sheet. Most CRMs ship a Google Sheets sync, so you can keep the Sheet for the team and the CRM for the system of record.\u003C\u002Fdiv>\n\u003C\u002Fdetails>\n\n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\u003C\u002Fsection>\n\n\n\u003Cstyle>\n\u002F* host-link-override *\u002F\n.fmstr-cmp-tmpl-rel a { text-decoration: none !important; }\n.fmstr-cmp-tmpl-rel {\n--c-card: #ffffff;\n--c-fg-1: #101828; --c-fg-2: #475467; --c-fg-3: #697586;\n--c-violet-500: #7f56d9; --c-violet-600: #6941c6;\n--c-tint: #f7f3ff; --c-edge: #e4d7ff;\n--c-border: #eaecf0;\n--c-shadow: 0 4px 20px rgba(16,24,40,.06);\n\nbackground: transparent;\npadding: 56px 24px;\nfont-family: inherit;\ncolor: var(--c-fg-1);\ntext-align: left !important; overflow-x: hidden; -webkit-text-size-adjust: 100%;}\n.fmstr-cmp-tmpl-rel *, .fmstr-cmp-tmpl-rel *::before, .fmstr-cmp-tmpl-rel *::after { box-sizing: border-box; }\n.fmstr-cmp-tmpl-rel__container { max-width: 1200px; margin: 0 auto; }\n.fmstr-cmp-tmpl-rel__head { margin: 0 0 28px !important; text-align: left; }\n.fmstr-cmp-tmpl-rel__h2 { font-size: clamp(26px, 3vw, 36px) !important; font-weight: 700 !important; line-height: 1.15 !important; letter-spacing: -.02em !important; margin: 0 !important; color: var(--c-fg-1); text-align: left; }\n.fmstr-cmp-tmpl-rel__intro { color: var(--c-fg-3); font-size: 17px !important; line-height: 1.6 !important; margin: 14px 0 0 !important; text-align: left; }\n\n.fmstr-cmp-tmpl-rel__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }\n.fmstr-cmp-tmpl-rel__card {\nbackground: var(--c-card); border: 1px solid var(--c-border);\nborder-radius: 14px; padding: 20px 22px; display: flex; flex-direction: column; gap: 8px;\ntext-decoration: none !important; color: inherit !important; transition: all .15s ease;\nposition: relative;\n}\n.fmstr-cmp-tmpl-rel__card:hover { border-color: var(--c-edge); box-shadow: var(--c-shadow); transform: translateY(-1px); }\n.fmstr-cmp-tmpl-rel__chip {\ndisplay: inline-block; padding: 3px 10px; border-radius: 9999px;\nbackground: var(--c-tint); border: 1px solid var(--c-edge);\ncolor: var(--c-violet-600); font-size: 11.5px; font-weight: 600; letter-spacing: .02em;\ntext-transform: uppercase; align-self: flex-start;\nmargin-bottom: 2px;\n}\n.fmstr-cmp-tmpl-rel__title {\nfont-size: 16px !important; font-weight: 700 !important; color: var(--c-fg-1); margin: 0 !important; line-height: 1.3 !important; text-align: left; }\n.fmstr-cmp-tmpl-rel__body { font-size: 14.5px !important; line-height: 1.55 !important; color: var(--c-fg-2); margin: 0 !important; }\n.fmstr-cmp-tmpl-rel__arrow {\nmargin-top: 6px; color: var(--c-violet-600); font-size: 14px; font-weight: 600;\ndisplay: inline-flex; align-items: center; gap: 6px;\n}\n.fmstr-cmp-tmpl-rel__arrow::after {\ncontent: \"\\2192\"; transition: transform .15s ease; display: inline-block;\n}\n.fmstr-cmp-tmpl-rel__card:hover .fmstr-cmp-tmpl-rel__arrow::after { transform: translateX(3px); }\n\n@media (max-width: 880px) { .fmstr-cmp-tmpl-rel__grid { grid-template-columns: 1fr 1fr; gap: 14px; } }\n@media (max-width: 540px) {\n.fmstr-cmp-tmpl-rel { padding: 40px 16px; }\n.fmstr-cmp-tmpl-rel__grid { grid-template-columns: 1fr; gap: 12px; }\n.fmstr-cmp-tmpl-rel__card { padding: 18px 20px; }\n}\n\n\n\u002F* mobile-safety-v2 *\u002F\n.fmstr-cmp-tmpl-rel img, .fmstr-cmp-tmpl-rel table, .fmstr-cmp-tmpl-rel pre, .fmstr-cmp-tmpl-rel iframe, .fmstr-cmp-tmpl-rel video { max-width: 100%; }\n.fmstr-cmp-tmpl-rel > * { min-width: 0; }\n.fmstr-cmp-tmpl-rel [class*='__grid'] > *, .fmstr-cmp-tmpl-rel [class*='__list'] > *, .fmstr-cmp-tmpl-rel [class*='__cards'] > * { min-width: 0; max-width: 100%; }\n@media (max-width: 540px) {\n  .fmstr-cmp-tmpl-rel pre { overflow-x: auto; -webkit-overflow-scrolling: touch; }\n  .fmstr-cmp-tmpl-rel table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }\n}\n\u003C\u002Fstyle>\n\n\u003Csection class=\"fmstr-cmp-tmpl-rel\" aria-labelledby=\"fmstr-cmp-tmpl-rel-h2\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-rel__container\">\n\u003Cdiv class=\"fmstr-cmp-tmpl-rel__head\">\n\u003Ch2 class=\"fmstr-cmp-tmpl-rel__h2\" id=\"fmstr-cmp-tmpl-rel-h2\">More on connecting forms to Google Sheets\u003C\u002Fh2>\n\u003Cp class=\"fmstr-cmp-tmpl-rel__intro\">More on connecting forms to Google Sheets, building APIs around them, and picking the right builder.\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003Cdiv class=\"fmstr-cmp-tmpl-rel__grid\">\n\n\u003Ca class=\"fmstr-cmp-tmpl-rel__card\" href=\"https:\u002F\u002Fformester.com\u002Fblog\u002Fbest-form-builders-compatible-with-google-sheets\u002F\">\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__chip\">Listicle\u003C\u002Fspan>\n\u003Ch3 class=\"fmstr-cmp-tmpl-rel__title\">Best form builders compatible with Google Sheets\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-rel__body\">Side-by-side on price, sync mode, and field mapping.\u003C\u002Fp>\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__arrow\">Read\u003C\u002Fspan>\n\u003C\u002Fa>\n\n\u003Ca class=\"fmstr-cmp-tmpl-rel__card\" href=\"https:\u002F\u002Fformester.com\u002Fblog\u002Fhow-to-link-google-sheets-to-google-forms\u002F\">\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__chip\">How-to\u003C\u002Fspan>\n\u003Ch3 class=\"fmstr-cmp-tmpl-rel__title\">How to link Google Sheets to Google Forms\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-rel__body\">The 2-minute setup for the Google Forms route.\u003C\u002Fp>\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__arrow\">Read\u003C\u002Fspan>\n\u003C\u002Fa>\n\n\u003Ca class=\"fmstr-cmp-tmpl-rel__card\" href=\"https:\u002F\u002Fformester.com\u002Fblog\u002Fhow-to-pre-fill-forms-using-google-sheets-and-formester\u002F\">\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__chip\">How-to\u003C\u002Fspan>\n\u003Ch3 class=\"fmstr-cmp-tmpl-rel__title\">Pre-fill forms using Google Sheets and Formester\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-rel__body\">Reverse the flow: pull Sheet data into a form before it loads.\u003C\u002Fp>\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__arrow\">Read\u003C\u002Fspan>\n\u003C\u002Fa>\n\n\u003Ca class=\"fmstr-cmp-tmpl-rel__card\" href=\"https:\u002F\u002Fformester.com\u002Fblog\u002Fhow-to-link-squarespace-forms-to-google-sheets\u002F\">\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__chip\">How-to\u003C\u002Fspan>\n\u003Ch3 class=\"fmstr-cmp-tmpl-rel__title\">How to link Squarespace forms to Google Sheets\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-rel__body\">Same idea, scoped to a Squarespace site.\u003C\u002Fp>\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__arrow\">Read\u003C\u002Fspan>\n\u003C\u002Fa>\n\n\u003Ca class=\"fmstr-cmp-tmpl-rel__card\" href=\"https:\u002F\u002Fformester.com\u002Fintegrations\u002F\">\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__chip\">Formester\u003C\u002Fspan>\n\u003Ch3 class=\"fmstr-cmp-tmpl-rel__title\">Google Sheets integration\u003C\u002Fh3>\n\u003Cp class=\"fmstr-cmp-tmpl-rel__body\">Native sync with OAuth, header mapping, and retries handled.\u003C\u002Fp>\n\u003Cspan class=\"fmstr-cmp-tmpl-rel__arrow\">Open\u003C\u002Fspan>\n\u003C\u002Fa>\n\n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\u003C\u002Fsection>\n\n\n","blog\u002Fblog\u002Fhow-to-send-contact-form-data-to-google-sheets-free.md",{"text":175},"9 min read",{"title":177,"author":7,"authorImage":8,"authorProfile":9,"coverImg":178,"coverImgAlt":179,"createdAt":180,"description":181,"featured":14,"jsonld":182,"keywords":183,"metaDescription":184,"metaImage":185,"metaTitle":186,"publishedAt":187,"slug":188,"updatedAt":189,"__hash__":190,"body":191,"id":192,"coverImgWidth":25,"coverImgHeight":26,"readingStats":193},"How to create conversational forms for your websites?","https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Fa_blog_post_cover_about_conversational_forms_c6e3ceb7ac.png","a blog post cover about conversational forms","2025-08-25T02:16:28.704Z","Turn long, boring forms into interactive conversations. Discover how to build conversational forms for your website that capture more responses with ease.",[],"form builders,\nuser experience,\nprogress bars,\ncompletion rates,\ncustomizing options,\nconversational forms,\ncard style form,","Learn how to create conversational forms that reduce form abandonment, engage users like a chat, and boost conversions on your website.",[],"How to create conversational forms for your websites","2025-08-25T02:18:10.923Z","how-to-create-conversational-forms-for-your-website","2025-12-01T12:22:43.972Z","EHKENlNCPRbA-Iw3Gr_I4DGW7jprt2zDFWJzj5ze1nA","\u003Ciframe width=\"100%\" height=\"315\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FK0yLhsVQDLE?si=XjyFJu11UsfKp0Fp\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen>\u003C\u002Fiframe>\n\nAre you dealing with **high drop-off rates** in your forms and surveys? You’re not alone. Many businesses face the same problem. The reason is simple: forms are often too long, too generic, and too boring.\n\nWhen users feel overwhelmed by endless questions, they abandon the form halfway through. That means lost leads, fewer conversions, and wasted opportunities.\n\nThe solution? **Conversational forms.**\n\nUnlike static forms, conversational forms guide users through one question at a time in a **card style form layout**. They feel interactive, personal, and engaging. This creates a better user experience, which directly improves completion rates. \n\n## How to Build a Conversational Form?\nFollow the steps below to create highly engaging forms in Formester.\n\n### Step 1: Create Your Form in Formester\n![a screenshot of Formester's AI form builder](https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Fa_screenshot_of_Formester_s_AI_form_builder_eb651c7d3d.png)\n\n**You can start in two ways:**\n\n**[AI Form Builder](\u002Fai-form-generator\u002F)**: Simply describe the type of form you want — for example, job application or customer feedback. Within seconds, Formester’s AI will generate a complete form for you.\n\nImport Existing Form: Already have a form? Just bring it into Formester to transform it into a conversational experience.\n\nOnce your form is ready, review the fields. Ensure you include everything you need. If not, open the Add Elements tab and insert new questions or input fields.\n\n### Step 2: Turn It Into a Conversation\n![a screenshot of converting long form into conversational form in Formester](https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Fa_screenshot_of_converting_long_form_into_conversational_form_in_Formester_1be43f6871.png)\n\n**Here’s where the magic happens.**\n\nClick the three dots on the page title and select **One field per page**. This breaks down your form into a card style flow where users see only one question at a time. It feels less like a chore and more like a conversation.\n\nTo boost engagement further, you can add visuals. Insert images on each page, align them to the left, right, or even use them as a background. Pair this with progress bars to help users always know how far they’ve come and how much is left. This small addition helps improve completion rates because it reduces uncertainty.\n\n### Step 3: Personalize with Information Recall\n![a screenshot of Formester's information recall feature](https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Fa_screenshot_of_Formester_s_information_recall_feature_3496179e0f.png)\n\nStatic forms ask questions without context. Conversational forms, on the other hand, can remember and reuse previous answers.\n\nFormester allows you to use the **@ symbol** inside labels and descriptions to **[recall earlier inputs](\u002Ffeatures\u002Finformation-recall\u002F)**. **For example:**\n\nIf someone enters their name as **Harish**, the next question can say:\n\n >“Thanks, Harish. Can you tell us more about your goals?”\n\nThis small touch creates a natural, human-like flow. You can recall details like name, email, company, or preferences. It makes the form feel like it’s speaking directly to the user, which keeps them engaged until the end.\n\n### Step 4: Apply Conditional Logic\n![a screenshot of Formester's conditional logic feature](https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Fa_screenshot_of_Formester_s_conditional_logic_feature_30b1b6fa92.png)\n\nThe next step is to make your form smart. With **[conditional logic](\u002Fblog\u002Fwhat-is-conditional-logic-how-to-use-it\u002F)**, you can show or hide follow-up questions in real time.\n\n**Here’s an example:**\n\n>If someone selects “Yes, I own a business,” show them more questions about their company.\n\n>If they select “No,” skip those questions and move on.\n\nThis way, every user only sees what’s relevant to them. The form feels shorter, more personal, and less overwhelming, reducing drop-offs dramatically.\n\n**To set this up in Formester:**\n\n- Go to Advanced > Rules\n\n- Click Add New Rule\n\n- Choose the question for your “if” statement\n\n- Set the condition\n\n- Define what should happen next\n\nThat’s it. Your form now adapts in real time to each user.\n\n### Step 5: Customize, Publish, and Share\n\n**Now comes the fun part**. In Formester, you can tweak colors, layouts, fonts, and **background images** to align the form with your brand. These design details may seem small, but they really enhance the user experience. They also encourage users to finish their journey.\n\nOnce your chat form is ready, you can put it on your website. You can also share the link directly or add it to landing pages. Your form is now made to keep people interested until the end. It helps you capture leads, **collect feedback**, and qualify prospects.\n\n### Final Thoughts\nLong, boring forms are conversion killers. But with conversational forms, you turn that frustrating process into a dynamic, engaging interaction. By using card style forms, progress bars, and customization options, you create a smooth user experience. This helps increase completion rates and reduce abandonment.\n\nWith Formester, you can make forms in minutes using AI. You can personalize them with information recall.\n\nYou can also add smart features with conditional logic. The result? Fewer drop-offs, more completions, and happier users.\n\nReady to try it yourself? Build your first conversational form with **[Formester today](https:\u002F\u002Fapp.formester.com\u002Fusers\u002Fsign_up)**.\n","blog\u002Fblog\u002Fhow-to-create-conversational-forms-for-your-website.md",{"text":28},{"title":195,"author":7,"authorImage":8,"authorProfile":9,"coverImg":196,"coverImgAlt":197,"createdAt":198,"description":199,"featured":14,"jsonld":200,"keywords":201,"metaDescription":202,"metaImage":203,"metaTitle":204,"publishedAt":205,"slug":206,"updatedAt":207,"__hash__":208,"body":209,"id":210,"coverImgWidth":25,"coverImgHeight":26,"readingStats":211},"The Easiest Way to Share Google Forms in 2025","https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Fa_blog_post_cover_about_how_to_share_google_form_1f80ec4721.png","a blog post cover about how to share google form","2025-10-24T04:25:32.159Z","Learn the fastest ways to share Google Forms in 2025. Discover links, embedding, email sharing, and a better alternative with custom URLs, QR codes, and plugins.",[],"how to share google forms,\nhow to share google form 2025,","Learn the easiest ways to share Google Forms in 2025. Discover links, embedding, email sharing, and a better alternative with custom URLs, QR codes, and plugins.",[]," How to Share Google Forms Easily in 2025","2025-10-24T04:25:34.207Z","how-to-share-google-form","2025-10-24T04:25:34.212Z","jztb6MbsgTO4LcL2hRS26pIvjZbUS1ZfX9ifaRRR5ik","![a blog post cover about how to share google form](https:\u002F\u002Fformester-strapi.s3.ap-south-1.amazonaws.com\u002Fa_blog_post_cover_about_how_to_share_google_form_1f80ec4721.png)\n\n**Google Forms** is a great tool for creating **[surveys](\u002Ftemplates\u002Fcategories\u002Fsurvey-forms\u002F)**, quizzes, registration forms, and collecting feedback. It’s simple to use, free, and works for almost any type of form. But sometimes, sharing your form so people actually respond can feel tricky.\n\nIn this guide, we’ll cover the easiest ways to share your Google Forms so you can get responses faster and with less hassle.\n\n### 1. Share Your Form via Link\n\nThe simplest way to share a Google Form is by using a link.\n\n- Open your form and click the **Send** button in the top right corner.  \n- Copy the link provided. You can also shorten the link to make it easier to share.  \n- Paste the link anywhere; emails, blogs, social media posts, or chat apps.  \n\nThis method is perfect for a quick and simple way to reach anyone online. People can open the link and start submitting responses immediately without extra steps.\n\n### 2. Embed the Form on Your Website\n\nIf you want people to fill out your form directly on your website, **[embedding](\u002Fblog\u002Fhow-to-embed-a-google-form\u002F)** it is the best option.\n\n- Click the **Send** button, then choose the **embed code** option.  \n- Copy the HTML code provided.  \n- Paste the code into your website editor or page builder.  \n\nEmbedding your form keeps people on your page and gives a more professional look. It works great for blogs, landing pages, or business sites where you want to keep visitors engaged.\n\n### 3. Send the Form Directly via Email\n\nYou can also send your Google Form straight to people’s inboxes:\n\n- Click the **email icon** in the Send menu.  \n- Enter the email addresses of your recipients.  \n- Add a custom message if you like and hit **Send**.  \n\nThis method is great if you have a list of respondents. It helps you keep everything organized in Gmail or Google Workspace.\n\n### Bonus Tip: Control Responses and Track Submissions\n\nGoogle Forms lets you manage who can respond and track responses:\n\n- Limit responses to specific people or email addresses.  \n- Allow only one response per person.  \n- Set deadlines for submissions.  \n\nThese settings help you collect data more efficiently and avoid messy or duplicate responses.\n\n### Why Google Forms Can Be Limiting\n\nGoogle Forms is great for simple surveys and quizzes. However, it can feel limited if you want more control over how your audience uses your forms. You can’t easily create custom URLs, QR codes, or integrate with website builders directly.\n\n### A Better Alternative: Formester\n\nFormester is a free **[Google Forms alternative](\u002Fblog\u002Fwhy-formester-is-the-best-google-forms-alternative\u002F)** that solves these problems:\n\n- Create **[custom form URLs](\u002Ffeatures\u002Fcustom-subdomains-for-form-url\u002F)** for easy sharing.  \n- Generate **QR codes** so people can fill forms with a quick scan.  \n- Use dedicated apps and plugins for popular platforms like **WordPress** and **Squarespace**.  \n\nFormester makes creating, sharing, and managing forms faster and more professional. It gives you complete control over your audience's experience. It can also boost your response rates compared to Google Forms.\n\n### Final Thoughts\n\nSharing your Google Form in 2025 doesn’t have to be complicated.\n\n- Use a **link** for quick sharing.  \n- **Embed** it on your website for a professional touch.  \n- Send it via **email** for targeted audiences.  \n- Use settings to **control responses and deadlines**.  \n\nIf you want more features, flexibility, and professional tools, consider trying **[Formester](\u002F)**. Following these methods will save you time and make sure your form reaches the right people effectively.\n\n","blog\u002Fblog\u002Fhow-to-share-google-form.md",{"text":212},"3 min read",1788363426223]