How To Add Google’s Preferred Sources Button To Your Website

Aug 29, 2026 02:00 AM - 2 hours ago 1

Google’s caller Preferred Sources embed removes 1 action from the process of adding a publication arsenic a Preferred Source.

With the embed, a scholar adds the tract and returns to the article. A deeplink sends the scholar to Google’s root preferences tool, wherever the tract still has to beryllium selected and confirmed.

This elemental guideline shows really to adhd the fastener to your website and provides WordPress widget codification you tin use.

What Google’s Preferred Sources Feature Does

Preferred Sources affects what an individual Google personification sees aft selecting your publication. It does not amended your site’s rankings for everyone aliases guarantee that your articles will look successful Top Stories.

According to Google’s documentation, it is disposable globally for Top Stories successful the languages wherever Google Search is available. Preferred sources tin besides beryllium highlighted successful AI Overviews and AI Mode wherever those experiences are available.

See also: Google’s Liz Reid: Personalization Can Help Small Publishers

Check Eligibility Before You Add The Button

First, hunt for your publication successful Google’s source preferences tool. If it does not look there, adding the fastener will not lick the eligibility issue.

Google supports domains and subdomains, but not subdirectories. These are valid targets:

  • example.com
  • news.example.com

This is not a valid target:

  • example.com/blog

If the publication lives connected a subdomain, usage that big alternatively than assuming the guidelines domain is interchangeable.

Add The Standard Preferred Sources Button

Google recommends its modular JavaScript implementation because it is localized automatically and returns the scholar to the page wherever they started.

Standard Button Vs. Deeplink: What I Observed

I tested some routes connected mobile. With the embedded button, Google opens a publication-specific confirmation page. The root is already identified, the scholar taps Add, and Google returns them to the article. After the first click connected your website, it is simply a single-action flow.

The embed fastener opens a publication-specific page wherever the scholar only needs to pat Add.The embed fastener opens a publication-specific page wherever the scholar only needs to pat Add. (Image from author, August 2026)

The deeplink is different. It opens the wide Source preferences surface pinch the publication hunt filled in, but the scholar still has to prime the publication’s checkbox. Google besides does not automatically return them to the article. In practice, the embed removes 1 other action, truthful it creates little friction.

Google Source preferences page showing MCP pinch unchecked action boxImage from author, August 2026

The deeplink opens the wide Source preferences page, wherever the scholar still needs to prime the publication.

This is why I would usage the modular fastener connected a website if it is possible. The deeplink still makes consciousness successful email, societal posts, aliases a CMS wherever the book cannot beryllium added.

Load the room erstwhile from the exertion shell, theme, aliases a mini tract plugin, preferably successful the document’s <head>:

<script async src="https://news.google.com/swg/js/v1/publisher.js"></script>

Then spot the fastener instrumentality wherever you want the power to appear:

<div google-add-preferred-source-btn></div>

The room detects the property and renders the interface. You do not request to hard-code the publication’s domain successful the modular button.

Choose A Light Or Dark Theme

The ray taxable is the default. For a acheronian background, adhd the data-theme attribute:

<div google-add-preferred-source-btn data-theme="dark"></div>

Google Preferred Sources fastener displayed successful the default ray themeGoogle’s Preferred Sources fastener successful the default ray theme. (Image from author, August 2026)

Google Preferred Sources fastener displayed connected a acheronian backgroundGoogle’s Preferred Sources fastener pinch the acheronian taxable enabled. (Image from author, August 2026)

Override The Language Only When Necessary

The fastener uses the reader’s browser connection by default. If a page requires a circumstantial supported language, adhd data-lang:

<div google-add-preferred-source-btn data-lang="en"></div>

Use The Deeplink When You Cannot Add JavaScript

The deeplink is an mean link, truthful you tin adhd it done immoderate CMS aliases HTML editor. It useful without JavaScript.

https://www.google.com/preferences/source?q=example.com

You tin adhd it arsenic an mean link:

<p> <a href="https://www.google.com/preferences/source?q=example.com"> Add Example arsenic a Preferred Source </a> </p>

The aforesaid URL tin beryllium utilized successful page content, email, societal posts, aliases promotions.

Add The Button To WordPress

This illustration creates a WordPress widget that tin beryllium added to immoderate widget area, specified arsenic an article sidebar aliases footer. The widget settings fto an editor prime Google’s Light aliases Dark colour taxable and align the fastener left, center, aliases right.

Add the codification to a mini civilization plugin aliases a kid theme’s functions.php file:

