diff --git a/src/content_scripts/profile_inject.js b/src/content_scripts/profile_inject.js
index ca16337..c7b04b1 100644
--- a/src/content_scripts/profile_inject.js
+++ b/src/content_scripts/profile_inject.js
@@ -1,12 +1,34 @@
+var authuser = (new URL(location.href)).searchParams.get('authuser') || '0';
+
 chrome.storage.sync.get(null, function(items) {
   if (items.history &&
       document.querySelector('.user-profile__user-links') === null) {
     var nameElement = document.querySelector('.user-profile__user-name');
     if (nameElement !== null) {
+      var profileLink = document.querySelector('.community-console');
+      if (profileLink === null) {
+        console.error(
+            '[previousposts] ' +
+            'The user is not a PE so we can\'t show the previous posts link.');
+        return;
+      }
+
+      var profileUrl = profileLink.href || '';
+      var profileUrlSplit = profileUrl.split('/forum/');
+      if (profileUrlSplit.length < 2) {
+        console.error('[previousposts] Can\'t get forum id.');
+        return;
+      }
+
+      var forumId = profileUrlSplit[1].split('/')[0];
       var name = escapeUsername(nameElement.textContent);
-      var filter = 'creator:"' + name + '" | replier:"' + name + '"';
-      var url = document.location.pathname.split('/profile')[0] +
-          '/threads?thread_filter=' + encodeURIComponent(filter);
+      var filter =
+          '(creator:"' + name + '" | replier:"' + name + '") forum:' + forumId;
+      var urlpart = encodeURIComponent('query=' + encodeURIComponent(filter));
+      var authuserpart =
+          (authuser == '0' ? '' : '?authuser=' + encodeURIComponent(authuser));
+      var url = 'https://support.google.com/s/community/search/' + urlpart +
+          authuserpart;
 
       var links = document.createElement('div');
       links.classList.add('user-profile__user-links');
@@ -50,10 +72,10 @@
       ul.appendChild(li);
       links.appendChild(ul);
 
-      console.log(links);
-
       document.querySelector('.user-profile__user-details-container')
           .appendChild(links);
+    } else {
+      console.error('[previousposts] Can\'t find username.');
     }
   }
 });
diff --git a/src/injections/profileindicator_inject.js b/src/injections/profileindicator_inject.js
index 823003f..4f18f85 100644
--- a/src/injections/profileindicator_inject.js
+++ b/src/injections/profileindicator_inject.js
@@ -204,18 +204,25 @@
 
   var forumId = forumUrlSplit[1].split('/')[0];
 
+  /*
+   * TODO(avm99963): If the TW filters ever work again, set isCCLink to isCC.
+   * Otherwise, issue #29 should be resolved:
+   * https://github.com/avm99963/infinitegforums/issues/29
+   */
+  var isCCLink = true;
+
   var query = '(replier:"' + escapedUsername + '" | creator:"' +
       escapedUsername + '") ' + FILTER_ALL_LANGUAGES;
   var encodedQuery =
-      encodeURIComponent(query + (isCC ? ' forum:' + forumId : ''));
+      encodeURIComponent(query + (isCCLink ? ' forum:' + forumId : ''));
   var authuserPart =
       (authuser == '0' ?
            '' :
-           (isCC ? '?' : '&') + 'authuser=' + encodeURIComponent(authuser));
+           (isCCLink ? '?' : '&') + 'authuser=' + encodeURIComponent(authuser));
   var searchURL =
-      (isCC ? 'https://support.google.com/s/community/search/' +
+      (isCCLink ? 'https://support.google.com/s/community/search/' +
                encodeURIComponent('query=' + encodedQuery) + authuserPart :
-              document.location.pathname.split('/thread')[0] +
+                  document.location.pathname.split('/thread')[0] +
                '/threads?thread_filter=' + encodedQuery + authuserPart);
 
   if (options.numPosts) {
