# acquia/mc-cs-mautic architecture

> Architecture diagram of the GitHub repository acquia/mc-cs-mautic, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/acquia/mc-cs-mautic
- Repository: https://github.com/acquia/mc-cs-mautic

## Overview

Mautic is a web-based marketing automation product. A marketer creates forms, pages, and campaign journeys; a visitor submits information, which the contact workflow can use in campaign execution and queued channel messaging. The tree also shows asset management, API authentication, and configuration as substantial product capabilities. The sampled controllers support some controller-to-model and view relationships; campaign execution and several other subsystems are represented by their exact enclosing directories because their implementation was not sampled.

Main entry points: [`app/bundles/LeadBundle/Controller/LeadController.php`](https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/LeadBundle/Controller/LeadController.php) (Contact management), [`app/bundles/CampaignBundle/Executioner`](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CampaignBundle/Executioner) (Campaign execution), [`app/bundles/FormBundle`](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/FormBundle) (Forms), [`app/bundles/CampaignBundle`](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CampaignBundle) (Campaign authoring)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_capture["Capture and content"]
  node_forms["Forms"]
  node_pages["Pages"]
  node_assets["Assets"]
end

subgraph group_contacts["Contacts and automation"]
  node_leadctrl["Contact management<br/>[LeadController.php]"]
  node_categories["Categories"]
  node_campaigns["Campaign authoring"]
  node_execution["Campaign execution"]
  node_eventlogs[("Event logs<br/>[LeadEventLog.php]")]
end

subgraph group_messaging["Marketing channels"]
  node_email["Email management"]
  node_channels["Channel messaging"]
  node_queue[("Message queue<br/>[MessageQueue.php]")]
end

subgraph group_platform["Platform services"]
  node_calendar["Calendar"]
  node_config["Configuration"]
  node_cache[("Cache storage")]
  node_requeststore["Webhook requests"]
end

subgraph group_integrations["API and integrations"]
  node_api["API endpoints"]
  node_oauth["OAuth security"]
  node_cloud["Cloud storage"]
end

node_marketer(("Marketer"))
node_visitor(("Visitor"))
node_recipient(("Message recipient"))
node_database[("Application database")]

node_marketer -->|"creates forms"| node_forms
node_marketer -->|"creates pages"| node_pages
node_marketer -->|"builds journeys"| node_campaigns
node_visitor -->|"submits data"| node_forms
node_forms -->|"captures contacts"| node_leadctrl
node_leadctrl -->|"persists contacts"| node_database
node_leadctrl -->|"manages membership"| node_campaigns
node_campaigns -->|"defines journey"| node_execution
node_execution -->|"records outcomes"| node_eventlogs
node_execution -->|"dispatches actions"| node_channels
node_email -->|"saves email"| node_database
node_channels -->|"queues messages"| node_queue
node_queue -->|"delivers messages"| node_recipient
node_marketer -->|"manages assets"| node_assets
node_api -->|"checks authorization"| node_oauth
node_api -->|"accesses product data"| node_database
node_requeststore -->|"stores payloads"| node_cache
node_cache -->|"retrieves payloads"| node_requeststore
node_cloud -.->|"provides storage"| node_assets
node_config -->|"stores settings"| node_database
node_categories -->|"stores categories"| node_database
node_calendar -->|"reads calendar data"| node_database

