https://blocks.md Integrate into product blocks.md (The Software) is a JavaScript library that takes your Markdown files and turns them into forms and web pages. Since it is a library that can be installed via npm, you can integrate it into your product. In that case, you need an Enterprise license. What is not an integration? If you're using The Software to just create forms and web pages (no matter where they are hosted), you are not integrating into your product. For example, your company may choose to run a survey or gather customer feedback. These are examples of usage that are not integrations. In such cases, you only need a Standard or Multisite license. What is an integration? If your user is interacting with The Software and not just with the output created with it (forms and pages), then it is a possible integration. For example, if you are a SaaS that allows your customers to build forms, and those forms are built using The Software, then that's an integration into your product. In most cases, common sense should suffice. However, if you have any questions, please send us an email or book a call. blocks.md logo blocks.md logo Buy * Pricing * Docs * How to use * G-Sheets integration * Follow * Star ... Markdown to amazing forms and web pages blocks.md is a tool that takes your Markdown files and turns them into forms and web pages that are beautiful, customizable, accessible, and fully localizable. Get started Watch video Markdown Copy name* = TextInput( | question = What is your name? | description = Let's get started with the survey. First, please tell us your full legal name according to your passport. ) --- # Hey {$ name $} It's a **pleasure** to meet you. Let us continue. --- email* = EmailInput( | question = What is your email address? | description = Please enter an email address where we can reach you for a reply. Make sure to avoid spelling mistakes. ) Logic jumps and page progress Add -> {condition} to a slide to conditionally show it, that is, the slide will be shown to the user only if the jump condition is true. This is called a logic jump. Also use |> {percentage|fraction} to show page progress on top. This inidicates how much of the form has been completed so far. Further reading: Slides - Docs Markdown Copy specialty* = ChoiceInput( | question = What is your specialty? | description = This will help us with your placement on our team. | choices = Back-end, Front-end, Full-stack ) --- -> specialty == "Back-end" |> 50% At this stage, we're only hiring engineers who have front-end expertise. Sorry for the inconvenience. --- -> specialty == "Front-end" or specialty == "Full-stack" |> 1/2 expertise* = SelectBox( | question = What is your level of expertise? | description = Choose the level of experience you have in the industry. Again, this will help with your placement. | options = Junior, Mid-level, Senior ) Send full and partial responses to your server or Google Sheets Set the #! post-url = {url} setting to send form responses to that URL using a POST request. There's also an incredibly useful integration that lets you send responses directly to Google Sheets. Responses are sent to the {url} when the user reaches the end slide. Partial submissions are also supported. Add >> post (case insensitive) to a slide to enable partial submission up to that slide, that is, when a user completes this slide and goes to the next one, all the form data up to that slide will be sent to the URL you set in the setting. See video example. Further reading: Send responses - Docs Markdown Copy #! post-url = {url} >> post phone* = TelInput( | question = What is your phone number? | description = This will allow us to get in touch and fulfill your order. Make sure the number is correct. ) --- products* = PictureChoice( | question = What products would you like? | choices = T-Shirts && https://res.cloudinary.com/dnriuttuy/image/upload/v1720015194/tshirts.png, Socks && https://res.cloudinary.com/dnriuttuy/image/upload/v1720015163/socks.png | multiple ) Collect data of all types Use different types of inputs to collect all the data you need, ranging from basic types like text, email, and choice inputs to advanced types such as rating, opinion scales (including Net Promoter Score^(r)), etc. More advanced fields are being worked on currently, particularly date time input, file/image upload, payments, etc. Further reading: Form fields - Docs Markdown Copy rating* = RatingInput( | question = How would you rate your experience? | description = Rate your shopping experience so far. This will help us improve our service in the future. ) --- -> rating >= 4 # Thank you! Thanks for rating us so positively. Your support is greatly appreciated by our entire team. --- opinion* = OpinionScale( | question = How likely are you to recommend our product to a friend or colleague? ) Class names and attributes Add class names and other attributes (such as IDs, WAI-ARIA tags, etc.) to any block-level element by putting them inside [...] and placing this at the very start of the element's syntax. IDs start with #, class names start with ., and other attributes can be added as-is, for example, style="...". A lot of CSS utility classes are included by default, but you can also easily use Tailwind CSS (or any other similar framework) if you need more control. Further reading: Class names and attributes - Docs Markdown Copy # [#title .anchored] Company profile [style="font-size: 17px;"] Welcome to our company profile where you can find out about our values, offices, and the services we provide. - [.col-6 .xs:col-6 .list-inside] - Mission - Office guide 0. [.col-6 .xs:col-6 .list-inside] 1. London 2. New York [.col-6 .mt-3] email* = EmailInput( | question = Subscribe | subfield | fieldSize = sm ) Data-binding, content division and content span Create wrapping