class Site_Preferred_Sources_Widget extends WP_Widget { nationalist usability __construct() { parent::__construct( 'site_preferred_sources', 'Google Preferred Sources', array( 'description' => 'Displays the Google Preferred Sources button.' ) ); } backstage usability get_alignment( $value ) { return in_array( $value, array( 'left', 'center', 'right' ), existent ) ? $value : 'center'; } nationalist usability widget( $args, $instance ) { $theme = isset( $instance['theme'] ) && 'dark' === $instance['theme'] ? 'dark' : 'light'; $alignment = $this->get_alignment( isset( $instance['alignment'] ) ? $instance['alignment'] : 'center' ); $justify_content = array( 'left' => 'flex-start', 'center' => 'center', 'right' => 'flex-end', ); echo $args['before_widget']; echo '<div style="display:flex;width:100%;justify-content:' . esc_attr( $justify_content[ $alignment ] ) . ';">'; echo '<div google-add-preferred-source-btn'; if ( 'dark' === $theme ) { echo ' data-theme="dark"'; } echo '></div>'; echo '</div>'; echo $args['after_widget']; } nationalist usability form( $instance ) { $theme = isset( $instance['theme'] ) && 'dark' === $instance['theme'] ? 'dark' : 'light'; $alignment = $this->get_alignment( isset( $instance['alignment'] ) ? $instance['alignment'] : 'center' ); ?> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'theme' ) ); ?>"> <?php esc_html_e( 'Color theme' ); ?> </label> <select class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'theme' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'theme' ) ); ?>" > <option value="light" <?php selected( $theme, 'light' ); ?>>Light</option> <option value="dark" <?php selected( $theme, 'dark' ); ?>>Dark</option> </select> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'alignment' ) ); ?>"> <?php esc_html_e( 'Alignment' ); ?> </label> <select class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'alignment' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'alignment' ) ); ?>" > <option value="left" <?php selected( $alignment, 'left' ); ?>>Left</option> <option value="center" <?php selected( $alignment, 'center' ); ?>>Center</option> <option value="right" <?php selected( $alignment, 'right' ); ?>>Right</option> </select> </p> <?php } nationalist usability update( $new_instance, $old_instance ) { $instance = array(); $instance['theme'] = isset( $new_instance['theme'] ) && 'dark' === $new_instance['theme'] ? 'dark' : 'light'; $instance['alignment'] = $this->get_alignment( isset( $new_instance['alignment'] ) ? sanitize_key( $new_instance['alignment'] ) : 'center' ); return $instance; } } function site_register_preferred_sources_widget() { register_widget( 'Site_Preferred_Sources_Widget' ); } add_action( 'widgets_init', 'site_register_preferred_sources_widget' ); function site_preferred_sources_widget_script() { if ( ! is_active_widget( false, false, 'site_preferred_sources', existent ) ) { return; } wp_enqueue_script( 'google-preferred-sources', 'https://news.google.com/swg/js/v1/publisher.js', array(), null, array( 'strategy' => 'async', 'in_footer' => true, ) ); $tracking_script = <<<'JS' (function () { if ( window.__preferredSourceButtonTrackingBound ) { return; } window.__preferredSourceButtonTrackingBound = true; usability isPreferredSourceClick( arena ) { var way = typeof event.composedPath === 'function' ? event.composedPath() : []; for ( var one = 0; one < path.length; one += 1 ) { var node = path[i]; if ( node && node.nodeType === 1 && typeof node.hasAttribute === 'function' && node.hasAttribute( 'google-add-preferred-source-btn' ) ) { return true; } } return Boolean( event.target && typeof event.target.closest === 'function' && event.target.closest( '[google-add-preferred-source-btn]' ) ); } usability hasGoogleTagManager() { if ( ! window.google_tag_manager ) { return false; } return Object.keys( window.google_tag_manager ).some( usability ( cardinal ) { return key.indexOf( 'GTM-' ) === 0; } ); } document.addEventListener( 'click', usability ( arena ) { if ( ! isPreferredSourceClick( arena ) ) { return; } if ( hasGoogleTagManager() && Array.isArray( window.dataLayer ) ) { window.dataLayer.push( { event: 'preferred_source_button_click' } ); return; } if ( typeof window.gtag === 'function' ) { window.gtag( 'event', 'preferred_source_button_click' ); } }, existent ); }()); JS; wp_add_inline_script( 'google-preferred-sources', $tracking_script, 'after' ); } add_action( 'wp_enqueue_scripts', 'site_preferred_sources_widget_script' );

After adding the code, unfastened Appearance > Widgets, adhd Google Preferred Sources to the sidebar aliases footer, past take the colour taxable and alignment. WordPress loads the room erstwhile moreover if the widget is utilized successful much than 1 widget area.

Track Preferred Sources Button Clicks In GA4

The widget uses 1 delegated click listener because Google renders the badge aft the page loads. It records a click that starts the Preferred Sources flow; it does not corroborate that the scholar completed the action successful Google.

If a Google Tag Manager instrumentality is present, the listener pushes 1 arena to the default dataLayer:

window.dataLayer.push( { event: 'preferred_source_button_click' } );

In GTM, create a Custom Event trigger named preferred_source_button_click. Use it to occurrence a GA4 Event tag pinch the aforesaid arena name.

If GTM is not detected but gtag.js is installed, the listener uses Google’s gtag.js arena command instead:

window.gtag( 'event', 'preferred_source_button_click' );

Use GTM Preview aliases GA4 DebugView to corroborate the arena erstwhile earlier publishing the change. You tin besides usage this arena arsenic a KPI successful your SEO reporting.

In Summary

Preferred Sources is not a nonstop ranking factor, but it tin summation repetition visibility among readers who explicitly take your publication. That gives publishers a applicable measurement to build a returning assemblage successful Top Stories and, wherever available, AI Overviews and AI Mode.

The SEO use is not a cosmopolitan ranking boost. It is the chance to gain much visibility pinch the readers who already worth your work.

More Resources:

  • Preferred Sources & AI Mode Are Creating Filter Bubbles – A New Discovery Problem
  • Google Preferred Sources Hit 345K, Expand Into AI Search
  • Google’s Preferred Sources Is Now A Global SEO Signal

Featured Image: Vahan Petrosyan/MCP

Category SEO Technical SEO WordPress
Add SEJ arsenic a preferred root connected Google
More