jotform_api
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.