Ever write a blog post, mention one of your products, and then… forget to add the link? Or you add it once, miss the second mention, and end up with a conversion leak the size of the Channel Tunnel?
With well over 40 GPT’s now developed (some not yet up for sale), linking to each GPT was becoming a massive headache, that is…
Until we wired a simple, invisible system into WordPress that automatically turns any GPT name I type into a live link to its sales page. No more hunting, no more copy-paste, no more “oops.”
ChatGPT helped me to create all the scripts and with the implementation because I am a non-tech person – I made a few errors but I fed them back to ChatGPT and eventually got what I wanted and it will save me a lot of time in future.
Now all I need to do is remember to update the list of sales pages in my WordPress Media library when I launch a new product and that product will be auto-linked to its sales page whenever I mention it in a blog post.
The Problem (aka: Death by a Thousand Tiny Tasks)
-
Manual linking is slow. It interrupts writing flow and adds 5–10 minutes per post.
-
Inconsistent links. Some posts link, some don’t. Some link to old pages. Some link five times, which Google doesn’t love.
-
Broken URLs. Sales page moves? Old posts don’t get the memo.
-
Missed revenue. If the link isn’t there, the click can’t happen, and neither can the sale.
In short: Future You keeps paying for Present You “I’ll sort that later.”
The Big Idea (Small but Mighty)
We put my IMMachines product list in one place and taught the site to read it.
-
A single mapping file (a tiny JSON) lives in the WordPress Media Library.
-
It contains each GPT’s name, link, and optional aliases (e.g., “Prompt Builder Pro”, “PBP”).
-
A lightweight script runs on blog posts. When it sees “IMMachines: Sales Angle Generator”, it auto-wraps the last mention with the correct link.
-
It respects existing links, code blocks, buttons, and any sections you mark as “do not touch.”
-
We add UTM tags automatically so clicks are trackable in GA4.
That’s it. Set-and-forget.
How We Did It (Plain English, no migraines)
-
Create the source of truth
We exported a list of GPTs from a CSV into a small JSON file like this:Upload that file to Media → Add New and copy its URL.
-
Drop a tiny script into Avada (which is my WordPress Theme)
In WordPress: Avada → Options → Custom CSS/JS → Tracking & Code → Space before</body>
Paste the script (we used a production-ready version that:-
Runs only on single blog posts
-
Adds UTM parameters for tracking
-
Skips links, code, inputs, buttons and any block you wrap with
.imm-ignore
-
Supports aliases
-
Logs what it links in the Console for quick checks
-
-
Test once
-
Open a live blog post that mentions a few GPTs (e.g., Sales Angle Generator, Prompt Builder Pro).
-
Hard refresh (Ctrl+Shift+R on Windows).
-
Open DevTools Console (F12 → Console) to see “Loaded entries” and “Linked: …” messages.
-
Check the post—first mention of each GPT is now a live link.
-
-
Go back to writing
From now on, whenever you mention a GPT by name, it links itself. That’s the whole point: system beats willpower.
What This Changes (the good stuff)
-
Speed: Write once. The link just appears.
-
Consistency: Every post links the same way—clean, predictable, and not spammy (first mention only).
-
Fewer errors: Update the JSON once, and all posts point to the new page.
-
Better tracking: UTM tags give you clean GA4 events. Tie results to specific posts and topics.
-
SEO-friendly: Internal links help crawlers understand your product graph without over-linking.
Maintenance: 30-Second SOP
When you add a new GPT or change a link:
-
Edit the JSON (add a new object or update the URL).
-
Upload/replace it in Media.
-
Hard refresh a live post (Ctrl+Shift+R).
-
Optional: Add a couple of aliases so casual mentions link too.
That’s it. No database edits. No plugin conflicts. No developer dependency.
Troubleshooting (in case Future You reads this)
-
“Nothing’s linking.”
Check that you placed the code in Space before</body>
, not the CSS box. Then open your JSON URL—must show raw JSON. -
“It links inside places I don’t want.”
Wrap those sections with<div class="imm-ignore">…</div>
. -
“I want to track clicks.”
We can push a custom event into thedataLayer
on click. (We even gave you the snippet.) -
“I’m using aliases.”
Add them asaliases
in JSON—script supports it. -
“Can I run it sitewide?”
Yes—flip the config flag. We scoped it to blog posts to start sensible.
A Quick Mindset Note (because creators over 35 get this)
Business gets easier when you stop relying on discipline for repetitive tasks and build tiny, boring systems that remove the decision entirely. This is one of those. It’s not flashy. It doesn’t go viral. But it quietly returns hours, protects conversions, and keeps your work clean.
Put another way: past-you built the on-ramp, so future-you can drive.
A Few Real Examples (now auto-linked)
-
IMMachines: Sales Angle Generator — turn bland into bankable.
-
IMMachines: Prompt Builder Pro — pro-grade prompts on tap.
-
IMMachines: Daily Micro-Content Machine — post daily without burning out.
-
IMMachines: Copy Pro Engine — conversion-first copy across your funnel.
[…] is a follow on from this post. I created my own personal GPT called Link Mapper and this post shows you ‘how’ in […]