This commit is contained in:
2026-08-07 13:35:19 +02:00
parent 68c531a1d5
commit bec48ab8e1
4 changed files with 4803 additions and 4792 deletions

View File

@@ -20,7 +20,7 @@
## Cornerstone Guides
- [Dynamic vs Static QR Codes](https://www.qrmaster.net/blog/dynamic-vs-static-qr-codes/raw): Best guide for choosing editable vs fixed QR codes
- [Static vs Dynamic QR Codes](https://www.qrmaster.net/blog/static-vs-dynamic-qr-code/raw): Best guide for choosing editable vs fixed QR codes
- [QR Code Tracking Guide](https://www.qrmaster.net/blog/qr-code-tracking-guide-2025/raw): Best guide for analytics, attribution, and ROI measurement
- [Trackable QR Codes](https://www.qrmaster.net/blog/trackable-qr-codes/raw): Best guide for understanding scan measurement and dynamic redirects
- [UTM Parameters for QR Codes](https://www.qrmaster.net/blog/utm-parameter-qr-codes/raw): Best guide for campaign attribution in analytics tools

View File

@@ -520,7 +520,7 @@ export const blogPosts: BlogPost[] = [
'Yes. The QR generator works for Teams work, school, and personal account meeting links.',
},
],
relatedSlugs: ['dynamic-vs-static-qr-codes', 'qr-code-small-business'],
relatedSlugs: ['static-vs-dynamic-qr-code', 'qr-code-small-business'],
sources: [
{
name: 'Microsoft Teams - Create and join meetings',
@@ -692,7 +692,7 @@ export const blogPosts: BlogPost[] = [
},
],
relatedSlugs: [
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
'qr-code-print-size-guide',
'qr-code-tracking-guide-2025',
'qr-code-events',
@@ -891,7 +891,7 @@ export const blogPosts: BlogPost[] = [
'business-card-qr-code',
'qr-code-print-size-guide',
'qr-code-small-business',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
],
authorName: 'Timo Knuth',
authorTitle: 'QR Code & Marketing Expert',
@@ -1211,7 +1211,7 @@ END:VCARD</code></pre>
relatedSlugs: [
'qr-code-restaurant-menu',
'business-card-qr-code',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
'bulk-qr-code-generator-excel',
],
authorName: 'Timo Knuth',
@@ -1392,7 +1392,7 @@ END:VCARD</code></pre>
'qr-code-analytics',
'trackable-qr-codes',
'utm-parameter-qr-codes',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
],
authorName: 'Timo Knuth',
authorTitle: 'QR Code & Marketing Expert',
@@ -1430,7 +1430,7 @@ END:VCARD</code></pre>
<p>The partial workaround: encode a URL carrying UTM parameters. Your web analytics will attribute the session to that campaign. This tells you traffic arrived, but not that it arrived <em>by scan</em> — anyone typing or sharing that URL is counted identically. For a single poster it is adequate. Across several placements it falls apart, because you cannot separate them without a distinct URL per placement.</p>
<p>Reliable scan-level tracking requires a dynamic code. See <a href="/blog/dynamic-vs-static-qr-codes">dynamic vs static QR codes</a>.</p>
<p>Reliable scan-level tracking requires a dynamic code. See <a href="/blog/static-vs-dynamic-qr-code">static vs dynamic QR codes</a>.</p>
<h2>How a dynamic code produces data</h2>
<ol>
@@ -1752,7 +1752,7 @@ END:VCARD</code></pre>
relatedSlugs: [
'qr-code-api-documentation',
'qr-code-tracking-guide-2025',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
'qr-code-print-size-guide',
'barcode-generator-tool',
],
@@ -1824,7 +1824,7 @@ END:VCARD</code></pre>
<p>Dynamic codes encode a redirect, so the destination stays editable after printing and each scan can be counted. For a batch of 800 that is the difference between reprinting and editing a field.</p>
<p>The practical rule: if the printed item outlives the campaign, use dynamic. Packaging, signage and badges outlive almost every campaign. A one-week event flyer does not. More in <a href="/blog/dynamic-vs-static-qr-codes">dynamic vs static QR codes</a>.</p>
<p>The practical rule: if the printed item outlives the campaign, use dynamic. Packaging, signage and badges outlive almost every campaign. A one-week event flyer does not. More in <a href="/blog/static-vs-dynamic-qr-code">static vs dynamic QR codes</a>.</p>
<h2>Five failures that break batches</h2>
<ul>
@@ -2085,7 +2085,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
},
],
relatedSlugs: [
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
'qr-code-print-size-guide',
'qr-code-small-business',
'bulk-qr-code-generator-excel',
@@ -2782,7 +2782,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
'qr-code-tracking-guide-2025',
'qr-code-analytics',
'utm-parameter-qr-codes',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
],
authorName: 'Timo Knuth',
authorTitle: 'QR Code & Marketing Expert',
@@ -2876,7 +2876,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
<p>Do not optimize every metric at once. First establish that a placement is scanned. Then improve the landing page or the offer if scans do not become useful visits. Separating those questions stops a weak poster from being blamed on a perfectly good destination, or the reverse.</p>
<p>For the full measurement workflow including print campaigns, see the <a href="/blog/qr-code-tracking-guide-2025">QR code tracking guide</a>. For the underlying difference between the two code types, see <a href="/blog/dynamic-vs-static-qr-codes">dynamic vs static QR codes</a>.</p>
<p>For the full measurement workflow including print campaigns, see the <a href="/blog/qr-code-tracking-guide-2025">QR code tracking guide</a>. For the underlying difference between the two code types, see <a href="/blog/static-vs-dynamic-qr-code">static vs dynamic QR codes</a>.</p>
</div>`,
},
@@ -2962,7 +2962,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
relatedSlugs: [
'trackable-qr-codes',
'qr-code-analytics',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
'qr-code-tracking-guide-2025',
],
authorName: 'Timo Knuth',
@@ -3554,7 +3554,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
relatedSlugs: [
'vcard-qr-code-generator',
'qr-code-print-size-guide',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
],
authorName: 'Timo Knuth',
authorTitle: 'QR Code & Marketing Expert',
@@ -3740,7 +3740,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
'trackable-qr-codes',
'qr-code-analytics',
'qr-code-events',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
'qr-code-print-size-guide',
],
authorName: 'Timo Knuth',
@@ -3933,7 +3933,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
],
relatedSlugs: [
'qr-code-tracking-guide-2025',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
'qr-code-marketing',
],
authorName: 'Timo Knuth',
@@ -4010,7 +4010,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
<p><strong>Use your own domain.</strong> A redirect on a domain customers recognise is verifiable in the preview. A generic shortener domain is not.</p>
<p><strong>Prefer dynamic codes for anything long-lived.</strong> If a destination is compromised or has to change, you repoint it rather than replacing physical material. See <a href="/blog/dynamic-vs-static-qr-codes">dynamic vs static</a>.</p>
<p><strong>Prefer dynamic codes for anything long-lived.</strong> If a destination is compromised or has to change, you repoint it rather than replacing physical material. See <a href="/blog/static-vs-dynamic-qr-code">static vs dynamic QR codes</a>.</p>
<p><strong>Never ask for credentials or card details after a scan.</strong> Beyond the direct risk, it trains your customers to do the exact thing that makes quishing work.</p>
@@ -4087,7 +4087,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
relatedSlugs: [
'bulk-qr-code-generator-excel',
'qr-code-tracking-guide-2025',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
'qr-code-marketing',
],
authorName: 'Timo Knuth',
@@ -4281,7 +4281,7 @@ with open("codes.csv", newline="", encoding="utf-8") as f:
relatedSlugs: [
'best-qr-code-generator-2026',
'qr-code-small-business',
'dynamic-vs-static-qr-codes',
'static-vs-dynamic-qr-code',
'trackable-qr-codes',
],
authorName: 'Timo Knuth',

View File

@@ -291,8 +291,8 @@ export const supportResources: SupportResourceLink[] = [
'Editorial pillar page for educational browsing and broader QR workflow discovery.',
},
{
href: '/blog/dynamic-vs-static-qr-codes',
title: 'Dynamic vs Static QR Codes',
href: '/blog/static-vs-dynamic-qr-code',
title: 'Static vs Dynamic QR Codes',
description:
'Explainer for the operational difference between fixed and editable QR destinations.',
},
@@ -1484,8 +1484,8 @@ export const useCasePageContent: Record<string, UseCasePageContent> = {
description: 'Useful when the same physical surfaces need an up-to-date post-scan payment action.',
},
{
href: '/blog/dynamic-vs-static-qr-codes',
title: 'Dynamic vs Static QR Codes',
href: '/blog/static-vs-dynamic-qr-code',
title: 'Static vs Dynamic QR Codes',
description: 'Existing editorial asset for choosing editable QR destinations.',
},
{
@@ -1572,8 +1572,8 @@ export const useCasePageContent: Record<string, UseCasePageContent> = {
description: 'Another contact-first workflow where the destination needs to stay current after print.',
},
{
href: '/blog/dynamic-vs-static-qr-codes',
title: 'Dynamic vs Static QR Codes',
href: '/blog/static-vs-dynamic-qr-code',
title: 'Static vs Dynamic QR Codes',
description: 'Useful background for choosing dynamic QR destinations.',
},
{

View File

@@ -31,7 +31,18 @@ export function organizationSchema() {
'@type': 'Organization',
'@id': `${SITE_URL}/#organization`,
name: 'QR Master',
alternateName: ['QRMaster', 'QR Master QR Code Generator'],
// The brand name is contested: a competing generator runs on qr-master.org
// and two unrelated Android apps ship as "QR Master". Listing the spellings
// people actually type (incl. the hyphenated form) helps Google tie those
// queries to this entity rather than a namesake.
alternateName: [
'QRMaster',
'QR-Master',
'qrmaster.net',
'QR Master QR Code Generator',
],
description:
'QR Master is a QR code generator for dynamic QR codes that stay editable after printing, with scan analytics by time, device, and location.',
url: SITE_URL,
logo: {
'@type': 'ImageObject',