Skip to content

Share counts

Share count not updating or not accurate: a fix list

By Hannah Voss, Editor · Reviewed September 2026 · 6 min read

Quick answer

When share counts stop updating, check in this order: the network still provides a count, your access token is valid, WordPress scheduled tasks run, page caches are not serving old numbers, the plugin checks the right URL variants, and you are not rate limited. Fix the first failure, clear caches, then wait for the next refresh.

A column of paper discs split by a gap as if frozen mid-fall, beside a small numberless paper clock face

Work through it in order

  1. Is there still a count to fetch?

    X and LinkedIn no longer publish counts. If those buttons show zero, that is correct. See how share counts work.

  2. Is the token valid?

    Facebook counts need an access token. User tokens expire; app tokens stop working if the app secret is reset. Test the token in the Graph API Explorer.

  3. Are scheduled tasks running?

    Many plugins refresh counts from WP-Cron. On low-traffic or fully cached sites, WP-Cron may rarely run. Set up a real cron job; see external cron jobs for WordPress.

  4. Is a cache serving old numbers?

    Page caching stores the HTML with the old count. Counts refresh in the database but visitors see the cached page until it expires or is purged.

  5. Which URL is being checked?

    After moving to https or changing permalinks, the network holds the old count on the old address. Plugins that check both variants recover it.

  6. Rate limited?

    If counts work on some posts and not others, the plugin may be asking too often. Slow the refresh schedule for older posts.

Symptoms and their usual causes

SymptomMost likely cause
Every network shows zeroToken missing or cron not running
Only X or LinkedIn show zeroThose networks removed counts
Count dropped after moving to httpsShares recorded on the http address
Counts update in admin, not on the pagePage cache
Counts stuck at an old valueScheduled refresh stopped or rate limit
Facebook page shows more shares than the postPage shares and URL shares are counted separately

Share count not updating: a worked diagnosis

The figures here are invented, but the sequence is a real one. A site moved to https on 3 March. Before the move its most shared post showed 1,240 Facebook shares; the morning after, it showed 0. Nothing else had changed. Step one passes, since Facebook still reports counts. Step two passes, because a manual Graph API request with the app token returns a response. That request, made for the https address, returns share_count 18: the 18 people who shared since the move.

The same request for http://example.com/post/ returns share_count 1,240. The count was never lost; the plugin simply stopped asking for the address that holds it. Turning on the plugin's option to query both schemes, then forcing a refresh, produced 1,258 within the next cron run. The page still showed 0 for another hour because the page cache had stored the zero, which is step four.

Where a stale share count can hide, from the inside out01Plugin count cachepost meta or transient02Object cacheRedis or Memcached03Page cacheplugin or host04CDN edge cacheper URL, per region05Browser cachereader's own copy
Clear them in this order; clearing the outer layers first only re-caches the stale inner value.

The cache-clearing sequence

After any fix, clear the layers in the order shown, inner first. On a site with WP-CLI access the whole sequence is four commands; without it, each layer has a button in its own settings screen. The transient delete command is documented on the cited WP-CLI page.

wp cron event list --fields=hook,next_run_relative | grep -i share   # is the refresh scheduled?
wp cron event run --due-now                                          # run it now
wp transient delete --all                                            # plugin count cache (if it uses transients)
wp cache flush                                                       # object cache
# then purge the page cache and the CDN from their own dashboards, and reload in a private window
LayerTypical lifetimeHow to clear it
Plugin count cache1 hour to 1 week per postPlugin's refresh or reset button; or delete the transient
Object cacheUntil flushedwp cache flush, or the host's object cache panel
Page cache10 minutes to 24 hoursPurge all in the caching plugin or host panel
CDN edgeMinutes to days, per URLPurge the post URL, or purge everything
BrowserPer the page's cache headersPrivate window, or hard reload

Third-party count services

Some plugins fetched counts through an aggregator service instead of each network, using an API key from that service. If that service changes plans or limits, counts stop without any change on your site. Check whether your plugin relies on one and whether the key still works.

Editing counts by hand

Several plugins, MashShare among them, let site owners adjust counts manually or add a multiplier sometimes called fake shares. Restoring a count you lost in an https move is defensible if you can show the old number. Inflating counts is not: it misleads readers, and in many places presenting invented social proof to consumers can fall foul of advertising and consumer protection rules. If a count is low, hide it until it is not.

What goes wrong during the fix

  • Judging too early. A refresh that runs every twelve hours will not show the fix for up to twelve hours. Force one run with the command above, then wait for the page cache to expire or purge it.
  • Fixing the wrong layer. Purging the CDN while the plugin cache still holds zero re-caches the zero. Inner layers first.
  • Testing while logged in. Most page caches bypass logged-in users, so the admin sees the new number while every reader sees the old one. Check in a private window.
  • Resetting the app secret to "fix" a token. That invalidates every app token in use, including the one in your plugin. Regenerate and paste the new token everywhere at once; see how to create a Facebook access token.
  • Restoring a count nobody can verify. If you set a count by hand, keep the API responses that justify it. The Graph API request in Facebook share count: getting it from the Graph API is the evidence.

Check it worked

  • The plugin's stored timestamp for the test post is newer than your fix.
  • The number on the page, in a private window, matches the number in the plugin's admin screen.
  • A manual Graph API request for the same URL matches the stored figure, or the sum of the variants the plugin asks for.
  • The cron event for the refresh has a next run time in the future, and it moves after each run.
  • Networks that no longer publish counts are hidden rather than showing zero.

More on this topic sits in the share counts section: start with how to create a Facebook app ID, then tracking shares and pageviews in analytics.

Sources

Questions

Why are my share counts stuck?

Usually a scheduled refresh stopped, a token expired, or a page cache is serving old HTML.

Why did my share counts drop after switching to https?

Networks count http and https addresses separately. Use a plugin that checks both and adds them.

Is it OK to add fake shares?

No. Inflated counts mislead readers and can breach consumer protection rules. Hide low counts instead.

How long does a share count take to update?

One refresh interval plus the page cache lifetime. With an hourly refresh and a one hour page cache, expect up to two hours; force the cron run and purge the cache to see the change at once.

Why do my share counts show in admin but not on the page?

The page cache stored the HTML before the refresh. Logged-in users bypass the cache, so you see the new number and readers do not. Purge the page cache and any CDN, then check in a private window.

Share this guide

Hannah Voss, Editor. Checks every guide against a working WordPress install and the networks' current documentation. Last reviewed September 2026.

  1. Facebook share count: getting it from the Graph APIHow to get the Facebook share count for a URL from the Graph API, why the old REST API stopped working, rate limits, and how plugins should cache the result.6 min read
  2. External cron jobs for WordPress, the right wayReplace WP-Cron's visit-triggered schedule with a real server cron job: disable WP-Cron, call wp-cron.php or WP-CLI on a schedule, and check tasks run.6 min read
  3. How to create a Facebook access tokenCreate the right Facebook access token for share counts and plugins: user, page and app tokens compared, how long each lasts, and how to keep the token safe.6 min read