How do I rotate one link between several destination URLs?

Updated August 14, 2026

One short link can serve up to 12 destination URLs, each with a weight you choose. Every human visitor gets one of them, drawn at random in proportion to those weights. It is a Pro feature.

The editor has two names for one thing. On a new link it is the A/B Testing tab. On a link you already have it is the Destinations section of the edit panel. Two destinations is an A/B test, more than two is a rotation, and both are the same feature.

On a free plan you can still build a self hosted rotating page with the free link rotator, which splits traffic but reports nothing back. Hosted rotation with the click report needs Pro. For what rotation is and when it beats an A/B test, see what link rotation is.

Set up a rotation on a new link

Step 1: open the link creator

In your dashboard, open Links and click Create Link in the top right corner.

Step 2: enter your first destination

Put your main URL in Destination URL. This becomes destination number one, not a separate fallback.

Step 3: open the A/B Testing tab

It sits in the tab row with Social Preview, Tracking, Routing, Protection and Advanced.

Step 4: turn the split on

The tab starts with a single button, Split traffic across destinations. Click it and the editor opens with two rows already there: row 1 is your Destination URL, row 2 is empty and waiting for your second URL.

Row 1's URL is not editable here. It is pinned to whatever is in the Destination URL field above, so change it there and the row follows.

Step 5: add any further destinations

From the third destination onward, click Add destination, up to 12 rows in total including row 1.

Step 6: set the weights

Type a whole number from 0 to 999 next to each destination. The editor shows the share that weighting produces as you type.

Weights are relative, not percentages. These all split evenly:

  • 50 and 50
  • 1 and 1
  • 250 and 250

And these all send three times as much traffic to the first destination:

  • 75 and 25
  • 3 and 1
  • 300 and 100

The arrows on rows 2 and below change the display order only. Row 1 is pinned as the primary, so its arrows are greyed out. The split comes from the weights, so moving a row up does not send it more traffic.

Step 7: create the link

Click Create Link at the bottom of the form.

Once the split is on, the tab carries a badge with the total number of destinations, counting your Destination URL as one. It reads 2 as soon as you add your first extra URL. On a free plan that badge reads Pro instead.

Share the short link as normal. Everything happens at the redirect, so nothing on your destination pages needs to change.

Add destinations to a link you already have

  1. On the Links page, click the pencil icon on the link's row to open its edit panel.
  2. Open the Destinations section.
  3. Click Split traffic across destinations, then add rows and weights exactly as above.
  4. Click Save. The button appears in the panel header once you change something.

Read the split

Open Links and click the click count on the link's row, the small chip with a bar chart icon and the number of clicks. Clicking the row itself opens the editor instead, which is the wrong place.

On the analytics page that opens, find the Destination Performance panel. There are no column headings. Each destination gets a row showing its URL, its click count on the right, and beneath that a bar with two figures: the share of clicks it actually took, and the share its weight asked for, printed as 40% intended.

The panel follows the time range selector at the top of the page, which starts at 7 days. Switch it to All before you read anything into the numbers, or you are comparing a week against weights you set months ago.

Reading actual against intended is the point. When the two diverge, the usual causes are:

  • Too few clicks. Every click is an independent draw, so small samples wobble. A 50/50 split can easily read 60/40 over 20 clicks.
  • Weights changed mid-flight. The panel compares clicks already banked against the weights as they are now. Edit a weight and the history does not retroactively change.
  • A destination joined late, or sat at weight 0 for part of the period.

A broken destination page will not show up here. Flyn counts the click at the redirect, before the visitor reaches your page at all, so a dead URL or a slow page still counts a click. Checking that every destination still loads is a separate job.

On a very busy link the panel reads from the most recent clicks rather than the full history, and it says so underneath the rows when that happens.

Removing a destination does not erase its history

Take a destination out and its past clicks stay in the report, on a greyed row named Removed destination with not in rotation where the intended share would be. That is on purpose. The split you ran last month is still part of what happened.

For affiliates rotating referral links

Put each full URL in as its own destination, including its own ref or subid parameter, and give them equal weights for an even spread.

Set the time range to All, or to the window your network reports on, before comparing the panel against the network's own dashboard. Flyn counts clicks, not commissions, so the network remains where the money is confirmed. Some networks also restrict rotating their links, so check the programme terms you work under.

Rotation and smart routing on the same link

Smart routing runs first. If a device or country rule matches a click, that rule decides the destination and the split never sees that click. Everything no rule claimed falls through to the split.

So they compose as a filter and a remainder. You can send iOS traffic to the App Store and split whatever is left across two landing pages from one link. What you cannot do is run a split inside a rule, so there is no separate desktop split and mobile split on a single link. If you need that, use one link per segment. See routing by country or device for the full order.

What this does not do

  • It counts clicks per destination, not conversions or revenue. Conversion tracking attributes to the link as a whole.
  • It does not declare a winner and runs no significance test.
  • The report lives on each link's own page. The account wide Analytics page does not break a rotation down, with one exception: a two URL A/B test created before rotation existed still appears in the A/B Test Performance widget there.
  • No API or MCP call returns the finished breakdown. The API can set and read the destinations, and each click records which destination served it.

Check it is working

Open your short link in a browser several times and watch where you land. It should vary, and over enough clicks settle near your weights. A handful of clicks will not match the ratio, which is normal for a random draw.

Testing with curl will not work. Command line tools match the same list as link preview crawlers, so they always receive the primary destination. Use a real browser.

Split set but everyone still landing on the same page? Check the other destinations have a weight above 0, then email [email protected] with the exact short link.

Common questions

Where is link rotation in the Flyn dashboard?

It has two names for one editor. On a new link it is the **A/B Testing** tab of the create form. On a link that already exists it is the **Destinations** section of the edit panel. Two destinations is an A/B test and more than two is a rotation, which is why the create form still calls the tab A/B Testing. A free plan sees an upgrade card there headed "Link rotation" instead of the fields.

How many destinations can one link have?

Up to 12, and your Destination URL counts as one of them. Sending more than 12 through the API returns an error naming both numbers rather than silently keeping the first 12.

Are the weights percentages?

No. In the editor you type a whole number from 0 to 999 for each destination and the editor shows the share it produces. Only the ratio matters, so 50 and 50, 1 and 1, and 300 and 300 all split evenly.

Does the same visitor always get the same destination?

No. Every click is an independent draw against the weights, with no cookie and no stored visitor assignment, so the same person clicking twice can land on different destinations. Plan the split around clicks rather than around unique people.

Can I stop sending traffic to one destination without deleting it?

Yes. Set that one destination's weight to 0. It stops receiving clicks, keeps its row, and keeps its click history in the report. Do not set every weight to 0, because a rotation with no servable destination is stored as no rotation at all, which clears the list and returns the link to serving its Destination URL alone.

Do Google and other crawlers get put into the split?

No. Bots, crawlers and link preview fetchers always receive the primary destination. That is deliberate, because sampling a search crawler into one destination while human visitors get another is cloaking, and it puts the whole domain at risk.

Related articles

Did this answer it? If not, email [email protected] and a human will help.

Try it yourself

Create a branded, trackable short link free and follow along with this guide.