PHPackages                             itx/hubspot-forms - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. itx/hubspot-forms

ActiveTypo3-cms-extension[API Development](/categories/api)

itx/hubspot-forms
=================

it.x Hubspot Forms Extension

2.2.1(2w ago)02.1k↑406.3%GPL-2.0-or-laterPHP

Since Nov 8Pushed 2w ago2 watchersCompare

[ Source](https://github.com/itx-informationssysteme/hubspot-forms)[ Packagist](https://packagist.org/packages/itx/hubspot-forms)[ RSS](/packages/itx-hubspot-forms/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (10)Dependencies (4)Versions (27)Used By (0)

Hubspot Forms Extension for TYPO3
=================================

[](#hubspot-forms-extension-for-typo3)

This extension will help displaying Hubspot forms in our pages by **dynamically** loading in any given form using the HubSpot API

Installation (Composer)
-----------------------

[](#installation-composer)

To install the extension using composer, run `composer req itx/hubspot-forms`

Configuration
-------------

[](#configuration)

- Create a HubSpot access token with the following scope: `forms`
- To start using the extension, you will first have to set your **Access Token** and **PortalID** in the TYPO3 Backend `Settings > Extension Configuration > hubspot_forms`
- Alternatively you can configure these settings inside your `AdditionalConfiguration.php` file located under `public/typo3conf/AdditionalConfiguration.php`e.g.

```
$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['hubspot_forms']['accessToken'] = 'Your Access Token';
$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['hubspot_forms']['portalID'] = 'Your PortalID';
```

- FriendlyCaptcha support has been added. To use it, just add your sitekey and secret from FriendlyCaptcha to the according setting fields and then toggle the captcha on in the plugin settings

Usage
-----

[](#usage)

- First, add a General Plugin content element where you want your form to be on your website

[![{917CD7C6-1080-46A7-B40E-BB8031E1FD3D}](https://private-user-images.githubusercontent.com/128425620/499270738-f455f443-f576-4b9f-ab3f-ea90d21a01f7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY0MDExMTcsIm5iZiI6MTc4NjQwMDgxNywicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcwNzM4LWY0NTVmNDQzLWY1NzYtNGI5Zi1hYjNmLWVhOTBkMjFhMDFmNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgxMFQyMjI2NTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yMTRmZGY2YzRjNzhkODg3Y2E3YWQwNWVkYzkwMjRhYzRjZTQ1ZGJhY2U3ZWQ5ODc2ZTFhZjNhNTA3NzNhOTRhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.GVeBen-N_XOdN09T8EifxMF1X7vkI5RYCvZ8J0j0tdM)](https://private-user-images.githubusercontent.com/128425620/499270738-f455f443-f576-4b9f-ab3f-ea90d21a01f7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY0MDExMTcsIm5iZiI6MTc4NjQwMDgxNywicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcwNzM4LWY0NTVmNDQzLWY1NzYtNGI5Zi1hYjNmLWVhOTBkMjFhMDFmNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgxMFQyMjI2NTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yMTRmZGY2YzRjNzhkODg3Y2E3YWQwNWVkYzkwMjRhYzRjZTQ1ZGJhY2U3ZWQ5ODc2ZTFhZjNhNTA3NzNhOTRhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.GVeBen-N_XOdN09T8EifxMF1X7vkI5RYCvZ8J0j0tdM)- After that, go to the `Plugin` Tab in the settings of your new content element. Here, you can select which form you want to load from your given HubSpot Portal in Form of a select list

[![{FA418E9B-F47B-4A14-9252-C2F07EA94320}](https://private-user-images.githubusercontent.com/128425620/499272204-a68af43f-1853-4867-8770-a31ac981f625.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY0MDExMTcsIm5iZiI6MTc4NjQwMDgxNywicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcyMjA0LWE2OGFmNDNmLTE4NTMtNDg2Ny04NzcwLWEzMWFjOTgxZjYyNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgxMFQyMjI2NTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mYzZkYjMxNzZjZjc5YmY5ZWQwNzY0MzRhYjJhNTdjODc0M2M0NmMxZTAyMGE5NDU1ZmU0ZDBjZmJhMTc5NzUzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.jEmBVClAPo28qBN5XPCG0cp2FHo99R-9xUjcr1pp6dc)](https://private-user-images.githubusercontent.com/128425620/499272204-a68af43f-1853-4867-8770-a31ac981f625.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY0MDExMTcsIm5iZiI6MTc4NjQwMDgxNywicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcyMjA0LWE2OGFmNDNmLTE4NTMtNDg2Ny04NzcwLWEzMWFjOTgxZjYyNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgxMFQyMjI2NTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mYzZkYjMxNzZjZjc5YmY5ZWQwNzY0MzRhYjJhNTdjODc0M2M0NmMxZTAyMGE5NDU1ZmU0ZDBjZmJhMTc5NzUzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.jEmBVClAPo28qBN5XPCG0cp2FHo99R-9xUjcr1pp6dc)- After selecting your form, switch over to the frontend to see it all loaded in

[![{D810CF8E-ABC6-4FF2-96B9-01D9656FFDDC}](https://private-user-images.githubusercontent.com/128425620/499272738-9f6b182a-aaa4-4c21-b38a-237c101e4284.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY0MDExMTcsIm5iZiI6MTc4NjQwMDgxNywicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcyNzM4LTlmNmIxODJhLWFhYTQtNGMyMS1iMzhhLTIzN2MxMDFlNDI4NC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgxMFQyMjI2NTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yMGFiYjc5NTczZTliNDU1NjgyMTc5YzI5MWYwNjY2NDE0N2M1MjdiZmVhMWQ2OTRhMWU2ZmE1NTA4ZGM2ZWNhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.G20mfHV40n4-jGZi4uxdyhF6YTISwOkfviWY1-qd1oQ)](https://private-user-images.githubusercontent.com/128425620/499272738-9f6b182a-aaa4-4c21-b38a-237c101e4284.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY0MDExMTcsIm5iZiI6MTc4NjQwMDgxNywicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcyNzM4LTlmNmIxODJhLWFhYTQtNGMyMS1iMzhhLTIzN2MxMDFlNDI4NC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgxMFQyMjI2NTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yMGFiYjc5NTczZTliNDU1NjgyMTc5YzI5MWYwNjY2NDE0N2M1MjdiZmVhMWQ2OTRhMWU2ZmE1NTA4ZGM2ZWNhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.G20mfHV40n4-jGZi4uxdyhF6YTISwOkfviWY1-qd1oQ)- There is an option to only simulate form submissions in the `Extension Settings`. This toggle disables the line of code responsible for the POST request to HubSpot after submitting a form

[![{0F270FED-AAF6-4222-A654-8309983E74A7}](https://private-user-images.githubusercontent.com/128425620/499273129-f49dfb3b-af27-4242-91a3-3f37ec8f9161.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY0MDExMTcsIm5iZiI6MTc4NjQwMDgxNywicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjczMTI5LWY0OWRmYjNiLWFmMjctNDI0Mi05MWEzLTNmMzdlYzhmOTE2MS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgxMFQyMjI2NTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04Y2JlZDhlODg1NjdlM2MzNzNmZGQ5MmRmOWQ1MzMxNjE1ZDNhMjc1YzVhZjk5OTJiZWRiMDBlNzJjYjcxYjFjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.bgtQ-gE5W6_WtFnTOxOgNFSlpSkZ7qo0nMxi75cnOko)](https://private-user-images.githubusercontent.com/128425620/499273129-f49dfb3b-af27-4242-91a3-3f37ec8f9161.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY0MDExMTcsIm5iZiI6MTc4NjQwMDgxNywicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjczMTI5LWY0OWRmYjNiLWFmMjctNDI0Mi05MWEzLTNmMzdlYzhmOTE2MS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgxMFQyMjI2NTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04Y2JlZDhlODg1NjdlM2MzNzNmZGQ5MmRmOWQ1MzMxNjE1ZDNhMjc1YzVhZjk5OTJiZWRiMDBlNzJjYjcxYjFjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.bgtQ-gE5W6_WtFnTOxOgNFSlpSkZ7qo0nMxi75cnOko)- Additionally, you can send emails with the contents of the form submissions if you configure it in the `Plugin` tab of the content element

Styling
-------

[](#styling)

- Every field type of the forms is rendered by a partial, if you want to individually style your form fields, overwrite the partials and add your own styling
- The same goes for the template of the optional mail

Known Issues
------------

[](#known-issues)

### Multiple Multiple-Checkboxes

[](#multiple-multiple-checkboxes)

- When a form contains more than one multiple checkbox field, if any checkbox of any of the fields is checked, the browser won't prompt you to check at least one of the checkboxes in each field
- Submitting the form while there isn't at least one checkbox checked in the required fields causes TYPO3 to throw a Bad Request Error
- The error gets caught, so the site continues to operate, but the form will not be sent to HubSpot

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance96

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 91.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~31 days

Recently: every ~6 days

Total

21

Last Release

20d ago

Major Versions

1.3.3 → 2.0.02026-06-12

### Community

Maintainers

![](https://www.gravatar.com/avatar/ff61ce4c7201994aa438de7df8a257cd9baf181a7496634b19ebbfd0405c2bd3?d=identicon)[itx](/maintainers/itx)

---

Top Contributors

[![paeddym](https://avatars.githubusercontent.com/u/128425620?v=4)](https://github.com/paeddym "paeddym (93 commits)")[![itx-daniel-merkle](https://avatars.githubusercontent.com/u/195290390?v=4)](https://github.com/itx-daniel-merkle "itx-daniel-merkle (5 commits)")[![benjasper](https://avatars.githubusercontent.com/u/28984253?v=4)](https://github.com/benjasper "benjasper (4 commits)")

---

Tags

hubspothubspot-apihubspot-formtypo3typo3-extensiontypo3-v11typo3-v12typo3-v13

### Embed Badge

![Health badge](/badges/itx-hubspot-forms/health.svg)

```
[![Health](https://phpackages.com/badges/itx-hubspot-forms/health.svg)](https://phpackages.com/packages/itx-hubspot-forms)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103574.3k69](/packages/friendsoftypo3-content-blocks)[hn/typo3-mcp-server

TYPO3 extension that provides a Model Context Protocol (MCP) server for interacting with TYPO3 pages and records

9331.4k3](/packages/hn-typo3-mcp-server)[plan2net/webp

Drop-in WebP, AVIF, and JPEG XL delivery for TYPO3 images — automatic, no URL or template changes

661.6M6](/packages/plan2net-webp)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

40543.5k](/packages/wazum-sluggi)[pagemachine/searchable

TYPO3 extension to index and search content with Elasticsearch

1140.6k](/packages/pagemachine-searchable)[thieleundklose/autotranslate

This extension provides automatic translation of pages and content elements via DeepL API.

1215.3k](/packages/thieleundklose-autotranslate)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
