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(11mo ago)25.1k↑15.6%7[1 issues](https://github.com/Gregor-Agnes/newsletter_subscribe/issues)[3 PRs](https://github.com/Gregor-Agnes/newsletter_subscribe/pulls)GPL-2.0-or-laterPHP

Since Jan 13Pushed 11mo 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 2w 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

43

—

FairBetter than 89% of packages

Maintenance40

Moderate activity, may be stable

Popularity28

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity71

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

350d 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/content-blocks

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

103574.3k70](/packages/friendsoftypo3-content-blocks)[typo3/cms-styleguide

TYPO3 extension to showcase TYPO3 Backend capabilities

105768.9k39](/packages/typo3-cms-styleguide)[wazum/sluggi

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

40543.5k](/packages/wazum-sluggi)[clickstorm/cs-seo

\[clickstorm\] SEO - Extension for TYPO3. Enables important onpage features for search engine optimization (SEO). Expands the page settings and any desired records for example with a preview for Google search results (SERP) Structured Data (JSON-LD) and a Focus Keyword. Restrictive hreflang and canonical tags. Modules for metadata of records and alternative texts of images. Further features are shown in the extension manual.

37542.0k1](/packages/clickstorm-cs-seo)[friendsoftypo3/visual-editor

TYPO3 CMS Visual Editor - Brings a modern WYSIWYG editing experience to TYPO3 CMS.

6010.0k3](/packages/friendsoftypo3-visual-editor)[quellenform/t3x-iconpack

Provides an iconpack-registry for custom iconpacks.

1556.7k27](/packages/quellenform-t3x-iconpack)

PHPackages © 2026

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