Jotform API
This module renders Jotform forms as native Drupal forms using the Jotform REST API, eliminating the need for iframes. It reads form structure and validation rules directly from Jotform, ensuring that submissions trigger Jotform automations reliably. The module also supports custom field types through a plugin system and provides multiple options for embedding the forms on your Drupal site.
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)
Recommended modules
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.