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

1.3.3(2mo ago)01.2k↓33.3%GPL-2.0-or-laterPHP

Since Nov 8Pushed 2mo 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 1mo ago

READMEChangelog (10)Dependencies (2)Versions (17)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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ0MTc1MDAsIm5iZiI6MTc3NDQxNzIwMCwicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcwNzM4LWY0NTVmNDQzLWY1NzYtNGI5Zi1hYjNmLWVhOTBkMjFhMDFmNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyNVQwNTQwMDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zZmNhYjFlMWFjZGE4ZjUyYjQ4NTA5Mjc5ZDJmOThiZDM5YzU1NjAzODBjM2U3ZGY1Y2JmODI3NzNlODQ3MDE1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.DF96XNwdyG-xj2lUMnH88hjL8uLqoiJovpaV1EUKpi8)](https://private-user-images.githubusercontent.com/128425620/499270738-f455f443-f576-4b9f-ab3f-ea90d21a01f7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ0MTc1MDAsIm5iZiI6MTc3NDQxNzIwMCwicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcwNzM4LWY0NTVmNDQzLWY1NzYtNGI5Zi1hYjNmLWVhOTBkMjFhMDFmNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyNVQwNTQwMDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zZmNhYjFlMWFjZGE4ZjUyYjQ4NTA5Mjc5ZDJmOThiZDM5YzU1NjAzODBjM2U3ZGY1Y2JmODI3NzNlODQ3MDE1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.DF96XNwdyG-xj2lUMnH88hjL8uLqoiJovpaV1EUKpi8)- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ0MTc1MDAsIm5iZiI6MTc3NDQxNzIwMCwicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcyMjA0LWE2OGFmNDNmLTE4NTMtNDg2Ny04NzcwLWEzMWFjOTgxZjYyNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyNVQwNTQwMDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yOGY2MTgzMGRlY2I4NmU5MjEzM2I2MGVlN2FlZDc5M2FjNGY4NzUyZjYwOGVlMGI0ODQ4MDgzZDUzMmU0ZTg5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.GSa8yHIIAgRKM8RhtT3tB0I5g6sXbVUT8xXv-o9Avks)](https://private-user-images.githubusercontent.com/128425620/499272204-a68af43f-1853-4867-8770-a31ac981f625.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ0MTc1MDAsIm5iZiI6MTc3NDQxNzIwMCwicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcyMjA0LWE2OGFmNDNmLTE4NTMtNDg2Ny04NzcwLWEzMWFjOTgxZjYyNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyNVQwNTQwMDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yOGY2MTgzMGRlY2I4NmU5MjEzM2I2MGVlN2FlZDc5M2FjNGY4NzUyZjYwOGVlMGI0ODQ4MDgzZDUzMmU0ZTg5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.GSa8yHIIAgRKM8RhtT3tB0I5g6sXbVUT8xXv-o9Avks)- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ0MTc1MDAsIm5iZiI6MTc3NDQxNzIwMCwicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcyNzM4LTlmNmIxODJhLWFhYTQtNGMyMS1iMzhhLTIzN2MxMDFlNDI4NC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyNVQwNTQwMDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yOWQwNTQ2ZTQ4YzU3OGE4Mzg1MmNmZTJmOTFmOTUzZDU0MDcxY2IwYjM5YzdlNWUyMDE1ZGUxZTRjZjNjMWVhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.DyokO6qFBuBRIkwmpD21DyL0R7TynYXbq_Xol-fagTA)](https://private-user-images.githubusercontent.com/128425620/499272738-9f6b182a-aaa4-4c21-b38a-237c101e4284.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ0MTc1MDAsIm5iZiI6MTc3NDQxNzIwMCwicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjcyNzM4LTlmNmIxODJhLWFhYTQtNGMyMS1iMzhhLTIzN2MxMDFlNDI4NC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyNVQwNTQwMDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yOWQwNTQ2ZTQ4YzU3OGE4Mzg1MmNmZTJmOTFmOTUzZDU0MDcxY2IwYjM5YzdlNWUyMDE1ZGUxZTRjZjNjMWVhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.DyokO6qFBuBRIkwmpD21DyL0R7TynYXbq_Xol-fagTA)- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ0MTc1MDAsIm5iZiI6MTc3NDQxNzIwMCwicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjczMTI5LWY0OWRmYjNiLWFmMjctNDI0Mi05MWEzLTNmMzdlYzhmOTE2MS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyNVQwNTQwMDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04OGM2NWEwNGU5MzQzNGZlYTJlYjBhNzFhNjIxNWUyOGQ1OWYwZGZiMzYzMzQ5NTBkZDIxMWQ1NTI2ZWFkOTU4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.ruaUIF-PN1ODVHsDVDluqaKZPzbNroehUA597vdIgOo)](https://private-user-images.githubusercontent.com/128425620/499273129-f49dfb3b-af27-4242-91a3-3f37ec8f9161.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ0MTc1MDAsIm5iZiI6MTc3NDQxNzIwMCwicGF0aCI6Ii8xMjg0MjU2MjAvNDk5MjczMTI5LWY0OWRmYjNiLWFmMjctNDI0Mi05MWEzLTNmMzdlYzhmOTE2MS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyNVQwNTQwMDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04OGM2NWEwNGU5MzQzNGZlYTJlYjBhNzFhNjIxNWUyOGQ1OWYwZGZiMzYzMzQ5NTBkZDIxMWQ1NTI2ZWFkOTU4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.ruaUIF-PN1ODVHsDVDluqaKZPzbNroehUA597vdIgOo)- 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

43

—

FairBetter than 91% of packages

Maintenance88

Actively maintained with recent releases

Popularity19

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 95.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 ~41 days

Total

13

Last Release

62d ago

### 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 (80 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

[sinso/app-routes

Easy way to route rest-like URLs to your code

23110.0k1](/packages/sinso-app-routes)[hn/typo3-mcp-server

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

708.9k](/packages/hn-typo3-mcp-server)[kitodo/presentation

Base plugins, modules, services and API of the Digital Library Framework. It is part of the community-based Kitodo Digitization Suite.

436.1k5](/packages/kitodo-presentation)[friendsoftypo3/interest

REST and CLI API for adding, updating, and deleting records in TYPO3. Tracks relations so records can be inserted in any order. Uses remote ID mapping so you don't have to keep track of what UID a record has gotten after import. Data is inserted using backend APIs as if a real human did it, so you can can inspect the record history and undo actions.

111.3k1](/packages/friendsoftypo3-interest)

PHPackages © 2026

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