New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
QR Code Tracking #1709
Comments
I kind of like the ability to break down "channels" for all the visits of a specific short URL, to know which mechanism is more successful on driving people there. I would need to put some thought on it though, haha. However, I would not limit this specifically to the QR code, as it seems too specific and hard to evolve. But as I said. I would need to give it a thought first. In the meantime, this could be more or less covered by creating two different short URLs pointing to the same location. One of them you use to distribute as a regular short URL, for people to "click" on it, and the other one you share as QR code. Of course this is not pullet proof, but most real users won't try to mess with those URLs as they get not benefit from it. In any case, comparing the traffic will require some manual work, as this is not supported by shlink-web-client. See shlinkio/shlink-web-component#7 If the "channels" thing is implemented, it could benefit from a similar comparison capability. |
I'll expand on my specific use case a bit more: We use Shlink's API to integrate into a Drupal module we built. Our Drupal setup runs both a print and digital news publication. The short URL and QR code are exported for print and used in the printed publication that is mailed to roughly 34,000 addresses. That same short URL is also printed in text right next to the QR code in print, and it's also used elsewhere on the Drupal node and Drupal sharing mechanisms. Viewing statistics in Shlink Client, it's pretty easy to see those users who convert from print by entering the URL directly into a web browser. The digital refers are also fairly easy to interpret. The QR code scans are another matter. We could obviously modify our module to generate multiple short URLs, one for the QR code and another for text printing, but that seems redundant and unnecessary. I appreciate the thought, @acelaya, and I'm open to dialoguing more on how to best approach this. We've (@nwadventists / @npuc) been fans of this, and even sponsored you/this project for a while in the past. |
I'd love to suggest an enhancement to Shlink in the form of QR code tracking.
There are numerous times use cases where a short URL is used in conjunction with it's generated QR code. However, for analytical purposes, one might want to see how users are coming to that short URL beyond user-agent, referral and location information. Specifically, they might want to see and track QR code visits vs direct short URL vists.
This could be setup as an enviroment variable globally, or via a short URL specific configuration behavior.
Potential example of URL specific configuration with web GUI.
Implamenting this might take some thought to provide that URL distinction.
One thought would be to have the QR code contain a query paramater (i.e.
https://exam.ple/abc123?source=qr-code
). Though this might conflict with the existing query param forwarding. However, it might be possible for Shlink to strip that parameter before processing the query param forwarding.Another option might be in the existing QR code path for the URL,
https://exam.ple/abc123/qr-code
, with a param. However, this would change the whole structure of that path, as that is the generated image and not a URL.As a reference, and in regards to tracking, this can be done in the Referrers panel, and denoted as a
QR code
. This is very similar to how Bitly does it:When someone scans a QR Code for your website, it’s tracked as a click. Bitly breaks down your referral traffic by channel, so you can see how your QR Code is performing up against channels like email and social media.
Viewing Your QR Code Metrics on Bitly
Regardless, this would be an added extra feature to Shlink.
The text was updated successfully, but these errors were encountered: