Blog
SignalHost for TYPO3: install the extension, connect each site, and server-side tracking is live
Published · 7 min read
Get it on TYPO3 Extension Repository
The SignalHost extension puts server-side Google Tag Manager on your TYPO3 sites without a single line of pasted code. It adds the tracking loader to every frontend page of a connected site, keeps it up to date when anything changes on our side, and takes it off again when you disconnect. Each site of a multi-site installation is connected on its own, and this guide follows one site from installing to testing.
Before you start
- TYPO3 13.4 LTS or 14.3 LTS, running on PHP 8.2 or newer with the sodium extension.
- A SignalHost account. The free plan is enough to try it: 10,000 requests a month and one container. You can create the account while connecting.
- A backend administrator account. The SignalHost module is for administrators only.
- A site whose base, in its site configuration, has a domain, such as https://www.example.com/.
1. Install the extension
In a Composer-based installation, require it from Packagist:
composer require signalhost/server-side-taggingIn classic mode, install it from the Extension Manager instead; it is in the TYPO3 Extension Repository under the key signalhost_server_side_tagging. It adds nothing to a site until that site is connected.
2. Connect a site to a container
In the TYPO3 backend, open Sites › SignalHost (Site Management › SignalHost on TYPO3 13), where every site has its own card. SignalHost sends you back to the site's own address after connecting, so open the backend under that site's domain; elsewhere, the card has a button that opens the page there, where you may have to log in once.
On the site's card, press Connect with SignalHost, or Create a free account if you have no account yet. Nothing is sent to SignalHost before you press Connect. On signalhost.io, sign in. The next screen lists what the extension will and will not be able to do, and asks which container the site should use. A container is your own tagging server: a Tag Manager web container and server container, built in your own Google account, so they stay yours.
Pick an existing container, or press New container for your site and go through the short wizard. A new one takes a few minutes to build; you can connect straight away, and the code is added as soon as it is ready. Press Connect, and you are back on the card with the message Connected. SignalHost's code is now added to every page of this site. Repeat this for each site you want to track.
3. Check that the code is on your site
The site's card now says Tracking is live, or Tracking starts as soon as your container is ready while a new one is still being built. Then read the line On your home page: right after connecting, the extension fetches your home page the way a visitor would and looks for its code. Code found is the answer you want. Check again repeats the check at any time, and the other answers are under When something does not work.
4. Test it
Open your site in a private window and click through a few pages; a visitor who declines your cookie banner is still counted, as Google's cookieless ping. Then press Open statistics & settings to open your container page on signalhost.io.
Under Enhanced analytics, the Recent tab shows the page views of the last 30 minutes, yours among them. Run checks, under Troubleshooting at the foot of the page, compares what your tagging server received with what Google Analytics reports for the same 30 minutes. Fewer in Analytics is normal: it leaves out visitors who declined cookies. From the Growth plan up, Live event monitoring shows each event as it arrives.
What the extension adds to your site
One small script per connected site, and one hourly check-in:
- The Google Tag Manager loader, just before the end of the head of every frontend page, pointed at the site's own tagging address instead of googletagmanager.com. It loads your Tag Manager container from there. It goes into the finished page after TYPO3's page cache, so no cache needs flushing. If the site enforces TYPO3's Content Security Policy, the extension adds the tagging address to it and allows the loader by its hash, unless the policy already allows inline scripts.
- Once an hour, after a response has been sent, the extension checks in with signalhost.io to stay current. It sends only the extension's, TYPO3's and PHP's versions, the site's address and whether the code was found on the home page: no visitor data, no content, no user accounts. If signalhost.io cannot be reached, the site keeps the last good configuration.
Every request leaves the browser in a form ad blockers do not recognise, and your tagging server forwards it to Google Analytics 4 and to the ad platforms you set up on the container page: Google Ads, Meta, TikTok and others. The tracking follows your cookie banner through Google Consent Mode. The loader comes after a banner that sits in the head; a banner loaded later must set Consent Mode's defaults before it.
The extension does not read forms or orders. Page views arrive on their own; a purchase or a lead reaches your container when your site pushes it to the data layer.
Your own tracking domain
Your container starts on an address under signalhost.io. On a paid plan, Set up your own domain on the container page moves it to a subdomain of your own site, such as sgtm.yoursite.com, with one DNS record at your provider. That address survives filter lists and keeps click cookies first-party. When it goes live, the extension switches that site over at its next check-in, usually within the hour, and its Content Security Policy follows. Nothing needs replacing by hand, and the old address keeps working until then.
Adding SignalHost by hand
You can also paste the code yourself. On the container page, find your snippet in the Install on your site card and press Copy. Paste it into the head of every page (in TYPO3, through your template or TypoScript), directly after your cookie banner's script, and press I have done this. Copy for AI agent hands the same job to a coding agent.
Pasting by hand gives up what the extension does: nothing checks your home page, nothing removes the code when you disconnect, a site that enforces TYPO3's Content Security Policy needs the script and the tagging address allowed by hand, and when your own domain goes live you replace the code yourself, from the card's Update your website snippet or the email announcing the domain. Never use both routes: two copies count every visit twice.
Updates, managing and disconnecting
Update it the way you installed it: through Composer, or from the Extension Manager in classic mode.
Disconnect, on a site's card, asks once, then removes SignalHost's code from every page of that site at once and revokes its access. Other sites stay connected, and your container and its data stay in your SignalHost account.
On signalhost.io, the container page says Installed by the TYPO3 extension on your site. Its Manage button leads to Settings, Connected sites, where Disconnect works too: the extension stops loading SignalHost at its next check-in, usually within the hour.
Deactivating the extension in the Extension Manager, in classic mode, revokes every site's access and removes what it stored. composer remove runs no TYPO3 code, so disconnect each site first; otherwise they stay listed under Settings, Connected sites, and you disconnect them there.
When something does not work
- The card says SignalHost sends you back to the site's own address after connecting: you opened the backend under another domain. Use the button below it to open the page on the site's domain.
- Could not check (your server refused a request to itself): your host blocks requests to its own address. That says nothing about your visitors; look for your tagging address in your home page's source.
- An older copy is on the page, or The code is on the page twice: a copy was pasted by hand into a template, TypoScript or another extension. Remove it; the extension adds the current one, and two copies count every visit twice.
- A notice that your site already loads a Tag Manager container with Google's own snippet: remove that snippet, because SignalHost now loads the container and both together count every visit twice.
- This site's address has changed since it was connected: on a copy, such as staging, nothing is sent. If the live site moved, disconnect and connect again.
- Anything else: write to hello@signalhost.io with your site's address.
Trademarks
SignalHost is an independent product of Algorithmo GmbH and is not affiliated with or endorsed by the TYPO3 Association, Google, Meta or TikTok. Google Analytics, Google Ads and Google Tag Manager are trademarks of Google LLC; Meta is a trademark of Meta Platforms, Inc.; TikTok is a trademark of ByteDance Ltd.; TYPO3 is a registered trademark of the TYPO3 Association.

