Universal Messenger 

Extension key

universal_messenger

Package name

netresearch/universal-messenger

Version

main

Language

en

Author

Rico Sonntag

License

This document is published under the CC BY-SA 4.0 license. The extension itself is proprietary software, see the LICENSE file in the repository root.

Rendered

Fri, 04 Sep 2026 21:29:45 +0000


A TYPO3 extension that provides a backend module to compose TYPO3 pages as newsletters and send them through the Universal Messenger API.

Editors build a newsletter with the usual TYPO3 content elements on a dedicated Newsletter page type, preview it per language in a backend module, and send it as a test or live dispatch to a channel imported from Universal Messenger.

🚀 Introduction 

What the extension does, requirements and compatibility.

💻 Installation 

Installing the extension via Composer and setting up the database.

⚙️ Configuration 

Webservice credentials, extension settings, backend user rights and TypoScript.

📧 Usage 

Creating newsletters, content elements, ViewHelpers and the dispatch module.

Introduction 

What does it do? 

Universal Messenger lets editors compose a newsletter as a normal TYPO3 page, using the site's usual content elements, and send it through the Universal Messenger webservice.

  • A dedicated Newsletter page type carries the newsletter content and a selectable Universal Messenger channel.
  • A backend module renders a per-language preview of the newsletter and triggers a TEST or LIVE dispatch to Universal Messenger.
  • A console command imports the newsletter channels that are configured in Universal Messenger, so editors always see the current channel list in the page properties.
  • Fluid ViewHelpers and dedicated content elements (for example a personalization control structure) integrate with Universal Messenger's placeholder and templating conventions.
  • Shipped TypoScript renders the newsletter content with the Foundation for Emails 2 framework and inlines the resulting CSS, so the newsletter HTML matches what most email clients render correctly.

Requirements 

TYPO3 

TYPO3 14.0 or later. The extension does not support earlier TYPO3 versions, see Version matrix.

PHP 

PHP 8.2 to 8.5.

Universal Messenger server 

Version 7.56.0 or later for API-key basic authentication, see Webservice.

Backend module access 

A backend user with access to the Netresearch module group and rights on the relevant newsletter channels, see Backend user permissions.

Version matrix 

Extension version TYPO3 version
3.x 14.0 - 14.99
2.x 13.4, 12.4

The 2.x line also carries the umopen/cmsbs.open authentication token required by Universal Messenger servers older than 7.56.0. See the SDK compatibility notes for details.

Installation 

Composer 

Install the extension via Composer:

Install the extension
composer require netresearch/universal-messenger
Copied!

Activate the extension in the Admin Tools > Extensions backend module if your installation does not activate required extensions automatically.

Update the database structure 

The extension adds the newsletter page type and its channel-selection field to the pages table. Open Admin Tools > Maintenance and run Analyze Database Structure to add the missing fields.

Site configuration 

The extension ships its default TypoScript two ways, so no manual "include static template" step is required for either kind of site:

  • Classic sites (sys_template based) receive the default TypoScript automatically through a global TypoScript registration.
  • Site Set based sites load the same TypoScript by adding netresearch/universal-messenger to the site's Set dependencies.
config/sites/<site-identifier>/config.yaml
dependencies:
  - netresearch/universal-messenger
Copied!

Two additional static templates provide the Fluid rendering of the newsletter content and an example newsletter page template. Include them as described in TypoScript.

After installation, continue with Configuration to set up the Universal Messenger webservice credentials.

Configuration 

Configuring the extension has four parts, best done in this order:

  1. Webservice -- store the Universal Messenger API credentials.
  2. Extension configuration -- set the storage page, the newsletter page type number, and other extension-wide defaults.
  3. Backend user permissions -- grant editors rights on individual newsletter channels.
  4. TypoScript -- include the rendering TypoScript and, optionally, the example newsletter template.

Webservice 

API endpoint 

To access the Universal Messenger API, store the connection configuration in additional.php, under TYPO3_CONF_VARS > EXTENSIONS > universal_messenger (note the spelling, it uses the extension key, not the Composer package name).

config/system/additional.php
// 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',
        'apiSecret' => 'YOUR-API-SECRET',
    ]
);
Copied!

apiUrl

apiUrl
type

string

Required

true

Your Universal Messenger API URL, the basis of all requests, for example https://your-domain.td.universal-messenger.de/p.

apiKey

apiKey
type

string

Required

true

The public key of your Universal Messenger API key, used as the HTTP basic authentication username.

apiSecret

apiSecret
type

