Question
I have deleted articles from my help center. Can I redirect traffic from my deleted help center articles?
Answer
Yes, no matter the source of such traffic, you can automatically redirect users visiting these URLs to more valuable pages.
Accessing your help center's custom JavaScript file
To implement these solutions, access the JavaScript file of your help center:
- Sign in to Zendesk Support as an administrator. Next, click the Zendesk Products icon (
) in the top bar, then select Guide.
- In the top right corner of Zendesk Guide, select Guide admin.
- Click the Customize design icon (
) in the sidebar.
- Click Customize on your theme.
- Click, Edit code.
- Click the script.js file.
Check the sections below for examples on how to implement common redirect workflows:
- Example 1: Redirecting a set of deleted articles to new article equivalents
- Example 2: Redirecting untranslated articles to an existing language
- Example 3: Redirecting all deleted articles to one specific page
- Example 4: Generalizing or specifying which articles, or community posts, redirect to a particular page
Example 1: Redirecting a set of deleted articles to new article equivalents
In this example, the help center has a set of old, deleted pages, each corresponding to a new page to which we are redirecting. Within the first few lines of the JavaScript file, you will see a line reading:
$(document).ready(function() {
window.addEventListener("DOMContentLoaded", () => {
}
Insert the following code directly above that line:
var oldIds = ["217352077", "216552968"];
var newIds = ["216553098", "216552958"];
for (var i = 0; i < oldIds.length; i++){
if (window.location.href.indexOf(oldIds[i]) > -1) {
window.location.href = 'https://YOURSUBDOMAIN.zendesk.com/hc/en-us/articles/ ' + newIds[i];
}
}
Before saving it, edit the part of the code, which lists the old article IDs and new article IDs:
var oldIds = ["217352077", "216552968"];
var newIds = ["216553098", "216552958"];
Add your article IDs instead of the ones above. To find an article ID, view the article in your browser. The URL will look similar to this:
https://[YOURSUBDOMIAN].zendesk.com/hc/en-us/articles/203664386-Help-Center-guide-for-agents-and-end-users
In the URL above, the article ID is 203664386
.
To redirect properly with this solution, old and new article IDs must be at the same position, within the array. In this case, an article whose URL contains 217352077
will now redirect to 216553098
. The article containing 216552968
will now redirect to 216552958
.
Keep these IDs wrapped in quotes, as seen above, and separated by a comma in each case. It would look like this:
var oldIds = ["217352077", "216552968", "216552902"];
var newIds = ["216553098", "216552958", "216552944"];
Next, edit the URL in this line:
window.location.href = 'https://YOURSUBDOMAIN.zendesk.com/hc/en-us/articles/ ' + newIds[i];
Use your Zendesk subdomain, or alternately, use your entire help center URL as it normally appears in your help center if it is white labeled to your URL. Do not remove the end of the line: "+ newIds[i];"
. This is how the loop appends your new article ID to your URL. The code will fail without it.
Example 2: Redirecting untranslated articles to an existing language
In this example, help center content exists in multiple languages. If all your content exists in English, but only some of it exists in French and German. Users who try to access those articles in French or German will get an error page. This code redirects the visitors away from the error page back to the existing English-language article.
var notDefaultLanguage = window.location.href.indexOf('/en-us/') == -1;
var isArticle = window.location.href.indexOf('/articles/') > -1;
var isErrorPage = $(".error-page").length > 0;
if ( isArticle && notDefaultLanguage && isErrorPage ) {
var newURL = window.location.href.replace(/(.*\/hc\/)([\w-]+)(\/.*)/, "$1en-us$3");
window.location.href = newURL;
}
In this example, only a small amount of customization needs to be done. If your default help center language isn't English, replace that language. In the code, en-us
appears in two places:
var notDefaultLanguage = window.location.href.indexOf('/en-us/') == -1;
And:
var newURL = window.location.href.replace(/(.*\/hc\/)([\w-]+)(\/.*)/, "$1en-us$3");
Replace en-us
in these two lines with your default language code. Find your default language code in the URL for your main articles. For example, a URL for a French-language help center page will look like the example below:
https://[YOURSUBDOMAIN].zendesk.com/hc/fr/articles/214943538
Example 3: Redirecting all deleted articles to one specific page
In this example, a help center redirects all deleted articles, not including community posts, to a particular article.
Within the first few lines of the JavaScript file, you'll see a line reading:
$(document).ready(function() {
window.addEventListener("DOMContentLoaded", () => {
}
In this case, insert the following code directly below the line. Important note, inserting the above will not work for this example:
if ( window.location.href.indexOf('articles') > -1 && $(".not-found").length > 0 ) {
window.location.href = 'https://[YOURSUBDOMAIN].zendesk.com/hc/en-us/articles/216553068-error-redirect';
}
In this script, replace the URL with the article URL your help center will redirect to.
This solution will only work if we ensure a .not-found
class exists on your error page.
On the grey bar where the JS link appears, click on the Home Page link. Find and select Error page in that dropdown. In the error page, you'll find an area starting with the code {{#is error 'not_found'}}
. It will look like this:
{{#is error 'not_found'}}
<h2>{{t 'nonexistent_page'}}</h2>
<p>{{t 'mistyped_address_or_moved_page'}}</p>
{{/is}}
Add a new class to the h2 element or any element within the 'not_found' #is
tags so that it looks like this:
<h2 class="not-found">{{t 'nonexistent_page'}}</h2>
Example 4: Generalizing or specifying which articles (or community posts) redirect to one specific page
Get more specific or general with this solution by customizing the if statement. For example, to redirect from any deleted article or community post, change the if statement to:
if ( $(".not-found").length > 0 )
Alternately, to only redirect deleted articles that have the word buttermilk
in the title, change the if
statement to:
if ( window.location.href.indexOf('buttermilk') > -1 && $(".not-found").length > 0 )
Unlike the first solution presented, these solutions will briefly show the error page, then redirect to the new page. This is because it uses JavaScript to search for an element within the page, which needs to load first.
60 comments
Weichen
Hi,
For anyone who found the example code not working for Example 2, this is how we resolved it.
Our Zendesk page is not loading jQuery, so this line of code below will report error:
var isErrorPage = $(".error-page").length > 0;
Therefore, this needs to be updated to pure js:
var isErrorPage = document.getElementsByClassName("error-page").length > 0;
Then it works! Hope it helps!
0
Patrycja Walencik
Dear Users,
Redirects API now fully supports functionality for handling deleted Help Center (HC). This enhancement ensures that any redirects associated with deleted HC will continue to operate seamlessly, providing a smoother user experience and maintaining the integrity of your workflows.
0
Tammy Paul
I just discovered that this only seems to work for logged in users. Is it supposed to work when login is not required for the help site?
0
Peter Cimring
Hi
Can anyone advise how we could redirect a URL in Zendesk Guide to a page on an external site? (We have certain pages that now live elsewhere.)
We are looking to implement a 301 Redirect (not a JS-based flow).
Thanks!
0
VANTAiO HelpDesk
Hallo Jérémy,
vielen Dank für den Beitrag. Das sind sehr interessante Ansätze und wir würden gerne Beispiel 2 im Rahmen unserer Arbeiten am Zendesk Guide exemplarisch umsetzen.
Allerdings stellt sich die Frage, wie die Thematik bezüglich der Navigation zu den einzelnen Beiträgen hierbei gelöst werden kann.
Angenommen die default-Sprache ist “de”.
Zusätzlich ist “en-us” als weitere Sprache auf dem System aktiviert.
Pflegt man nun einen Beitrag lediglich in “de” und setzt die Implementierung aus Beispiel 2 um, so passiert folgendes:
Fall 1: Navigation durch Eingabe der URL direkt in der Browser-Leiste:
https://[YOURSUBDOMAIN].zendesk.com/hc/en-us/articles/214943538
leitet auf
https://[YOURSUBDOMAIN].zendesk.com/hc/de/articles/214943538
Fall 2: Navigation über die Navigationsleiste:
Der “de”-Benutzer bekommt die gesamte Navigation korrekt angezeigt und kann zum Beitrag navigieren.
Der “en-us”-Benutzer hingegen bekommt lediglich die Navigationspunkte angezeigt, die in “en-us” gepflegt wurden. Alle anderen bleiben ihm verborgen. Daher ist er nicht in der Lage über die Navigation zum gewünschten Beitrag zu navigieren.
→ Er sieht keinen der nur als “de” gepflegten Beiträge in der Navigation.
Auf unserem System verhält es sich so, dass einige Bereiche zweisprachig gepflegt werden, während andere Bereiche lediglich in einer Sprache zur Verfügung stehen.
Ein Workaround ist sicherlich das Kopieren der Beiträge in der default-Sprache auf alle anderen Sprachvarianten
Wir würden aber eine Umsetzung nach dem in Beispiel 2 vorgeschlagenen Ansatz präferieren und daher Inhalte, welche nur in der default-Sprache vorhanden sind auch nur in dieser anlegen wollen.
Kannst du hierzu einen Hinweis geben, wie das Verhalten der Navigation dahingehend anpassbar wäre bzw. gibt es hierzu Konfigurationsmöglichkeiten oder andere Möglichkeiten im Zendesk Guide?
Die Logik soll dem gleichen Schema entsprechen, welches du in Beispiel 2 verwendest:
> Ist ein Beitrag in der Benutzersprache gepflegt, so soll dieser Beitrag in der Navigation verlinkt werden.
> Ist ein Beitrag hingegen lediglich in der default-Sprache gepflegt, so soll der Navigationseintrag auf den Inhalt in der default-Sprache verlinken.
Viele Grüße,
Christine
0
Gab
For the articles that are in draft or archived, they'll still be visible for you. However, the end-users won't be able to access them. If an end-user opens an article URL that has been archived, they'll see the "oops" error page on your Help Centre. This page is built on the error_page.hbs template that you'll find on the live theme in Guide. If a user opens an article URL that has been unpublished, they'll be asked to authenticate (if they're not logged in) and then get the "oops" page. In this case, there's no option to redirect them to a different URL as they won't be able to see this article. You might want to publish these articles and then add a custom code to the template to redirect the users to another article.
Hope this helps!
0
Sally Anne Dishong
Thank you, Gab. So...the examples are for deleted articles. We generally do not delete articles as our practice. Is there a similar way to redirect archived articles as well?
1
Gab
That code can be found on line 5 of the Copenhagen theme.
Hi Sally,
I'm afraid there's is no way to check for broken links.
You can also check on this Community post here where there's been a few people asking about it as well: https://support.zendesk.com/hc/en-us/community/posts/115007417707-Managing-Links
Furthermore, the examples provided in this article are for deleted articles.
0
Sally Anne Dishong
Also, does this code work for archived articles as well as deleted articles?
0
Sally Anne Dishong
We are considering using this edit in our theme code. I have a related question...does anyone have a tool we can use in Zendesk Help Center to find broken links?
0
Sign in to leave a comment.