Pivot QR

Description

Pivot QR turns your WordPress site’s domain into a redirect service. Generate short URLs like example.com/ab together with matching QR codes, then change where they redirect to at any time — without ever reprinting the QR.

This is especially useful for printed flyers, packaging, business cards, signage, and seasonal campaigns where the printed QR cannot be reissued but the destination URL needs to change.

Key features

  • Short URLs at your domain root — e.g. example.com/ab.
  • Adjustable slug length — 2 to 8 characters. Shorter slugs produce sparser QR codes; longer slugs give a larger address space.
  • Edit slugs after creation — rename any short URL after it has been issued.
  • QR downloads — PNG, JPG, and SVG output at any size from 100 to 1000 px.
  • Embed code — copy-ready <img> and <svg> HTML snippets for posts and product pages.
  • Scheduled destinations — optional start/end dates and multiple schedules per link, with automatic switchover.
  • Per-device redirects — send iPhone, Android, and PC visitors to different URLs (perfect for App Store / Google Play routing).
  • Built-in analytics — daily breakdown of QR scans vs. direct short-URL clicks, rendered as a chart.
  • Reserved paths — protect existing pages from being accidentally captured.
  • Total click counter — see at a glance how many times each link has been hit.

Privacy

Pivot QR stores data only in your own WordPress database. It does not phone home, it does not call third-party services, and it does not embed any tracking. Visitor IP addresses, user agents, and referrers from redirect hits are stored locally for analytics; uninstalling the plugin removes everything.

Bundled libraries

To work on shared hosting (no Composer or PHP image library required), Pivot QR bundles the following permissively licensed libraries inside the plugin folder. Nothing is loaded from external CDNs.

  • Chart.js (MIT)
  • qrcode-generator (MIT) — by Kazuhiko Arase
  • Font Awesome Free (CC BY 4.0 icons, MIT CSS, SIL OFL fonts)

Screenshots

  • Link list — short URL, redirect target, schedule period, description, and total access count for each link.
  • Link detail — QR code preview, PNG / JPG / SVG download, copyable embed code, editable short URL, and schedule list.
  • Access analytics — daily breakdown of QR scans vs. direct short-URL clicks.
  • New link creation — set the redirect URL, slug length, and QR error correction level in one dialog.

Installation

  1. Install via the WordPress plugin directory, or upload the pivot-qr folder to /wp-content/plugins/.
  2. Activate Pivot QR through the Plugins menu in WordPress.
  3. Visit Pivot QR Settings to configure slug length, QR error correction level, and reserved paths.
  4. Open Pivot QR Links to create your first short URL.

QR generation runs entirely in the browser. No Composer, no PHP image library, no external services required.

FAQ

Will short URLs collide with my existing pages?

No. Pivot QR only intercepts paths matching the configured slug pattern (default: 2-character alphanumeric). Everything else passes through to WordPress as normal. Common paths like /wp-admin, /feed, and /robots.txt are reserved by default, and you can add more in settings.

Can I change the redirect destination after creating the QR?

Yes — that is the whole point. The QR encodes the short URL only. Editing a schedule (or adding a new one) immediately updates every existing QR’s destination, with no need to reissue the QR.

Does this work on shared hosting?

Yes. The plugin uses only standard PHP and the WordPress database. QR generation runs client-side in the admin, so no GD, Imagick, or Composer is required on the server.

How do per-device redirects work?

Each schedule has optional iPhone, Android, and PC URLs. When a visitor hits the short URL, the User-Agent is examined and the appropriate URL is used. If a device-specific URL is empty, the default URL is used.

Where is the data stored?

In four custom tables in your WordPress database (prefix wp_pvqr_). Uninstalling the plugin removes all of them along with plugin settings.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Pivot QR” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Pivot QR” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

0.3.4

  • Fixed primary button text being invisible when the button is an <a> element on the Plugins admin page (WordPress admin .wrap a color was overriding the button text color).

0.3.3

  • Bundled Japanese (ja) translations so the plugin description, menu labels, and admin strings display in Japanese on Japanese WordPress sites.

0.3.2

  • Sanitized all $_SERVER and $_GET superglobal reads in the redirect path (REQUEST_URI, HTTP_USER_AGENT, HTTP_REFERER, REMOTE_ADDR, etc.) using wp_unslash() plus the appropriate WordPress sanitizer.

0.3.1

  • Switched the redirect error pages to wp_die() so no inline <style> blocks are emitted by the plugin.
  • Removed the legacy load_plugin_textdomain() call (WordPress 4.6+ loads translations automatically for plugins hosted on WordPress.org).
  • Updated bundled Chart.js from 4.4.4 to 4.5.1.
  • Switched plugin description and readme to English.
  • Updated Contributors to match the WordPress.org account.

0.3.0

  • Bundled all third-party assets locally (no CDN dependencies) for WordPress.org compliance.
  • Added per-link slug editing.
  • Added per-link QR error correction level (overrides global default).
  • Redesigned the create-link modal with a sticky footer.
  • Show description and scheduled period on the link list when set.
  • Fixed access-analytics aggregation on hosts without MySQL timezone tables.
  • Removed pagination, search, and category UI for a focused workflow.

0.2.0

  • QR generation moved to client-side.
  • Per-device redirect targets per schedule.
  • Delete button on the link list and detail page.
  • Total access counter on the link list.

0.1.0

  • First release.