string

Required

true

The secret key of your Universal Messenger API key, used as the HTTP basic authentication password.

Create the API key in the Universal Messenger backend, under the API key management for your account.

API logging 

To log Universal Messenger API requests and responses, enable enableLogging (see Extension configuration) and add a log writer configuration to ext_localconf.php:

ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['LOG']['Netresearch']['UniversalMessenger']['writerConfiguration'] = [
    \Psr\Log\LogLevel::DEBUG => [
        \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
            'logFileInfix' => 'universal_messenger',
        ],
    ],
];
Copied!

Extension configuration 

Open Admin Tools > Settings > Extension Configuration and switch to the universal_messenger extension.

General 

Extension configuration tab General, showing the Storage page ID and Page type fields

Extension configuration tab General

storagePageId

storagePageId
type

int

Default
Path

General > Storage page ID

The page ID used to store the Universal Messenger newsletter channel records.

newsletterPageDokType

newsletterPageDokType
type

int

Default

20

Path

General > Page type

The page type (doktype) used for Universal Messenger newsletter pages. Change this if the default value already selects a different page type in your installation.

Webservice 

Extension configuration tab Webservice, showing the Enable logging checkbox

Extension configuration tab Webservice

enableLogging

enableLogging
type

boolean

Default

false

Path

Webservice > Enable logging

Log all Universal Messenger API requests and responses to a log file, see API logging.

Expert 

Extension configuration tab Expert, showing the test and live newsletter channel suffix fields

Extension configuration tab Expert

newsletter.testChannelSuffix

newsletter.testChannelSuffix
type

string

Default

_Test

Path

Expert > Test newsletter channel suffix

The suffix that marks a Universal Messenger channel as a TEST channel, see Test and live channels.

newsletter.liveChannelSuffix

newsletter.liveChannelSuffix
type

string

Default

_Live

Path

Expert > Live newsletter channel suffix

The suffix that marks a Universal Messenger channel as a LIVE channel.

Test and live channels 

To test a newsletter before it goes out, set up a separate test channel in Universal Messenger and give it the configured suffix, for example:

Test operation
Channel Newsletter_TEST, sent to a defined recipient list used to validate the newsletter before the real dispatch.
Live operation
Channel Newsletter_LIVE, sent to the recipient list with actual customer addresses.

newsletter.testChannelSuffix and newsletter.liveChannelSuffix adapt this convention to whatever suffix your Universal Messenger setup actually uses. The extension strips the suffix when it imports channels, see Basic concepts.

Backend user permissions 

Use the Universal Messenger tab on the backend user (or backend user group) record to grant individual editors rights to send newsletters through specific newsletter channels.

Backend user edit form showing the Universal Messenger tab with a list of selectable newsletter channels

Backend user configuration, Universal Messenger tab

TypoScript 

The extension's default TypoScript (the newsletter preview page type, the plugin and the content element configuration) is loaded automatically, see Site configuration. Two further static templates render the actual newsletter markup and are required for newsletters to work, they are not loaded automatically.

Fluid content elements 

Provides the Fluid rendering used for the newsletter view and the newsletter container template. Without it, the backend preview and the dispatch to Universal Messenger have no template to render.

On classic (sys_template based) sites, go to the Web > Template module, select Edit TypoScript Record, then Edit the whole TypoScript record. On the Advanced Options tab, add Universal Messenger: Fluid Content Elements to the list of included static templates.

On Site Set based sites, the same TypoScript is already imported by the netresearch/universal-messenger Set, no extra step is needed.

inlineCssFiles

inlineCssFiles
type

TypoScript array

Default

EXT:universal_messenger/Resources/Public/Css/ZurbFoundation.css

Path

plugin.tx_universalmessenger.settings.inlineCssFiles

Additional CSS files that are inlined as style attributes into the respective HTML elements when a newsletter is rendered, in addition to the Foundation for Emails 2 base CSS the extension already includes by default.

Add a project-specific CSS file
plugin.tx_universalmessenger {
    settings {
        inlineCssFiles {
            10 = EXT:universal_messenger/Resources/Public/Css/ZurbFoundation.css
            20 = EXT:your_sitepackage/Resources/Private/Css/Newsletter.css
        }
    }
}

module.tx_universalmessenger < plugin.tx_universalmessenger
Copied!

The backend module preview uses module.tx_universalmessenger, keep it in sync with the frontend plugin setup as shown above.

Example newsletter template 

Provides an example newsletter backend layout and page template as a starting point for a project-specific newsletter design.

