doofinder / doofinder-magento2
doofinder/doofinder-magento2
Doofinder module for Magento 2
Doofinder for Magento 2
Transform your Magento 2 search into a conversion machine. Join thousands of merchants using AI-powered search to increase sales and improve customer experience.
🚀 Get Started for Free | 🖥️ Live Demo | 📖 Full Documentation
Why Doofinder?
Doofinder turns your basic search bar into an advanced discovery engine. Using AI-powered searchandising and recommendations, we drive measurable gains in conversion and product discovery.
Key Features
- AI Assistant — A smart shopping guide that helps customers find products through natural conversation.
- AI Smart Search — Understands intent and handles typos or synonyms effortlessly.
- Searchandising — Boost, hide, or pin products to run targeted campaigns.
- Personalized Recommendations — Intelligent cross-selling based on real customer behavior.
- Visual Search — Let your shoppers find products using images.
- Auto-Indexing — Your catalog stays in sync automatically as you scale.
🛠 Installation & Quick Start
From Adobe Marketplace
Install Doofinder from the Adobe Commerce Marketplace directly from your Magento admin, or via Composer:
composer require doofinder/doofinder-magento2
bin/magento setup:upgrade
From GitHub (latest release)
Download the latest release zip and install it as a local Composer package, or copy directly into app/code/Doofinder/Feed.
Then
Complete setup using our step-by-step installation guide.
Requirements
| Supported versions | |
|---|---|
| PHP | 7.3, 7.4, 8.1, 8.2, 8.3, 8.4 (8.0 not supported by Magento 2) |
| Magento | 2.3.x, 2.4.x |
👨💻 Development & Maintainer Guide
This repository is optimized for local development using a Makefile and Docker.
.env sits at the repo root and powers both your Docker stack and the generated module files (what doofinder-configure pulls from templates/). It ships with sensible defaults — set your BASE_URL, Magento version, and Composer auth credentials, then make init. Optional overrides go in .env.local, which loads on top of .env.
[!NOTE]
make doofinder-configureregeneratesDoofinder/Feed/etc/config.xmlandDoofinder/Feed/Helper/Constants.phpfromtemplates/. Many other targets depend on it — do not commit those files with non-production values.
Environment and shop access
The root .env lists all variables with comments. For the dev stack, these are the ones you usually touch first:
| Variable | Role |
|---|---|
BASE_URL |
Shop hostname as seen by Docker (no https://). |
MAGENTO_VERSION |
Magento release to install. Adjust PHP_VERSION and COMPOSER_VERSION to match — see the compatibility matrix below. |
COMPOSER_AUTH_USERNAME |
Public key from your Magento Marketplace access key. |
COMPOSER_AUTH_PASSWORD |
Private key from the same access key. |
MYSQL_* |
Database credentials for the local shop. |
MAGENTO_ADMIN_USER / MAGENTO_ADMIN_PASSWORD |
Admin panel login after install. |
XDEBUG_HOST |
Docker bridge IP (172.17.0.1 on Linux; use host.docker.internal on macOS). |
Default access (Docker dev stack): After make init, the stack runs on the ports defined in docker-compose.yml (default mapping: 9012 → HTTP, 4012 → HTTPS). With the default BASE_URL=localhost from .env:
| URL | |
|---|---|
| Storefront (HTTP) | http://localhost:9012/ |
| Storefront (HTTPS) | https://localhost:4012/ |
| Admin (HTTP) | http://localhost:9012/admin |
| Admin (HTTPS) | https://localhost:4012/admin |
Admin login is MAGENTO_ADMIN_USER / MAGENTO_ADMIN_PASSWORD from .env (defaults: admin / admin123).
Use cases:
- First-time setup: Run
make initto build images, install Magento, and start containers. Usemake init-with-datato also load sample data. - Install the Doofinder module: after
make init, follow the installation guide. Alternatively, usemake doofinder-upgradefrom the CLI. - Start / stop the stack:
make start,make stop. - Uninstall the module:
make doofinder-uninstall. - Reinstall the module:
make doofinder-reinstall. - DB snapshot:
make db-backup(optionallymake db-backup prefix=_name). Restore withmake db-restore file=backup.sql.gz. - Code quality check:
make consistency(runs PHP Code Sniffer inside Docker with theMagento2standard). - Shell in the web container:
make dev-console. - Start from scratch: Run
make cleanto drop Docker volumes and./app; typeDELETEwhen prompted, then runmake initfor a fresh Magento. - Debug with Xdebug: The stack enables Xdebug via
XDEBUG_CONFIGindocker-compose.yml. SetXDEBUG_HOSTandXDEBUG_KEYin.envor.env.local, configure your IDE to listen for connections, and browse the shop. - Varnish: Included but commented out in
docker-compose.yml. Uncomment to enable; remember to comment the9012:80port in thewebcontainer. See Configure the Commerce application to use Varnish.
Compatibility Matrix
| Magento | PHP |
|---|---|
| 2.4.5 – 2.4.8 | 8.1, 8.2, 8.3, 8.4 |
| 2.4.0 – 2.4.4 | 7.4, 8.1, 8.2 |
| 2.3.x | 7.3, 7.4 |
PHP 8.0 is not supported by Magento 2. PHP versions below 7.4 are not recommended.
Support & Contributing
- Need Help? Visit our Support Portal.
- Found a Bug? Please contact Doofinder Support.
- Want to contribute? PRs are welcome! Before pushing, make sure PHP Code Sniffer passes — use
make consistencyor runcomposer install && vendor/bin/phpcsdirectly (requires PHP >= 8.3).
If you find this plugin useful, please give us a ⭐ to support the project!
Try Doofinder / Learn more
Ready to improve your store search? Get started with Doofinder for Magento 2.
- XML Feed and all related components (logs, cron, scheduler, configuration on backend, frontend controllers) were deleted, except Generator\Map\Product, which is needed for indexing Doofinder fields
- Information about the Feed was deleted from the Config controller
- AtomicUpdates were deleted- they were replaced entirely by Delayed Updates
- Delayed Updates are set as default and they are disabled in the configuration. They work only during Index on Save
- All products, which are visible in the shop are indexed now. Their appearance in Search or in the Catalog depends on correct setting of their Visibility in admin panel
- Doofinder attributes are indexed at the same time as Magento attributes
- Price attributes have a new name: mage_price_CUSTOMER_GROUP_ID Depending on customer group, the price may vary. Indexer and Search take that into consideration.
- Additional Attributes validation was added. It checks if any Additional Attributes are used by Magento/Doofinder- eg. you cannot add field ‘visibility’ because it is already indexed by Magento
- HashID has to be configured for every store from now on. Changes related to Allow StoreView without HashID has been rolled back.
- MySQL was removed from the indexing/searching process
- Plugins which ensure compatibility between Magento 2.2 and 2.3 were added
- Support for Magento 2.1 was stopped, also in the file composer.json
- Change of indexer from By Schedule to On Save after first whole reindex was deleted- if we changed API, it wouldn’t be needed
- Updated Delayed Updates logic to use IndexerHandler. In addition, the "disabled" operation has been removed when turning off the product because search and indexer is based on attribute values
- Whole search engine works on our code
Refactor Doofinder Attributes
- Change serializer from phpserializer to json
- Remove configuration for default Doofinder fields, leave for couple of them
- Remove "label" field from Additional Attributes
- Add attributes provider for Image link field
| Version | Stability | QA Status | Released |
|---|---|---|---|
| 1.7.6 | stable | Fail | 2026-06-10 13:31:19 |
| 1.7.3 | stable | Fail | 2026-05-18 11:13:34 |
| 1.7.2 | stable | Not tested | 2026-05-12 07:24:12 |
| 1.7.1 | stable | Not tested | 2026-05-11 12:43:52 |
| 1.7.0 | stable | Not tested | 2026-04-28 19:58:48 |
| 1.6.7 | stable | Not tested | 2026-04-22 10:16:48 |
| 1.6.6 | stable | Not tested | 2026-04-21 08:34:36 |
| 1.6.5 | stable | Not tested | 2026-04-21 06:36:22 |
| 1.6.4 | stable | Not tested | 2026-04-21 06:16:14 |
| 1.6.3 | stable | Not tested | 2026-04-15 07:35:14 |
| 1.6.2 | stable | Not tested | 2026-04-06 08:28:47 |
| 1.6.1 | stable | Not tested | 2026-04-01 10:18:36 |
| 1.6.0 | stable | Not tested | 2026-03-30 15:14:20 |
| 1.5.6 | stable | Not tested | 2026-03-20 09:41:25 |
| 1.5.5 | stable | Not tested | 2026-03-20 09:17:49 |
| 1.5.4 | stable | Not tested | 2026-03-19 10:12:14 |
| 1.5.3 | stable | Not tested | 2026-03-05 17:23:08 |
| 1.5.2 | stable | Not tested | 2026-02-26 08:43:12 |
| 1.5.1 | stable | Not tested | 2026-02-25 16:18:58 |
| 1.5.0 | stable | Not tested | 2026-02-16 12:34:49 |
| 1.4.0 | stable | Not tested | 2026-02-11 17:02:25 |
| 1.3.14 | stable | Not tested | 2026-02-03 11:15:33 |
| 1.3.13 | stable | Not tested | 2026-01-26 13:19:49 |
| 1.3.12 | stable | Not tested | 2026-01-15 09:55:40 |
| 1.3.11 | stable | Not tested | 2026-01-12 11:04:48 |
| 1.3.10 | stable | Not tested | 2025-12-19 10:57:36 |
| 1.3.9 | stable | Not tested | 2025-12-17 08:27:51 |
| 1.3.8 | stable | Not tested | 2025-12-15 15:48:41 |
| 1.3.7 | stable | Not tested | 2025-11-06 13:18:54 |
| 1.3.6 | stable | Not tested | 2025-11-04 09:15:04 |
| 1.3.5 | stable | Not tested | 2025-10-15 07:34:40 |
| 1.3.4 | stable | Not tested | 2025-09-01 12:02:51 |
| 1.3.3 | stable | Not tested | 2025-08-27 07:33:19 |
| 1.3.2 | stable | Not tested | 2025-08-19 07:58:55 |
| 1.3.1 | stable | Not tested | 2025-07-23 11:29:08 |
| 1.3.0 | stable | Not tested | 2025-07-10 16:14:10 |
| 1.2.3 | stable | Not tested | 2025-07-10 10:45:17 |
| 1.2.2 | stable | Not tested | 2025-07-07 10:22:35 |
| 1.2.1 | stable | Not tested | 2025-06-12 06:05:59 |
| 1.2.0 | stable | Not tested | 2025-05-20 15:03:14 |
| 1.1.4 | stable | Not tested | 2025-05-20 10:30:49 |
| 1.1.3 | stable | Not tested | 2025-05-20 09:41:47 |
| 1.1.2 | stable | Not tested | 2025-05-06 11:21:44 |
| 1.1.1 | stable | Not tested | 2025-05-05 12:48:53 |
| 1.1.0 | stable | Not tested | 2025-04-28 20:44:32 |
| 1.0.10 | stable | Not tested | 2025-04-21 10:18:25 |
| 1.0.9 | stable | Not tested | 2025-04-11 11:14:51 |
| 1.0.7 | stable | Not tested | 2025-02-26 13:59:19 |
| 1.0.6 | stable | Not tested | 2025-02-19 09:11:05 |
| 1.0.5 | stable | Fail | 2024-12-20 11:25:30 |
| 1.0.4 | stable | Not tested | 2024-12-19 11:02:23 |
| 1.0.3 | stable | Not tested | 2024-12-18 13:51:27 |
| 1.0.2 | stable | Not tested | 2024-12-09 07:30:07 |
| 1.0.1 | stable | Not tested | 2024-11-20 16:07:09 |
| 1.0.0 | stable | Not tested | 2024-11-18 09:07:43 |
| 0.15.0 | stable | Not tested | 2024-11-14 13:28:43 |
| 0.14.13 | stable | Not tested | 2024-11-14 11:35:55 |
| 0.14.11 | stable | Not tested | 2024-10-28 15:55:44 |
| 0.14.9 | stable | Not tested | 2024-10-07 09:21:01 |
| 0.14.8 | stable | Not tested | 2024-09-16 13:21:59 |
| 0.14.7 | stable | Not tested | 2024-09-11 07:18:06 |
| 0.14.6 | stable | Not tested | 2024-09-02 09:44:12 |
| 0.14.5 | stable | Not tested | 2024-07-29 13:43:26 |
| 0.14.4 | stable | Not tested | 2024-07-15 07:33:09 |
| 0.14.3 | stable | Not tested | 2024-07-09 09:50:44 |
| 0.14.2 | stable | Not tested | 2024-06-21 12:46:39 |
| 0.14.1 | stable | Not tested | 2024-06-21 08:02:17 |
| 0.14.0 | stable | Not tested | 2024-06-17 07:06:53 |
| 0.13.20 | stable | Not tested | 2024-06-12 08:29:13 |
| 0.13.18 | stable | Not tested | 2024-06-07 14:22:21 |
| 0.13.17 | stable | Not tested | 2024-05-20 09:36:28 |
| 0.13.13 | stable | Not tested | 2024-03-18 12:44:47 |
| 0.13.12 | stable | Not tested | 2024-03-12 10:35:51 |
| 0.13.11 | stable | Not tested | 2024-03-11 09:53:06 |
| 0.13.10 | stable | Not tested | 2024-02-08 13:01:11 |
| 0.13.9 | stable | Not tested | 2024-01-24 14:49:54 |
| 0.13.8 | stable | Not tested | 2023-12-13 13:40:53 |
| 0.13.7 | stable | Not tested | 2023-11-13 13:53:46 |
| 0.13.6 | stable | Not tested | 2023-11-08 08:03:20 |
| 0.13.5 | stable | Not tested | 2023-09-26 10:38:23 |
| 0.13.4 | stable | Not tested | 2023-07-18 08:37:35 |
| 0.13.3 | stable | Not tested | 2023-07-07 07:46:37 |
| 0.13.1 | stable | Not tested | 2023-07-06 12:05:08 |
| 0.13.0 | stable | Not tested | 2023-07-03 08:33:16 |
| 0.12.0 | stable | Not tested | 2023-06-09 11:34:42 |
| 0.10.7 | stable | Not tested | 2023-06-08 11:01:27 |
| 0.11.3 | stable | Not tested | 2023-06-07 07:14:10 |
| 0.11.2 | stable | Not tested | 2023-06-06 07:26:01 |
| 0.11.1 | stable | Not tested | 2023-06-02 11:21:32 |
| 0.11.0 | stable | Not tested | 2023-05-30 09:54:44 |
| 0.10.6 | stable | Not tested | 2023-05-26 12:31:53 |
| 0.10.5 | stable | Not tested | 2023-05-26 12:25:20 |
| 0.10.4 | stable | Not tested | 2023-04-25 07:18:17 |
| 0.10.3 | stable | Not tested | 2023-04-18 08:34:07 |
| 0.10.2 | stable | Not tested | 2023-04-17 13:44:37 |
| 0.10.0 | stable | Not tested | 2023-03-29 11:19:03 |
| 0.9.8 | stable | Not tested | 2023-02-14 09:09:10 |
| 0.9.7 | stable | Not tested | 2023-02-14 08:52:26 |
| 0.9.6 | stable | Not tested | 2023-02-13 12:17:12 |
| 0.9.5 | stable | Not tested | 2023-02-13 10:58:16 |
| 0.9.4 | stable | Not tested | 2023-02-13 10:47:28 |
| 0.9.1 | stable | Not tested | 2023-02-08 15:57:02 |
| 0.9.0 | stable | Not tested | 2023-01-11 11:09:29 |
| 0.8.16 | stable | Not tested | 2023-01-04 15:36:42 |
| 0.8.15 | stable | Not tested | 2023-01-02 13:24:53 |
| 0.8.14 | stable | Not tested | 2022-12-27 10:43:18 |
| 0.8.13 | stable | Not tested | 2022-12-15 18:14:08 |
| 0.8.12 | stable | Not tested | 2022-12-15 14:46:30 |
| 0.8.11 | stable | Not tested | 2022-12-14 14:36:03 |
| 0.8.10 | stable | Not tested | 2022-12-14 08:20:38 |
| 0.8.9 | stable | Not tested | 2022-12-13 10:39:02 |
| 0.8.8 | stable | Not tested | 2022-11-24 11:23:45 |
| 0.8.7 | stable | Not tested | 2022-11-22 14:36:36 |
| 0.8.6 | stable | Not tested | 2022-11-17 13:10:09 |
| 0.8.5 | stable | Not tested | 2022-11-14 11:29:23 |
| 0.8.4 | stable | Not tested | 2022-11-09 11:10:19 |
| 0.8.3 | stable | Not tested | 2022-11-02 10:24:51 |
| 0.8.2 | stable | Not tested | 2022-09-29 12:35:02 |
| 0.8.1 | stable | Not tested | 2022-09-21 10:48:44 |
| 0.8.0 | stable | Not tested | 2022-09-14 10:59:05 |
| 0.7.3 | stable | Not tested | 2022-09-08 10:11:17 |
| 0.7.2 | stable | Not tested | 2022-09-06 14:53:40 |
| 0.7.1 | stable | Not tested | 2022-08-30 11:28:53 |
| 0.7.0 | stable | Not tested | 2022-08-24 16:13:08 |
| 0.6.2 | stable | Not tested | 2022-08-19 11:11:52 |
| 0.6.1 | stable | Not tested | 2022-08-19 08:11:25 |
| 0.6.0 | stable | Not tested | 2022-08-18 10:28:32 |
| 0.5.9 | stable | Not tested | 2022-08-03 11:41:18 |
| 0.5.8 | stable | Not tested | 2022-08-01 09:13:08 |
| 0.5.7 | stable | Not tested | 2022-07-28 13:51:49 |
| 0.5.6 | stable | Not tested | 2022-07-18 11:41:24 |
| 0.5.5 | stable | Not tested | 2022-07-14 12:48:20 |
| 0.5.4 | stable | Not tested | 2022-07-01 07:01:49 |
| 0.5.3 | stable | Not tested | 2022-06-29 09:24:54 |
| 0.5.2 | stable | Not tested | 2022-06-21 14:55:05 |
| 0.5.1 | stable | Not tested | 2022-06-09 12:49:36 |
| 0.5.0 | stable | Not tested | 2022-05-31 10:53:30 |
| 0.4.14 | stable | Not tested | 2021-09-01 15:38:52 |
| 0.4.13 | stable | Not tested | 2021-04-27 14:15:18 |
| 0.4.12 | stable | Not tested | 2021-04-26 11:27:18 |
| 0.4.11 | stable | Not tested | 2021-02-22 08:31:51 |
| 0.4.10 | stable | Not tested | 2021-02-02 10:36:48 |
| 0.4.9 | stable | Not tested | 2021-01-22 23:20:16 |
| 0.4.8 | stable | Not tested | 2021-01-11 12:15:39 |
| 0.4.7 | stable | Not tested | 2020-12-21 13:31:22 |
| 0.4.6 | stable | Not tested | 2020-11-05 21:35:44 |
| 0.4.5 | stable | Not tested | 2020-10-29 06:54:43 |
| 0.4.3 | stable | Not tested | 2020-08-25 16:05:52 |
| 0.4.2 | stable | Not tested | 2020-08-24 14:27:35 |
| 0.4.1 | stable | Not tested | 2020-07-15 06:46:35 |
| 0.4.0 | stable | Not tested | 2020-06-11 17:13:29 |
| 0.3.2 | stable | Not tested | 2020-05-08 08:56:53 |
| 0.3.1 | stable | Not tested | 2020-05-06 10:33:02 |
| 0.3.0 | stable | Not tested | 2020-04-03 06:57:50 |
| 0.2.8 | stable | Not tested | 2019-09-25 09:14:54 |
| 0.2.7 | stable | Not tested | 2019-09-23 11:40:54 |
| 0.2.6-beta | beta | Not tested | 2019-08-29 06:35:36 |
| 0.2.5-beta | beta | Not tested | 2019-08-13 14:26:02 |
| 0.2.4-beta | beta | Not tested | 2019-08-07 13:49:04 |
| 0.2.3-beta | beta | Not tested | 2019-07-29 12:58:20 |
| 0.2.2-beta | beta | Not tested | 2019-07-22 09:51:23 |
| 0.2.1-beta | beta | Not tested | 2019-07-19 13:16:59 |
| 0.2.0-beta | beta | Not tested | 2019-06-25 11:00:29 |
| 0.1.12-beta | beta | Not tested | 2019-02-21 16:50:47 |
| 0.1.11-beta | beta | Not tested | 2019-01-09 08:33:59 |
| 0.1.10-beta | beta | Not tested | 2018-11-15 16:46:16 |
| 0.1.9-beta | beta | Not tested | 2018-11-09 10:16:49 |
| 0.1.8-beta | beta | Not tested | 2018-10-23 14:55:36 |
| 0.1.7-beta | beta | Not tested | 2018-10-19 13:50:31 |
| 0.1.6-beta | beta | Not tested | 2018-10-10 09:46:34 |
| 0.1.5-beta | beta | Not tested | 2018-07-30 16:39:25 |
| 0.1.4-beta | beta | Not tested | 2018-06-06 11:13:05 |
| 0.1.3-beta | beta | Not tested | 2018-05-30 08:39:08 |
| 0.1.2-beta | beta | Not tested | 2018-05-18 11:42:06 |
| 0.1.1-beta | beta | Not tested | 2018-04-04 12:32:56 |
| 0.1.0-beta6 | beta | Not tested | 2018-02-05 22:21:23 |
| 0.1.0-beta5 | beta | Not tested | 2018-02-05 21:06:41 |
| 0.1.0-beta4 | beta | Not tested | 2018-01-24 12:27:34 |
| 0.1.0-beta3 | beta | Not tested | 2017-12-05 09:13:58 |
| 0.1.0-beta2 | beta | Not tested | 2017-11-20 11:02:55 |
| 0.1.0-beta1 | beta | Not tested | 2017-11-03 16:02:36 |
Requires 2
| Package | Constraint |
|---|---|
| guzzlehttp/guzzle | * |
| magento/framework | >=101.0.6 |
Requires-dev 6
| Package | Constraint |
|---|---|
| dealerdirect/phpcodesniffer-composer-installer | ^1.0 |
| magento/magento-coding-standard | >=31.0 |
| magento/php-compatibility-fork | * |
| phpdocumentor/shim | ^3.8 |
| phpunit/phpunit | >=5.6.3 |
| squizlabs/php_codesniffer | >=3.4 |
| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | Pass | 0 | |
| PHPStan | Fail | 100 | 100 errors (level 4, ruleset: phpstan + bitexpert/phpstan-magento) |
| Cpd | Fail | 1 | 1 duplicated chunk spanning 97 total lines (min-lines=5, min-tokens=70) |
| Security | Pass | 0 |
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.