Platform · Links
One link. The whole trail afterwards.
An affiliate link is only worth as much as what you can read from it afterwards. The generator here builds the link from five choices, and every choice becomes a column you can later filter on: which program, which channel, which of your sites, which page at the store, and which campaign.
The generator
Five choices become one destination.
Link anatomy
Pick a part of the link
What you share
Where the visitor lands
- https://app.affilyflow.com
- Our domain. Fixed – always the same. The link points to our server, not to the store. That is why the click can be recorded before the visitor arrives – the browser has to pass through us to get any further, so there is no extra call on the side that can be blocked. If the redirect itself is blocked, the visit stops too, of course.
- /go
- The redirect route. Fixed – always the same. The route looks up the code, reads the program’s terms and writes the click row before it answers with a 302. Rate, commission type, cookie window and recurring cap are copied onto the click in the same write – that is the snapshot the conversion is calculated on later.
- /k7f2xq
- The short code. The server sets it. Short, random and permanent. The destination is stored on the link, so you can rename it and change where it points without the code changing. Everything you have already shared keeps working, and the link’s history comes with it.
- ?p=/products/coffee-grinder
- Deep link. You choose it. A deep link set directly on the shared link. On the redirect, the path replaces the store’s home page, so the visitor lands on the product itself instead of having to find it again.
- https://coffeeshop.example
- The store’s address. Comes from the store’s program. The store’s own URL, saved on the link on the day you created it. From here the visitor is with the store, and we are out of the way again.
- /products/coffee-grinder
- The path from your deep link. You choose it. Exactly the path you set with ?p=. Without a deep link the visitor lands on the home page – and then has to find the product you just spent two paragraphs recommending.
- ?utm_medium=instagram
- The channel. You choose it. The channel you chose, as a perfectly ordinary UTM parameter that your own analytics tool can read too. The store switches channels on and off, and a link in a channel the store does not allow is rejected when you create it – not when the sale is rejected a month later.
- &utm_source=yourblog.example
- Your own site. You choose it. Which of your sites the link belongs to. If you have several, you can compare them with each other afterwards – without having to remember which link was where.
- &utm_campaign=advent-calendar
- The campaign. You choose it. Your own label for one joint effort: an advent calendar, a newsletter series. Broad enough to group it all, fine enough to set it apart from the rest of the year.
- &subid=article-top
- Sub-ID. You choose it. The finer label: two placements in the same article, two variants of the same campaign. Change the sub-ID and the destination is different – so it becomes a new, separate link with its own numbers rather than a duplicate.
- &afid=c_9fK2xQ1bR7dLm
- The click ID. The server sets it. Set by the redirect, not by you. It is the key to the whole attribution – not an IP, not a device profile, not an email address. The store’s script stores the ID in a first-party cookie on the store’s own domain and in localStorage.
You choose a program from the ones you have joined, a channel, optionally one of your own sites, a landing page at the store, and finally a campaign name and a sub-ID. The generator translates the choices into the destination URL and stores it on the link.
The channel becomes utm_medium, the site becomes utm_source with your domain, the campaign becomes utm_campaign and the sub-ID becomes subid – ordinary UTM parameters that your own analytics tool can read too. A deep link changes the path, so the visitor lands on the product instead of the front page.
Out comes a short code: /go/<code>. That is what you share. The destination itself is stored on the link, and the click row is only written the second someone clicks – that is where the rate and cookie window are frozen.
What the choices become
- Channel
- utm_medium=instagram
- Your site
- utm_source=yourblog.com
- Deep link
- /products/coffee-grinder
- Campaign
- utm_campaign=advent-calendar
- Sub-ID
- subid=article-top
The channel rules
The store’s rules are enforced at creation.
A store switches channels on and off: SEO, blog, Instagram, TikTok, YouTube, Facebook, email, website. If it only allows SEO and blog, you cannot create an Instagram link – the server rejects the attempt with a message about what the store allows.
That sounds like a restriction. In practice it is the opposite: you discover the rule when you create the link, not when the sale is rejected a month later. The rest of the store’s guidelines – paid search, coupon and cashback sites, discount codes, allowed content – are on the program page, and you should read them. To be honest: paid search and coupon sites are rules the store sets, not something we block technically.
Duplicate protection
The same link twice gives the same link.
If the destination is exactly identical to a link you already have – same program, deep link, channel, site, campaign and sub-ID – you get the existing link back instead of a new one. Your portfolio does not fill up with duplicates, and the statistics are gathered in one place instead of being split into two halves.
Deliberate variants are still variants. Another sub-ID for a split test, another campaign name, another deep link – all of that gives a different destination and therefore a new, independent link with its own numbers.
The portfolio
Numbers per link, not just per program.
Grouped by store
All your links gathered under the store they point to – with search and a filter that shows only the active ones.
Clicks, sales, earnings
Real numbers per single link, not a spread-out average. You can see which specific link is working.
14-day click curve
A daily series per link, so you can see whether a link is dying out or just had a quiet week.
Source, device and country
Recorded automatically on the click. You do not need to tag anything yourself to see where the traffic came from.
If you want to go one layer deeper than the link – down to the individual page that created the click – it is earnings per URL you need.
AI and API
Create the link where you work.
Ask your assistant for a deep link
Connect ChatGPT or Claude to your affiliate account via MCP. Give the program, product page and sub-ID; the assistant uses the same link function as the generator. You must already have joined the program in the dashboard.
Connect your AI assistant ↗Use links in your own tool
With the REST API, your script can create and fetch links and read results per program, link or sub-ID. Renaming, changing the destination and deleting are still done in the dashboard.
See REST examples and access ↗Maintenance
Tidying up without click work.
Links can be renamed, given a new destination or deleted one by one. And you can clear all unused links at a store in one go – the ones with zero clicks and zero sales. The links that have actually done something stay, with their history.
Every link can be downloaded as a QR code in PNG. The code is generated in your own browser, not through an external QR service, so the link is not leaked to a third party on the way. It is the kind of thing you only discover matters once you have printed it on 500 flyers.
Questions
What people actually ask.
- Does the store have to approve me before I can create a link?
- No. You join the program, and the link is created straight away – you can start the same day. On the other hand, a store can block a single affiliate, and the block is enforced in the database, not just in the interface.
- What is the difference between a campaign and a sub-ID?
- Both are your own labels and land as parameters on the destination: the campaign as utm_campaign, the sub-ID as subid. Most people use the campaign for a combined effort – an advent calendar, a newsletter series. The sub-ID is used to tell two variants of the same thing apart, for example two placements in the same article. The sub-ID is stored on every click, so you can see clicks, sales and earnings per sub-ID under Results and in the CSV export. If you build pages with AI, you can tag each placement with ?sid= directly on the /go link.
- Can I change the destination of a link I have already shared?
- Yes. You can rename the link and change where it points without the short code changing – so everything you have already shared keeps working, and the link’s history comes with it.
- What happens if the store lowers the commission after I have created the link?
- Nothing, for the clicks that have already happened. The rate, commission type, cookie window and recurring cap are snapshotted on every single click, not on the link. New clicks use the new terms; old clicks use the ones that applied when the click happened.
Where to next
Documentation and further reading
- DocsLinks and sub-IDsTrackable links, deep links to specific products, sub-IDs and ready-made HTML code.
- DocsPage trackingSee exactly which page on your site every click came from – automatically with the HTML code.
- PlacementsClicks, sales and earnings per page on your site, so you know which pages earn.
Create the link, and see what it does.
Join a program and generate the link the same day. There is no application to wait for – and you can see clicks, sales and earnings per single link from the first click.