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.3.0 2026-09-20 17:08 UTC

This package is auto-updated.

Last update: 2026-09-20 17:11:35 UTC


README

Native SMS and MMS delivery for Mautic 7.2 through AWS End User Messaging. Version 1.3.0 simplifies configuration without replacing Mautic campaigns or email settings.

The plugin uses the IAM role attached to the server. It stores no AWS access keys and exposes no public inbound webhook.

Three configuration tabs

Tab Settings
Connection (Conexión) Active, Test/Production, test phone in Test mode, region, origination identity, configuration set
MMS Private S3 bucket and prefix
Advanced (Avanzado) Daily/minute limits, maximum SMS characters, ordered phone fields

Fresh installations remain inactive/paused until deliberately configured. Upgrades preserve the current active state, delivery mode, AWS identity and pacing limits.

Message classification

There is no default for new messages or campaign actions. The administrator explicitly chooses Promotional or Transactional:

  • In each campaign's Send text message action. Two campaigns can reuse the same message with different classifications.
  • In the SMS editor for direct/segment sends.

Existing SMS/MMS messages and campaign actions receive a one-time snapshot of the previous global classification during plugin reload. Subsequent new actions do not inherit that snapshot. Missing classification fails before an AWS request. AWS SendTextMessage receives the selected type. The MMS API has no MessageType parameter; classification is retained internally and never sent as an unsupported parameter.

Automatic behavior

  • Any appropriate Mautic segment may be used. There is no segment allowlist or audience-confirmation checkbox.
  • Consent collection, eligibility and record retention are the administrator's responsibility upstream. The plugin does not read a consent field or infer consent from a contact's existence.
  • Native SMS Do Not Contact and frequency rules remain enforced. Email-only DNC does not block SMS/MMS.
  • Only AWS ConflictException with the precise reason DESTINATION_PHONE_NUMBER_OPTED_OUT creates a native SMS unsubscribe. Other conflicts do not unsubscribe contacts.
  • The first valid configured phone is used; one destination per contact. Empty/invalid fields fall through to the next field. AWS rejection or opt-out never triggers fallback to another number.
  • Emojis display a cost warning, not a send block. The configured character limit still applies.
  • Test mode restricts delivery to the configured phone. Production keeps the existing daily/minute pacing controls.
  • MMS validates one local JPEG, PNG or GIF, at most 2,000,000 bytes, then copies it to private S3 and calls AWS. Remote downloads and paths outside the local media library are rejected.

Requirements and installation

Mautic 7.2.x (validated against 7.2.0), PHP 8.2–8.4, AWS SDK for PHP, approved AWS messaging resources, and a server IAM role with least-privilege permissions are required. MMS additionally requires an MMS-capable identity and same-account/same-region private S3 storage. Removing confirmation checkboxes does not remove AWS prerequisites.

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.3
php bin/console cache:clear --env=prod --no-warmup
php bin/console mautic:plugins:reload --env=prod
php bin/console cache:warmup --env=prod

For a manual installation, copy the release into plugins/AwsEndUserMessagingSmsBundle/, then run the three console commands above as the web-server user. Do not copy vendor/, development caches or local credentials. Reload is required to create the plugin-owned classification table and preserve existing choices.

See the installation guide, MMS guide and 1.3 upgrade and validation notes.

Scope and delivery status

This plugin concerns SMS/MMS only. It does not modify email sending, contact phone values, campaign schedules, segment membership, or AWS IAM policies. It uses Mautic's native SMS transport pipeline; no core file patches are required. Other active SMS transports retain their native phone filtering and do not show these AWS fields.

AWS acceptance is not handset delivery. Correlate the sanitized AWS message ID with configuration-set delivery events. Inbound reply processing, RCS, remote-media downloads and delivery-event webhooks are outside this release.

Development

composer install
composer lint
composer test

Tests cover SMS/MMS payloads, exact AWS opt-outs, first-valid-phone routing, native SMS DNC, preserved frequency filtering, classification isolation and missing-type rejection.

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.