This project is not covered by Drupal’s security advisory policy.

Render Jotform forms as native Drupal forms via the Jotform REST API — no iframes, no embed codes. Form structure, validation rules, and thank-you behaviour are read live from your Jotform account; submissions trigger Jotform automations explicitly so CRM workflows don't drop.

Features

  • API-driven rendering — real Drupal forms, not iframe embeds.
  • 15 built-in field-type renderers; pluggable for custom widgets via a Drupal annotation plugin.
  • Reliable Jotform automation triggering with Sheets / Workflow endpoint fallback.
  • Three placement options: Block, content-entity field, or auto-route at /jotform/{form_id}.
  • Webhook receiver, IP rate limiting, configurable cache with an admin Refresh action.
  • Event-driven extension points so tracking integrations (Meta CAPI, GTM, Rudderstack, etc.) plug in without forking.

Post-Installation

Install via Composer, create a key holding your Jotform API key in the Key module, configure the module at /admin/config/services/jotform-api, then place a form via Block / field / auto-route.

Step-by-step setup, the permissions table, supported field types, validation behaviour, cache management, custom-renderer examples, and the event reference all live in the module README. Refer to it for anything beyond the basics.

Additional Requirements

  • Drupal 10.3 or 11, PHP 8.1+
  • Key module
  • Jotform account with an API key scoped to Full Access (read-only keys can list forms but can't create submissions)

Phone International pairs with the built-in phone renderer to add a country picker. For tracking integrations (Meta CAPI, GTM, Rudderstack, etc.), write a small companion module that subscribes to JotformEvents::POST_SUBMIT — keeps site-specific tracking logic out of this contrib module.

Similar projects

  • Jotform Block Integration embeds Jotform's hosted form HTML as a block (iframe-style); doesn't render via API or trigger automations.
  • Jotform Field Widget provides a form-id field widget and basic API client; doesn't render forms or handle submissions.

This module differs from both: native API-driven rendering, server-side validation, reliable automation triggering, and a plugin system for extending field-type support.

Supporting this Module

Maintained on a best-effort basis. Open issues with a clear reproduction case, your Drupal and Jotform plan, and relevant jotform_api log entries. PRs welcome — especially extra field renderers, conditional-logic support, kernel / functional tests, and translations.

Community Documentation

The README on GitLab covers architecture, supported field types, validation, cache management, permissions, extension hooks, and the event reference. A walkthrough blog post is in preparation.

Project information

Releases