Category: Traffic

  • Paid ads cost-per-click rises 40% after week two—why and what to do

    Paid ads cost-per-click rises 40% after week two—why and what to do

    Paid ads cost-per-click rises 40% after week two—why and what to do
    Photo by Zulfugar Karimov on Unsplash

    If you’ve run paid traffic to a newsletter signup page, a lead magnet, or a product landing page, you’ve seen this: the first week delivers $0.80 clicks. Week two creeps to $1.10. Week three hits $1.50, and by week four you’re paying double what you started with—for the same creative, same targeting, same landing page.

    This isn’t ad fatigue. It’s not creative burnout. It’s audience depletion, and every major ad platform—Meta, Google, LinkedIn, TikTok—works this way by design.

    How platforms exhaust your best audience first

    When you launch a campaign, the algorithm serves your ad to the users most likely to convert at the lowest cost. That’s the top 5–10% of your target audience: people who match your demographic filters, show intent signals, and have historically converted on similar offers.

    You burn through that segment in 3–7 days, depending on budget and audience size.

    Once the high-intent pool is exhausted, the platform expands reach to adjacent users—people who kind of match your criteria but require more impressions to convert. Your cost-per-click rises because you’re now paying to convince a colder audience.

    This isn’t a flaw. It’s how auction-based ad systems maximize total spend. The platform wants you to keep running, so it keeps finding you clicks—just at a higher price.

    Three levers that flatten the cost curve

    Rotate creative every 5–7 days. New visuals and new copy reset the fatigue clock and re-engage users who scrolled past your first version. You’re not changing your offer—you’re changing the wrapper. One operator running LinkedIn ads for a B2B newsletter rotates three headline variations on a weekly schedule and keeps CPC within 15% of launch for 30+ days.

    Split your audience into sequential cohorts. Instead of targeting “marketing managers, 25–45, US” all at once, build three separate audiences—one filtered by seniority, one by company size, one by recent job change—and run them sequentially. You control depletion speed and defer cost inflation until you’ve validated conversion rates on the cheaper segments first.

    Cap daily spend below the depletion threshold. If you’re targeting 50,000 people and spending $100/day, you’ll exhaust high-intent users in under a week. Drop to $30/day and stretch that top-tier inventory across three weeks. Your total conversions may be lower, but cost-per-acquisition stays flat. This works especially well for solo operators who can’t afford to double CPC halfway through the month.

    When rising CPC actually signals success

    Not all cost increases are bad. If your click-to-conversion rate improves as CPC rises—say, you’re paying $1.50 per click but converting 12% instead of 8%—the platform is finding you better-qualified traffic, just at a higher bid price. That’s fine. Watch cost-per-acquisition, not cost-per-click in isolation.

    But if CPC rises and conversion rate stays flat or drops, you’re in the depletion zone. Pause, rotate creative, or rebuild your audience.

    What to track weekly

    Pull these four numbers every Monday:

    • Average CPC for the past 7 days
    • Click-to-conversion rate (clicks that became signups, purchases, or leads)
    • Total audience reach vs. total audience size (most platforms show this as a percentage)
    • Cost-per-acquisition

    If CPC rises more than 20% week-over-week and reach exceeds 40% of your target audience, you’re in depletion. If CPC rises but reach is still under 25%, your creative is fatiguing faster than your audience—rotate it.

    Running paid traffic and want to compare notes? Reply with your platform, audience size, and typical CPC curve—I’ll feature anonymized operator data in a future breakdown.

  • Traffic attribution breaks when users block referrers—here’s the fix

    Traffic attribution breaks when users block referrers—here’s the fix

    Traffic attribution breaks when users block referrers—here's the fix
    Photo by Klaryss Puno on Unsplash

    You check your analytics and see a spike in traffic labeled “direct” or “(none).” But you didn’t send a newsletter. You didn’t post anywhere. Someone linked to you—probably from a newsletter, a Slack community, or a private Discord—but the referrer header never made it to your server.

    Privacy-focused browsers, browser extensions, and network-level tools strip referrer information by default. When someone clicks a link from a context that blocks referrers, your analytics can’t see where they came from. You lose attribution, and “direct” traffic becomes a junk drawer.

    What gets stripped and when

    Referrer headers disappear in three common scenarios. First, when a user browses with referrer blocking enabled—Safari’s default privacy settings, Firefox’s Enhanced Tracking Protection in strict mode, or extensions like uBlock Origin and Privacy Badger all strip or limit referrers.

    Second, when the source is HTTPS and your site is HTTP. Browsers won’t send an HTTPS referrer to a non-secure page. If you’re still running mixed content or haven’t forced HTTPS sitewide, every secure referrer vanishes.

    Third, when the link comes from a native app, email client, or messaging tool that doesn’t pass referrer headers by default. Slack’s desktop app, Apple Mail, and some Reddit mobile clients all fall into this category.

    The result: your analytics tool records the session as “direct / none,” even though the visitor arrived from a specific, trackable source.

    What shows up instead

    When the referrer header is missing, most analytics platforms—Google Analytics 4, Plausible, Fathom, Matomo—classify the session as direct traffic. But if you’re using UTM parameters in your links, those still work. UTM tags are appended to the URL itself, so they survive referrer blocking.

    If you shared a link as https://yoursite.com/post?utm_source=slack&utm_medium=community, analytics will attribute the session to “slack / community” even if the referrer header is blank. The UTM parameters override the missing referrer.

    That’s the fix for traffic you control. If you’re posting links yourself—in newsletters, on social media, in communities—always append UTM tags. Tools like Beehiiv and MailerLite add them automatically to email links, but you need to add them manually for Slack posts, Reddit comments, and anywhere else you share URLs.

    Tracking sources you don’t control

    The harder problem: someone else links to you, and you can’t ask them to add UTM tags. A reader shares your post in a private Telegram group. A subscriber forwards your email. A member of a paid community drops your link in a thread. You see the traffic, but you don’t know where it came from.

    One partial solution: use a URL shortener or redirect service that logs clicks before sending visitors to your site. Services like Bitly, Rebrandly, or a self-hosted YOURLS instance record the click event on their server, then forward the user. You lose the referrer, but you gain a log of when and where the short link was clicked—assuming you created the short link in the first place.

    For inbound links you didn’t create, the only reliable signal is landing page data. If you see a surge of visitors landing on a specific post—not your homepage—and the source is labeled “direct,” they probably came from a link someone shared. You can sometimes reverse-engineer the source by checking where that post was recently mentioned: search Twitter, Reddit, Hacker News, or use a backlink tool like Ahrefs or Ubersuggest to see if a new inbound link appeared in the last 48 hours.

    When to stop worrying about it

    Referrer loss matters most when you’re testing traffic sources or trying to justify ad spend. If you’re running a paid campaign on Twitter and half the clicks show up as “direct” because users have referrer blocking enabled, your cost-per-click math breaks.

    But for organic, word-of-mouth growth, referrer loss is mostly cosmetic. You still get the traffic. You still get the reader. You just don’t get a tidy label in your analytics dashboard. If your goal is to grow—not to perfectly attribute every session—treat “direct” traffic as a proxy for sharing activity you can’t track. When it spikes, something worked. You just don’t know exactly what.

    If attribution matters—if you’re spending money or testing channels—use UTM parameters on every link you control. If you’re tracking organic growth, accept that some traffic will always be unattributable, and focus on the trend instead of the source.

    Got a traffic attribution question? Reply to this email—we read everything and answer the best ones in future issues.

    Heads up — some links in this article are affiliate links. If you sign up through them, we may earn a small commission at no extra cost to you. We only recommend tools we use ourselves.

  • SEO content briefs overspecify—and kill the writing

    SEO content briefs overspecify—and kill the writing

    SEO content briefs overspecify—and kill the writing
    Photo by ZBRA Marketing on Unsplash

    SEO content briefs have become instruction manuals. Word count: 1,847. Include “best email marketing tools” 7 times. Add 3 H2s, 5 H3s. Link to these 4 internal pages. Use a FAQ schema block.

    The result? Content that reads like it was written by committee—because it was. The brief became the straightjacket.

    I’m arguing that over-specified SEO briefs are now hurting rankings more than helping them. The tighter you constrain the writing, the more it sounds like everyone else targeting the same keyword. And Google’s gotten good at recognizing when something was optimized into mediocrity.

    The brief creep problem

    Five years ago, a content brief might have been a topic, a target keyword, and three competitor URLs to reference. Now they’re multi-page documents with:

    • Exact keyword placement by paragraph
    • Semantic keyword lists pulled from LSI tools
    • Prescribed word counts down to the hundred
    • Mandatory subheading structures
    • Required schema markup types
    • Internal linking maps

    This isn’t research. It’s paint-by-numbers.

    The problem: when you tell a writer exactly what to write and where to write it, you strip out the two things that make content rank in 2026—original insight and natural language patterns that signal expertise.

    A writer following a 47-point checklist isn’t thinking about the reader’s actual question. They’re thinking about the checklist. The content becomes a vehicle for compliance, not communication.

    What Google’s actually rewarding now

    Google’s helpful content updates over the past two years have consistently punished one thing: content that exists to rank rather than to answer.

    The signals it uses aren’t secret anymore. Time on page. Scroll depth. Pogo-sticking back to search results. Whether someone opens a second tab to verify what you said. Whether they link to you when they write about the same topic later.

    None of those signals care whether you hit 1,847 words or 1,650. They care whether the content was useful enough to hold attention.

    Over-specifying a brief optimizes for the wrong metric. You’re not optimizing for usefulness—you’re optimizing for historical correlations that may not apply to your topic, your audience, or the current algorithm.

    I’ve seen this firsthand. A client’s blog post ranked #3 with 890 words and zero keyword optimization. A competitor’s 2,400-word “complete guide” with perfect keyword density sat at #9. The difference? The shorter post answered the question in the first 200 words and backed it with a real example. The longer one buried the answer under six paragraphs of SEO throat-clearing.

    What to brief instead

    Strip your briefs back to three things:

    1. The reader’s actual question. Not the keyword—the question. “How do I migrate from Mailchimp to something cheaper without losing subscribers?” is a better brief anchor than “Mailchimp alternatives.”

    2. What the top 5 results miss. This is your research layer. What question do the current top-rankers leave unanswered? What example do they skip? Where do they get vague? That gap is your angle.

    3. One credibility anchor. A number, a screenshot, a named tool, a specific price point—something concrete that signals you’ve done this, not just read about it.

    That’s it. No word count. No keyword density. No mandatory subheading structure.

    Give the writer room to write the way a human would explain it to another human. Let them frontload the answer. Let them skip the fluff intro. Let them use the keyword twice instead of seven times if that’s what sounds natural.

    The exception: when to spec it tight

    There is a place for detailed briefs: when you’re working with a writer who doesn’t know the subject and won’t do independent research.

    If you’re hiring freelancers at $50 per post who are rewriting competitor content, then yes—you need guardrails. The brief becomes quality control.

    But if you’re writing it yourself, or working with someone who knows the space, the over-specified brief just gets in the way. You’re not managing quality—you’re managing compliance. And compliance doesn’t rank anymore.

    The best-performing posts I’ve published in the past year had three-sentence briefs. The worst-performing ones had the longest checklists. That’s not causation, but it’s a pattern worth noticing.

    If your brief is longer than the outline you’d write freehand before starting a post, it’s too long.

    Want more operator-to-operator takes on what’s working now? Subscribe to One Two Three Send—one article like this every day, no fluff.

  • Traffic from Medium republishing: what happens when you click ‘Import Story’

    Traffic from Medium republishing: what happens when you click ‘Import Story’

    Traffic from Medium republishing: what happens when you click 'Import Story'
    Photo by Leyla M on Unsplash

    Medium’s “Import Story” button looks like a shortcut to wider reach. You’ve already written the post on your own site—why not let Medium’s audience find it too?

    But Medium’s republishing mechanics work differently than syndicating to LinkedIn or dropping a link in a Reddit thread. The platform applies specific SEO directives that change how Google treats both versions of your content. If you’re deciding whether to republish, you need to know what happens behind that import button.

    Medium sets a canonical tag pointing back to your original

    When you use the Import Story feature and paste your original URL, Medium automatically adds a rel="canonical" tag in the HTML header of the republished post. That tag tells Google: “This is a duplicate—credit the original source.”

    In theory, this protects your site from duplicate content penalties and keeps your original URL ranking. In practice, Google usually respects canonical tags, but it’s a hint, not a command. If Medium’s version gets significantly more engagement, backlinks, or social signals, Google may decide to rank it instead.

    Check your Search Console after republishing. If you see impressions shifting to the Medium URL for target keywords, Google ignored the canonical. At that point, you’re competing with your own content.

    Medium sometimes adds noindex to imported posts

    Medium has quietly applied noindex meta tags to some imported stories over the past year, especially for accounts with low follower counts or minimal platform engagement. A noindex directive tells Google not to include the page in search results at all.

    This isn’t universal—high-traffic publications and writers with established Medium followings rarely see it—but if you’re new to the platform or republishing your first few posts, check the page source. If you see <meta name="robots" content="noindex">, your imported story won’t show up in Google, period.

    That kills the SEO upside, but it doesn’t make republishing useless. Medium’s internal distribution—the home feed, topic tags, and recommendations—can still send traffic. You’re just betting on Medium’s algorithm instead of Google’s.

    Referral traffic comes through medium.com, not your backlink profile

    When readers click through from your Medium story to your site, the referrer is medium.com. That’s fine for analytics, but it doesn’t help your backlink profile. Medium uses rel="nofollow" on all outbound links, so even if your story gets 10,000 views and 500 clicks, Google won’t count any of those as endorsements.

    Compare that to a guest post on an independent blog, where you might get a followed link from a domain with authority. Medium republishing is a traffic play, not a link-building one.

    The traffic quality matters more than the volume. Medium readers who click through are often in discovery mode—they’re browsing, not searching with intent. Conversion rates from Medium referrals tend to run 30–50% lower than organic search traffic, based on what operators in communities like Indie Hackers and niche Slack groups report.

    When republishing makes sense

    Republish when your original post has already ranked and captured most of its organic search traffic. If a piece is six months old, sitting on page one for its target keyword, and impressions have plateaued, there’s little downside. You’re adding a second distribution channel without cannibalising fresh SEO potential.

    Also worth it: evergreen how-tos and opinion pieces that aren’t keyword-dependent. If the post’s value is in the take or the tutorial, not the SERP ranking, Medium’s internal audience can be a win. Just make sure you’re linking back to a relevant landing page—your newsletter signup, a related product, or a hub post—so the traffic converts.

    Skip republishing for new posts targeting competitive keywords. Let your original URL build authority first. And avoid it entirely if you’re in a niche where Medium has its own high-authority posts ranking for your target terms. You’ll end up competing with both Medium’s editorial content and your own imported version.

    Check the source before you assume anything

    Before you click Import Story, right-click the last post you republished and view the page source. Search for canonical and noindex. If you see the canonical pointing to your domain and no noindex tag, you’re clear. If not, you know what you’re trading off.

    And after republishing, set a calendar reminder for two weeks out. Open Search Console, filter by page, and compare impressions for both URLs. If your original is holding steady or growing, republishing worked. If Medium’s URL is climbing and yours is dropping, you’ve just learned your site doesn’t have enough authority to override Medium’s domain strength.

    Got a question about republishing, syndication, or content distribution? Reply to this post—we’re tracking operator questions for upcoming Q&A editions.

  • Facebook Ads Library search: how to reverse-engineer a competitor’s funnel

    Facebook Ads Library search: how to reverse-engineer a competitor’s funnel

    Facebook Ads Library search: how to reverse-engineer a competitor's funnel
    Photo by Erik Mclean on Unsplash

    Facebook’s Ad Library is a public archive of every active ad running across Meta platforms. It was built for transparency, but it’s become one of the most underused research tools for solo operators building traffic and product funnels.

    Most people know it exists. Almost no one uses it systematically. Here’s how to extract real competitive intelligence from it without spending hours clicking through thousands of impressions.

    What the Ad Library actually shows you

    The tool lives at facebook.com/ads/library. You can filter by advertiser name, keyword, region, and platform (Facebook, Instagram, Messenger, Audience Network). Once you search, you see every active ad from that advertiser—creative, copy, CTA button, and live start date.

    What it doesn’t show: spend, impressions, click-through rates, or targeting criteria. You’re working with the front end of the funnel only. But that’s enough to reverse-engineer positioning, offer structure, and creative patterns.

    For operators running paid acquisition or testing new products, this is free market research that updates in real time.

    How to build a competitor snapshot in under 20 minutes

    Pick three competitors in your niche. Search each by business name. Open every active ad in a new tab. Now ask:

    • What’s the primary hook in the headline? Problem-focused, benefit-focused, or curiosity-driven?
    • What’s the destination—landing page, lead magnet, product page, or newsletter signup?
    • What format dominates—single image, carousel, video, or text-only?
    • How long has each ad been running? If something’s been live for 60+ days, it’s probably working.

    Screenshot the ads. Drop them into a shared doc or Notion database with those four data points. Do this once a month. You’ll spot pattern shifts before your competitors do.

    One operator I know runs this audit every two weeks for five SaaS brands in her vertical. She noticed three of them switched from lead-magnet funnels to free-trial CTAs within a 10-day window in July. She tested the same shift and cut her cost-per-signup by 40%.

    Where the data gets noisy—and how to filter it

    Not every ad in the Library is current strategy. Brands run tests, pause campaigns, and leave remnants live for weeks. If you see 40 ads from one advertiser, most are noise.

    Focus on:

    • Ads with a start date in the last 30 days
    • Ads running across multiple placements (Facebook + Instagram usually signals confidence)
    • Ads with multiple versions of the same hook or offer (indicates active iteration)

    Ignore single-variant ads older than 60 days unless the brand is known for evergreen campaigns. They’re often forgotten tests or compliance placeholders.

    Also: the Library indexes ads by the page name, not the parent company. If a brand runs multiple Facebook pages, you’ll need to search each separately. Check the “Page transparency” section on their main page to find alternate entities.

    Two non-obvious uses for solo operators

    First: use it to validate your own creative before you spend. If no one in your space is running video ads, there’s probably a reason—either the audience doesn’t convert on video, or production cost doesn’t pencil. If everyone’s running carousels with testimonial screenshots, test a variation on that format first.

    Second: track launch cycles. When a competitor floods the Library with 15 new ads in 48 hours, they’re either launching something or scaling a winner. Set a calendar reminder to check their site, email list, and social a week later. You’ll often find the full funnel.

    One more: if you’re pitching sponsorships or affiliates, the Ad Library shows you which brands are actively spending in your niche. That’s a better prospecting list than scraping Instagram or guessing from podcasts.

    The Library isn’t analytics. It won’t tell you what works. But it will show you what your market is betting on right now—and that’s worth more than most dashboard metrics when you’re deciding what to build next.

    Want breakdowns like this in your inbox? Subscribe to One Two Three Send for tool explainers, competitive tactics, and operator-tested workflows every week.

  • SEO title tags: character limits in 2026 and what gets truncated

    SEO title tags: character limits in 2026 and what gets truncated

    SEO title tags: character limits in 2026 and what gets truncated
    Photo by Lukas Müller on Unsplash

    Title tags still matter in 2026—they’re the clickable blue text in search results, the browser tab label, and the fallback headline when your content gets shared. But every platform truncates them differently, and most operators write titles blind, only discovering the cut-off after Google rewrites them or Twitter chops the last three words.

    Here’s what actually displays, where truncation happens, and how to structure titles so the important part survives everywhere.

    Character limits by platform in 2026

    Google Search displays roughly 55–60 characters on desktop, 50–55 on mobile. But it measures in pixels, not characters—specifically, around 600 pixels. That means uppercase letters, wide characters like ‘W’ and ‘M’, and em-dashes eat more space than lowercase ‘i’ or ‘l’. A 58-character title in all caps gets cut at word 6; the same count in sentence case displays fully.

    Bing allows slightly more room—around 65 characters—but rewrites titles more aggressively when it detects keyword stuffing or brand names it considers redundant.

    Social platforms are stricter. Twitter (yes, still called that in open graph parsers) cuts at 70 characters but only when the card is rendered; the meta tag itself has no hard limit. Facebook truncates around 60–65 characters in link previews. LinkedIn sits at 100 characters for article headlines but shortens page titles to roughly 60 in shares.

    Email clients display title tags in ‘view in browser’ links and when newsletters embed web content. Gmail renders about 70 characters in the browser tab, Outlook around 50.

    What gets truncated—and what vanishes entirely

    Most CMS plugins and SEO tools place the site name at the end of every title, separated by a pipe or dash. That’s fine—until truncation cuts the entire descriptive phrase and leaves only your brand. Google’s algorithm now ignores the visible title in cases where it decides the cut version is uninformative, pulling replacement text from your H1, meta description, or even anchor text pointing to the page.

    Operators lose control when the replacement text doesn’t match search intent. A title like “WordPress Object Cache Configuration | YourSite” might display as “WordPress Object Cache Configuration” on desktop but just “WordPress Object…” on mobile. Google may rewrite it to “How to Configure Object Cache in WordPress—YourSite,” pulling from your intro paragraph.

    Numbers, colons, and em-dashes create natural break points. Titles structured as “Primary Keyword: Secondary Detail” survive truncation better than run-on sentences. The colon signals to rendering engines that everything before it is the core message.

    Front-load the hook, back-load the context

    The first 40–45 characters are safe everywhere. Use them for the primary keyword and the specific angle. Save brand names, dates, and supplementary phrases for the tail.

    Compare:
    “Email deliverability tips for SaaS companies in 2026—YourSite”
    vs.
    “SaaS email deliverability: what changed in 2026 | YourSite”

    The second version survives mobile truncation with the core message intact. The first cuts to “Email deliverability tips for SaaS comp…”—losing both the year and the site name, and looking like generic advice.

    If your site name is long, drop it from title tags on inner pages. Google appends it automatically in 60% of cases anyway, pulling from your homepage title or site identity settings. You’re better off using those 15 characters for a stronger hook.

    Test truncation before you publish

    Most SEO plugins show a preview, but they assume average character width. If your titles use uncommon punctuation, all-caps brand names, or UTF-8 symbols, test in a real SERP simulator.

    Free tools like Portent’s SERP Preview and Yoast’s snippet editor render titles in Google’s actual display font (Roboto on desktop, system sans-serif on mobile). Run your title through both before committing.

    For operators publishing at volume—daily blog posts, newsletter archives, product landing pages—set a template that front-loads keywords and makes the site name optional. Most WordPress themes let you customize title structure per post type. Use %%title%% | %%sitename%% for long-form content, %%title%% for time-sensitive posts where every character counts.

    When Google rewrites your title anyway

    Even a perfectly-sized title gets rewritten if Google decides it doesn’t match the query. In 2026, title rewrites happen in roughly 60% of organic impressions—up from 50% two years ago. The algorithm pulls from your H1, meta description, or visible page content when it believes those better answer the searcher’s intent.

    You can’t prevent rewrites entirely, but you can reduce them. Match your title tag to your H1. Avoid keyword-stuffed lists or promotional language in the title. If Google rewrites consistently for a high-traffic page, check Search Console’s ‘Page experience’ report—it sometimes flags titles as ‘not descriptive’ when they’re too vague or too sales-heavy.

    Truncation isn’t a ranking factor, but a truncated title that confuses users does hurt click-through rate—and CTR is a ranking signal. Structure your titles so the most important words display everywhere, even when platforms cut the rest.

    One Two Three Send covers traffic, tools, and operations for online-business builders. Subscribe for tactics like this every week.

  • Newsletter archives don’t rank—unless you fix three indexing rules

    Newsletter archives don’t rank—unless you fix three indexing rules

    Newsletter archives don't rank—unless you fix three indexing rules
    Photo: NOIRLab via Wikimedia Commons (CC BY 4.0)

    Most newsletter operators publish every issue to their website. Some platforms do it automatically. Others use plugins or manual copy-paste workflows. The promise is simple: your archive becomes an SEO asset, pulling in search traffic long after each issue goes out.

    In practice, most newsletter archives never rank. Not because the content is bad—because the page is misconfigured in ways that tell Google not to index it, or to treat it as duplicate content, or to prioritize a different URL entirely.

    Here are the three indexing rules that break most newsletter archives, and how to fix each one.

    Canonical tags pointing to the wrong URL

    When a newsletter platform publishes an issue to your site, it often sets a canonical tag pointing back to the platform’s own hosted version. That’s intentional: the platform wants its URL to rank, not yours.

    Beehiiv does this by default. If you publish to both your Beehiiv-hosted archive and your WordPress site, the WordPress version includes a <link rel="canonical"> tag pointing to the Beehiiv URL. Google sees that, treats your site’s copy as a duplicate, and only indexes the Beehiiv version.

    If you want your domain to rank, you need to either turn off the Beehiiv-hosted version or manually strip the canonical tag from your WordPress template. Most themes let you override the <head> section in single.php or via a child theme. Remove the platform-generated canonical, or replace it with a self-referential one pointing to your own post URL.

    ConvertKit and MailerLite handle this differently: they don’t auto-publish to external sites, so the canonical issue only appears if you’re syndicating content to Medium, LinkedIn, or other republishing platforms. In those cases, make sure the republished version includes a canonical tag pointing back to your site—not the other way around.

    Robots meta tags blocking indexing

    Some WordPress themes and SEO plugins set noindex directives on specific post types or categories by default. If your newsletter archive lives in a custom post type or a dedicated category, it might be marked noindex without you realizing it.

    Check your site’s HTML source on a published archive page. Look for a <meta name="robots" content="noindex"> tag in the <head>. If it’s there, Google won’t index the page no matter how good the content is.

    The most common culprit is Yoast SEO or Rank Math, both of which let you set noindex at the category or post-type level. Go to the plugin’s settings, find the section for taxonomies or post types, and make sure your newsletter archive isn’t flagged. If you’re using a custom post type for newsletters, check the post-type settings specifically—many themes default custom types to noindex to avoid cluttering search results with non-standard content.

    If you don’t use an SEO plugin, the directive might be hardcoded in your theme. Search your theme files for wp_robots or robots and look for conditional logic that adds noindex based on post type, category, or tag.

    Duplicate content across multiple URLs

    If you publish the same issue to your newsletter archive, a blog category, and a standalone page, Google sees three identical copies and picks one to index—usually not the one you want.

    This happens most often when operators use a plugin like Mailchimp for WordPress or Newsletter Glue, which can auto-publish to both a custom post type and a standard blog post. The result: two URLs with identical content, no canonical tag to disambiguate, and Google indexing whichever it crawls first.

    The fix is to pick one URL structure and stick with it. If your newsletter archive lives at /newsletter/issue-47/, don’t also publish the same content at /blog/issue-47/ or /archive/issue-47/. If you need the content accessible in multiple places—say, for a category feed—use a canonical tag on the secondary URL pointing to the primary one.

    You can also use 301 redirects to consolidate old URLs if you’ve already published duplicates. Redirect the less-important URL to the one you want to rank, and Google will eventually drop the old one from the index.

    How to audit your archive in ten minutes

    Open Google Search Console and filter for pages that contain your newsletter archive slug—usually something like /newsletter/ or /issues/. Look at the Coverage or Pages report. If most of your archive is marked Excluded with a reason like “Duplicate without user-selected canonical” or “Alternate page with proper canonical tag,” you’ve got a canonical or duplicate-content problem.

    Next, spot-check three archive pages by viewing their HTML source. Search for rel="canonical" and name="robots". If the canonical points somewhere other than the page itself, or if noindex appears, you’ve found the issue.

    Finally, search Google for site:yourdomain.com/newsletter/ and see how many results appear. If the number is much lower than your total published issues, Google isn’t indexing most of your archive.

    Fix the three rules above, then submit your archive sitemap in Search Console and wait two weeks. Most archives see a 3–5× increase in indexed pages once the technical blocks are removed.

    Want more SEO walkthroughs like this? Subscribe to One Two Three Send—every issue goes straight to your inbox, and the archive actually ranks.

    Heads up — some links in this article are affiliate links. If you sign up through them, we may earn a small commission at no extra cost to you. We only recommend tools we use ourselves.

  • Google Search Console indexing lag: what ‘last crawled’ really tells you

    Google Search Console indexing lag: what ‘last crawled’ really tells you

    Google Search Console indexing lag: what 'last crawled' really tells you
    Photo by Growtika on Unsplash

    Google Search Console’s “last crawled” timestamp feels definitive. You publish a post, check the index status, and see a date. But that date doesn’t mean what most operators think it means—and misreading it costs you diagnostic time when traffic doesn’t arrive.

    Here’s what the timestamp actually represents, how indexing lag works behind the scenes, and what to check when Google says it crawled your page but you’re still not ranking.

    What “last crawled” measures

    The “last crawled” field in Search Console’s URL Inspection tool shows the most recent time Googlebot fetched your page. That’s it. It doesn’t confirm:

    • That the page was indexed
    • That the content was understood or valued
    • That the page is eligible to rank
    • That internal links were followed

    Google crawls millions of pages it never indexes. A crawl is a request; indexing is a decision that happens after parsing, quality filtering, and duplicate detection. The timestamp only proves the bot showed up.

    If you see “Crawled – currently not indexed,” the date tells you Google looked at the page and chose not to include it. If you see “Discovered – currently not indexed,” Google found a reference to the URL but hasn’t fetched it yet. Both statuses can persist for weeks, even on sites with healthy crawl budgets.

    Why the lag exists

    Indexing happens in stages. Googlebot crawls, sends the HTML to processing infrastructure, runs quality checks, compares the content to existing indexed URLs, decides whether to include it, then updates the index. Each stage introduces delay.

    For established sites publishing fresh content, indexing usually completes within hours. For newer domains, low-authority pages, or content flagged as thin or duplicate, the gap stretches to days or weeks. Google doesn’t publish service-level agreements for indexing speed—there’s no guarantee.

    Search Console’s own interface updates on a lag, too. The “last crawled” date can be 24–48 hours behind actual crawl logs. If you requested indexing via the inspection tool this morning, don’t expect the timestamp to update until tomorrow at the earliest.

    What to check when crawl dates look current but traffic doesn’t

    Start with the “Coverage” report in Search Console. Filter by “Excluded” and look for your missing URLs. Common exclusion reasons:

    • Duplicate without user-selected canonical: Google chose a different URL as the canonical version, usually because of thin content or near-duplicate text across pages.
    • Crawled – currently not indexed: The page was fetched but deemed too low-quality or low-value to include. Check word count, internal links pointing to the page, and whether the topic overlaps heavily with existing indexed content.
    • Discovered – currently not indexed: Google knows the URL exists but hasn’t prioritised fetching it. This happens on sites with hundreds of pages and limited crawl budget, or when the page sits deep in the site structure with no external links.

    Next, run a live URL inspection. Search Console shows you both the indexed version (what’s in Google’s index) and the live version (what Googlebot sees when it fetches the page right now). If the indexed version is weeks old and the live version shows current content, you’ve confirmed indexing lag—not a crawl problem.

    Finally, check your server logs if you have access. Search Console only reports successful crawls. If Googlebot is hitting 404s, 500 errors, or timeouts, those won’t appear in the “last crawled” field at all. Log analysis tools like Screaming Frog Log File Analyser or GoAccess will show you the actual request pattern, including failed attempts.

    When to request indexing manually

    The URL Inspection tool includes a “Request indexing” button. Use it sparingly. Google allows roughly 10–12 requests per day per property. Burn through your quota on low-priority pages and you can’t prioritise genuinely time-sensitive content.

    Request indexing when:

    • You’ve published breaking news or time-sensitive content that needs to rank within hours
    • You’ve fixed a critical error (like a noindex tag or broken canonical) and need Google to re-evaluate the page
    • You’ve updated high-traffic content and the indexed version is stale

    Don’t request indexing for every new post. If your site publishes daily and has healthy crawl frequency, Google will find new content via your sitemap and internal links within 24 hours anyway. Save the manual requests for exceptions.

    The bottom line

    “Last crawled” timestamps are diagnostic signals, not success metrics. A recent crawl date with no indexed status means Google looked and passed. An old crawl date on an indexed page means nothing changed, so Google didn’t prioritise a re-crawl.

    If you’re tracking indexing speed across dozens of posts, export the Coverage report weekly and compare indexed-vs-excluded ratios over time. Patterns matter more than individual page delays.

    Want more operator-focused breakdowns of the tools you already use? Subscribe to One Two Three Send for weekly deep-dives on email platforms, AI tools, hosting, and traffic—no fluff, just the mechanics that matter.

  • SEO meta descriptions: how Google decides when to rewrite yours

    You spend fifteen minutes crafting the perfect meta description. Compelling hook, clear value prop, exactly 155 characters. You publish, check the SERP a day later, and Google’s showing something completely different—usually a sentence pulled from halfway down the page.

    This isn’t a bug. Google rewrites meta descriptions roughly 63% of the time, according to data from Ahrefs and Moz. For some queries, that number climbs above 90%. The algorithm decides your hand-written snippet isn’t relevant enough for the searcher’s intent, so it generates one on the fly.

    Here’s what triggers a rewrite, how to audit your own descriptions, and when you should stop trying to control them.

    What makes Google ignore your meta description

    Google doesn’t rewrite randomly. Four patterns account for most overrides:

    • Query mismatch. If someone searches “WordPress caching plugin comparison 2026” and your meta description says “Learn how caching works,” Google will extract a sentence that mentions plugin names instead.
    • Length problems. Descriptions under 50 characters or over 160 often get replaced. Google’s target is roughly 155–160 characters on desktop, 120 on mobile.
    • Keyword stuffing. If your description repeats the same phrase three times, Google treats it as spam and pulls cleaner copy from your page.
    • Better content exists on-page. If a sentence in your article body matches the query better than your meta description, Google uses that instead—even if your meta tag is well-written.

    The last one catches most operators off guard. You can write a technically perfect meta description and still get overridden because paragraph three has a more direct answer to the query.

    How to check which descriptions Google is actually showing

    Your CMS shows what you wrote. Google Search Console shows what Google displays. Here’s the workflow:

    Open Search Console, go to Performance, filter by page, and pick a URL. Click through to see the queries that triggered impressions. Now search Google for those exact queries in an incognito window. Compare what you see in the SERP to what’s in your meta tag.

    If they match, you’re fine. If Google’s showing something else, screenshot both versions and note the query. Do this for your top 20 landing pages. You’ll spot patterns—certain pages get rewritten constantly, others never do.

    Tools like Screaming Frog and Sitebulb can crawl your site and flag missing or short meta descriptions, but they can’t tell you what Google actually shows. Only Search Console + manual checks reveal that.

    When to rewrite your meta tag vs. when to let it go

    If Google rewrites your description for a high-volume query and the new version is worse—vague, truncated mid-sentence, or missing your CTA—fix your meta tag to better match the query. Add the exact phrase searchers use. Make the benefit more explicit.

    But if Google’s rewrite is better—more specific, more compelling, higher click-through rate in Search Console—leave it alone. Your job isn’t to force Google to use your text. Your job is to get clicks. If the algorithm’s doing that better than you, let it work.

    One non-obvious move: if Google keeps pulling the same sentence from your article for multiple queries, edit your meta description to match that sentence. You’re not fighting the rewrite—you’re aligning with what Google already decided was the best snippet. This often stops the override because now both sources say the same thing.

    The one case where you should always write a custom description

    Landing pages with no body copy—sales pages, squeeze pages, product pages with mostly images—need a meta description. Google has nothing else to pull from, so it’ll either use your tag or show “No information available.” That’s a 0% click-through rate.

    For these pages, write the description like ad copy: one clear benefit, one implied outcome, no fluff. Test it in Search Console after two weeks. If Google still rewrites it, your page probably needs more on-page text.

    If you’re running a content site with 500+ posts, auditing every meta description isn’t realistic. Start with your top 20 landing pages by traffic, fix the ones where Google’s rewrite hurts performance, and let the rest run. The algorithm’s better at this than most of us want to admit.

    Want more SEO breakdowns like this? Subscribe to One Two Three Send—one operator-focused article every day, no fluff, no course upsells.

  • Content republishing: when syndicating old posts doubles traffic

    Content republishing: when syndicating old posts doubles traffic

    Content republishing: when syndicating old posts doubles traffic
    Photo: Unknown authorUnknown author via Wikimedia Commons (Public domain)

    A SaaS founder with 240 published articles on his company blog spent four hours in July republishing twelve older posts to Medium and LinkedIn. Over the next 60 days, those twelve pieces brought 4,800 new visitors back to his site—more than double the traffic those same posts generated in their original publication month two years earlier.

    Content republishing isn’t just about squeezing extra mileage from old work. Done correctly, it’s a structured traffic channel that compounds over time. Here’s what the numbers look like when operators actually track it.

    The baseline case: what republishing adds

    An email course creator tracked her republishing efforts across six months. She selected posts that had already proven engagement on her own site—pieces with above-median time-on-page and at least five inbound links. She republished one post per week to Medium with canonical tags pointing back to the original.

    Results over 180 days:

    • 26 posts republished
    • 11,200 Medium views total
    • 840 click-throughs to her site (7.5% CTR)
    • 62 new email subscribers attributed via UTM tags

    Her own site analytics showed those 26 posts collectively earned 3,100 organic views in the same period. Republishing added roughly 27% net-new traffic to those specific pieces, with zero additional content creation.

    Medium wasn’t the only channel. A WordPress consultant republished tutorial content to Dev.to and Hashnode. His technical how-to posts averaged 180 views on his own domain in their first 90 days. Republished to Dev.to, the same posts averaged 620 views in 90 days, plus 90 external clicks.

    When syndication underperforms

    Not every republishing effort pays off. A lifestyle blogger syndicated fifteen posts to LinkedIn articles over three months. Total engagement: 340 views across all fifteen pieces, 11 clicks back to her site. Her hypothesis: LinkedIn’s algorithm favors native short-form posts over long-form articles, and her audience wasn’t actively searching LinkedIn for her topic (sustainable fashion).

    Platform-audience fit matters more than raw platform size. Another operator republished B2B content to Medium and saw almost no traction, then moved the same pieces to niche industry forums with RSS syndication partnerships. Forum syndication brought 10x more qualified traffic, despite the platforms having 1/50th Medium’s total user base.

    Timing also degrades results. One operator waited four years to republish archive content. By then, several posts referenced deprecated tools and outdated pricing. Republished pieces with stale information earned 60% fewer views than posts republished within 12–18 months of original publication.

    Mechanical details that change outcomes

    Canonical tags are non-negotiable if you care about SEO. Every operator I reviewed who republished without canonical tags saw their original posts lose 15–40% of their organic Google traffic within 90 days as the republished version competed for the same keywords.

    Platform-specific formatting makes a difference. A content strategist republished the same post to Medium and LinkedIn. On Medium, she kept the original post structure intact. On LinkedIn, she rewrote the intro and reformatted subheadings to match LinkedIn’s typical article style. The LinkedIn version earned 2.3x more views.

    CTAs need adjustment. On Medium, a CTA inviting readers to “read the full archive on my site” outperformed direct subscription asks by 40% in click-through rate.

    Operator checklist for republishing

    If you’re testing this as a traffic channel, start with these constraints:

    • Republish only posts that already have traction—above-median traffic or engagement on your own site
    • Choose platforms where your audience actually searches or browses (not just where they have accounts)
    • Add canonical tags pointing to your original post
    • Reformat intros and CTAs to match platform norms
    • Track with UTM parameters so you know which pieces and platforms deliver
    • Republish within 12–18 months of original publication, before tools or context become stale

    Syndication amplifies existing demand; it doesn’t create it from scratch.

    Want more operator tactics like this? Subscribe to One Two Three Send for weekly breakdowns of what actually works in online-business tooling and strategy.