A Black Friday deal ends on Monday. The post that promoted it and the newsletter that linked to it keep sending readers to that offer for months.
Most of them arrive after the deal is gone. They land on an expired page, or a full-price page, and they leave. You earned nothing, and the post now looks careless.
An end date fixes that. You can expire affiliate links automatically: the offer ends, and so does the redirect.
What the end date does
Every cloaked link in WB Ad Manager has an Expiration Date field. Open Links > All Links, edit a link, and you will find it with the other link options. Leave it empty and the link never expires, which is the default.
Set a date and time, and once that moment passes, the link stops redirecting. Mind the time zone: the field is read as UTC, as the next section explains. Nobody has to remember to switch it off.
Set the date to match the merchant’s own cutoff. Programs word their end times differently, so check the offer’s terms. Then reopen the link and confirm the stored time is what you meant, with a little margin if the exact hour matters.
Mind the time zone
The Expiration Date field is read as UTC, not as your site’s time zone. The start and end dates on ads use the site time zone, so the two screens behave differently, and this is the detail most likely to put your cutoff off by hours.
Work it out before you save. Suppose a merchant ends a deal at the end of Monday, New York time, and New York is five hours behind UTC on that date. The offer ends at 05:00 UTC on Tuesday, so that is what you enter. If you simply type Monday 23:59, the link goes dead five hours early and a few late buyers hit your fallback while the offer is still live.
When the exact hour matters, leave a margin in the safe direction. A link that runs a few hours past the merchant’s cutoff sends someone to a dead offer, which costs you nothing but a bad moment for the reader. A link that stops early costs you real commission. Choose which error you can live with.
What visitors see afterwards
This is the part to set up before the deal ends, because the default is not friendly. By default, an expired link returns a 404 page.
That is correct behaviour, and a poor experience. The reader came from a trusted post, clicked, and got an error page.
You choose what happens instead in Settings, under the WB Ad Manager menu, in the Link Cloaking section. The setting is called Inactive Link Action, and it has three options:
| Option | What happens to a late clicker |
|---|---|
| Show 404 page | They see your site’s 404 page (the default) |
| Redirect to homepage | They land on your home page |
| Redirect to custom URL | They land on the URL you enter in Inactive Link URL |
Pick the custom URL and point it at something that still earns: a deals page or a roundup of current offers. The fallback redirect is a temporary one.
One limit matters. This is a single setting for the whole site. Every inactive or expired cloaked link goes to the same place, so choose a fallback that makes sense for any of them. A general “current deals” page works. A page about one specific product does not.
What a good fallback page looks like
A late clicker came for one thing and found it gone, so the fallback page has one job: to give them a reason to stay. Keep it short and honest.
Start with a sentence that says the offer has ended, so nobody wonders whether the redirect was a mistake. Then list the offers that are live today, each with its own disclosure and its own tracked link. A page with six current deals beats a page with sixty stale ones.
Update it whenever you retire a promotion. The page costs nothing to maintain if it is the same page every time, and it turns a stream of dead clicks into a modest stream of live ones.
Links placed with shortcodes behave differently
There are two ways an expired link can appear in your content, and they fail in different ways.
A raw /go/ address pasted into a post goes through the cloaker, so the reader gets the fallback you chose. That is the case this post is mostly about.
A link placed with the link shortcode, or its URL-only twin, is different. The plugin checks whether the link is active before it prints anything. For an expired link it prints nothing at all. The anchor text vanishes from the sentence, and the URL-only shortcode leaves an empty spot where the address was meant to be.
Neither is wrong, but you should know which one a post uses. If an old roundup still uses the shortcode, a sentence like “our favorite host is [link]” will quietly lose its link text once the deal ends. Read those posts again after the promotion and fix any sentence that no longer makes sense.
A seasonal promo, start to finish
Here is the workflow for a promotion with a known end date.
- Create the link. In Links > All Links > Add New Link, paste the merchant’s promotional URL as the Destination URL and pick a clear slug, such as
hosting-bf-deal. - Set the Expiration Date to when the offer ends.
- Tick sponsored. It is not ticked for new links, and Google asks for it on affiliate links. Nofollow is on by default.
- Use the link everywhere. The post, the newsletter and the social shares can all point at the same
/go/address. - Set the fallback once. Pick the custom URL option and enter your current-deals page.
- After the date, tidy up. The old links still sit in your content. Remove them from the posts that matter most, or leave them to fall through to your fallback page.
That last step is why the fallback matters. Expiry stops the redirect, but it does not edit your posts.
A checklist for the week before a promotion ends
Do these while the deal is still live, not after the traffic has gone.
- Confirm the fallback page exists, loads quickly and lists offers that are live today.
- Check that the fallback URL in Settings is the one you intend, since it applies to every inactive link.
- Open the link in the editor and confirm the Expiration Date and its UTC conversion.
- Write the current Clicks total somewhere. The free plugin keeps a running total per link, so the count on the last day is your figure for the whole promotion.
- Add a line to the link’s Description field, such as the merchant, the commission terms and the reason it expires. A future editor will thank you.
- Look at the posts that carry the shortcode form of the link and decide what the sentence should say afterwards.
- Check the newsletter archive. Messages already sent keep their links, and those links go through the fallback after the date.
That last point is easy to miss. You cannot edit an email that is already in someone’s inbox, but a /go/ address in it keeps working, and keeps counting clicks until it expires.
A worked example
These numbers are invented to show the sequence. Your own offers and traffic will differ.
A site reviews hosting. In late November it publishes a roundup with a limited-time deal and links to /go/host-deal-bf. The link expires at the cutoff the merchant states. By the end of the promotion its Clicks column reads 412. The owner notes that number.
In the first week after the cutoff, 38 more readers follow the link from search results and old shares. Because the link is expired, none of those clicks are counted, and they reach the fallback, a page called “Current hosting deals”. Without a fallback they would all have seen a 404.
The owner then opens the roundup. The sentence “Right now there is a deal on this plan” is no longer true, so it is rewritten to name the evergreen plan and point to a new, non-expiring link. The expiring link stays in the post for context, and the update takes five minutes.
Notice what did the work: a date, a fallback, a noted click total and one edit. None of it needed a plugin beyond the free one.
Expire it, or change the destination
There are two ways to retire an offer, and they suit different cases.
Expiring is automatic and it needs no attention. The cost is that every expired link shares one fallback.
Editing the destination gives you control per link. Before the offer ends, you replace the promotional URL with the merchant’s evergreen page, or with a different offer. Every post that uses the link follows. The cost is that you have to do it.
For a promotion with a hard end date, we would set the expiry as a safety net and plan to edit the destination if there is a better evergreen offer to send traffic to. If the answer is no, let it expire.
Switching a link off by hand
The date is one way to retire a link. The other is the Status field on the same screen, which offers Active, Inactive and Expired.
Setting a link to Inactive does exactly what an expired date does: the address returns a 404, or sends the visitor to the fallback you set in Settings. The difference is that you control the moment. Use it when a merchant ends a program without warning, or when you need a link off the site before its date arrives.
The link and its click count stay in the list either way, so nothing is lost. You can set it back to Active later, and the old addresses in your posts start working again. In the All Links list, a link past its date shows as Expired in the status column, so you can scan for them at a glance.
Common mistakes
- Leaving the default. Most people never open the Inactive Link Action setting, so every expired link returns a 404 page without anyone noticing.
- Picking a fallback for one offer. The fallback is shared by every inactive link on the site. A page about a single product will mislead readers who arrived from a different link.
- Forgetting the sponsored tick. A short-lived link is still an affiliate link. Tick sponsored on it as you would on any other.
- Trusting the date without checking it. The field is read as UTC. Check the conversion and reopen the link after saving.
- Treating expiry as a cleanup. The date stops the redirect. It does not remove the link from your posts or fix the sentences around it.
If your site has many promotional links with different end dates, a periodic review beats trying to remember each one. Pro adds a broken-link checker that flags cloaked links whose destination has stopped working, which catches the case where a merchant removes the offer page before your own date arrives. For disclosure wording next to a short-lived offer, see the disclosure guide, and for what a cloaked link does and does not conceal, see affiliate link de-cloaking. The affiliate link cloaker use case shows the whole setup in one place.
Two things to know
Expired clicks are not counted. The click counter runs only when a link is active, so traffic that arrives after the date does not show up in the link’s total. If you want to see how much late traffic you get, a developer can use the hook wbam_inactive_link_accessed. It fires only when the fallback is the 404 page, not when visitors are sent to the home page or a custom URL.
Expiry is part of the free plugin. You do not need Pro for it. What Pro adds around link management is listed on the free versus Pro page, and the link cloaking page covers the rest of what the free cloaker does.
For the full setup of branded links, start with switching to tracked, branded URLs. And whatever you promote, keep the disclosure next to the link: what to write and where it goes.