idea89 / magento2-assistant

idea89/magento2-assistant

AI shopping assistant for Magento 2 — answers product questions, recommends what to buy, surfaces promotions. 5-minute install.

magento2-module Compatibility: 2.4.7-2.4.9 Code Quality: Fail Tests: N/A Security: Pass OSL-3.0

IDEA89 — AI Shopping Assistant for Magento 2

Turn your Magento storefront into a conversion machine. IDEA89 adds an AI-powered shopping assistant that answers product questions, recommends what to buy, and surfaces promotions — in your brand voice.

5-minute install. No theme changes. No dev work.

Packagist Version
Packagist Downloads
Magento 2
PHP
License

Coding Standard
CodeQL
Security Policy


What it does

Feature Description
Smart product recommendations AI understands natural language queries like "something waterproof under 100 pounds" and finds the right products from your catalogue
Real-time catalogue sync Products, variants, prices, stock levels, and reviews are synced automatically. Out-of-stock items are never recommended
Brand voice Configure your assistant's name, tone, and store context. It answers like a member of your team
Promotion awareness Active cart price rules are synced so the assistant can surface relevant discounts
In-chat order tracking (new in v1.1.1) When a shopper asks "where is my order?" the assistant surfaces a compact order card right in the chat with status, items, and a carrier tracking link. Logged-in customers see their last 3 orders; guests verify with order number + email
Store Locator (new in v1.1.0) Physical showroom finder with map, postcode search, hours, photos, and directions — in chat and on a dedicated /store-finder page (URL configurable)
Built-in analytics Track conversations, conversion rates, and top queries from the merchant dashboard
GDPR-ready EU-hosted, no customer data used for AI training, PII redaction before model calls

How it works

  1. Install the module via Composer
  2. Enter your API key from the IDEA89 dashboard
  3. The widget appears on your storefront immediately
  4. Products sync automatically — the assistant is ready to sell

Your catalogue is indexed with AI embeddings for semantic search. When a shopper asks a question, the assistant searches your products, checks stock, and responds with relevant recommendations — complete with product cards, prices, and add-to-cart buttons.


Requirements

  • Magento 2.4.6 or later (Open Source, Adobe Commerce, or Adobe Commerce Cloud)
  • PHP 8.1, 8.2, 8.3, 8.4, or 8.5 — practically, whichever your Magento install
    supports:
    Magento PHP range
    2.4.6 8.1, 8.2
    2.4.7 8.1, 8.2, 8.3
    2.4.8 8.2, 8.3, 8.4
    2.4.9 8.4, 8.5 (8.3 upgrade-only)
  • An IDEA89 account — start your free trial

Installation

composer require idea89/magento2-assistant
bin/magento module:enable Idea89_Assistant
bin/magento setup:upgrade
bin/magento cache:flush

That's it. No layout XML changes, no theme overrides, no frontend build step.

Configuration

Navigate to Stores > Configuration > IDEA89 > AI Shopping Assistant in Magento Admin.

General

Setting Description
Enable Widget Turn the chat widget on/off
API Key Your API key from the IDEA89 dashboard (stored encrypted)
Assistant Name Name shown in the widget header (e.g. "Aria", "Shop Helper")
Store Context Describe what your store sells so the AI can answer general questions
Test Connection Verify your API key works
Sync Now Manually trigger a full catalogue sync

Widget Appearance

