PHPackages                             rollpix/module-qr-landing - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. rollpix/module-qr-landing

ActiveMagento2-module[Utility &amp; Helpers](/categories/utility)

rollpix/module-qr-landing
=========================

QR code landing page for physical store products — redirects scans to PDP with UTM tracking

1.0.3(2mo ago)01MITPHPPHP ~8.1.0||~8.2.0||~8.3.0

Since Mar 4Pushed 2mo agoCompare

[ Source](https://github.com/ROLLPIX/M2-QR-Landing)[ Packagist](https://packagist.org/packages/rollpix/module-qr-landing)[ RSS](/packages/rollpix-module-qr-landing/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (4)Versions (5)Used By (0)

Rollpix\_QrLanding
==================

[](#rollpix_qrlanding)

> **[Versión en español](README.es.md)**

**SPONSOR:** [www.rollpix.com](https://www.rollpix.com)

Magento 2 module that serves as a QR code landing page for physical store products. When a customer scans a QR code printed next to a product, the module records the visit and redirects to the product detail page (PDP), preserving UTM parameters for Google Analytics tracking.

Compatibility
-------------

[](#compatibility)

RequirementVersionPHP8.1 | 8.2 | 8.3Magento2.4.7 | 2.4.7-p1~p4 | 2.4.8Installation
------------

[](#installation)

### Via Composer (recommended)

[](#via-composer-recommended)

```
composer config repositories.rollpix-qr-landing vcs https://github.com/ROLLPIX/M2-qr-landing.git
composer require rollpix/module-qr-landing
bin/magento module:enable Rollpix_QrLanding
bin/magento setup:upgrade
bin/magento cache:flush
```

### Manual

[](#manual)

1. Create `app/code/Rollpix/QrLanding` and copy all repo files there
2. Run:

```
bin/magento module:enable Rollpix_QrLanding
bin/magento setup:upgrade
bin/magento cache:flush
```

Admin Configuration
-------------------

[](#admin-configuration)

**Path:** Stores &gt; Configuration &gt; Rollpix &gt; QR Landing

FieldTypeDefaultScopeEnable ModuleYes/NoYesStore ViewEnable TrackingYes/NoYesStore ViewIdentifier TypeSelectSKUStore ViewFallback URLText`/`Store ViewWhat It Does
------------

[](#what-it-does)

### QR Landing Controller (`/qr/{sku}`)

[](#qr-landing-controller-qrsku)

- Receives QR scan via URL like `/qr/ABC123?utm_source=qr_store`
- Validates that the module is enabled for the current store view
- Resolves the SKU to a product and verifies it exists and is enabled
- Records the visit in `rollpix_qr_visits` (automatic when tracking is enabled, with 5-minute deduplication per IP+SKU)
- Sanitizes all stored inputs (strip\_tags + length truncation)
- Redirects (302) to the product page, appending UTM parameters
- If the product is not found, redirects to the **Fallback URL** (defaults to homepage); shows 404 if fallback is empty

### REST API — Status (`GET /V1/rollpix-qr/status`)

[](#rest-api--status-get-v1rollpix-qrstatus)

- **Auth:** Bearer token (admin)
- **ACL:** `Rollpix_QrLanding::status`
- Returns: `{ "enabled", "tracking_enabled", "module_version", "identifier_type" }`

### REST API — Report (`GET /V1/rollpix-qr/report`)

[](#rest-api--report-get-v1rollpix-qrreport)

- **Auth:** Bearer token (admin)
- **ACL:** `Rollpix_QrLanding::report`
- **Query params:** `from`, `to` (Y-m-d), `sku`, `page`, `pageSize`
- Returns visit aggregations by SKU and daily counts

Behavior When Disabled
----------------------

[](#behavior-when-disabled)

- `/qr/{sku}` returns 404 (or redirects to fallback URL if configured)
- REST APIs still respond (they report `enabled: false`)
- No visits are recorded

Technical Architecture
----------------------

[](#technical-architecture)

```
M2-qr-landing/                          ← repo root
├── registration.php
├── composer.json
├── etc/
│   ├── module.xml
│   ├── di.xml                           (interface preferences)
│   ├── acl.xml
│   ├── config.xml
│   ├── db_schema.xml                    (rollpix_qr_visits table)
│   ├── db_schema_whitelist.json
│   ├── webapi.xml                       (status + report endpoints)
│   ├── adminhtml/
│   │   └── system.xml
│   └── frontend/
│       ├── di.xml                       (custom router registration)
│       └── routes.xml
├── Api/
│   ├── StatusInterface.php
│   └── ReportInterface.php
├── Block/Adminhtml/System/Config/
│   └── ModuleInfo.php
├── Controller/Qr/
│   └── Index.php
├── Helper/
│   └── Config.php
├── Model/
│   ├── Status.php
│   ├── Report.php
│   ├── Visit.php
│   ├── Config/Source/
│   │   └── IdentifierType.php
│   └── ResourceModel/
│       ├── Visit.php
│       └── Visit/
│           └── Collection.php
├── Router/
│   └── QrRouter.php
├── view/frontend/layout/
│   └── qr_qr_index.xml
└── i18n/
    └── es_AR.csv

```

ComponentTypePurpose`QrRouter`Custom RouterParses `/qr/{sku}` into controller params`Controller\Qr\Index`HttpGetActionInterfaceLanding logic: validate, track, redirect`Helper\Config`Config readerReads `rollpix_qrlanding/general/*``Model\Status`API implementationReturns module status`Model\Report`API implementationAggregated visit reportManual Testing Guide
--------------------

[](#manual-testing-guide)

```
# 1. Redirect works with existing SKU
curl -sI "https://yourstore.com/qr/EXISTING_SKU"
# → HTTP 302 + Location: product URL

# 2. Tracking records visit (automatic when tracking is enabled)
curl -sI "https://yourstore.com/qr/EXISTING_SKU?utm_source=test"
# → Check rollpix_qr_visits table

# 3. Non-existent SKU returns 404
curl -sI "https://yourstore.com/qr/FAKE_SKU"
# → HTTP 404

# 4. Status API
curl -s -H "Authorization: Bearer $TOKEN" "https://yourstore.com/rest/V1/rollpix-qr/status"

# 5. Report API
curl -s -H "Authorization: Bearer $TOKEN" "https://yourstore.com/rest/V1/rollpix-qr/report?from=2026-01-01"
```

Uninstall
---------

[](#uninstall)

### Via Composer

[](#via-composer)

```
bin/magento module:uninstall Rollpix_QrLanding
# or
composer remove rollpix/module-qr-landing
bin/magento setup:upgrade
```

### Manual

[](#manual-1)

```
bin/magento module:disable Rollpix_QrLanding
rm -rf app/code/Rollpix/QrLanding
bin/magento setup:upgrade
```

The `rollpix_qr_visits` table will be removed automatically on module uninstall via composer. For manual removal, drop it manually.

License
-------

[](#license)

[MIT](LICENSE)

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance87

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

4

Last Release

63d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2244b007d24a136b3d70c0daae65409d493f9ac5e3b6bd868858a907c924a4ed?d=identicon)[nmarquev](/maintainers/nmarquev)

---

Top Contributors

[![nmarquev](https://avatars.githubusercontent.com/u/20818155?v=4)](https://github.com/nmarquev "nmarquev (5 commits)")

### Embed Badge

![Health badge](/badges/rollpix-module-qr-landing/health.svg)

```
[![Health](https://phpackages.com/badges/rollpix-module-qr-landing/health.svg)](https://phpackages.com/packages/rollpix-module-qr-landing)
```

###  Alternatives

[baldwin/magento2-module-url-data-integrity-checker

Magento 2 module which can find potential url related problems in your catalog data

281773.3k](/packages/baldwin-magento2-module-url-data-integrity-checker)[trustpilot/module-reviews

The Trustpilot Review extension makes it simple and easy for merchants to collect reviews from their customers to power their marketing efforts, increase sales conversion, build their online reputation and draw business insights.

12886.7k](/packages/trustpilot-module-reviews)[graycore/magento2-graphql-introspection-cache

1015.2k](/packages/graycore-magento2-graphql-introspection-cache)[mage-os/module-inventory-reservations-grid

Add a grid with the list of inventory reservations.

126.8k](/packages/mage-os-module-inventory-reservations-grid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
