PHPackages                             zwo3/newsletter\_subscribe - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. zwo3/newsletter\_subscribe

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

zwo3/newsletter\_subscribe
==========================

Subscribe / Unsubscribe Extension (e.g. for Newsletter), depends on tt\_address

7.1.2(8mo ago)24.5k↓33.3%7[3 PRs](https://github.com/Gregor-Agnes/newsletter_subscribe/pulls)GPL-2.0-or-laterPHP

Since Jan 13Pushed 8mo ago5 watchersCompare

[ Source](https://github.com/Gregor-Agnes/newsletter_subscribe)[ Packagist](https://packagist.org/packages/zwo3/newsletter_subscribe)[ Docs](https://github.com/Gregor-Agnes/newsletter_subscribe)[ RSS](/packages/zwo3-newsletter-subscribe/feed)WikiDiscussions main Synced 1mo ago

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

Newsletter Subscribe for TYPO3
==============================

[](#newsletter-subscribe-for-typo3)

- Subcribe and unsubscribe for newsletters for TYPO3 &gt;= 9.5
- Depends on tt\_address
- Scheduler task to delete unconfirmed subscribers after a while (since v3.1.0)

What does it do?
----------------

[](#what-does-it-do)

- Provides a plugin to double optin subscribe
- Provides a plugin to double optin unsubscribe
- Provides field in tt\_address to generate unsubscribe link in direct\_mail mailings

Breaking in 5.0
---------------

[](#breaking-in-50)

- If you use the default templates and styles you have to add the class `form-input` to input fields and `form-checkbox` to the checkboxes. Ther former approach overrode the appearance of every checkbox on pages, where the static template of this extension was included.

Caveats
-------

[](#caveats)

This extension changes the behaviour of `tt_address` and disables the soft delete feature which means that deleted records are removed from the database directly instead of being marked as deleted.

This might lead to problems if you already have an existing set of records in the table `tt_address`.

To mitigate this behaviour you can purge all deleted records from `tt_address`.
Or you can reenable the original behaviour by adding this code to `Configuration/TCA/Overrides/tt_address.php` in your sitepackage:

$GLOBALS\['TCA'\]\['tt\_address'\]\['ctrl'\]\['delete'\] = 'deleted';

Removed hard deletion of tt\_address records. Because of the field "delete" wouldn't be generated otherwise. Use Scheduler Task to delete soft-deleted records instead.

Install
-------

[](#install)

- Install via extension manager or
- Install via composer
- Include static template

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

[](#configuration)

ParameterDescriptionType, ValidationDefault  dataProtectionPage Uid of page with information about the data protection policy integer 1   adminEmail Email address in admin notification mails string, email, mandatory admin.name@domain.tld   adminName Name in admin notification mails string Your admin name   senderEmail Email address in confirmation mails string, email, mandatory noreply@domain.tld   senderName Name in confirmation mails string Your sender name   newsletterName Title of the newsletter / subscription list string Newsletter   showFields Additional fields to show in subscription form (gender,firstName,lastName,company).
email and dataProtection are always shown. string null   subscribePageUid Uid of page with subscription form. Used for links in templates and mails. string null   useSimpleSpamPrevention
(Extension Configuration) whether there should be a simple spam preventition using javascript and session (with **session cookie**) bool 1   spamTimeout time in seconds to wait before form gets rendered again if spam check fails int 5   useHCaptcha whether hCaptcha () should be used, needs further configuration bool 0   hCaptchaSiteKey hCaptcha site key, only if hCaptcha is used string 10000000-ffff-ffff-ffff-000000000001   hCaptchaSecretKey hCaptcha secret key, only if hCaptcha is used string 0x0000000000000000000000000000000000000000   sendAdminInfo whether the admin should get an info mail on every confirmation bool 0   sendPageNotFoundOnInvalidConfirmation whether a 404 is thrown, when an invilid confirmation link is clicked. Otherwise a hint is shown (already confirmed?). This option is new in 6.1 bool 1   multipleConfirmation allow processing confirmation links without checking if the subscription is already confirmed. This option is new in 7.1.0 bool 1   mailTemplateRootPath path to the mail templates, root for different languages (e.g. en, de, dk) string EXT:newsletter\_subscribe/Resources/Private/Templates/Mail/   mailLayoutRootPath path to the mail layouts used from the templates string EXT:core/Resources/Private/Layouts/   overrideFlexformSettingsIfEmpty Fields, which should be overridden from typosrcipt if left blank in the flexform (like in tx\_news, thx to Georg Ringer!). string adminEmail, adminName, subscribePageUid, mailTemplateRootPath, dataProtectionPage, adminName, showFields, newsletterName Site config (for nicer link in subscriber mails)
------------------------------------------------

[](#site-config-for-nicer-link-in-subscriber-mails)

```
routeEnhancers:
  Subscribe:
    type: Extbase
    extension: NewsletterSubscribe
    plugin: Subscribe
    routes:
      -
        routePath: '/confirm/create'
        _controller: 'Subscribe::createConfirmation'
      -
        routePath: '/confirm/{confirm}/{uid}'
        _controller: 'Subscribe::doConfirm'
        _arguments:
          confirm: subscriptionHash
          uid: uid
      -
        routePath: '/unsubscribe/{unsubscribe}/{uid}'
        _controller: 'Subscribe::unsubscribe'
        _arguments:
          unsubscribe: subscriptionHash
          uid: uid
```

Unsubscribe link in direct\_mail
--------------------------------

[](#unsubscribe-link-in-direct_mail)

1. First add the field subscription\_hash to the fields of direct mail in the extension configuration of direct mail: [![direct mail configuration](https://github.com/Gregor-Agnes/newsletter_subscribe/raw/master/Resources/Public/images/ExtManDirectMail1.png)](https://github.com/Gregor-Agnes/newsletter_subscribe/blob/master/Resources/Public/images/ExtManDirectMail1.png)
2. Add the link in your mail template:
    `unsubscribe`where this `unsubscribe/###USER_subscription_hash###/###USER_uid###"` is the important part.
    Note: The subscribe plugin must be inserted on the page "page" in that url.

Salutation in direct\_mail
--------------------------

[](#salutation-in-direct_mail)

1. Add 'salutation' field (see above 'subscription\_hash')
2. Add ###USER\_salutation### on the page

Scheduler Tasks / Console Commands
----------------------------------

[](#scheduler-tasks--console-commands)

There are scheduler tasks / console commands available (TYPO3 v10 only) to fill empty database fields in `tt_address`:

- `newslettersubscribe:fillsalutation`
    Updates the salutation field based on the sys\_language\_uid and gender fields of the tt\_address records. The salutation can be configured via TypoScript.
- `newslettersubscribe:fillsubscriptionhash`
    Updates the subscription\_hash field. This is especially handy if there are subscriptions added manually in the TYPO3 backend or you have legacy data in tt\_address. The subscription\_hash is necessary for the unsubscribe link in direct\_mail to work.

---

To do
=====

[](#to-do)

- creating ajax submit
- update documentation

###  Health Score

47

—

FairBetter than 94% of packages

Maintenance60

Regular maintenance activity

Popularity27

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~44 days

Recently: every ~56 days

Total

47

Last Release

251d ago

Major Versions

v2.2.0 → v3.0.02021-01-21

3.7.2 → 4.0.02022-09-20

4.0.1 → 5.0.02022-12-09

5.0.0 → 6.0.02024-03-01

6.2.0 → 7.0.02024-10-25

### Community

Maintainers

![](https://www.gravatar.com/avatar/1ff8fa9225a61d3a5a80bfac4e71b6bbb1b3f6bec11a26826d7608e191d4c45d?d=identicon)[ga@zwo3.de](/maintainers/ga@zwo3.de)

---

Top Contributors

[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (25 commits)")[![peterkraume](https://avatars.githubusercontent.com/u/4234704?v=4)](https://github.com/peterkraume "peterkraume (14 commits)")[![andyhausmann](https://avatars.githubusercontent.com/u/820276?v=4)](https://github.com/andyhausmann "andyhausmann (5 commits)")[![Gregor-Agnes](https://avatars.githubusercontent.com/u/1701602?v=4)](https://github.com/Gregor-Agnes "Gregor-Agnes (3 commits)")[![cundd](https://avatars.githubusercontent.com/u/743122?v=4)](https://github.com/cundd "cundd (3 commits)")[![kitzberger](https://avatars.githubusercontent.com/u/1405149?v=4)](https://github.com/kitzberger "kitzberger (2 commits)")[![nollm](https://avatars.githubusercontent.com/u/42864489?v=4)](https://github.com/nollm "nollm (2 commits)")[![danielschnfeld](https://avatars.githubusercontent.com/u/58826976?v=4)](https://github.com/danielschnfeld "danielschnfeld (1 commits)")[![SSFGizmo](https://avatars.githubusercontent.com/u/36045938?v=4)](https://github.com/SSFGizmo "SSFGizmo (1 commits)")

---

Tags

newslettersubscribett-addresstypo3-extensionextensionsubscribetypo3newslettertt\_address

### Embed Badge

![Health badge](/badges/zwo3-newsletter-subscribe/health.svg)

```
[![Health](https://phpackages.com/badges/zwo3-newsletter-subscribe/health.svg)](https://phpackages.com/packages/zwo3-newsletter-subscribe)
```

###  Alternatives

[friendsoftypo3/tt-address

Displays a list of addresses from an address table on the page.

431.7M38](/packages/friendsoftypo3-tt-address)[quellenform/t3x-iconpack

Provides an iconpack-registry for custom iconpacks.

1542.7k25](/packages/quellenform-t3x-iconpack)[georgringer/faker

Faker for TYPO3

165.1k](/packages/georgringer-faker)

PHPackages © 2026

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