click node_forms "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/FormBundle"
click node_pages "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/PageBundle"
click node_assets "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/AssetBundle"
click node_leadctrl "https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/LeadBundle/Controller/LeadController.php"
click node_categories "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CategoryBundle"
click node_campaigns "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CampaignBundle"
click node_execution "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CampaignBundle/Executioner"
click node_eventlogs "https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/CampaignBundle/Entity/LeadEventLog.php"
click node_email "https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/EmailBundle/Controller/EmailController.php"
click node_channels "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/ChannelBundle"
click node_queue "https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/ChannelBundle/Entity/MessageQueue.php"
click node_calendar "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CalendarBundle"
click node_config "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/ConfigBundle"
click node_cache "https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/CoreBundle/Helper/CacheStorageHelper.php"
click node_requeststore "https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/EmailBundle/Helper/RequestStorageHelper.php"
click node_api "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/ApiBundle/Controller"
click node_oauth "https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/ApiBundle/Security"
click node_cloud "https://github.com/acquia/mc-cs-mautic/blob/staging/plugins/MauticCloudStorageBundle/Integration/CloudStorageIntegration.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_forms,node_pages,node_assets toneBlue
class node_leadctrl,node_categories,node_campaigns,node_execution,node_eventlogs,node_database toneAmber
class node_email,node_channels,node_queue toneMint
class node_calendar,node_config,node_cache,node_requeststore toneRose
class node_api,node_oauth,node_cloud,node_marketer,node_visitor,node_recipient toneIndigo
```

## Components

### Capture and content

- [Forms](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/FormBundle): `app/bundles/FormBundle`
- [Pages](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/PageBundle): `app/bundles/PageBundle`
- [Assets](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/AssetBundle): `app/bundles/AssetBundle`

### Contacts and automation

- [Contact management](https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/LeadBundle/Controller/LeadController.php): `app/bundles/LeadBundle/Controller/LeadController.php`
- [Categories](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CategoryBundle): `app/bundles/CategoryBundle`
- [Campaign authoring](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CampaignBundle): `app/bundles/CampaignBundle`
- [Campaign execution](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CampaignBundle/Executioner): `app/bundles/CampaignBundle/Executioner`
- [Event logs](https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/CampaignBundle/Entity/LeadEventLog.php): `app/bundles/CampaignBundle/Entity/LeadEventLog.php`

### Marketing channels

- [Email management](https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/EmailBundle/Controller/EmailController.php): `app/bundles/EmailBundle/Controller/EmailController.php`
- [Channel messaging](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/ChannelBundle): `app/bundles/ChannelBundle`
- [Message queue](https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/ChannelBundle/Entity/MessageQueue.php): `app/bundles/ChannelBundle/Entity/MessageQueue.php`

### Platform services

- [Calendar](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/CalendarBundle): `app/bundles/CalendarBundle`
- [Configuration](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/ConfigBundle): `app/bundles/ConfigBundle`
- [Cache storage](https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/CoreBundle/Helper/CacheStorageHelper.php): `app/bundles/CoreBundle/Helper/CacheStorageHelper.php`
- [Webhook requests](https://github.com/acquia/mc-cs-mautic/blob/staging/app/bundles/EmailBundle/Helper/RequestStorageHelper.php): `app/bundles/EmailBundle/Helper/RequestStorageHelper.php`

### API and integrations

- [API endpoints](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/ApiBundle/Controller): `app/bundles/ApiBundle/Controller`
- [OAuth security](https://github.com/acquia/mc-cs-mautic/tree/staging/app/bundles/ApiBundle/Security): `app/bundles/ApiBundle/Security`
- [Cloud storage](https://github.com/acquia/mc-cs-mautic/blob/staging/plugins/MauticCloudStorageBundle/Integration/CloudStorageIntegration.php): `plugins/MauticCloudStorageBundle/Integration/CloudStorageIntegration.php`

### Other components

- **Marketer**
- **Visitor**
- **Message recipient**
- **Application database**

## Connections

- Marketer → Forms: creates forms
- Marketer → Pages: creates pages
- Marketer → Campaign authoring: builds journeys
- Visitor → Forms: submits data
- Forms → Contact management: captures contacts
- Contact management → Application database: persists contacts
- Contact management → Campaign authoring: manages membership
- Campaign authoring → Campaign execution: defines journey
- Campaign execution → Event logs: records outcomes
- Campaign execution → Channel messaging: dispatches actions
- Email management → Application database: saves email
- Channel messaging → Message queue: queues messages
- Message queue → Message recipient: delivers messages
- Marketer → Assets: manages assets
- API endpoints → OAuth security: checks authorization
- API endpoints → Application database: accesses product data
- Webhook requests → Cache storage: stores payloads
- Cache storage → Webhook requests: retrieves payloads
- Cloud storage → Assets: provides storage
- Configuration → Application database: stores settings
- Categories → Application database: stores categories
- Calendar → Application database: reads calendar data