On classic sites, include the static template `Universal Messenger: Example Newsletter Template` the same way as above. On Site Set based sites it is imported together with the Fluid content elements template.

Open the page where the layout should apply, switch to the page properties Resources tab, and add `Universal Messenger: Backend Layout to the :guilabel:Page TSconfig selection. The layout is then selectable on the page's :guilabel:Layout` tab.

Usage 

Basic concepts 

Universal Messenger newsletter channels are imported into TYPO3 as generic channels, the configured test or live suffix (see Test and live channels) is cut off during import, regardless of upper or lower case.

A newsletter page is therefore always assigned to a single generic channel name. The split between a TEST and a LIVE dispatch happens only when the newsletter is actually sent, in the backend module described in Backend module.

Each imported newsletter channel can carry additional, per-channel settings. A re-import does not overwrite them:

Field Default value Description
Sender email address   Overrides the sender ID preset in the webservice configuration, if set.
Reply-to email address   Overrides the reply-to ID preset in the webservice configuration, if set.
Skip used ID false Cancel sending if a newsletter with the same event ID already exists in the archive.
Embed images none Behavior for embedding images in the dispatched newsletter.

These settings are sent to the Universal Messenger API together with the newsletter content.

Importing newsletter channels 

The console command universal-messenger:newsletter-channels:import imports the newsletter channels currently configured in Universal Messenger.

Import newsletter channels
vendor/bin/typo3 universal-messenger:newsletter-channels:import
Copied!

Configure it as a Scheduler task (Execute console commands) to keep the channel list in TYPO3 in sync with Universal Messenger automatically, for example once a day.

Creating a newsletter 

To create a new newsletter, create a new page in the TYPO3 backend. Use the Newsletter shortcut in the page tree's "new page" drag area, or create a standard page and change its type afterwards.

Page tree "new page" drag area showing the Newsletter page type shortcut

Create a new newsletter page

For a standard page, open the page properties and select the page type Newsletter.

Page properties General tab with the Newsletter page type selected

Select the Newsletter page type

The page reloads, and a selection for the Universal Messenger newsletter channel appears below the page type field. Select the channel this newsletter should be sent through.

Page properties showing the newsletter channel selection field

Select the newsletter channel

Build the newsletter with the usual TYPO3 content elements. Use a container framework such as container_elements if you need to group elements into columns and rows.

The extension also provides ViewHelpers (see ViewHelpers) and content elements (see Content elements) to arrange content according to the Foundation for Emails 2 framework the shipped rendering is built on.

Content elements 

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

Control structure 

In the content element's settings, enter the corresponding control structure (for example a personalized salutation) that Universal Messenger substitutes when the newsletter is sent. Also specify the alternative text shown when the newsletter is opened in a web view, where personalization is not available.

Content element "Control structure" showing the Universal Messenger placeholder and its web-view alternative

Content element Control structure

Both the control structure and the alternative text can be formatted using the RTE editor and adapted to the newsletter's layout.

ViewHelpers 

Initialization 

To use the extension's ViewHelpers in a Fluid template, declare their namespace:

xmlns:um="http://typo3.org/ns/Netresearch/UniversalMessenger/ViewHelpers"
Copied!

um:format.placeholder 

Marks a value as a Universal Messenger placeholder using curly brackets, so it can be passed as a literal placeholder inside a URL, for example the unsubscribe link of a newsletter.

Mark the "identifier" value as a Universal Messenger placeholder
<f:link.external uri="https://newsletter.example.org/unsubscribe?identifier={um:format.placeholder(value: 'identifier')}">
    Unsubscribe
</f:link.external>
Copied!

This renders a URL of the form:

https://newsletter.example.org/unsubscribe?identifier={identifier}
Copied!

Universal Messenger replaces {identifier} with the actual value when the newsletter is sent.

Backend module 

Open the backend module by clicking Universal Messenger under the Netresearch group in the left-hand navigation.

Backend module navigation entry "Universal Messenger" under the Netresearch group

Open the Universal Messenger backend module

Select the newsletter page you want to send. If you have the appropriate access rights (see Backend user permissions), a preview of the newsletter is shown exactly as it would be transferred to Universal Messenger and sent. A language switcher appears above the preview when the newsletter exists in multiple languages.

Backend module showing a newsletter preview with a language switcher above it

Newsletter preview

Below the preview, two buttons trigger a TEST dispatch and the final LIVE dispatch, see Basic concepts for how the target channel is derived. The LIVE dispatch must be confirmed again in a dialog before it is sent.