Conviro_AiChat — configuration scopes
Plan reference: docs/plans/CONVIRO_MAGENTO_10_10_PLAN.md §6 P2.4. Code: Conviro\AiChat\Model\Config is the only class that reads these paths.
One Magento installation connects to one Conviro workspace. Everything that describes that connection is installation-wide and lives at the default scope; what shoppers see can differ per store view; what is synced can differ per website.
Setting (path under conviro_aichat/) | Scope | Why |
|---|---|---|
general/api_key (encrypted) | default | Identifies the Conviro workspace. A per-website key would split one store's data across workspaces while the integration is registered once. |
general/api_url | default | Managed by Conviro, read-only in admin. |
general/webhook_secret (encrypted) | default | Issued by Conviro on connect; signs events both ways. Written by the module, never shown. |
general/tenant_id, general/chatbot_id | default | Filled in on connect, read-only. |
general/auth_mode, general/oauth_error | default | Conviro's answer on connect (oauth1 or legacy bearer). Written by the module. |
general/enforce_webhook_signature | default | A property of the connection, sent on register-store. |
capabilities/* (AI capabilities, trust policy) | default | Stored by Conviro per workspace (tenant_integrations.settings), so a website-level value could not take effect. |
sync/* (order events, product sync, leads, cart recovery, payment assist, UTM) | default, website | Read for the store the event belongs to, falling back to default — a website can opt out of, say, cart recovery. |
general/app_url | default | The Conviro dashboard the setup wizard sends the browser to for approval. Read-only in admin (bin/magento config:set for a private deployment). |
stores/mode, stores/selected, stores/saved_at | default | Store views Conviro works with (setup wizard step 4). all (default) includes store views created later; selected lists store ids. Gates customer/order/cart/payment events and is sent to Conviro, which never reads an unselected store view. |
sync/cart_recovery_confirmed, sync/payment_assist_confirmed | default | The merchant's confirmation that cart / failed-payment data may go to Conviro. A toggle that is on (at any scope) but not confirmed sends nothing. sync/confirmation_required_since records when the 1.4.0 upgrade held a toggle. |
initial_sync/* (catalog, inventory, customers, orders, orders_window_days, quotes, requested_at) | default | The initial data sync plan from wizard step 5 (Model\Config::getInitialSyncPlan()), read by the historical sync jobs. |
general/enabled, general/public_key | default, website, store view | Which storefronts show the widget and with which chatbot key. |
widget/* (position, colour, greetings, lead form) | default, website, store view | Presentation per storefront/language. |
Changes in 1.4.0
general/api_key,general/enforce_webhook_signature,general/tenant_id,general/chatbot_idand the whole AI Capabilities group are shown at default scope only. Before, they were editable at website (and some at store view) scope, but the connection code read them in a way that mostly ignored those overrides — so a website-level value looked effective and was not.- Sync toggles now really are read per website (1.3.x read them at default scope even though the admin offered website overrides).
- Connection lifecycle state that is not a setting (setup wizard progress, a disconnect Conviro still has to be told about, the automatic OAuth migration) lives in Magento's
flagtable (conviro_setup_state,conviro_connection_state,conviro_pending_disconnect,conviro_oauth_migration), not incore_config_data.
A value saved at a scope that is no longer shown stays in core_config_data but is not read. To check: SELECT scope, scope_id, path FROM core_config_data WHERE path LIKE 'conviro_aichat/%' AND scope <> 'default';