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/)ScopeWhy
general/api_key (encrypted)defaultIdentifies the Conviro workspace. A per-website key would split one store's data across workspaces while the integration is registered once.
general/api_urldefaultManaged by Conviro, read-only in admin.
general/webhook_secret (encrypted)defaultIssued by Conviro on connect; signs events both ways. Written by the module, never shown.
general/tenant_id, general/chatbot_iddefaultFilled in on connect, read-only.
general/auth_mode, general/oauth_errordefaultConviro's answer on connect (oauth1 or legacy bearer). Written by the module.
general/enforce_webhook_signaturedefaultA property of the connection, sent on register-store.
capabilities/* (AI capabilities, trust policy)defaultStored 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, websiteRead for the store the event belongs to, falling back to default — a website can opt out of, say, cart recovery.
general/app_urldefaultThe 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_atdefaultStore 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_confirmeddefaultThe 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)defaultThe initial data sync plan from wizard step 5 (Model\Config::getInitialSyncPlan()), read by the historical sync jobs.
general/enabled, general/public_keydefault, website, store viewWhich storefronts show the widget and with which chatbot key.
widget/* (position, colour, greetings, lead form)default, website, store viewPresentation per storefront/language.

Changes in 1.4.0

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';