Search by

beto2l / mautic-aws-eum-sms

beto2l

Secure AWS End User Messaging SMS and MMS transport for Mautic.

Package info

github.com/beto2l/mautic-aws-eum-sms

Type:mautic-plugin

pkg:composer/beto2l/mautic-aws-eum-sms

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.1 2026-09-13 06:06 UTC

This package is auto-updated.

Last update: 2026-09-13 06:08:14 UTC


README

Secure, consent-aware SMS and MMS delivery for Mautic 7 through AWS End User Messaging.

The plugin adds a native Mautic SMS transport and exposes the normal SMS area under Channels when it is enabled. It does not create a public webhook or store AWS access keys. AWS authentication uses the IAM role attached to the Mautic host.

Security model

  • Disabled by default. The integration must be enabled in Settings > Plugins.
  • Delivery starts in locked mode. No text is sent until an administrator deliberately selects canary or production.
  • Canary mode can send only to one configured E.164 test number.
  • Production mode requires a phone field that can be normalized to E.164, administrator confirmation that the approved audience opted in to SMS, and membership in one of the configured segment IDs. US 10- and 11-digit NANP values are normalized to E.164 at send time. Mautic's native DNC/opt-out checks remain active.
  • Mautic continues to enforce its existing SMS Do Not Contact / opt-out records before this transport is called.
  • The plugin rejects emoji by default and limits message length to control multi-part SMS cost.
  • MMS is independently disabled by default. Enabling it requires explicit confirmation of AWS campaign approval, an active MMS-capable origination identity, and AWS-managed opt-outs.
  • Mautic's native MMS editor is supported. One local JPEG, PNG, or GIF image of at most 2 MB is copied to a private S3 bucket in the same AWS account and region, then submitted with SendMediaMessage.
  • External image downloads are intentionally rejected. This prevents the Mautic worker from fetching untrusted URLs.
  • AWS credentials are never entered in the Mautic modal and are never committed to this repository.
  • Do not enable the Twilio SMS plugin at the same time. Mautic uses one active SMS transport for campaign delivery.

Mautic 7.2 provides Mautic\CoreBundle\Helper\EncryptionHelper as a core service. The plugin references that service directly and does not redefine mautic.helper.encryption, so Mautic's core cipher dependencies remain intact.

Requirements

  • Mautic 7.2 or newer within the 7.x series (verified with Mautic 7.2.0) and PHP 8.2, 8.3, or 8.4.
  • AWS SDK for PHP.
  • An EC2 instance profile or other AWS default credential provider with sms-voice:SendTextMessage permission limited to the approved origination identity, pool, configuration set, or protect configuration.
  • An approved AWS End User Messaging SMS origination identity and configuration set.
  • For MMS: sms-voice:SendMediaMessage, a same-account/same-region S3 bucket, and narrowly scoped s3:GetObject and s3:PutObject permissions for the configured prefix.

Install

For a production Mautic installation managed by Composer, install the published package:

composer require beto2l/mautic-aws-eum-sms:^1.0
php bin/console mautic:plugins:reload

Until the Packagist listing is active, add the GitHub repository as a VCS repository and require the release tag:

composer config repositories.mautic-aws-eum-sms vcs https://github.com/beto2l/mautic-aws-eum-sms.git
composer require beto2l/mautic-aws-eum-sms:^1.0

For a non-Composer Mautic deployment, copy this repository into:

plugins/AwsEndUserMessagingSmsBundle/

Then run:

php bin/console cache:clear --no-warmup
php bin/console cache:warmup
php bin/console mautic:plugins:reload

Open Settings > Plugins > AWS End User Messaging SMS and configure the integration modal. Keep the delivery mode in locked until a canary test succeeds.

See the installation and operation guide for SMS setup and the MMS activation and operations guide before enabling media delivery.

Configuration data

  • AWS region.
  • AWS origination identity: phone number, pool, or ARN.
  • AWS configuration set name or ARN.
  • Normalized phone field alias, usually phone.
  • SMS/MMS consent field alias, for example course_sms_optin.
  • Administrator confirmation that the approved audience has opted in to SMS.
  • Approved Mautic segment IDs.
  • Canary test number, daily limit, per-minute limit, maximum message length, and message type.

Release scope

Version 1.1 adds outbound MMS through Mautic 7.2's native MMS structure and AWS SendMediaMessage. It supports one local JPEG, PNG, or GIF image per message. SMS behavior remains independent and unchanged. RCS, inbound-reply ingestion, self-managed opt-outs, remote-image fetching, PDFs/video/audio, and a local delivery-event webhook are out of scope.

AWS acceptance is not handset delivery. Correlate the non-PII AWS message ID from Mautic logs with a configuration-set event destination for final delivery status.

Development

composer install
composer lint

Run the test suite in an environment that includes Mautic 7 dependencies:

vendor/bin/phpunit

Consulting and support

Need help configuring your server and getting the most out of Mautic and AWS End User Messaging SMS, including secure SMS delivery to your authorized contact database?

For donations or configuration services, contact us by email.

License

GPL-3.0-or-later.