Skip to content

Per-campaign AI Settings

Access from: Campaigns table → row → AI Settings drawer.

Each campaign exposes four controls that govern how workflows interact with it. The first three form the workflow gate; the fourth controls whether AI actions run inside workflows that do process the campaign.

The three gate controls

1. Force workflows

Workflows selected under Force will process this campaign always, even if the workflow's own filter would not pick it.

Useful for:

  • Exceptions to the rule — campaigns the workflow would normally skip but you want to include.
  • Guaranteeing a specific workflow always acts on this campaign, regardless of its filter.

2. Exclude workflows

Workflows selected under Exclude will never process this campaign, even if their own filter would pick it.

Useful for:

  • Pilot or sensitive campaigns that must not receive automated changes.
  • Vetoing specific workflows without losing the rest of your automation.

Conflict: if the same workflow appears under Force and Exclude, Exclude wins. The UI disables the option in the opposite MultiSelect to prevent this, but the backend protects the case.

3. Only process forced workflows

Global toggle. When enabled, only workflows under Force will process this campaign. Any other workflow is blocked, even if its own filter matches.

Useful for:

  • Temporarily pausing all automation without resetting Force / Exclude.
  • Isolating the campaign for controlled tests.

Decision table

In Force?In Exclude?Only forced?Workflow filter matches?Processes?
❌ (opt-out blocks)
anyany✅ (forced)
anyanyany❌ (exclude wins)

AI optimizer active (aiEnabled)

Orthogonal to the three controls above. Not a workflow gate.

Controls whether AI actions inside the workflows that process this campaign run. When disabled:

  • Linked workflows still process the campaign.
  • Actions requiring AI (bid recommendations, keyword generation, harvest…) are skipped.
  • Non-AI actions (state changes, reports, etc.) continue to run.

Common use cases

"Only Smart Campaigns Optimizer should touch this campaign, no one else"

  • Force: Smart Campaigns Optimizer
  • Only process forced: ON

"I don't want anyone touching this campaign right now"

  • Force: empty
  • Only process forced: ON

"Pause the AI optimizer but keep workflows running for reporting"

  • AI optimizer active: OFF
  • Everything else unchanged

"I want a workflow that wouldn't normally pick this campaign to act on it"

  • Force: the desired workflow
  • (Only process forced: optional, depending on whether you still want others to run)

"This is a pilot campaign — veto 'High ACOS campaigns to review'"

  • Exclude: High ACOS campaigns to review
  • Everything else keeps acting per their own filter

Persistence

All changes are stored in the campaign document's optimizationConfig field in Mongo:

js
optimizationConfig: {
    linkedWorkflowDefinitionIds: [ObjectId, ...],   // Force
    excludedWorkflowDefinitionIds: [ObjectId, ...], // Exclude
    workflowsOptOut: boolean,                       // Only process forced
    aiEnabled: boolean,                             // AI optimizer active
    // ... rest of the config
}

The IDs point to workflow-definitions._id.

Epinium Documentation