# doofinder/doofinder-magento2

> Doofinder module for Magento 2

`composer require doofinder/doofinder-magento2`

Canonical URL: https://packagento.com/doofinder/doofinder-magento2

## At a glance

- **Vendor**: doofinder (https://packagento.com/doofinder.md)
- **Latest version**: 1.7.8 — released 2026-06-29
- **Pricing**: Free
- **Package type**: Magento 2 module
- **Status**: active, accepting new buyers

## Installation

Packagento is licence-gated, so even free packages need a licence on a project before Composer can resolve them.

1. **Sign in or create an account** at https://packagento.com/customer/account/.

2. **Add the package to your account.** Open https://packagento.com/doofinder/doofinder-magento2 and complete the free checkout. A licence is minted automatically.

3. **Create or pick a project, then activate the licence on it.**
   - Projects represent the Magento installs you deploy to. Manage them at https://packagento.com/projects/.
   - Activate the new licence on the project you'll deploy this package to. Activation is what generates the Composer credentials scoped to that project.

4. **Add the project credentials to your Magento codebase.**

   Grab the project's public + private key from https://packagento.com/projects/ (open the project, then its Credentials tab), and add them to `auth.json`:

   ```json
   {
     "http-basic": {
       "packagento.com": {
         "username": "ppk_live_...",
         "password": "psk_live_..."
       }
     }
   }
   ```

   Add the Packagento Composer repository to `composer.json`:

   ```json
   {
     "repositories": [
       { "type": "composer", "url": "https://packagento.com" }
     ]
   }
   ```

5. **Install and apply.**

   ```bash
   composer require doofinder/doofinder-magento2:*
   bin/magento setup:upgrade
   bin/magento setup:di:compile
   bin/magento cache:flush
   ```

## What it does

Doofinder module for Magento 2

## README

![Release](https://img.shields.io/github/v/release/doofinder/doofinder-magento2?style=flat-square)
![Magento](https://img.shields.io/badge/Magento-2.3%20--%202.4-f46f25?style=flat-square)
![PHP](https://img.shields.io/badge/PHP-7.3%20--%208.4-777bb4?style=flat-square)
![License](https://img.shields.io/github/license/doofinder/doofinder-magento2?style=flat-square)

**Transform your Magento 2 search into a conversion machine.** Join thousands of merchants using AI-powered search to increase sales and improve customer experience.

![Doofinder in Action](https://github.com/user-attachments/assets/cac4ec30-02e4-4280-8ba4-8a738ab823f1)

[🚀 Get Started for Free](https://www.doofinder.com/en/solutions/magento) | [🖥️ Live Demo](https://magento.doofinder.com/) | [📖 Full Documentation](https://support.doofinder.com/plugins/magento/installation-guide/installation-steps-magento)

---

### 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](https://marketplace.magento.com/doofinder-doofinder-magento2.html) directly from your Magento admin, or via Composer:

```bash
composer require doofinder/doofinder-magento2
bin/magento setup:upgrade
```

**From GitHub (latest release)**
Download the [latest release zip](https://github.com/doofinder/doofinder-magento2/releases) 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](https://support.doofinder.com/plugins/magento/installation-guide/installation-steps-magento).

**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-configure` regenerates `Doofinder/Feed/etc/config.xml` and `Doofinder/Feed/Helper/Constants.php` from `templates/`. 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](https://marketplace.magento.com/customer/accessKeys/). |
| `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:**

_(README truncated for .md surface. Full README on https://packagento.com/doofinder/doofinder-magento2.)_

## Recent Versions

| Version | Released |
|---|---|
| 1.7.8 | 2026-06-29 |
| 1.7.7 | 2026-06-15 |
| 1.7.6 | 2026-06-10 |
| 1.7.3 | 2026-05-18 |
| 1.7.2 | 2026-05-12 |
| 1.7.1 | 2026-05-11 |
| 1.7.0 | 2026-04-28 |
| 1.6.7 | 2026-04-22 |
| 1.6.6 | 2026-04-21 |
| 1.6.5 | 2026-04-21 |

Showing 10 of 183 versions. Full release history on https://packagento.com/doofinder/doofinder-magento2.

## Dependencies

### Require

| Package | Constraint |
|---|---|
| guzzlehttp/guzzle | * |
| magento/framework | >=101.0.6 |

### Require (dev)

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

## Quality

Latest release (1.7.8) fails the Packagento QA pipeline. Verdicts below are per-cell (Magento line × PHP version) for the matrixed tools, and run-once for the static / security tiers.


### Compatibility

Each Magento line is installed on its supported PHP versions, then the module is built (DI compile + static-content deploy). Cells show passed / failed / untested; staircase gaps render as `–`.

| 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. Never affect the Compatibility verdict — 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.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | Warning | 5 | 5 warnings (ruleset: Magento2) |
| PHPMD | Warning | 29 | 29 rule violations (UndefinedVariable:11, IfStatementAssignment:5, UnusedFormalParameter:4, MissingImport:3, ExcessiveClassComplexity:3) |
| Cpd | Warning | 1 | 1 duplicated chunk spanning 97 total lines (min-lines=5, min-tokens=70) |
| Composer validate | Info | 3 | valid; 3 advisory notes (composer validate --strict) |

#### PHPStan

Type-checks the module against a real Magento install. Re-runs per Magento + PHP version because resolvable symbols differ between releases.

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | 100 | 100 | – | – |
| 2.4.8 | – | 100 | 100 | – |
| 2.4.9 | – | – | 100 | 100 |


### Tests

Unit and integration suites run per Magento + PHP cell. Test failures speak to the module's behaviour, not its compatibility with a line, so they're reported here separately.

#### Unit Tests

| 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

| 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

Dependency-advisory audit (composer audit) plus a source malware scan. A malware detection fails the version outright.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| Composer audit | Pass | 0 |  |
| Malware scan | Pass | 0 |  |

## Licence and pricing

Free. A licence is still minted on checkout and bound to your project for Composer access — no payment step.

Refundable within 14 days of first purchase via https://packagento.com/account/refunds/.

## Install via Claude Code or any MCP client

The Packagento MCP server can run the licence + project + Composer steps above in one tool call:

```
purchase_and_install_packages(
  composer_names=["doofinder/doofinder-magento2"],
  project_id="proj_xxx"
)
```

This handles cart, checkout, licence minting, project activation, and writes auth.json credentials. Connect a client with `claude mcp add packagento https://mcp.packagento.com`. Full setup at https://packagento.com/docs/mcp-setup.

## Vendor

doofinder is a Magento 2 vendor on Packagento. See https://packagento.com/doofinder.md for their full catalogue.

