> For the complete documentation index, see [llms.txt](https://docs.klai.studio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.klai.studio/reference.md).

# Reference

- [Site Settings](https://docs.klai.studio/reference/site-settings.md)
- [Navigation](https://docs.klai.studio/reference/site-settings/navigationoverview.md)
- [App Model](https://docs.klai.studio/reference/site-settings/app-model.md): The App Model functions similar to a page's data model, except that it is accessible to every page in your site. You can also reference data in the App Model from elements that are not bound to a page
- [DOM Header Insertions](https://docs.klai.studio/reference/site-settings/dom-header-insertions.md): This are is used to add third part code into your app.
- [Global Named Actions](https://docs.klai.studio/reference/site-settings/site-wide-named-actions.md)
- [Site Structure](https://docs.klai.studio/reference/site-settings/site-structure.md): Klai Studio app's do have some small opinionated design elements. Understanding the undunderlying structure will help you to design better apps.
- [Slots / Code Injection](https://docs.klai.studio/reference/site-settings/slots-code-injection.md): Reference for BetterForms slot names and where each slot renders in the app UI.
- [Page Settings](https://docs.klai.studio/reference/form-settings.md)
- [Data Model](https://docs.klai.studio/reference/form-settings/data-model.md)
- [Card / Window Modals](https://docs.klai.studio/reference/form-settings/card-modals.md): Card modals display other pages as their content.
- [Validation](https://docs.klai.studio/reference/form-settings/validationoverview.md)
- [Custom Validators](https://docs.klai.studio/reference/form-settings/validationoverview/clientside.md)
- [SEO Meta Tags](https://docs.klai.studio/reference/form-settings/seo-meta-tags.md)
- [Misc Page Settings](https://docs.klai.studio/reference/form-settings/misc-page-settings.md)
- [Page Elements](https://docs.klai.studio/reference/components-overview.md)
- [App Layout Overview](https://docs.klai.studio/reference/components-overview/copy-of-site-structure.md): Quick pointer to the canonical BetterForms app layout overview.
- [BetterForms Elements](https://docs.klai.studio/reference/components-overview/betterforms-elements.md)
- [Checkbox](https://docs.klai.studio/reference/components-overview/betterforms-elements/checkbox.md)
- [Checklist](https://docs.klai.studio/reference/components-overview/betterforms-elements/checklist.md)
- [Cleave.js Input Masking](https://docs.klai.studio/reference/components-overview/betterforms-elements/cleave.md)
- [DateTime Picker](https://docs.klai.studio/reference/components-overview/betterforms-elements/datetimepicker.md)
- [Google Address Autocomplete](https://docs.klai.studio/reference/components-overview/betterforms-elements/googleaddress.md)
- [Image Display Element](https://docs.klai.studio/reference/components-overview/betterforms-elements/image.md)
- [Input](https://docs.klai.studio/reference/components-overview/betterforms-elements/input.md)
- [Masked Input](https://docs.klai.studio/reference/components-overview/betterforms-elements/masked.md)
- [Range Slider (noUiSlider)](https://docs.klai.studio/reference/components-overview/betterforms-elements/nouislider.md)
- [Radios](https://docs.klai.studio/reference/components-overview/betterforms-elements/radios.md)
- [Select](https://docs.klai.studio/reference/components-overview/betterforms-elements/select.md)
- [Advanced Select (selectEx)](https://docs.klai.studio/reference/components-overview/betterforms-elements/selectex.md)
- [TextArea](https://docs.klai.studio/reference/components-overview/betterforms-elements/textarea.md)
- [Common](https://docs.klai.studio/reference/components-overview/common.md)
- [Input](https://docs.klai.studio/reference/components-overview/common/input.md)
- [Button](https://docs.klai.studio/reference/components-overview/common/button.md)
- [Data Table](https://docs.klai.studio/reference/components-overview/common/tables2.md)
- [HTML](https://docs.klai.studio/reference/components-overview/common/html.md)
- [Grouping Elements](https://docs.klai.studio/reference/components-overview/grouping-elements.md)
- [Tabs](https://docs.klai.studio/reference/components-overview/grouping-elements/tabs_form.md): Organize complex forms using a standard tab element
- [Panel](https://docs.klai.studio/reference/components-overview/grouping-elements/panel.md)
- [accordion](https://docs.klai.studio/reference/components-overview/grouping-elements/accordion.md)
- [accordion2](https://docs.klai.studio/reference/components-overview/grouping-elements/accordion-1.md)
- [listrows](https://docs.klai.studio/reference/components-overview/grouping-elements/listrows.md)
- [Uploading Files](https://docs.klai.studio/reference/components-overview/uploading-files.md)
- [dropzone](https://docs.klai.studio/reference/components-overview/uploading-files/dropzone.md)
- [dropzone to S3](https://docs.klai.studio/reference/components-overview/uploading-files/dropzone-to-s3.md): How to use the dropzone element to upload files directly to an AWS S3 bucket.
- [uploadCare](https://docs.klai.studio/reference/components-overview/uploading-files/uploadcare.md)
- [Uppy File Upload Widget Integration with AWS S3](https://docs.klai.studio/reference/components-overview/uploading-files/uppy-file-upload-widget-integration-with-aws-s3.md)
- [Misc Elements](https://docs.klai.studio/reference/components-overview/misc-elements.md)
- [Plain Text / Code Editor](https://docs.klai.studio/reference/components-overview/misc-elements/aceeditor.md)
- [signature](https://docs.klai.studio/reference/components-overview/misc-elements/signature.md)
- [fullCalendar](https://docs.klai.studio/reference/components-overview/misc-elements/fullcalendar.md): Implementation of www.fullcalendar.io calendaring component. Component based on https://github.com/CroudTech/vue-fullcalendar
- [rangeSlider](https://docs.klai.studio/reference/components-overview/misc-elements/rangeslider.md)
- [Payment Gateways](https://docs.klai.studio/reference/components-overview/payment-gateways.md)
- [Authorize.net](https://docs.klai.studio/reference/components-overview/payment-gateways/authorize.md)
- [PayPal](https://docs.klai.studio/reference/components-overview/payment-gateways/paypal.md)
- [Stripe](https://docs.klai.studio/reference/components-overview/payment-gateways/stripe.md)
- [Adding Custom Page Elements](https://docs.klai.studio/reference/components-overview/3rd-party-elements.md)
- [Actions Processor](https://docs.klai.studio/reference/actions-processor.md)
- [Named Actions (Action Scripts)](https://docs.klai.studio/reference/actions-processor/actions_named.md)
- [Actions](https://docs.klai.studio/reference/actions-processor/actions_overview.md)
- [runUtilityHook](https://docs.klai.studio/reference/actions-processor/actions_overview/runutilityhook.md)
- [path](https://docs.klai.studio/reference/actions-processor/actions_overview/path.md)
- [debounce](https://docs.klai.studio/reference/actions-processor/actions_overview/debounce.md): Ver +bf-0.01.4
- [throttle](https://docs.klai.studio/reference/actions-processor/actions_overview/throttle.md): Ver +bf-0.01.4
- [showAlert](https://docs.klai.studio/reference/actions-processor/actions_overview/showalert.md)
- [showModal / hideModal](https://docs.klai.studio/reference/actions-processor/actions_overview/showmodal.md): Displays a full screen modal dialogue with customizable buttons
- [function](https://docs.klai.studio/reference/actions-processor/actions_overview/function-1.md)
- [clipboard](https://docs.klai.studio/reference/actions-processor/actions_overview/clipboard.md)
- [cookie](https://docs.klai.studio/reference/actions-processor/actions_overview/cookie.md)
- [setFocus](https://docs.klai.studio/reference/actions-processor/actions_overview/setfocus.md)
- [scrollTo](https://docs.klai.studio/reference/actions-processor/actions_overview/scrollto.md)
- [wait](https://docs.klai.studio/reference/actions-processor/actions_overview/wait.md): pause the actions queue for an amount of time specified
- [emit](https://docs.klai.studio/reference/actions-processor/actions_overview/emit.md)
- [validate](https://docs.klai.studio/reference/actions-processor/actions_overview/validate.md)
- [channelJoinAnon](https://docs.klai.studio/reference/actions-processor/actions_overview/channeljoinanonymous.md): Adds user to anonymous channel
- [channelLeaveAnon](https://docs.klai.studio/reference/actions-processor/actions_overview/channelleaveanon.md): Removes user from anonymous channel
- [messageSend](https://docs.klai.studio/reference/actions-processor/actions_overview/messagesend.md)
- [messageSendAnonChannel](https://docs.klai.studio/reference/actions-processor/actions_overview/messagesendanonchannel.md)
- [consoleError](https://docs.klai.studio/reference/actions-processor/actions_overview/consoleerror.md)
- [showStripeCheckout](https://docs.klai.studio/reference/actions-processor/actions_overview/showstripecheckout.md)
- [showCardModal / hideCardModal](https://docs.klai.studio/reference/actions-processor/actions_overview/showcardmodal.md): Opens or closes a BetterForms card modal that renders another page.
- [runOnCompleteHook](https://docs.klai.studio/reference/actions-processor/actions_overview/runoncompletehook.md): Runs the form completion hook and waits for it to finish before continuing the action queue.
- [mapInfoWindow](https://docs.klai.studio/reference/actions-processor/actions_overview/mapinfowindow.md): Emits a map info-window event to components listening for map interactions.
- [authLoginOauth / oauthLoginHook](https://docs.klai.studio/reference/actions-processor/actions_overview/authloginoauth.md): Finalizes an OAuth login after the provider redirects back into BetterForms.
- [pwaCustomInstall](https://docs.klai.studio/reference/actions-processor/actions_overview/pwacustominstall.md): Captures the browser install prompt so your app can trigger installation later with custom UI.
- [pwaPromptInstall](https://docs.klai.studio/reference/actions-processor/actions_overview/pwapromptinstall.md): Triggers the stored PWA install prompt and runs callbacks for accept or dismiss outcomes.
- [pwaPromptPushPermission](https://docs.klai.studio/reference/actions-processor/actions_overview/pwapromptpushpermission.md): Requests push-notification permission and registers the browser subscription with BetterForms.
- [pwaPushNotificationSend](https://docs.klai.studio/reference/actions-processor/actions_overview/pwapushnotificationsend.md): Sends a push notification through BetterForms to registered browser subscriptions.
- [llmToolCall](https://docs.klai.studio/reference/actions-processor/actions_overview/llmtoolcall.md): Dispatches LLM-requested frontend tools by mapping them to BetterForms named actions.
- [llmToolCallResponse](https://docs.klai.studio/reference/actions-processor/actions_overview/llmtoolcallresponse.md): Sends the result of a frontend tool workflow back to the BetterForms LLM tool-response service.
- [llmQueryStop](https://docs.klai.studio/reference/actions-processor/actions_overview/llmquerystop.md): Requests that an active BetterForms LLM query stream stop gracefully.
- [assistantStop](https://docs.klai.studio/reference/actions-processor/actions_overview/assistantstop.md): Requests that an active BetterForms assistants stream stop gracefully.
- [Authentication Actions](https://docs.klai.studio/reference/actions-processor/authentication-actions.md)
- [Script Hooks](https://docs.klai.studio/reference/hooksoverview.md)
- [Globals Variables](https://docs.klai.studio/reference/hooksoverview/filemaker-globals.md)
- [$$BF\_Model](https://docs.klai.studio/reference/hooksoverview/filemaker-globals/usdusdbf_model.md)
- [$$BF\_App](https://docs.klai.studio/reference/hooksoverview/filemaker-globals/usdusdbf_app.md)
- [$$BF\_State](https://docs.klai.studio/reference/hooksoverview/filemaker-globals/usdusdbf_state.md): The state object holds various data related to the browser environment.
- [Keeping Keys Private](https://docs.klai.studio/reference/hooksoverview/payloadobject.md)
- [Reducing Payload Size](https://docs.klai.studio/reference/hooksoverview/env_vars.md)
- [API Callback Endpoint](https://docs.klai.studio/reference/hooksoverview/callback.md)
- [Common Hooks](https://docs.klai.studio/reference/hooksoverview/commonoverview.md)
- [Scoped Hooks](https://docs.klai.studio/reference/hooksoverview/hooks.md): Scoped hooks are specific to the page on which they are initiated and contain relevant data about the page context
- [Lifecycle Hooks](https://docs.klai.studio/reference/hooksoverview/lifecycle-hooks.md)
- [Authentication](https://docs.klai.studio/reference/authentication.md): High-level overview of BetterForms authentication strategies and building blocks.
- [Basic Authentication](https://docs.klai.studio/reference/authentication/basic-auth.md): Email/password authentication using the internal Users table in the helper file.
- [User Registration & Verification](https://docs.klai.studio/reference/authentication/basic-auth/user-registration.md): Step-by-step for user sign-up and email verification using Basic Authentication.
- [Password Management](https://docs.klai.studio/reference/authentication/basic-auth/password-management.md): Password reset flows for end users in Basic Authentication.
- [Managing User Accounts](https://docs.klai.studio/reference/authentication/managing-users.md)
- [Custom Login Pages](https://docs.klai.studio/reference/authentication/custom-login-pages.md)
- [Query & Cookie Based Auth](https://docs.klai.studio/reference/authentication/query-cookie-auth.md): Using smart links (query tokens) and cookie-based sessions for streamlined authentication.
- [OAuth](https://docs.klai.studio/reference/authentication/oauth.md): OAuth sign-in with Google, Auth0, and Okta.
- [JWT Expiration](https://docs.klai.studio/reference/authentication/jwt-expiration.md): Configure per-tenant JWT authentication token expiry and domain audience.
- [Security Best Practices](https://docs.klai.studio/reference/authentication/security-best-practices.md): Recommended practices for securing authentication flows in BetterForms.
- [Klai Utility Functions](https://docs.klai.studio/reference/bf-utility-function-ver-0.9.20+.md): BetterForm has a collection of helper Java Script functions that are used within JavaScript to allow  easy access to common complex code.
- [Dynamic Library Loading](https://docs.klai.studio/reference/bf-utility-function-ver-0.9.20+/bf-dynamic-library-loading.md): Dynamic library loading functionality for BetterForms - Load external JavaScript libraries, ESM modules, and CSS files from CDN dynamically within function actions.
- [APIs & Services](https://docs.klai.studio/reference/apis-and-services.md)
- [Messaging](https://docs.klai.studio/reference/apis-and-services/messaging.md): Messaging is intended to be used for real-time features, such as notifications, chat or auto updates. Messaging also allows data to be pushed from FileMaker into your BetterForms apps.
- [Adding users to channels](https://docs.klai.studio/reference/apis-and-services/messaging/adding-users-to-channels.md): You can add users to channels either by calling a FileMaker script in the Helper File, or by calling a REST API endpoint of your BetterForms domain.
- [Removing users from channels](https://docs.klai.studio/reference/apis-and-services/messaging/removing-users-from-channels.md): Similar to adding users, you can remove users either by a REST API call, or via a FileMaker script in your helper file.
- [Sending messages](https://docs.klai.studio/reference/apis-and-services/messaging/sending-messages.md): Once your users are subscribed to a channel or two, you can send messages to them!
- [Get connected users](https://docs.klai.studio/reference/apis-and-services/messaging/get-all-users-connected.md)
- [Get active channels](https://docs.klai.studio/reference/apis-and-services/messaging/get-active-channels.md)
- [Core APIs](https://docs.klai.studio/reference/apis-and-services/core-apis.md)
- [Klai Server Proxy](https://docs.klai.studio/reference/apis-and-services/core-apis/server-proxy.md)
- [BetterForms Error Pages API](https://docs.klai.studio/reference/apis-and-services/core-apis/error-pages-api.md)
- [Klai Streaming Proxy](https://docs.klai.studio/reference/apis-and-services/streaming-proxy.md)
- [Klai Streaming API (Chat)](https://docs.klai.studio/reference/apis-and-services/streaming-proxy/bf-streaming-api-chat.md)
- [Klai Streaming API (Assistants)](https://docs.klai.studio/reference/apis-and-services/streaming-proxy/bf-streaming-assistants-api.md)
- [Klai Streaming API (LLM Query)](https://docs.klai.studio/reference/apis-and-services/streaming-proxy/bf-streaming-api-llm-query.md)
- [Guides & Integrations](https://docs.klai.studio/reference/apis-and-services/integrations.md)
- [Klai Studio MCP (Beta)](https://docs.klai.studio/reference/apis-and-services/integrations/klai-studio-mcp.md)
- [Creating Components with Third-Party Libraries](https://docs.klai.studio/reference/apis-and-services/integrations/creating-components-with-third-party-libraries.md)
- [Web Awesome Components in BetterForms](https://docs.klai.studio/reference/apis-and-services/integrations/web-awesome-components.md): Use Web Awesome components inside BetterForms with self-contained bfcomponents that lazy-load the library and styles.
- [ApexCharts - Getting started](https://docs.klai.studio/reference/apis-and-services/integrations/apexcharts-getting-started.md)
- [Creating a PWA](https://docs.klai.studio/reference/apis-and-services/integrations/creating-a-pwa.md)
- [Setting up Auth0](https://docs.klai.studio/reference/apis-and-services/integrations/setting-up-auth0.md)
- [Create an S3 Bucket on AWS](https://docs.klai.studio/reference/apis-and-services/integrations/create-an-s3-bucket-on-aws.md)
- [Development & Best Practices](https://docs.klai.studio/reference/best-practices.md)
- [Developer Mode](https://docs.klai.studio/reference/best-practices/developer-mode.md)
- [JavaScript Libraries](https://docs.klai.studio/reference/best-practices/javascript-libraries.md)
- [Practices for File Downloads](https://docs.klai.studio/reference/best-practices/practices-for-file-downloads.md)
- [Rollbacks and Version Control](https://docs.klai.studio/reference/best-practices/rollbacks-and-version-control.md)
- [Customizing & Styling](https://docs.klai.studio/reference/styling.md): There are many ways to customize a BetterForms site to suit the needs of your application!
- [SEO & Social Sharing](https://docs.klai.studio/reference/styling/seo-and-social-sharing.md)
- [Custom Components](https://docs.klai.studio/reference/styling/custom-components.md): Components are chunks of reusable code. They allow you to define code in a single place and reuse it throughout your app. Components can be references through HTML or with Klai JSON schema
- [Components Editor](https://docs.klai.studio/reference/styling/custom-components/components-editor.md)
- [Component Best Practices](https://docs.klai.studio/reference/styling/custom-components/component-best-practices.md): Good components need to be designed well. Taking the time to think of future use cases significantly enhances the components usability.
- [Support & Maintenance](https://docs.klai.studio/reference/support-and-maintenance.md)
- [Connection Trouble Shooting Guide](https://docs.klai.studio/reference/support-and-maintenance/connection-trouble-shooting-guide.md)
- [Updating the Helper File](https://docs.klai.studio/reference/support-and-maintenance/updating-the-helper-file.md)
- [Klai Error Codes](https://docs.klai.studio/reference/support-and-maintenance/bf-error-codes.md): Klai Studio can throw various errors due to code or configuration. Errors can appear in the Helper File, Developer Tools ( when enabled) or the browser console.
- [Security](https://docs.klai.studio/reference/security.md)
- [Custom Domains](https://docs.klai.studio/reference/security/custom-domains.md)
- [Security White Paper](https://docs.klai.studio/reference/security/white-paper.md)
- [Firewalls](https://docs.klai.studio/reference/security/security.md)
- [Technology Stack](https://docs.klai.studio/reference/security/technology-stack.md): Software and tools we use to run Klai Studio!
- [Compatibility](https://docs.klai.studio/reference/security/compatibility.md): As of version 0.9.43 BetterForms is compatible with the following versions or newer. Older version may be supported but may have some limiting features as of Oct 22nd, 2020:
- [Enterprise](https://docs.klai.studio/reference/enterprise.md)
- [Klai Enterprise Documentation](https://docs.klai.studio/reference/enterprise/bf-enterprise-documentation.md)
