PHPackages                             waldhacker/hooky - 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. waldhacker/hooky

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

waldhacker/hooky
================

TYPO3 Extension to configure webhooks to be sent for various events.

02PHP

Since Dec 28Pushed 4y ago1 watchersCompare

[ Source](https://github.com/waldhacker/ext-hooky)[ Packagist](https://packagist.org/packages/waldhacker/hooky)[ RSS](/packages/waldhacker-hooky/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Hooky - Webhooks for TYPO3
==========================

[](#hooky---webhooks-for-typo3)

Send webhooks for any event in TYPO3 - makes it possible to use TYPO3 with third party services such as automate.io, Zapier, etc.

Installation
------------

[](#installation)

This extension is provided as composer package only as it makes use of the enqueue package for message queue handling which is installed as composer dependency.

`composer req waldhacker/hooky`

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

[](#configuration)

The extension comes with a custom backend module that allows the creation of new web hooks. By default, it knows about two types of events - record updates or creation - and will send the raw data as message body. In most cases you will want to use custom events - see below for instructions.

Enter the target URL and (optional) secret for the webhook and choose the events to listen to.

Use the following two commands (ideally run regularly via scheduler, cron or system.d) to trigger processing of the message queue and message sending:

- `./bin/typo3 hooky:hooks:queue` - will check whether there are hooks configured for events that occurred and queue a message for each configured hook.
- `./bin/typo3 hooky:hooks:send` - will process the queue and send the hook requests

### Hook Signing

[](#hook-signing)

The hook request is signed with the configured secret which is sent base64 encoded in the header `X-TYPO3-HookSignature`. To verify the content on the receiving side, create a hash of the arriving content and compare it to the header.

Example: `hash_hmac('sha256', $content, $secret)`

Using custom events
-------------------

[](#using-custom-events)

An event that triggers a hook needs to fulfil two requirements:

- it needs to implement the interface `JsonSerializable`
- it needs to be tagged as hookable event in the DI configuration

The data that is returned by jsonSerialize will be the data enclosed in the message body of the web hook.

The DI configuration looks like this - as an example taken from this extension directly:

```
  Waldhacker\Hooky\Events\RecordUpdatedEvent:
    tags:
      - name: hooky.hookable
        label: 'LLL:EXT:hooky/Resources/Private/Language/hooky.xlf:event.recordUpdated.label'
        description: 'LLL:EXT:hooky/Resources/Private/Language/hooky.xlf:event.recordUpdated.description'
```

The label and description are displayed in the TYPO3 backend when selecting the event in the webhook configuration.

In many cases, you will probably implement an event listener to a TYPO3 core event and let that event listener dispatch your custom event that in turn is hookable and json serializable. For example: You could add an event listener listening to the file uploaded event and automatically notify an external image service via webhook.

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity2

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity27

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/004feeac533aca09131a92ab3111be5c85268da65d979c4dce131dcb72057bf2?d=identicon)[psychomieze](/maintainers/psychomieze)

![](https://www.gravatar.com/avatar/2ec2b97cf168b565dfc967a4460581babe890e43571c242cea43e7b6b4683765?d=identicon)[waldhacker](/maintainers/waldhacker)

---

Top Contributors

[![susannemoog](https://avatars.githubusercontent.com/u/321804?v=4)](https://github.com/susannemoog "susannemoog (10 commits)")

### Embed Badge

![Health badge](/badges/waldhacker-hooky/health.svg)

```
[![Health](https://phpackages.com/badges/waldhacker-hooky/health.svg)](https://phpackages.com/packages/waldhacker-hooky)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M480](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[facebook/php-business-sdk

PHP SDK for Facebook Business

90821.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

74513.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

265103.1M454](/packages/google-gax)[google/common-protos

Google API Common Protos for PHP

173103.7M50](/packages/google-common-protos)

PHPackages © 2026

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