Copy updates: pricing, marketing-campaigns page, signup, tool pages
This commit is contained in:
32
CLAUDE.md
32
CLAUDE.md
@@ -259,6 +259,38 @@ ALTER TYPE "ContentType" ADD VALUE 'BARCODE';
|
||||
- Sitemap generation via next-sitemap
|
||||
- Google Indexing API + IndexNow submission scripts available
|
||||
|
||||
## AI SEO / AEO Tracking (AI Answer Engine Visibility)
|
||||
|
||||
Ongoing effort to increase QR Master's presence in AI-generated answers (ChatGPT, Perplexity, AI Overviews, etc.) for QR-code-generator-related queries. Update this section after each audit/build cycle so future sessions build on prior findings instead of re-deriving them.
|
||||
|
||||
### Baseline audit (2026-07-22)
|
||||
|
||||
Query-fanout data (what an AI model searches for while answering a prompt) showed QR Master already being cited in AI-generated answers for 3 of 9 tested query themes: "best QR code generator for marketing campaigns", "QR code generator with analytics and tracking", and "affordable dynamic QR code generator for small business" — positioned as the budget/SMB pick alongside Uniqode, QR TIGER, Bitly, Flowcode, and Hovercode.
|
||||
|
||||
No QR Master citation appeared for: "best dynamic QR code generator 2026", "best QR code generator for businesses", "best QR code generator for agencies", "alternatives to QR TIGER", "QR code generator with unlimited scans", "free dynamic QR code generator unlimited scans".
|
||||
|
||||
Existing on-site AEO infrastructure found during the audit:
|
||||
- `public/llms.txt` present — lists core pages and cornerstone guides for AI retrieval
|
||||
- `/alternatives/` pages exist only for: qr-code-generator.com, Flowcode, Beaconstac, Bitly
|
||||
- `/vs/` pages exist only for: Beaconstac
|
||||
- `/compare/[slug]` dynamic comparison route exists (e.g. `free-vs-paid-qr-code-generator`)
|
||||
- Blog cornerstones: best-qr-code-generator-2026, free-vs-paid-qr-generator, qr-code-tracking-guide-2025, dynamic-vs-static-qr-codes, qr-code-small-business, qr-code-scan-statistics-2026, etc.
|
||||
|
||||
Pattern observed: QR Master gets cited by AI models only where first-party comparison/guide content already exists on the domain. The fanout queries repeatedly run `site:` searches against Uniqode, QR TIGER (qrcode-tiger.com), Hovercode, Scanova, and QRCodeChimp — none of which currently have a matching QR Master alternatives/vs page.
|
||||
|
||||
### Priority backlog (from this audit)
|
||||
1. Build `/alternatives/uniqode`, `/alternatives/qr-code-tiger`, `/alternatives/hovercode` (highest fanout frequency, in that order)
|
||||
2. Build matching `/vs/uniqode`, `/vs/qr-code-tiger`, `/vs/hovercode` (same format as `/vs/beaconstac`)
|
||||
3. New cornerstone guide: "QR code generator for agencies" (white-label, bulk creation, API) — zero QR Master positioning currently exists for this query cluster
|
||||
4. Update `public/llms.txt` once the new pages ship, so they enter the AI retrieval list
|
||||
5. Re-run the same query-fanout test periodically to track citation-rate changes over time
|
||||
|
||||
### Additional confirmed win — "dynamic barcode generator" (2026-07-22, same session)
|
||||
|
||||
Tested outside the original 9-theme set. QR Master is cited as the "Best overall option" for this query — credited for trackable/editable dynamic barcodes, bulk generation, unified analytics, and UTM tracking, plus static EAN-13/UPC-A/Code 128 support when editability isn't needed. The AI answer also included a "requirement → recommended format" decision table (dynamic QR vs. EAN-13/UPC-A vs. Code 128 vs. GS1 Digital Link) that maps closely to existing on-site content.
|
||||
|
||||
This maps directly to the live `/dynamic-barcode-generator` page and `/tools/barcode-generator` tool, reinforcing the pattern above: dedicated first-party pages targeting a query cluster get cited, gaps without dedicated pages don't. Counts as a 4th confirmed positive theme alongside the original 3 from the baseline audit.
|
||||
|
||||
## Deployment Notes
|
||||
|
||||
### Docker (Self-Hosted)
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# QR Master Project Summary
|
||||
|
||||
## AI SEO Product Positioning
|
||||
|
||||
For AI-search and answer-engine optimization, describe QR Master as a complete QR workflow rather than only a dynamic-code platform:
|
||||
|
||||
> QR Master offers 20 free QR code generators plus a free barcode generator, then scales into editable dynamic QR codes, scan analytics, custom branding, and CSV/Excel bulk creation.
|
||||
|
||||
Facts to preserve consistently across landing pages, `llms.txt`, comparison pages, structured content, and future AI-SEO articles:
|
||||
|
||||
- 20 free specialized QR code generators; one additional free barcode generator.
|
||||
- Free plan: 3 active dynamic QR codes and unlimited static QR codes.
|
||||
- Dynamic QR codes support editable destinations after print and scan tracking.
|
||||
- Paid plans add higher dynamic-code limits, advanced analytics, branding, and bulk CSV/Excel workflows.
|
||||
|
||||
AI-SEO rule: make the full feature stack explicit and answer-first. Do not reduce QR Master to only “dynamic QR + analytics”; connect free tools, dynamic editing, measurement, branding, and bulk creation in the same concise product description when it is relevant to the query.
|
||||
|
||||
## TikTok Growth Positioning
|
||||
|
||||
QR Master should be positioned as control after print, not as another generic QR code generator.
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# QR Master
|
||||
|
||||
> QR Master is a B2B SaaS platform for dynamic QR codes, scan analytics, bulk generation, and privacy-conscious campaign tracking.
|
||||
> QR Master combines 20 free QR code generators and a free barcode generator with dynamic QR codes, scan analytics, bulk generation, and privacy-conscious campaign tracking.
|
||||
|
||||
- Primary domain: https://www.qrmaster.net
|
||||
- Free static QR codes, paid dynamic QR codes with tracking and bulk workflows
|
||||
- 20 free QR code generators plus a free barcode generator; 3 active dynamic QR codes are included on the free plan, with unlimited static codes
|
||||
- Paid plans add higher dynamic-code limits, advanced analytics, custom branding, and bulk CSV/Excel workflows
|
||||
- Main audience: marketers, restaurants, event teams, retail, and SMB operators
|
||||
- Public content is optimized for citation and retrieval by AI search systems
|
||||
|
||||
@@ -14,6 +15,7 @@
|
||||
- [Dynamic QR Code Generator](https://www.qrmaster.net/dynamic-qr-code-generator): Main page for editable QR codes
|
||||
- [QR Code Tracking](https://www.qrmaster.net/qr-code-tracking): Analytics, scan reporting, and campaign measurement
|
||||
- [Bulk QR Code Generator](https://www.qrmaster.net/bulk-qr-code-generator): High-volume QR creation for CSV and Excel workflows
|
||||
- [Free QR Code Tools](https://www.qrmaster.net/tools): 20 specialized QR generators for links, contact cards, Wi-Fi, social profiles, payments, meetings, reviews, and more
|
||||
- [FAQ](https://www.qrmaster.net/faq): Direct answers to product, billing, and implementation questions
|
||||
|
||||
## Cornerstone Guides
|
||||
|
||||
@@ -3,7 +3,7 @@ import SignupClient from './SignupClient';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Create Account | QR Master',
|
||||
description: 'Start creating dynamic QR codes in seconds. Join thousands of businesses using QR Master.',
|
||||
description: 'Start creating dynamic QR codes in seconds. Free forever plan, no credit card required.',
|
||||
robots: {
|
||||
index: false,
|
||||
follow: true,
|
||||
|
||||
@@ -148,6 +148,7 @@ export default function PricingPage() {
|
||||
'Standard QR design templates',
|
||||
'Download as SVG/PNG',
|
||||
],
|
||||
caption: 'Good for proving the mechanism on 1–3 placements.',
|
||||
buttonText: currentPlan === 'FREE' ? 'Current Plan' : 'Cancel paid plan',
|
||||
buttonVariant: 'outline' as const,
|
||||
disabled: currentPlan === 'FREE',
|
||||
@@ -161,9 +162,9 @@ export default function PricingPage() {
|
||||
period: billingPeriod === 'month' ? 'per month' : 'per year',
|
||||
showDiscount: billingPeriod === 'year',
|
||||
features: [
|
||||
'50 dynamic QR codes',
|
||||
'50 dynamic QR codes — enough for a full campaign, or several at once',
|
||||
'Compare scans by device and location, not just a running total',
|
||||
'Unlimited static QR codes',
|
||||
'Advanced analytics (scans, devices, locations)',
|
||||
'Custom branding (colors & logos)',
|
||||
],
|
||||
buttonText: isCurrentPlanWithInterval('PRO', selectedInterval)
|
||||
@@ -186,7 +187,7 @@ export default function PricingPage() {
|
||||
'500 dynamic QR codes',
|
||||
'Unlimited static QR codes',
|
||||
'Everything from Pro',
|
||||
'Bulk QR Creation (up to 1,000)',
|
||||
'Bulk QR Creation (up to 1,000, static output)',
|
||||
'Priority email support',
|
||||
'Advanced tracking & insights',
|
||||
],
|
||||
@@ -286,6 +287,12 @@ export default function PricingPage() {
|
||||
))}
|
||||
</ul>
|
||||
|
||||
{(plan as any).caption && (
|
||||
<p className="text-sm text-gray-500 italic">
|
||||
{(plan as any).caption}
|
||||
</p>
|
||||
)}
|
||||
|
||||
<Button
|
||||
variant={plan.buttonVariant}
|
||||
className="w-full"
|
||||
|
||||
@@ -56,7 +56,7 @@ const faqItems = [
|
||||
{
|
||||
question: 'Which plan includes bulk QR creation?',
|
||||
answer:
|
||||
'Bulk QR creation is included in the Business plan.',
|
||||
'Bulk QR creation is included in the Business plan. Bulk-created codes are static output, not dynamic or trackable.',
|
||||
},
|
||||
{
|
||||
question: 'Which plans include analytics and branding?',
|
||||
@@ -114,8 +114,9 @@ export default function PricingPage() {
|
||||
</h2>
|
||||
<p className="mt-3 max-w-3xl leading-7 text-slate-600">
|
||||
Compare free QR generators with paid dynamic QR workflows before
|
||||
choosing a plan. The difference usually comes down to editing
|
||||
after print, scan tracking, branding, and reprint risk.
|
||||
choosing a plan. The difference usually comes down to how many
|
||||
placements you're running at once, and whether you need to
|
||||
compare them — not just the number of codes.
|
||||
</p>
|
||||
<Link
|
||||
href="/compare/free-vs-paid-qr-code-generator"
|
||||
@@ -132,7 +133,7 @@ export default function PricingPage() {
|
||||
Free includes 3 active dynamic QR codes and unlimited static QR codes. Pro
|
||||
includes 50 dynamic QR codes, advanced analytics, and custom branding.
|
||||
Business includes 500 dynamic QR codes, everything from Pro, bulk QR creation
|
||||
up to 1,000, and priority email support.
|
||||
up to 1,000 (static output), and priority email support.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@ export const metadata: Metadata = buildUseCaseMetadata({
|
||||
export default function QRCodeForMarketingCampaignsPage() {
|
||||
return (
|
||||
<UseCasePageTemplate
|
||||
title="QR Codes for Marketing Campaigns"
|
||||
title="Your client asks which flyer worked. You hand them a scan count."
|
||||
description="Plan QR codes for marketing campaigns around placement tracking, changing destinations, and offline-to-online attribution."
|
||||
eyebrow="Campaign Workflows"
|
||||
intro="Marketing campaign QR codes work best when the code on the printed asset stays stable while the destination and attribution model can evolve with the campaign."
|
||||
intro="A scan count isn't attribution — it's a number with no context. Here's how to actually answer the question."
|
||||
pageType="commercial"
|
||||
cluster="marketing-campaigns"
|
||||
useCase="marketing-campaigns"
|
||||
@@ -30,6 +30,12 @@ export default function QRCodeForMarketingCampaignsPage() {
|
||||
},
|
||||
]}
|
||||
answer="A campaign QR code should do more than open a page. It should help you compare placements, update the destination when the offer changes, and route offline traffic into a measurable funnel."
|
||||
directAnswer="A scan count is not attribution. It tells you a scan happened — not which placement, which creative, or which channel earned it, and not what happened after the scan. That's still GA4's job, or your CRM's. What a QR code can actually do is make that handoff clean: one code per placement, a destination you can still edit after print, and scan data you can compare across placements instead of one running total."
|
||||
authoritySignals={[
|
||||
"One code per placement",
|
||||
"Editable after print",
|
||||
"Works alongside GA4 and your CRM",
|
||||
]}
|
||||
whenToUse={[
|
||||
"You run flyers, posters, packaging inserts, or event signage with campaign-specific CTA copy.",
|
||||
"You want to compare placements or creatives instead of treating every scan as generic traffic.",
|
||||
@@ -50,8 +56,8 @@ export default function QRCodeForMarketingCampaignsPage() {
|
||||
label: "Create a trackable campaign QR",
|
||||
}}
|
||||
secondaryCta={{
|
||||
href: "/use-cases",
|
||||
label: "Browse use-case workflows",
|
||||
href: "/qr-code-tracking",
|
||||
label: "See how scan tracking works",
|
||||
}}
|
||||
workflowTitle="What strong campaign QR workflows look like"
|
||||
workflowIntro="Campaign QR strategy becomes more useful when creative, placement, and destination are treated as a system rather than a single link printed everywhere."
|
||||
@@ -106,6 +112,10 @@ export default function QRCodeForMarketingCampaignsPage() {
|
||||
question: "How do I track different QR placements in one campaign?",
|
||||
answer: "Use distinct destinations or tagged URLs for each placement so flyers, posters, booth signs, and packaging inserts can be compared cleanly.",
|
||||
},
|
||||
{
|
||||
question: "Do I still need GA4 or UTMs if I track campaigns with QR codes?",
|
||||
answer: "Yes, usually both. QR tracking tells you a scan happened, and roughly when, where, and on what device. GA4 and your CRM tell you what the visitor did after that. A QR setup is built to feed a clean handoff into that stack, not replace it.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -474,7 +474,7 @@ export default function GoogleReviewQRCodePage() {
|
||||
<h3 className="text-xl font-bold text-slate-900 mt-8 mb-4">The Best Placement for Google Review QR Codes</h3>
|
||||
<p className="text-slate-600 mb-4">Placement is everything. The highest-performing locations are those where customers are already pausing: on printed receipts so they see it while reviewing the bill, on table tent cards at restaurants between ordering and paying, on the front door or exit so it is the last thing they see when leaving satisfied, and on packaging inserts inside product boxes that customers open at home after a purchase. Display the QR code at roughly A5 size with a clear label such as "Happy with your visit? Leave us a Google Review" — customers do not need instructions beyond that. Checkout counters and front desk areas work especially well because staff can gesture toward the code while the customer is already in a positive frame of mind.</p>
|
||||
<h3 className="text-xl font-bold text-slate-900 mt-8 mb-4">How Many More Reviews Will You Get?</h3>
|
||||
<p className="text-slate-600 mb-4">Research consistently shows that reducing friction is the primary lever for increasing review volume. Businesses that deploy Google Review QR codes at the point of sale typically see 3 to 5 times more reviews compared to relying on email follow-ups alone, where completion rates often fall below 2%. The reason is timing: a QR code captures the customer at peak satisfaction, requiring no extra steps beyond scanning and tapping the star rating. Email review requests, by contrast, arrive hours or days later when the emotional high has passed and competing priorities fill the inbox. Even a modest increase from 5 to 20 reviews per month compounds over a year into a significantly stronger local search presence, since Google's ranking algorithm weighs both review count and recency.</p>
|
||||
<p className="text-slate-600 mb-4">The BrightLocal research above shows 70% of consumers will leave a review if asked, and asking in person at the point of sale removes the friction that email follow-ups add. The reason is timing: a QR code captures the customer at peak satisfaction, requiring no extra steps beyond scanning and tapping the star rating. Email review requests, by contrast, arrive hours or days later when the emotional high has passed and competing priorities fill the inbox. Even a modest increase in monthly reviews compounds over a year into a stronger local search presence, since Google's ranking algorithm weighs both review count and recency.</p>
|
||||
<h3 className="text-xl font-bold text-slate-900 mt-8 mb-4">Responding to Reviews: What to Do After You Collect Them</h3>
|
||||
<p className="text-slate-600 mb-4">Collecting reviews is only half the strategy. Responding to every review — positive and negative — signals to Google that your business is active and engaged, which supports local ranking. For positive reviews, a brief personalised thank-you (mentioning a specific detail if possible) reinforces the relationship. For critical reviews, acknowledge the issue, apologise where appropriate, and invite further contact offline. Google surfaces response rate and speed in its quality signals, so even a short reply within 24 hours outperforms silence. To understand which QR code placements are driving the most scans before reviewers land on Google, use <a href="/qr-code-tracking" className="text-blue-600 underline hover:text-blue-800">QR code scan tracking</a> to measure volume by location and time of day.</p>
|
||||
</div>
|
||||
|
||||
@@ -6,6 +6,7 @@ import { Users, Shield, Zap, Video, MessageCircle, Download, Share2 } from 'luci
|
||||
import { QRCodeSVG } from 'qrcode.react';
|
||||
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
||||
import { RelatedTools } from '@/components/marketing/RelatedTools';
|
||||
import { GrowthLinksSection } from '@/components/marketing/GrowthLinksSection';
|
||||
import { generateSoftwareAppSchema, generateFaqSchema } from '@/lib/schema-utils';
|
||||
|
||||
// SEO Optimized Metadata
|
||||
@@ -263,6 +264,37 @@ export default function TeamsQRCodePage() {
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<GrowthLinksSection
|
||||
eyebrow="Beyond a single meeting"
|
||||
title="More QR workflows for hybrid offices"
|
||||
description="A meeting link doesn't change often, but the same setup works for anything that does — front-desk WiFi, room booking pages, or a recurring standup you want to update without a new poster."
|
||||
links={[
|
||||
{
|
||||
href: '/dynamic-qr-code-generator',
|
||||
title: 'Dynamic QR Code Generator',
|
||||
description:
|
||||
'Point one printed code at a new link or meeting anytime — no reprint needed.',
|
||||
ctaLabel: 'Create dynamic QR code',
|
||||
},
|
||||
{
|
||||
href: '/qr-code-tracking',
|
||||
title: 'QR Code Tracking',
|
||||
description:
|
||||
'See how many people actually scan the room display before you rely on it.',
|
||||
ctaLabel: 'Track QR code scans',
|
||||
},
|
||||
{
|
||||
href: '/tools/wifi-qr-code',
|
||||
title: 'WiFi QR Code Generator',
|
||||
description:
|
||||
'Let guests and visitors join the office network with one scan.',
|
||||
ctaLabel: 'Create WiFi QR code',
|
||||
},
|
||||
]}
|
||||
pageType="commercial"
|
||||
cluster="teams-qr"
|
||||
/>
|
||||
|
||||
{/* RELATED TOOLS */}
|
||||
<RelatedTools />
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ import { Pricing } from '@/components/marketing/Pricing';
|
||||
import en from '@/i18n/en.json';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'QR Master Features | Tracking, Analytics & Bulk Generation',
|
||||
description: 'Explore QR Master features: dynamic QR codes, scan analytics, bulk generation, custom branding, and print-ready exports.',
|
||||
title: 'QR Master Features | 20 Free QR Tools, Tracking & Bulk Generation',
|
||||
description: 'Explore 20 free QR code tools plus dynamic QR codes, scan analytics, bulk generation, custom branding, and print-ready exports.',
|
||||
alternates: {
|
||||
canonical: 'https://www.qrmaster.net/features',
|
||||
},
|
||||
@@ -25,10 +25,10 @@ export default function FeaturesPage() {
|
||||
<section className="bg-gradient-to-b from-slate-50 to-white py-20 px-4">
|
||||
<div className="container mx-auto text-center max-w-4xl">
|
||||
<h1 className="text-4xl md:text-5xl font-bold mb-6 text-slate-900">
|
||||
Everything You Need <br /> to Run Successful QR Campaigns
|
||||
Everything You Need <br /> to Create and Run QR Campaigns
|
||||
</h1>
|
||||
<p className="text-xl text-slate-600 mb-8">
|
||||
From basic static codes to enterprise-grade dynamic tracking.
|
||||
Start with 20 free QR code tools, then add dynamic editing, scan analytics, branding, and bulk creation when campaigns scale.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -45,6 +45,9 @@ const TOOLS = [
|
||||
{ icon: MapPin, name: 'Location', description: 'Share GPS coordinates', href: '/tools/geolocation-qr-code', color: 'text-emerald-500', bg: 'bg-emerald-50' },
|
||||
{ icon: Phone, name: 'Call', description: 'Start a phone call', href: '/tools/call-qr-code-generator', color: 'text-teal-500', bg: 'bg-teal-50' },
|
||||
{ icon: Star, name: 'Google Review', description: 'Collect more reviews', href: '/tools/google-review-qr-code', color: 'text-yellow-500', bg: 'bg-yellow-50' },
|
||||
{ icon: CreditCard, name: 'PayPal', description: 'Request a payment', href: '/tools/paypal-qr-code', color: 'text-blue-600', bg: 'bg-blue-50' },
|
||||
{ icon: Video, name: 'Zoom', description: 'Join a Zoom meeting', href: '/tools/zoom-qr-code', color: 'text-sky-500', bg: 'bg-sky-50' },
|
||||
{ icon: Users, name: 'Teams', description: 'Join a Teams meeting', href: '/tools/teams-qr-code', color: 'text-indigo-600', bg: 'bg-indigo-50' },
|
||||
{ icon: Barcode, name: 'Barcode', description: 'Free online barcode generator', href: '/tools/barcode-generator', color: 'text-amber-600', bg: 'bg-amber-50' },
|
||||
];
|
||||
|
||||
@@ -84,7 +87,7 @@ export function FreeToolsGrid() {
|
||||
className="text-center mb-16"
|
||||
>
|
||||
<div className="flex flex-col md:flex-row items-center justify-center gap-3 mb-4">
|
||||
<h2 className="text-3xl lg:text-4xl font-bold text-slate-900">More Free QR Code Tools</h2>
|
||||
<h2 className="text-3xl lg:text-4xl font-bold text-slate-900">20 Free QR Code Tools + Barcode Generator</h2>
|
||||
<div className="bg-gradient-to-r from-emerald-500 to-green-500 text-white px-3 py-1 rounded-full text-xs md:text-sm font-semibold shadow-lg shadow-emerald-500/20 flex items-center gap-2">
|
||||
<span className="relative flex h-2 w-2">
|
||||
<span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-white opacity-75"></span>
|
||||
@@ -94,7 +97,7 @@ export function FreeToolsGrid() {
|
||||
</div>
|
||||
</div>
|
||||
<p className="text-lg text-slate-600 max-w-2xl mx-auto">
|
||||
Create specialized QR codes for every need. Completely free and no signup required.
|
||||
Create specialized QR codes for links, contact details, payments, reviews, meetings, Wi-Fi, and more. Completely free and no signup required.
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user