Jetpack 7.1 was released earlier this month with new blocks for WordAds, Business Hours, Contact Info, Slideshows, and Videos. This release also quietly added suggestions to the plugin search screen, a change that has not been well-received by the developer community. If a user searches for a plugin that has a feature that is already offered by Jetpack, the plugin will insert an artificial (and dismissible) search result into the first plugin card slot, identifying the corresponding Jetpack feature.

Although these suggestions in plugin search results were not presented as a headline feature in the 7.1 release post, it was clearly listed in the changelog under enhancements. More people began taking notice after WordPress developer Mehul Gohil tweeted a screenshot of it on a live site:

Nowadays, plugin search in #WordPress admin suggests a product/add-on. I see the future of these suggestions to be used by plugin authors to keep their product first in certain plugin search terms for upsells like admin notices. What do you think about this? #DontHijackWPAdmin pic.twitter.com/TERjrPgEt6 — Mehul Gohil (@mehul_gohil0810) March 26, 2019

Manipulating search results, even to insert an artificial result, using a plugin that is already installed, is a major new development among plugins hosted on WordPress.org. Automattic is setting a precedent for other plugin authors that want to recommend their own add-ons or extensions when users match certain search terms.

In the feature’s initial proof of concept, Jetpack product lead Beau Lebens explained the motivation behind adding suggestions to the search screen:

We’ve seen that people with Jetpack installed and activated often search for Jetpack features (even by name) in the Plugins > Add New screen in wp-admin. This new module attempts to spot those searches, and provide an artificial search result that calls out that what they’re looking for is in Jetpack, which they already have, and which is already active.

Eight years since its initial release, Jetpack has grown to 45 modules. Most users are not familiar with everything the plugin offers. In fact, many users may not have even installed Jetpack themselves, as it often comes pre-installed with hosting. The suggestions may prevent users from adding alternate third-party plugins, as Jetpack’s module placement in the results subtly implies that these are inferior options to its existing modules.

One of the reasons the feature has many developers rattled is because the UI fails to make it clear that this is an artificial result and not something generated by the plugin directory’s algorithm. Although it is intended to function more as a notice, for the regular user, it is virtually indistinguishable from an advertisement in its current implementation. It hasn’t been live for very long, but over time it may even make it more difficult for plugin developers to offer plugins that compete with Jetpack features.

The feature suggestions in plugin search results became a hot topic on Post Status‘ Slack where Automattic’s Gary Pendergast dropped in to reiterate the Jetpack team’s intentions.

“I’ve been talking to some folks on Jetpack about what’s going on,” Pendergast said. “I think the team’s end goal is pretty good, and it solves a real problem WordPress has. Too often, site owners install masses of plugins that they don’t need, which ultimately creates all sorts of security, performance, and stability issues. In this particular use case, if a site owner is looking for functionality that Jetpack already handles, then the owner should be aware of that.”

Pendergast also said he thinks WordPress core should offer an API for any plugin to be able to do something similar.

Plugin Team Says Jetpack’s Artificial Search Results Do Not Break WordPress.org Guidelines

Although it’s easy to conjure up different ways to abuse this avenue for advertising a plugin’s existing features, WordPress.org’s plugin team is ready to deal with a potential influx of various implementations on a case-by-case basis.

“It’s not really advertising anything – it’s just adding search results for pieces of a plugin that you already have and might not know about, so it’s not really against any rules,” Samuel “Otto” Wood said. “If it was misleading in some manner, then that would be different.”

Wood said the team discussed it but concluded that any implementation of something similar in other plugins will need to be reviewed to see if it’s doing anything misleading.

“Realistically it’s always going to be a judgment call of some sort,” Wood said. “For example, if a plugin was to insert search results for other plugins, then that wouldn’t be okay, because it’s misleading. But, this isn’t that case. It’s just trying to say ‘hey, you have a plugin already installed which does what you’re looking for,’ so it’s trying to be helpful in that respect. It may not necessarily be the best way of accomplishing that goal, admittedly. But it’s pretty valid.”

Wood did not place a hard requirement on having the artificial result be dismissible but said anytime a developer inserts something into a screen where would not normally be, having dismiss functionality is good UX. He doesn’t think it’s likely that many other plugin authors will implement something similar since most are not collections of dozens of plugins and add-ons. However, this type of suggestion seems like it would also be applicable to block collection plugins that include dozens of Gutenberg blocks.

“It will be really difficult for users when all the essential plugin authors implement it,” Gohil said in response to comments on the screenshot he tweeted. “They are using JS to hack into plugin search using hook ‘admin_enqueue_scripts’ and that’s not good. I’m not in favor of it.”

If more plugin authors begin adding suggestions, users could see several rows of artificial results before seeing any real ones, depending on which plugins they have installed. Plugin developers are already brainstorming ways to strip the feature suggestions out. It likely will not be long before plugins like Hide Jetpack Promotions removes the artificial search results to maintain results as delivered by WordPress.org.

Wood said the plugin team does not intend to write any new guidelines for plugin authors creating their own implementations of feature suggestions on the search screen.

“The difference is always going to be one of intent,” Wood said. “It’s JP’s intent here to notify the user of the existence of a feature they may not know about. That’s trying to be helpful to the user, not trying to shut out competition. It doesn’t remove search results. It doesn’t reorder them or filter them. It just adds a card about the feature you’re searching for. If you don’t have JP, then it can’t do anything. It’s not advertising for other plugins or anything like that.”

Jetpack is also tracking search terms longer than three characters, and Wood confirmed that this is also within the guidelines, as long as it is disclosed to the user.

“The whole tracking module doesn’t activate until after you agree to the ToS thingy, so honestly, it’s allowed,” Wood said. “They track lots of things for stats and such. Realistically, so do many other plugins. As long as you ask the user first, before tracking anything, then tracking data is allowed. Opt-in is the rule.”

Wood said he found the search term tracking to be unnecessary since WordPress.org already collects this information through its new search system that runs on ElasticSearch.

“We get all the search terms on the WordPress.org servers, anyway, so both we and they kinda already have them,” Wood said. “Automatticians built our newest plugin search engine, after all. It seems kind of a waste to track them using Jetpack when they literally receive all the searches to run through the search engine.”

Jetpack’s artificial search results, although dismissible, take up the top spot, bypassing the algorithm altogether. It gives the appearance that Jetpack’s built-in feature is either a promoted listing or superior to all other options available in the directory.

Although a suggested module may work more harmoniously with other Jetpack features than a third-party plugin, the modules are built to be fairly general in terms of features. They address the basic needs for the largest number of users but rarely provide more options than a standalone plugin dedicated to performing something similar. Users may very well be searching for a replacement for what Jetpack provides. The ability to easily turn off suggestions in search results with a toggle could go a long way for diplomacy.