# acymailing/11.1.0/back/dynamics/subscription/SubscriptionAutomationTriggers.php

AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress, version 11.1.0. 73 lines.

- Page: https://pluginprobe.com/plugins/acymailing/11.1.0/code/back/dynamics/subscription/SubscriptionAutomationTriggers.php
- Raw: https://pluginprobe.com/plugins/acymailing/11.1.0/raw/back/dynamics/subscription/SubscriptionAutomationTriggers.php
- Modified: 2026-09-24T14:59:06+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/acymailing/11.1.0/code/back/dynamics/subscription/SubscriptionAutomationTriggers.php#L10-L20`.

```php
<?php

use AcyMailing\Classes\FollowupClass;
use AcyMailing\Classes\AutomationClass;
use AcyMailing\Helpers\ScenarioHelper;

trait SubscriptionAutomationTriggers
{
    private $subscribeTrigger = 'user_subscribe';
    private $unsubscribeTrigger = 'user_unsubscribe';

    private $triggers = [
        'user_subscribe' => 'ACYM_WHEN_USER_SUBSCRIBES',
        'user_unsubscribe' => 'ACYM_WHEN_USER_UNSUBSCRIBES',
    ];

    protected function initAutomationTriggers(): void
    {
        foreach ($this->triggers as $key => $name) {
            $this->automationTriggers['user'][$key] = acym_translation($name);
        }
    }

    public function displayTriggerOptions(string $fieldName): void
    {
        echo '<input type="hidden" name="'.esc_attr($fieldName.'[]').'" value="">';
    }

    public function onAcymExecuteTrigger(&$step, &$execute, &$data)
    {
        if (empty($data['userId'])) return;

        foreach ($this->triggers as $identifier => $name) {
            if (empty($step->triggers[$identifier])) continue;

            $execute = true;
            break;
        }
    }

    public function onAcymDeclareSummary_triggers(object $automation): void
    {
        if (!empty($automation->triggers[$this->subscribeTrigger])) {
            $automation->triggers[$this->subscribeTrigger] = acym_translation('ACYM_WHEN_USER_SUBSCRIBES');
        }

        if (!empty($automation->triggers[$this->unsubscribeTrigger])) {
            $automation->triggers[$this->unsubscribeTrigger] = acym_translation('ACYM_WHEN_USER_UNSUBSCRIBES');
        }
    }

    public function onAcymAfterUserSubscribe(&$user, $lists)
    {
        $automationClass = new AutomationClass();
        $automationClass->trigger($this->subscribeTrigger, ['userId' => $user->id]);

        $scenarioHelper = new ScenarioHelper();
        $scenarioHelper->trigger($this->subscribeTrigger, ['userId' => $user->id]);

        $followupClass = new FollowupClass();
        $followupClass->addFollowupEmailsQueue($this->subscribeTrigger, $user->id, ['sub_lists' => $lists]);
    }

    public function onAcymAfterUserUnsubscribe(&$user, $lists)
    {
        $automationClass = new AutomationClass();
        $automationClass->trigger($this->unsubscribeTrigger, ['userId' => $user->id]);

        $scenarioHelper = new ScenarioHelper();
        $scenarioHelper->trigger($this->unsubscribeTrigger, ['userId' => $user->id]);
    }
}

```
