Improve Onebox click counting

If I put a link into my posts, I see how many people have clicked on the link. But if I put the link on one line, and it gets one-boxed, then I never see any count of the clicks.

This post describes the issue further:

There are two parts to the answer.

First, you must enable opening links in an external tab. (I don’t understand this, technically, as other links are counted without turning this option on.)

Second…

So, the main link people will click on will never be counted. Again, I don’t understand the technical difference between the links and why one would be counted and not the other.

Regardless of my lack of understanding of what’s going on technically, I’d love to see Onebox link clicks counted consistently.

6 Likes

I have gone through all the settings in my Dashboard and I have no check boxes to enable opening links in an external tab… but the links do open in another tab already.
We have tried clicking on both the title of an article and the link itself - no counter for either.
Here’s a stickler… for a day or two, the counter suddenly worked, then stopped again. Nothing was changed at all. I’ve also asked a mod and several users if they see any link counts next to the links posted. None have seen them so I know it’s not just me being an Admin.
Like you, I would like to see the Onebox link clicks counted consistently.

Edit: I should point out for link posted after a blank space (so they don’t get Oneboxed), the counter works… just not for Onebox.

2 Likes

I already enabled the setting last week, search for default other external links in new tab. This setting will be applied to all new users who have registered on your site after the site setting has been enabled. Old users can activate it from their profiles (in case we can bulk enable the setting even for old users via console).

I tried to click on the two oneboxes in the first two posts of this topic https://forum.nodders.net/t/2019-plastic-waste-and-recycling/167 and the count has increased from 0 to 1. It is possible that the user who did the test was an old user and did not enable the setting for external tab on the profile, or that the user tried to open the link in a new window directly by right-clicking on the link itself.

3 Likes

That’s what probably is happening. I’ll inform everyone that they will have to make the change in their profile… as I. :wink: Thank you.

Also note that clicking links in your own post will not increment the counters…

3 Likes

@dax, @codinghorror, I found out why the link counter was working for me and others on our forum. In _Preferences/Interface/Other, although I did have the Open all external links in another tab checked, I also had the Show counts on browser icon checked. Apparently the latter overrides the first box. I unchecked the Show counts on browser icon, saved, then checked a post… the counter showed up!

I also found one little nuance. When a user posts a link and OneBox tries and fails to OneBox it - leaving the link as is - the link click counter will not work if the link isn’t preceded with a blank space. I just edited a user’s post where this just occurred, adding the space, and the counter began showing. :wink:

2 Likes

@dax Any thoughts on why this setting is required for the onebox click badges to appear? I could change it for my site, but for it to be useful, I’d have to bulk-change the setting for 7400+ users, which I’d rather not do, since it will just cause confusion.

2 Likes

I also don’t know why you’d bother, since the one box clicks won’t be counted anyway except for the few people who click the least-obvious link. This means that instead of displaying no data on how many times it was clicked, you’ll display incorrect data (artificially low), which is much worse in my opinion.

1 Like

A good point—ideally, the onebox would also count clicks on its headline as well.

4 Likes

I have made a theme component in order to count clicks on its headline as well.

https://github.com/evantill/discourse-onebox-track-url

3 Likes

This really used to work. Onebox clicks were counted on our site. Then at some point it didn’t work anymore. Can’t remember when exactly but I think it’s more than a year ago. I say this is a regression, not a real feature request.

Could you elaborate what your component does exactly, @evantill?

1 Like

It looks like a tiny bit of JavaScript that could simply be added to core, assuming it works.

Just a simple script that replace a click on an Url inside the onebox by a click on the url of the header.

    //if click  inside onebox body
    $('.onebox-body a').on('click.onebox-track-url',function(event){      
      event.preventDefault(); //->ignore click event inside onebox
      var headerUrl = $(event.target).closest('.onebox').find('header a'); //select the header url
      //click instead on header url to update tracking counter
      if(headerUrl.length>0){
        headerUrl[0].click(); //-> simulate click on the head url
      }
      });
    });
</script>
1 Like

It seems that links inside onebox body are not tracked by choice :

isValidLink() return false if link is in .onebox-body

https://github.com/discourse/discourse/blob/c61ebc9ba67d6588c09c2b93205865e0fd388f51/app/assets/javascripts/discourse/lib/click-track.js#L23

1 Like

A solution could be to add a new setting on onebox to enable tracking on links inside oneboxes
and in this case add class track-link on links inside oneboxes ?

1 Like

It’s not clear to me from this thread whether it was an intentional decision to stop tracking onebox clicks or if this is simply a bug that you could create a pull request for.

3 Likes

Would it be correct to describe the proposed fix as this?

“If the link is in a onebox body, find the URL of the onebox. If that URL is the same as the link, count the click. Otherwise, ignore”

4 Likes

Is it even possible for the onebox to have a link in it other than the url being oneboxed? I wouldn’t have thought so.

I added this functionality in below commit

https://github.com/discourse/discourse/commit/e7e931b70b5790a71d41893834d5e8c9945c92df

5 Likes