PHPackages                             netresearch/universal-messenger - 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. netresearch/universal-messenger

ActiveTypo3-cms-extension

netresearch/universal-messenger
===============================

TYPO3 extension providing a backend module to send newsletters using Universal Messenger API

2.0.3(5mo ago)631[1 issues](https://github.com/netresearch/t3x-universal-messenger/issues)GPL-3.0-or-laterPHPPHP ^8.2CI passing

Since Sep 4Pushed 1mo ago3 watchersCompare

[ Source](https://github.com/netresearch/t3x-universal-messenger)[ Packagist](https://packagist.org/packages/netresearch/universal-messenger)[ RSS](/packages/netresearch-universal-messenger/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (6)Dependencies (16)Versions (8)Used By (0)

[![Latest version](https://camo.githubusercontent.com/646389c2d34225b393c58a0b8f691af641340e62c0b932554b2a6eb361f49587/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6e657472657365617263682f756e6976657273616c2d6d657373656e6765723f736f72743d73656d766572)](https://github.com/netresearch/universal-messenger/releases/latest)[![License](https://camo.githubusercontent.com/1a7cc65e99058652b789943de359fa4da63f38ecc236f96de14eb738a495def9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6e657472657365617263682f756e6976657273616c2d6d657373656e676572)](https://github.com/netresearch/universal-messenger/blob/main/LICENSE)[![CI](https://github.com/netresearch/universal-messenger/actions/workflows/ci.yml/badge.svg)](https://github.com/netresearch/universal-messenger/actions/workflows/ci.yml)

Universal Messenger
===================

[](#universal-messenger)

A TYPO3 extension that provides a TYPO3 backend module to send TYPO3 pages as newsletters using the Universal Messenger API.

- [Installation](#installation)
- [Setup](#setup)
    - [Update database structure](#update-database-structure)
    - [Webservice](#webservice)
        - [API endpoint](#api-endpoint)
    - [Extension configuration](#extension-configuration)
        - [General](#general)
        - [Webservice](#webservice-1)
            - [API logging](#api-logging)
        - [Expert](#expert)
            - [Test-/Live channels](#test-live-channels)
    - [Backend user configuration](#backend-user-configuration)
    - [TypoScript](#typoscript)
    - [Scheduler-Task](#scheduler-task)
- [Usage](#usage)
- [Creating newsletters](#creating-newsletters)
    - [Content elements](#content-elements)
        - [Control structure](#control-structure)
- [Development](#development)
    - [Testing](#testing)

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

[](#installation)

The extension should be installed via composer:

`composer require netresearch/universal-messenger`

Setup
-----

[](#setup)

### Update database structure

[](#update-database-structure)

Use the `Analyze Database Structure` in the `Maintenance` Admin Tools section to update the database structure.

### Webservice

[](#webservice)

#### API endpoint

[](#api-endpoint)

To access the Universal Messenger API, store the corresponding configuration in the file `additional.php` within the global structure `TYPO3_CONF_VARS` under `EXTENSIONS` and `universal_messenger` (note the spelling) of your TYPO3 installation.

```
// The universal messenger API endpoint
$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['universal_messenger'] = array_merge(
    $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['universal_messenger'] ?? [],
    [
        'apiUrl' => 'YOUR-API-URL',
        'apiKey' => 'YOUR-API-KEY',
    ]
);
```

FieldDescriptionapiUrlYour general Universal Messenger API URL, which is the basis of all requests, e.g. apiKeyYour Universal Messenger API key### Extension configuration

[](#extension-configuration)

Open the `Settings` page under the `Admin Tools` section and switch to the `Extension Configuration`. Open the configuration section of the extension `universal_messenger`.

#### General

[](#general)

[![Extension Configuration Tab "General"](Documentation/ExtensionConfiguration1.png)](Documentation/ExtensionConfiguration1.png)*Fig. 1: Extension Configuration Tab `General`*

FieldTabDefault valueDescriptionStorage page IDGeneral0The page ID used to store the Universal Messenger newsletter channel records.Page typeGeneral20This value defines the page type used for Universal Messenger newsletter pages. It is used for the doctype field of the page table in your instance. Set a different value here if the default value is already used for other things.Enable loggingWebservice0Log all Universal Messenger API requests in a log file.Test newsletter channel suffixExpert\_TestEnter the suffix for the TEST newsletter channels here.Live newsletter channel suffixExpert\_LiveEnter the suffix for the LIVE newsletter channels here.#### Webservice

[](#webservice-1)

[![Extension Configuration Tab "Webservice"](Documentation/ExtensionConfiguration2.png)](Documentation/ExtensionConfiguration2.png)*Fig. 2: Extension Configuration Tab `Webservice`*

##### API logging

[](#api-logging)

To enable the request/response logging of the Universal Messenger, enable the extension configuration `Enable logging`and add a log writer configuration to your `ext_localconf.php`:

```
// Add logger for universal messenger
$GLOBALS['TYPO3_CONF_VARS']['LOG']['Netresearch']['UniversalMessenger']['writerConfiguration'] = [
    \Psr\Log\LogLevel::DEBUG => [
        \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
            'logFileInfix' => 'universal_messenger',
        ],
    ],
];
```

#### Expert

[](#expert)

[![Extension Configuration Tab "Expert"](Documentation/ExtensionConfiguration3.png)](Documentation/ExtensionConfiguration3.png)*Fig. 3: Extension Configuration Tab `Expert`*

##### Test-/Live channels

[](#test-live-channels)

To enable test operation, a separate channel can be set up as a test channel for a newsletter in Universal Messenger and, for example, given a suffix.

Test operation

- Channel: Newsletter\_TEST
- Recipient: Defined recipient list for validating the newsletter before it is actually sent to customers.

Live operation

- Channel: Newsletter\_LIVE
- Recipient: Recipient list with customer addresses

Using the setting `newsletter` =&gt; `testChannelSuffix` and `liveChannelSuffix`, this suffix can be adapted to the setting in Universal Messenger.

### Backend user configuration

[](#backend-user-configuration)

Use the backend user setting in the `Universal Messenger` tab to allow individual backend users specific rights for sending via individual newsletter channels.

[![Backend user configuration](Documentation/BackendUserConfiguration.png)](Documentation/BackendUserConfiguration.png)*Fig. 4: Backend user configuration*

### TypoScript

[](#typoscript)

Go to the `TypoScript` page, select `Edit TypoScript Record` and then click `Edit the whole TypoScript record`. On the page that opens, go to the `Advanced Options` tab and add the static TypoScript `Universal Messenger: Fluid Content Elements` to the list of selected TypoScript configurations.

When creating a newsletter, the CSS is finally read from an external CSS file and the information is added as inline style attributes to the respective HTML elements.

By setting the `inlineCssFiles` setting, additional CSS can be passed to the newsletter container. By default, the CSS of the `Foundation for Emails 2` framework is already included (, ).

```
plugin.tx_universalmessenger {
    settings {
        inlineCssFiles {
            10 = EXT:universal_messenger/Resources/Public/Css/ZurbFoundation.css
            20 = EXT:/Resources/Private/Css/.css
        }
    }
}

module.tx_universalmessenger < plugin.tx_universalmessenger

```

#### Example backend layout

[](#example-backend-layout)

Go to the `TypoScript` page, select `Edit TypoScript Record` and then click `Edit the whole TypoScript record`. On the page that opens, go to the `Advanced Options` tab and add the static TypoScript `Universal Messenger: Example Newsletter Template` to the list of selected TypoScript configurations.

Open a page where you want to use the backend layout and switch to page properties and select `resources` tab and add `Universal Messenger: Backend Layout` to the `Page TSconfig` selection.

Now you can select the backend layout in the `layout` tab.

### Scheduler-Task

[](#scheduler-task)

The extension provides a console command `universal-messenger:newsletter-channels:import` for importing the Universal Messenger newsletter channels. This command can be configured as a scheduler task to automatically load the newsletter channels into TYPO3 once a day, for example.

Usage
-----

[](#usage)

### Basic

[](#basic)

The newsletter channels are imported into TYPO3 as generic channels, i.e. the configured suffixes for the test or live channels are cut off (regardless of the spelling, i.e. an upper and lower case is ignored).

A newsletter page is always assigned only the generic channel name, and the separation after a TEST or LIVE dispatch only takes place in the dispatch module.

Each newsletter channel can also be configured with additional settings (a new import does not overwrite these settings):

FieldDefault valueDescriptionSender email addressThe sender's email address. If set, this overwrites the sender ID preset in the configuration file.Reply-to email addressThe reply-to email address. If set, this overwrites the reply-to ID preset in the configuration file.Skip used ID0Enable if the sending should be canceled if there is already a newsletter with the same event ID in the archive.Embed imagesnoneBehavior for embedding images.These settings are sent to the Universal Messenger API when the newsletter page is submitted.

### Creating newsletters

[](#creating-newsletters)

To create a new newsletter, simply create a new page in the TYPO3 backend. To do this, use the new shortcut `Newsletter` in the page tree or create a new standard page.

[![Create new newsletter page](Documentation/Newsletter-Step-1.png)](Documentation/Newsletter-Step-1.png)

Then open the page properties. For a standard page, select the new page type `Newsletter`.

[![Select page type](Documentation/Newsletter-Step-2.png)](Documentation/Newsletter-Step-2.png)

The page will then reload and the selection for the Universal Messenger newsletter channel will appear below the selection for the page type. Select the appropriate channel for sending the newsletter here.

[![Select newsletter channel](Documentation/Newsletter-Step-3.png)](Documentation/Newsletter-Step-3.png)

Create your newsletter with the usual TYPO3 content elements. If necessary, use a container framework such as [https://extensions.typo3.org/extension/container\_elements](https://extensions.typo3.org/extension/container_elements) to group elements more easily into columns and rows.

The Universal Messenger Extension already provides some ViewHelpers to group and arrange elements according to the `Foundation for Emails 2` framework (See  how to create newsletters using this framework).

### Content elements

[](#content-elements)

The extension also provides content elements for use with the Universal Messenger API.

#### Control structure

[](#control-structure)

In the settings of the content element, you enter the corresponding control structure (e.g. personalized salutation) of the Universal Messenger. You also specify the alternative that is displayed if the newsletter is displayed in the web view, for examp le, and personalization is not available.

[![Content Element: Control Structure](Documentation/CE-ControlStructure.png)](Documentation/CE-ControlStructure.png)

Both the control structure and the alternative can be formatted using the RTE editor and thus adapted to the layout of the newsletter.

### View helpers

[](#view-helpers)

#### Initialization

[](#initialization)

To use the ViewHelpers provided by the extension, they must be made known within the HTML using the namespace `xmlns:um="http://typo3.org/ns/Netresearch/UniversalMessenger/ViewHelpers"`.

#### View helper "format.placeholder"

[](#view-helper-formatplaceholder)

To pass additional placeholders within URLs, e.g. the unsubscribe link for newsletters, to the Universal Messenger, the view helper `um:format.placeholder` can be used to mark a value as a placeholder using curly brackets.

```
Unsubscribe
```

This results in an URL like `https://newsletter.example.org/unsubscribe?identifier={identifier}`.

### Backend module

[](#backend-module)

To open the backend module, click on the new entry `Universal Messenger` below the `Netresearch` group on the left side navigation.

[![Backend module](Documentation/Module-Step1.png)](Documentation/Module-Step1.png)

In the view that now opens, you have the option of selecting the corresponding newsletter page and, assuming you have the appropriate access rights, you can see a preview of the respective newsletter as it would be transferred to the Universal Messenger and sent.

A language switcher will appear above the preview if there are multiple versions of a newsletter in different languages.

[![Newsletter preview](Documentation/Module-Step2.png)](Documentation/Module-Step2.png)

Below the preview there are two buttons for testing the sending and for the final LIVE sending. The actual LIVE sending must be confirmed again in a dialog.

Development
-----------

[](#development)

### Testing

[](#testing)

```
composer install

composer ci:cgl
composer ci:test
composer ci:test:php:phplint
composer ci:test:php:phpstan
composer ci:test:php:rector
```

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance77

Regular maintenance activity

Popularity13

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 65.5% 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 ~88 days

Recently: every ~104 days

Total

6

Last Release

173d ago

Major Versions

1.0.1 → 2.0.02025-02-10

### Community

Maintainers

![](https://www.gravatar.com/avatar/acffee6a64e18f21593794b335dd8786001148f7df89fd8372a54d3dd09d91a4?d=identicon)[netresearch](/maintainers/netresearch)

---

Top Contributors

[![magicsunday](https://avatars.githubusercontent.com/u/564393?v=4)](https://github.com/magicsunday "magicsunday (91 commits)")[![CybotTM](https://avatars.githubusercontent.com/u/326348?v=4)](https://github.com/CybotTM "CybotTM (29 commits)")[![renovate[bot]](https://avatars.githubusercontent.com/in/2740?v=4)](https://github.com/renovate[bot] "renovate[bot] (17 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (2 commits)")

---

Tags

newslettertypo3typo3-cms-extensiontypo3-extensionuniversal-messenger

###  Code Quality

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/netresearch-universal-messenger/health.svg)

```
[![Health](https://phpackages.com/badges/netresearch-universal-messenger/health.svg)](https://phpackages.com/packages/netresearch-universal-messenger)
```

###  Alternatives

[fluidtypo3/vhs

This is a collection of ViewHelpers for performing rendering tasks that are not natively provided by TYPO3's Fluid templating engine.

1954.1M48](/packages/fluidtypo3-vhs)[typo3/testing-framework

The TYPO3 testing framework provides base classes for unit, functional and acceptance testing.

675.0M774](/packages/typo3-testing-framework)[aimeos/aimeos-typo3

Professional, full-featured and high performance TYPO3 e-commerce extension for online shops and complex B2B projects

1.5k91.2k4](/packages/aimeos-aimeos-typo3)[pagemachine/typo3-formlog

Form log for TYPO3

23225.3k6](/packages/pagemachine-typo3-formlog)[eliashaeussler/typo3-warming

Warming - Warms up Frontend caches based on an XML sitemap. Cache warmup can be triggered via TYPO3 backend or using a console command. Supports multiple languages and custom crawler implementations.

20229.9k](/packages/eliashaeussler-typo3-warming)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

63991.3k4](/packages/netresearch-rte-ckeditor-image)

PHPackages © 2026

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