Configuration reference
Every knob the system exposes, what it controls, and the defaults shipped today. On Magento, settings live under Stores → Configuration → MBA Reports. On WooCommerce, the same names appear under WooCommerce → MBA Settings. This page is the union of both.
General
| Setting | Type | Default | What it does |
|---|---|---|---|
| general/enabled | bool | Yes | Master switch for the module. Off → cron jobs skip; admin pages still load but mining is disabled. |
| general/default_engine | enum | fp_growth | Default engine for new jobs. Override per-job from the Jobs grid or CLI. See engines reference for trade-offs. |
| general/default_log_level | enum | info | Verbosity of job logs. 'debug' useful during a backfill or while tuning thresholds. |
Job defaults
These set the starting values for new mining jobs. They're overridable per-job, the admin always shows the resolved value next to the editable field so reviewers can spot deviations.
| Setting | Type | Default | What it does |
|---|---|---|---|
| job_defaults/max_itemset_size | int (2–4) | 3 | Maximum items in a rule. 2 = cross-sell pairs only; 4 = larger kits at the cost of mine time. |
| job_defaults/min_support | float (0.0–1.0) | 0.01 | Fraction of transactions containing the itemset. Lower → more rules, longer mine, more noise. |
| job_defaults/min_confidence | float (0.0–1.0) | 0.30 | P(consequent | antecedent). Raise to be more conservative about which patterns become recommendations. |
| job_defaults/min_lift | float (≥ 0.0) | 1.5 | Above 1.0 means above-baseline co-occurrence. The hard floor against statistical noise. |
| job_defaults/max_rules | int | 5000 | Cap on rules emitted per job. Guardrail against a wide-net job flooding the Opportunities grid. |
Cost & margin
Profit-aware scoring uses product cost to estimate margin and to gate bundle discount strategies. Without cost data, scoring falls back to AOV-based revenue lift.
| Setting | Type | Default | What it does |
|---|---|---|---|
| cost/default_cost_mode | enum | product_attribute | How to read product cost: 'product_attribute' (Magento attribute), 'cost_field' (WooCommerce product cost meta), or 'estimate' (use category-mean fallback). |
| cost/default_cost_attribute_code | string | cost | Magento product attribute code to read cost from. Only used when mode=product_attribute. |
Scoring & pricing
| Setting | Type | Default | What it does |
|---|---|---|---|
| scoring/default_scoring_mode | enum | profit | How to rank opportunities. 'profit' uses margin lift; 'revenue' uses AOV proxy; 'attach' uses attach-rate only. |
| scoring/bundle_discount_pct | float (0–100) | 10 | Default discount % applied when proposing a bundle. The margin-floor pricing strategy can override this per-SKU to protect margin. |
AI features
Same bring-your-own-key architecture on Magento and WooCommerce: paste your own Anthropic or OpenAI key here, the module calls the provider directly from your store, and you're billed by the provider. See the AI features deep dive for what each flag controls. All AI features fall back to a templated/empty default when disabled or when the provider is unreachable.
| Setting | Type | Default | What it does |
|---|---|---|---|
| ai/provider | enum | claude | Which LLM provider AiClientFactory creates. 'claude' or 'openai'. |
| ai/api_key | encrypted | — | Provider API key. Stored encrypted; shown as masked in admin once saved. |
| ai/model | string | claude-opus-4-7 / gpt-4o | Default model. Long-context tasks (catalog, B2B) may override per-call. |
| ai_catalog/async_dispatch_enabled | bool | Yes | Kill-switch for ProcessAiQueue. Off → queued LLM tasks stay queued; mining still runs deterministically. |
| ai/bundle_copy_enabled | bool | Yes | Generate AI bundle name + description on approve. Off → deterministic templated copy. |
| ai/session_intent_enabled | bool | No | Classify storefront sessions. Off → widgets render for all sessions equally. |
| ai/b2b_intel_enabled | bool | No | Generate B2B account summaries. Magento B2B installs only. |
Scheduling
Three trigger mechanisms ship today. They're additive, you can run all three at once and the queue dedupes overlapping runs.
| Setting | Type | Default | What it does |
|---|---|---|---|
| schedule/auto_mining_enabled | bool | No | Master switch for scheduled mining. Off → only manual runs and orders-velocity triggers fire. |
| schedule/cadence_days | enum | 7 | Days between scheduled jobs. Options: 1, 3, 7, 14, 30. |
| schedule/default_window_days | int | 90 | Days of order history each scheduled run analyzes. Match to your seasonality. |
| orders_velocity/enabled | bool | No | Trigger a re-mine when N orders have landed since the last run. Best for high-velocity stores where weekly cadence misses too much. |
| orders_velocity/threshold | int (orders) | 500 | How many new orders must accumulate before the trigger fires. Decremented per-webhook with the dirtyOrdersCount counter. |
Weekly digest email
| Setting | Type | Default | What it does |
|---|---|---|---|
| digest/enabled | bool | No | Send a weekly summary email. HTML + text, via Resend. |
| digest/recipient | — | Where to send the digest. Single recipient today; multi-recipient is a hosted-tier feature. | |
| digest/day_of_week | enum | Monday | Which weekday the digest sends. Best to align with your team's planning cadence. |
Retention & purge
The mba_reports_purge_old_jobs cron job does the cleanup. Default retention values are picked so a busy store can run for a year without the tables growing past tens of MB.
| Setting | Type | Default | What it does |
|---|---|---|---|
| retention/keep_jobs_days | int (days) | 90 | Days to retain completed jobs and their results (rules, opportunities). |
| retention/purge_logs_days | int (days) | 30 | Days to retain per-job verbose logs. Set to 0 to keep forever (not recommended). |
| retention/purge_aitask_days | int (days) | 7 | Days to retain completed/failed AI dispatch tasks in mba_reports_mbaaitask. |
Notifications
| Setting | Type | Default | What it does |
|---|---|---|---|
| notifications/alert_email | — | Where to send job-completion alerts. Leave blank to disable. | |
| notifications/alert_min_opportunity_score | int (0–100) | 70 | Only send the alert when a new opportunity scores at or above this threshold. Filters noise from low-value runs. |
Public API & per-shop keys
See the Public API quick start for usage. Key admin is in WooCommerce → MBA → API keys (WooCommerce) or System → MBA → API keys (Magento).
- Keys are stored as SHA-256 hashes; the plaintext is shown once at creation and can't be recovered. Re-mint if a key leaks.
- Each key carries an optional label so you can tell “Slack bot” from “n8n workflow” at a glance.
- Revoking a key is immediate, the next request gets a 401.
- Rate limits: Pro plan 600 req/min/shop; Hosted is configurable. See the API reference.
Per-opportunity overrides
Operators can override the engine's output without changing global config. Each opportunity row in the admin supports:
- Pin / un-pin, force-include or force-exclude this opportunity from the widgets, regardless of its rank.
- Edit name, override the AI-generated or templated bundle name before pushing.
- Edit discount %, override the global default for this specific bundle, subject to the margin floor.
- Dismiss, bury the opportunity so it doesn't resurface in future re-mines (unless the underlying rule strengthens past a configurable threshold).
Overrides are per-opportunity and survive re-mining. They're the right place to encode merchandiser judgment without arguing with the engine globally.
Hosted-only settings
These appear in the admin only on hosted-tier deployments:
- Custom data-residency region (US-East / EU-West / AP-Southeast)
- SSO via SAML 2.0 (IdP-initiated and SP-initiated)
- Audit log retention (default 365 days; configurable to 7 years)
- Custom mining engines (added per agreement)
- Multi-shop roll-up groups (brand / region / portfolio)
- Custom rate limits + per-key rate-limit overrides
Setting precedence
Magento store config is hierarchical (Default → Website → Store). MBA respects that hierarchy, set a different default engine for each store view without touching the others. WooCommerce is single-site, so settings are flat.
Per-job overrides always win. The Jobs grid shows the resolved value next to each editable field so it's clear which job is running with non-default thresholds.
Ready to turn your order data into revenue?
Install on your platform in under 10 minutes. Or book a consulting call and we'll do the launch for you.