Setting Description
Position Bottom-right or bottom-left
Brand Colour Hex code for the widget header (e.g. #2563eb)

Content Sync

Choose what gets synced to IDEA89:

  • Products — names, descriptions, prices, images, attributes, variants, stock, reviews
  • Categories — so the assistant knows your catalogue structure
  • CMS Pages — About Us, FAQs, policies — the assistant can answer "what's your return policy?"
  • Store Info — store name and context description

Store Locator (Pro plan and above)

Settings live under Stores → Configuration → IDEA89 → Store Locator. Twelve fields covering page behaviour and content:

Setting Default Notes
Enable Store Finder Page Yes Master toggle for the locator page and CMS widget
URL Path store-finder Pick any slug — showrooms, branches, find-a-shop. Save fails with a clear error if it collides with an existing CMS page, product, category, or module
Page Layout Use dashboard setting Fullwidth (edge-to-edge map) or Boxed (max-width card)
SEO Page Title + Meta Description (sensible defaults) Standard SEO control over the page head
Hero Eyebrow / Title / Subhead (sensible defaults) Override the in-page copy without theme edits
Help Section Heading / Body / CTA Label / CTA URL "Contact us" → /contact The help section below the map

The page also lives as a CMS widget — drop IDEA89 Store Locator into any CMS page or static block from the widget picker.

Locations themselves are managed in the IDEA89 dashboard → Locator. The chat assistant uses them automatically when a shopper asks "where is your nearest store?"

Order Tracking (every plan)

Settings live under Stores → Configuration → IDEA89 → Order Tracking. Five fields:

Setting Default Notes
Enable Order Tracking Yes Master toggle. When No, the chat assistant won't surface an order card, and the order endpoints respond with feature_disabled
Contact Support URL /contact Where the "Contact support" button on the order card sends shoppers — relative path, absolute URL, or mailto:
Contact Support Button Label "Contact support" Match your tone — "Talk to us", "Email the team"
Max Recent Orders Shown 3 How many recent orders to show a logged-in customer (1–10)
Show Carrier Tracking Button Yes When Yes, surfaces a "Track parcel" button when a carrier tracking link is available

All fields support per-store-view scope. Online-only retailer? Set Enable Order Tracking = No on that store-view and the card never surfaces.

See docs/order-tracking-guide.md for the full guide — privacy model, supported carriers, troubleshooting, and the order-card JSON shape.

Advanced

Setting Description
API URL Override for self-hosted or enterprise deployments. Leave blank for default.

How syncing works

Trigger What happens
Product saved Changed product is queued and synced within 1 minute
Stock update Stock changes are synced within 1 minute
Price rule saved Active promotions are synced immediately
Nightly cron Full catalogue re-sync as a safety net (configurable)
Manual sync Click "Sync Now" in admin to push everything immediately

All syncs are idempotent — sending the same product twice is safe and expected.

The widget

The assistant appears as a floating chat widget on your storefront. It includes:

  • Conversational AI that understands your products
  • Product cards with images, prices, ratings, and add-to-cart buttons
  • Promotional banners for active cart price rules
  • Quick-reply chips for common questions
  • Mobile-responsive design
  • Dark/light theme support
  • No impact on your Magento theme or page speed (loaded asynchronously)

The widget is served from the IDEA89 CDN — no static content is added to your Magento deployment.

Pricing

Plan Price Conversations/mo
Free trial £0 for 14 days (all Pro features) 100 conversations
Starter £49/mo 1,000
Growth £149/mo 10,000
Pro £349/mo 50,000

Save 10% with annual billing. All plans include the full feature set.

Start your free trial — no credit card required.

Uninstalling

bin/magento module:disable Idea89_Assistant
bin/magento setup:upgrade
composer remove idea89/magento2-assistant
bin/magento cache:flush

No database tables are created in your Magento instance. All data is stored on the IDEA89 platform.

Support

License

This module is licensed under the Open Software License 3.0 (OSL-3.0).

Copyright 2026 4K Technologies Ltd.


Built by 4K Technologies in the UK.

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[1.1.5] - 2026-06-07

Added

  • sale_price and is_on_sale in catalog sync payload, computed from
    Magento's special_price / special_from_date / special_to_date.
    Enables the IDEA89 on_sale shopper intent (e.g. "anything on sale?").

[1.1.4] - 2026-06-07

Added

  • Category names in catalog sync. ProductSerializer now sends a
    category_names: string[] field alongside the existing category_path
    (which still carries the raw Magento category IDs joined by " > ").
    The API stores lowercase trimmed names in its category_slugs column
    and uses them for per-row category filtering — needed for queries like
    "cheapest in living" to actually narrow to the right category. Without
    this field the API's category filter is a silent no-op on Magento data
    because the legacy split_part(category_path, '/', 2) derivation
    expects slash-delimited names, not >-delimited IDs. Cached per
    process to avoid repeat lookups across the sync batch.

[1.1.3] - 2026-05-30

Added

  • PHP 8.5 support. Adobe Commerce 2.4.9 (GA 2026-05-15) officially
    supports PHP 8.5 — composer.json require.php widened to
    ~8.1.0||~8.2.0||~8.3.0||~8.4.0||~8.5.0. Module code uses only
    standard PHP 8.1+ syntax (typed properties, attributes, readonly,
    declare(strict_types=1)) and was confirmed compatible against the
    PHP 8.5 deprecation / removal list. The full Magento → PHP matrix is
    now: 2.4.6 → 8.1/8.2; 2.4.7 → 8.1/8.2/8.3; 2.4.8 → 8.2/8.3/8.4;
    2.4.9 → 8.4/8.5 (8.3 upgrade-only). README and MARKETPLACE.md updated.

Changed

  • README PHP badge 8.1–8.48.1–8.5.

[1.1.2] - 2026-05-30

Added

  • Always-visible IDEA89 brand strip above the General group in Stores >
    Configuration > IDEA89 > AI Shopping Assistant. Renders via a Fieldset
    override (Block\Adminhtml\System\Config\AboutFieldset) so there is no
    collapsible header, no group label, and no static-content-deploy step
    needed. Includes inline lightbulb SVG, tagline, version pill (auto-read
    from PackageInfo), and trust links to Documentation, Website, Support,
    and the merchant dashboard.
  • Pulsing emerald glow + click-through on the lightbulb (opens
    https://idea89.com in a new tab). CSS-only animation, hover scales to
    1.08x and speeds up the pulse.

Changed

  • composer.json author email [email protected] -> [email protected]
    so all merchant contact funnels through one inbox (matches SECURITY.md).
  • composer.json author name 4K Technologies -> 4K Technologies Ltd,
    added role: Developer per Adobe Commerce Marketplace EQP guidance.
  • composer.json require.php widened to PHP 8.1 | 8.2 | 8.3 | 8.4. Module
    code is forward-compatible across the whole range; the practical limit
    is whichever PHP version the host Magento install supports.
  • composer.json require.magento/* moved off * to specific minor
    pins matching the 2.4.6 / 2.4.7 release vectors (EQP red-flags *).
  • README PHP badge 8.2+ -> 8.1-8.4; Requirements section now maps
    Magento version to its PHP range.

Added (submission readiness)

  • MARKETPLACE.md — internal submission brief covering the portal field
    map, EQP compliance status, MEQP pre-submission commands, and the
    outstanding human-action checklist.
  • Copyright header on all 36 PHP files (4K Technologies Ltd, OSL-3.0).

Removed

  • Stale screenshot drift from working tree via repo-root *.png
    .gitignore rule (not user-visible, but cleans the dev experience).

[1.0.0] - 2026-05-21

Added

  • AI shopping assistant widget (floating chat, mobile-responsive)
  • Full product catalogue sync with variants, attributes, and stock
  • Real-time sync via observers (product save, stock update, price rule save)
  • Nightly full catalogue re-sync cron
  • Minute-by-minute queue drain cron
  • Promotion sync (active cart price rules)
  • CMS page and category content sync
  • Admin configuration panel (Stores > Configuration > IDEA89)
  • Test Connection button in admin
  • Sync Now button in admin
  • Configurable widget position (bottom-left / bottom-right)
  • Configurable brand colour
  • Configurable assistant name and store context
  • API URL override for self-hosted deployments
  • CSP whitelist for IDEA89 API domain
  • Encrypted API key storage
Versions
Version Stability QA Status Compatibility Released
1.1.5 stable Fail Magento 2.4.7-2.4.9 Details 2026-06-07 10:22:49
1.1.4 stable Not tested Not yet tested Details 2026-06-07 01:56:20
1.1.3 stable Not tested Not yet tested Details 2026-05-30 08:37:42
1.1.2 stable Not tested Not yet tested Details 2026-05-30 08:14:50
1.1.1 stable Not tested Not yet tested Details 2026-05-29 00:16:38
1.1.0 stable Not tested Not yet tested Details 2026-05-28 21:20:22
1.0.0 stable Not tested Not yet tested Details 2026-05-23 20:56:12

Requires 7

Package Constraint
magento/framework 103.0.*
magento/module-catalog 104.0.*
magento/module-cms 104.*
magento/module-config 101.*||102.*
magento/module-csp 100.*||101.*
magento/module-store 101.*
php ~8.1.0||~8.2.0||~8.3.0||~8.4.0||~8.5.0

Compatibility

Each Magento release line is installed on its supported PHP versions, then the module is built (DI compilation + static-content deploy) and its unit and integration suites are run. The matrix shows the lines and PHP versions the module is confirmed to install and run on. Code-quality results further down (phpstan, phpcs, …) are reported separately and never affect compatibility.

Compatibility matrix (Magento × PHP)
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 Pass Pass
2.4.8 Pass Pass
2.4.9 Pass Pass

Code Quality

Advisory checks against the module's source. Static analysis runs once across the whole module; PHPStan re-runs per Magento + PHP version because resolvable symbols differ between releases. These NEVER affect the Compatibility badge — a phpcs finding can't make a module incompatible.

Static analysis

Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.

Static analysis results
Tool Status Findings Summary
PHPCS Warning 102 102 warnings (ruleset: Magento2) — 59 auto-fixable with phpcbf
PHPMD Warning 34 34 rule violations (MissingImport:8, NPathComplexity:7, UnusedFormalParameter:6, CyclomaticComplexity:6, IfStatementAssignment:3)
Cpd Warning 2 2 duplicated chunks spanning 49 total lines (min-lines=5, min-tokens=70)
Composer validate Info 1 valid; 1 advisory note (composer validate --strict)

PHPStan

Type-checks the module's PHP against a real Magento install at the configured gate level. Re-runs per Magento and PHP version because resolvable symbols differ between releases. Cell → details modal.

PHPStan results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 32 32
2.4.8 32 32
2.4.9 32 32

Tests

Unit and integration suites, run for each applicable Magento and PHP version. A test failure speaks to the module's behaviour, not its compatibility with a Magento line, so it is reported here separately and never reddens the compatibility matrix.

Unit tests

Unit tests results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 N/A N/A
2.4.8 N/A N/A
2.4.9 N/A N/A

Integration tests

Integration tests results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 N/A N/A
2.4.8 N/A N/A
2.4.9 N/A N/A

Security

Security checks run directly against the module: an audit of its declared dependencies for known vulnerabilities (composer audit) and a scan of its source for malware and web-shell signatures. Each runs once. A malware detection fails the version outright.

Security results
Tool Status Findings Summary
Composer audit Pass 0
Malware scan Pass 0
License
OSL-3.0
Homepage
https://idea89.com
Authors
Make it pay

Turn an existing module into recurring revenue.

If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.