dev.

Campaign QA Bundle

Lint Mautic campaigns before publishing — catch missing dependencies, unreachable nodes, token errors, duplicate send risks, and broken conditions automatically.

QA

Campaign QA

Summer Re-engagement 2025

4 pass2 warn2 fail
✗ Checks failed — campaign blocked from publishing

All 7 email dependencies resolved

All segment references exist

Entry conditions are reachable

Node "Wait 3 days" followed by immediate action — may create zero-delay chain

Node "Send Re-engagement" has no outgoing path — contacts will stop here

Token {{contact.company}} used in "Intro Email" — field not guaranteed on all contacts

Duplicate send risk: "Welcome Email" reachable via 2 independent paths

No unreachable nodes detected

8 checks · 2 blocking · last run 14:31

Description

Campaign bugs are invisible until they affect real contacts. A broken condition means no one advances. An unreachable node means an action never fires. A missing dependency means a send fails silently. By the time you notice, the damage is done.

Campaign QA Bundle adds a preflight check layer to Mautic's campaign builder. Before a campaign goes live, the plugin inspects its full graph: every node, every path, every dependency, every token. It surfaces problems in a structured, readable format — the same checks every time, on every release.

Teams use it at handoff, before migration, before launch, and as a gate in their deployment process.

Who It Is For

  • Agencies that hand off campaigns to clients and need a structured safety check before delivery
  • Admins and marketing operations teams running frequent campaign releases
  • Release managers who want CI-style validation gates on Mautic deployments
  • Technical teams that need machine-readable output for automated pipelines

Features

  • Inspect any campaign by ID or name from the admin panel or CLI
  • Detect nodes with no outgoing paths — contacts reach them and stop
  • Detect nodes that no contact can ever reach given the campaign's entry conditions
  • Verify that all emails, forms, segments, assets, and custom objects referenced in campaign actions actually exist
  • Identify conditions that will always evaluate to the same result
  • Detect timing configurations that create unintended wait loops or zero-delay chains
  • Analyze paths for duplicate send risk — flag cases where a contact may receive the same email more than once
  • Validate all token references in email and SMS action bodies
  • Output results as human-readable diagnostics in the admin UI
  • Output results as machine-readable JSON for integration with CI pipelines and deployment scripts
  • Optional deployment gate: campaigns cannot be published until all blocking checks pass

CLI Usage

# Inspect a specific campaign by ID
php bin/console mautic:campaign:qa --campaign-id=42

# Inspect all unpublished campaigns
php bin/console mautic:campaign:qa --all --status=unpublished

# Output as JSON for pipeline integration
php bin/console mautic:campaign:qa --campaign-id=42 --format=json

Installation

This plugin requires Mautic 7 and PHP 8.1 or later.

Download the ZIP package:

  1. 1.Download CampaignQaBundle-0.1.0.zip
  2. 2.Verify the checksum: CampaignQaBundle-0.1.0.zip.sha256
  3. 3.Extract the ZIP into your Mautic `plugins/` directory
  4. 4.Run:
php bin/console cache:clear
php bin/console mautic:plugins:reload

The ZIP includes a full `INSTALL.md` with step-by-step instructions.

All published releases are listed on the release index.

Enable from Settings → Plugins. The QA panel becomes available on each campaign's detail page and through the CLI command.

The in-app guide is available at mautic.bse-corp.com/s/campaign-qa/guide (requires Mautic login).

What It Does Not Do

  • It does not edit or fix campaigns automatically — it reports, you decide
  • It cannot guarantee campaign performance or delivery outcomes
  • It does not replace functional testing with real contacts in a staging environment

Changelog

v0.1.0Latest8 May 2026Download
  • Campaign graph linting with per-node diagnostic output
  • Dependency checks for emails, forms, segments, and assets referenced in campaigns
  • Unreachable node detection — identifies nodes no contact can reach
  • Broken condition and timing risk detection
  • Duplicate send risk analysis across campaign paths
  • Token safety validation in email and SMS actions
  • Machine-readable JSON output for CI and deployment pipeline integration
  • Optional deployment gate: block campaign publishing until checks pass

Feedback

Found a bug? Have a feature idea? Something unclear? Use the form below.

Describe what happened, what you expected, and your environment.