Author: onetwothreeadmin

  • Plausible vs. Fathom vs. Simple Analytics: which privacy-first tool to pick

    Plausible vs. Fathom vs. Simple Analytics: which privacy-first tool to pick

    Privacy-first analytics platforms sell themselves on the same pitch: no cookies, no GDPR banners, fast scripts, and clean dashboards. Plausible, Fathom, and Simple Analytics dominate the category, but they differ in meaningful ways once you’re past the landing page.

    If you run a content-driven business and you’re tired of Google Analytics bloat—or you need to ditch cookie banners without losing visitor insight—here’s what each tool does well, where it falls short, and who should pick which.

    Pricing and visitor thresholds

    All three charge based on monthly pageviews, but the tiers and caps differ.

    Plausible starts at $9/month for up to 10,000 pageviews. You pay $19/month for 100,000 views, $29/month for 200,000, and pricing scales from there. If you exceed your plan, Plausible emails a warning and asks you to upgrade—it doesn’t cut off tracking.

    Fathom starts at $15/month for 100,000 pageviews. The entry tier is higher, which means if you’re sub-50,000 views per month, you’re overpaying compared to Plausible. Fathom counts by pageviews across all sites on your account, so multi-site operators hit limits faster.

    Simple Analytics starts at €19/month (roughly $20 USD) for 100,000 pageviews. Pricing is similar to Fathom but billed in euros. Simple Analytics offers a “business” tier that includes mini-websites—embedded public dashboards you can share without login—which the other two don’t bundle at the base level.

    If you’re under 50,000 pageviews per month, Plausible wins on cost. Above that threshold, all three converge, and the decision shifts to features and interface preference.

    Feature differences that matter

    All three tools show you top pages, referrers, devices, browsers, and countries. The gaps appear when you need goals, funnels, or custom dimensions.

    Plausible supports custom event goals at no extra cost. You can track button clicks, form submissions, or file downloads by adding a JavaScript snippet or using their API. Plausible also offers a custom properties feature that lets you attach metadata to events—useful if you want to track blog post category performance or product variant clicks. The dashboard is fast, and the filter UI is clean. Plausible is open-source and offers a self-hosted option if you want to run it on your own infrastructure.

    Fathom keeps the interface even simpler. Custom events exist, but Fathom doesn’t support event metadata or properties—you get event names and counts, nothing more granular. That’s fine if you’re tracking basic conversions (newsletter signups, link clicks), but limiting if you need segmentation. Fathom’s uptime monitoring feature sends you alerts if your site goes down, which is a nice bundled extra the others lack. Fathom is closed-source and cloud-only.

    Simple Analytics falls between the two. It supports events and metadata, similar to Plausible. Simple Analytics also has a built-in automated events feature that tracks outbound links and file downloads without manual setup. The dashboard lets you create multiple views and share them publicly via mini-websites, which is useful if you want to show traffic stats to sponsors or partners. Simple Analytics is open-source like Plausible, but its self-hosted version requires more technical setup.

    Script size and page speed impact

    All three advertise sub-1KB scripts. In practice, Plausible’s script is around 1KB, Fathom’s is 1.4KB, and Simple Analytics is 3KB. The difference is marginal—none will tank your Core Web Vitals—but if you’re optimizing aggressively, Plausible has the smallest footprint.

    All three scripts are proxy-friendly, meaning you can serve them from your own domain to avoid ad blockers. Plausible and Fathom document this clearly; Simple Analytics requires a bit more config work.

    Who should pick which

    Pick Plausible if you’re under 50,000 pageviews per month, you want custom event properties, or you value open-source software and self-hosting optionality. Plausible’s pricing scales cleanly as you grow, and the event tracking flexibility covers most operator needs without requiring a migration later.

    Pick Fathom if you want the simplest possible dashboard, you’re already above 100,000 pageviews, and you value the uptime monitoring extra. Fathom’s lack of event metadata keeps the interface uncluttered, which some operators prefer. It’s also the most polished UI of the three—if aesthetics matter to your daily workflow, Fathom feels the most refined.

    Pick Simple Analytics if you need public dashboard sharing (for sponsors, clients, or transparency pages), you want automated event tracking without manual setup, or you’re already comfortable with euro billing. Simple Analytics sits in the middle on features and pricing, which makes it a safe default if you’re unsure.

    One thing all three miss

    None of these tools track individual user journeys or session replays. If you need to see how a single visitor navigated your site—or you want heatmaps—you’ll need a separate tool or a hybrid setup. That’s by design: privacy-first analytics don’t fingerprint users. But it’s a tradeoff worth naming if you’re migrating from Google Analytics and expect session-level data.

    If you’re running a newsletter or content site and you just need clean traffic numbers without the compliance headache, any of these three will work. The decision comes down to pageview volume, whether you need event metadata, and how much you care about dashboard aesthetics.

    Want more tool breakdowns like this? Reply and tell us which category to compare next—we’ll prioritize reader requests.

  • AI content rewriters lose SEO context after three paragraphs

    AI content rewriters lose SEO context after three paragraphs

    AI rewriting tools promise to refresh old content, adapt pieces for different audiences, or polish drafts into publishable posts. In practice, most lose the thread after a few hundred words—and take your search rankings with them.

    The problem isn’t that the output reads poorly. It’s that the rewritten version drifts from the search intent and semantic context that made the original rankable. You end up with smoother prose that Google understands less clearly than the draft you fed in.

    Why context collapse happens

    Large language models process text in chunks, typically 512 to 2,048 tokens depending on the tool. When you ask Claude, ChatGPT, or a dedicated rewriter to rework a 1,500-word article, the model receives the full document but applies transformations paragraph by paragraph or section by section.

    Early paragraphs get rewritten with the full document in short-term memory. By the time the model reaches paragraph eight or nine, it’s prioritising local coherence—making each sentence flow from the last—over global semantic alignment with your target keyword and the questions that keyword implies.

    The model doesn’t forget your instructions. It just weighs them against an increasing pile of local context. Synonym substitution, sentence restructuring, and tone shifts compound. A post that ranked for “WordPress CDN setup” becomes a post about “content delivery configuration for WordPress sites”—technically accurate, lower search overlap.

    What you lose in the rewrite

    Three things degrade faster than readability:

    • Keyword density and placement. If your original placed the target phrase in the first 100 words, the H2, and the conclusion, the rewrite scatters it or replaces it with near-synonyms that don’t carry the same search volume.
    • Semantic clustering. Google’s algorithms look for related terms that confirm topic relevance—”DNS,” “origin server,” “cache purge” in a CDN article. Rewriters often swap these for vaguer language or drop them entirely in favour of smoother transitions.
    • Internal link anchor context. If you linked to a related post with anchor text like “WordPress object caching,” the rewrite might turn that into “another caching method” or a generic “learn more,” weakening the semantic signal between pages.

    You can recover readability by editing. You can’t easily recover ranking momentum once Google recrawls a diluted version and adjusts your position.

    When rewriting works anyway

    Short-form content survives AI rewrites better. A 400-word product description or email gives the model less room to drift. The entire piece fits comfortably in the context window, and the model can hold your intent steady from open to close.

    Rewriting also works when you’re not targeting search traffic. If you’re adapting a blog post into a LinkedIn update, a newsletter section, or a Twitter thread, semantic SEO doesn’t matter. Clarity and platform fit do. The model’s tendency to simplify and tighten becomes an asset.

    And if you’re refreshing content that never ranked well in the first place, you have little to lose. A rewrite that shifts keyword focus might accidentally improve relevance for a better query.

    How to preserve SEO during AI rewrites

    The most reliable fix is to rewrite in smaller sections and provide keyword guardrails in every prompt. Don’t send the full article and ask for a rewrite. Send the introduction, specify your target keyword and two related terms, then move to the next section.

    Explicit instructions help: “Rewrite this section. Keep the phrase ‘WordPress CDN setup’ in the first sentence. Retain all mentions of ‘origin server,’ ‘DNS,’ and ‘cache purge.’ Improve readability without changing technical terminology.”

    After the rewrite, run both versions through a keyword density checker or a semantic SEO tool like Surfer or Clearscope. Compare term frequency for your target keyword and the top twenty related phrases. If the rewrite drops five or more high-value terms, flag those paragraphs and restore the language manually.

    Some operators skip AI rewriting for ranking content entirely. They use the model to generate alternate introductions or tighten conclusions, but leave the body untouched. It’s slower than a one-click rewrite, but it doesn’t trade rankings for polish.

    If you’ve run AI rewrites on posts that used to rank and seen traffic drop in the weeks after republishing, this is likely why. The content didn’t get worse—it just stopped answering the question Google thought it answered before.

    Have a question about using AI tools without breaking what already works? Reply to this email—I read every message and often turn answers into future posts.

    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.

  • Lemon Squeezy’s fraud detection blocks real customers—here’s the fix

    Lemon Squeezy’s fraud detection blocks real customers—here’s the fix

    Lemon Squeezy’s fraud detection system killed three sales for me in April before I knew what was happening. The customers reached out directly—confused emails asking why their cards kept declining. All three had legitimate payment methods. All three were buying a $29 digital product. None triggered a chargeback or refund request afterward, because I manually invoiced them through PayPal.

    The problem wasn’t their cards. It was Lemon Squeezy’s fraud filters doing exactly what they’re designed to do: err on the side of caution. For platforms processing payments on your behalf, that caution protects their merchant account more than your conversion rate.

    What triggers Lemon Squeezy’s fraud blocks

    Lemon Squeezy uses a combination of IP geolocation, payment method origin, purchase velocity, and device fingerprinting to assess fraud risk. The system runs automatically—no manual review, no appeals process during checkout.

    The most common false positives come from:

    • VPN usage. Customers routing through privacy tools often show mismatched IP and billing addresses. Lemon Squeezy’s system flags this as high-risk, especially if the VPN exit node is in a country with elevated fraud rates.
    • Prepaid and virtual cards. Privacy.com cards, Revolut disposable numbers, and similar services trigger blocks more often than traditional bank-issued credit cards. The BIN (bank identification number) lookup tags them as higher risk.
    • Cross-border purchases. A customer in the Philippines buying from a U.S.-based seller with a card issued in Singapore will hit multiple friction points. The system doesn’t distinguish between legitimate digital nomads and card testers.
    • High cart values from new accounts. First-time buyers attempting purchases above $100 face stricter scrutiny. If you sell courses, bundles, or annual subscriptions, expect more declines than someone selling $9 templates.

    You won’t see most of these blocks in your dashboard. Lemon Squeezy logs them as “payment failed” without distinguishing fraud declines from insufficient-funds errors. The customer sees a generic “transaction could not be completed” message and often assumes their card is the problem.

    How this compares to Gumroad and Stripe

    Gumroad uses a similar merchant-of-record model and faces the same false-positive tradeoff. Operators report roughly 2–4% of legitimate transactions blocked, with higher rates for international sales. Gumroad’s support will manually review and whitelist customers, but only after the sale fails and you open a ticket.

    Stripe, when you’re using it as a direct integration (not through a platform), gives you more control. You can adjust Radar’s fraud threshold, whitelist specific countries or card types, and review flagged transactions before they’re declined. The tradeoff: you’re responsible for chargebacks. Platforms like Lemon Squeezy absorb that risk, which is why their filters are tighter.

    For solo operators selling digital products under $50, Lemon Squeezy’s fraud protection saves more money than it costs—until your audience skews international or privacy-conscious. Then the math flips.

    What you can do when a real customer gets blocked

    Lemon Squeezy doesn’t offer a way to pre-approve customers or adjust fraud thresholds. Your options are reactive:

    Manual invoicing. If a customer emails you after a decline, send a PayPal invoice or Stripe payment link directly. You’ll eat the higher transaction fee (PayPal charges 3.49% + $0.49 for invoices vs. Lemon Squeezy’s flat 5% + $0.50), but you’ll close the sale. I’ve done this eleven times in the past six months.

    Alternative checkout links. Some operators set up a secondary Gumroad or Stripe Checkout flow for customers who can’t complete payment on Lemon Squeezy. You’ll maintain two product listings and reconcile sales across platforms, but it catches 60–70% of declined buyers who bother to ask for an alternative.

    Support ticket on their behalf. Email Lemon Squeezy support with the customer’s email, approximate purchase time, and product. They’ll review the transaction log and can manually process the payment. Turnaround averages 12–24 hours, which means you’ve likely lost the impulse buyer.

    None of these solutions scale if you’re processing hundreds of transactions per week. At that volume, 2% false positives means multiple support emails daily and manual invoicing overhead that cancels out the convenience of using a merchant-of-record platform.

    When to switch platforms

    If more than 5% of your inbound support is payment-decline related, and you’ve confirmed the customers have valid payment methods, Lemon Squeezy’s fraud filters are costing you more than they’re saving. Track this for 30 days—log every “my card was declined” email and compare it to total transactions.

    For audiences in North America and Western Europe paying with standard credit cards, Lemon Squeezy works cleanly. For SaaS products, courses, or communities with global reach—especially if you’re attracting privacy-focused buyers or digital nomads—you’ll spend too much time recovering legitimate sales that should have converted automatically.

    The alternative is taking on fraud risk yourself with a direct Stripe integration, which means dealing with chargebacks, sales tax collection, and VAT compliance. That’s not a trivial tradeoff for a solo operator, but it’s the only way to control your own fraud thresholds.

    Hit reply if you’ve lost sales to fraud filters on any platform—I’m tracking patterns across Lemon Squeezy, Gumroad, and Paddle for a deeper comparison next month.

  • Sponsorship rate cards overpromise reach—here’s what to show instead

    Sponsorship rate cards overpromise reach—here’s what to show instead

    Sponsorship rate cards for newsletters typically lead with total subscriber count. It’s the biggest number you have, and brands shopping for placement want to see scale. The problem: that number is almost always misleading, and experienced media buyers know it.

    If you’re pitching sponsors with a PDF that says “12,000 subscribers — $400 per placement,” you’re either underpricing engaged readers or overcharging for a list padded with inactive emails. Either way, you’re losing deals or leaving money on the table.

    Here’s what works better, and what sponsors actually care about when they’re deciding whether to wire you money.

    Lead with opens, not list size

    A 10,000-subscriber list with a 45% open rate delivers more eyeballs than a 25,000-subscriber list with an 18% open rate. The math is simple: 4,500 opens versus 4,500 opens. But the first operator charges less because they think list size is the metric that matters.

    Sponsors don’t pay for email addresses. They pay for attention. If your last six issues averaged 3,200 opens, say that upfront. Break it down by 30-day cohorts if your list has grown recently—showing that your May signups open at 52% while your January signups open at 38% proves you’re adding quality subscribers, not buying lists or running giveaway spam.

    Include unique open rates, not total opens. If someone opens your email three times, that’s still one person. Most ESPs report both; sponsors want the unique number.

    Show click-through on past sponsorships

    If you’ve run sponsorships before, share anonymized click data. Not click-through rate as a percentage—absolute clicks. “Last sponsor placement generated 210 clicks to their landing page” tells a buyer exactly what they’re getting. Add context: was it a text link, a dedicated section, or a full takeover? Did you write the copy or did they?

    If the sponsor converted 8% of those clicks into trial signups, and you know that because they told you, put it in the deck. Third-party validation is worth more than your own claims about engagement.

    Don’t have sponsorship data yet? Show clicks on your own content. Pick your three most recent issues, pull the top-clicked link from each, and report the numbers. If your audience clicks through to your blog, affiliate links, or product pages at a 6–9% rate, they’ll click sponsor links too.

    Segment pricing by placement type

    A single rate card with one price assumes all placements are equal. They’re not. A dedicated email where you write a 400-word case study about the sponsor’s product is worth more than a three-line text link in your footer. A mid-email callout box with a headline, 100 words, and a button is somewhere in between.

    Offer at least two tiers. Name them clearly: “Featured partner” and “Classified mention,” or “Primary sponsor” and “Supporting link.” Price them 3x to 5x apart. If your supporting link is $200, your featured placement should be $600–$1,000, depending on your open rate and niche.

    Sponsors with bigger budgets will pick the expensive option because it’s clear what they’re getting. Sponsors testing your list for the first time will pick the cheap option, then upgrade after they see results.

    Drop the subscriber count—or bury it

    If your open rate is strong, lead with opens and clicks. Put total subscriber count in the third or fourth line, or leave it out entirely. It’s not a secret—sponsors can ask—but it’s not your strongest signal.

    If your list is below 2,000 subscribers, don’t apologize for it. Instead, frame your pricing around cost per click or cost per open. “$300 gets you 180 clicks” is a clear value proposition. A brand spending $1.67 per click on Google Ads will happily pay you $300 for the same result with a warmer audience.

    One operator I know runs a 1,400-subscriber list in the podcast production niche. She charges $250 per sponsor mention and delivers 80–100 clicks per placement. Her cost per click is under $3, and her sponsors re-book every quarter because her audience converts. She doesn’t mention list size in her pitch deck at all.

    Update your rate card every quarter

    Your open rate drifts. Your list grows. Sponsors who booked you six months ago paid a price based on old data. If your opens are up 15% since January, your rate card should reflect that.

    Don’t freeze pricing just because a sponsor might complain. Grandfather existing sponsors at their original rate for one renewal, then move them to current pricing. New sponsors pay the current rate immediately.

    If your engagement is falling, don’t raise rates. Fix your content first, then revisit sponsorship pricing once your numbers recover. Charging more for worse performance is how you lose sponsors permanently.

    Want to compare how other operators price sponsorships? Reply with your open rate and niche—we’ll feature anonymized benchmarks in a future issue.

  • Social media schedulers charge per account—here’s the math

    Social media schedulers charge per account—here’s the math

    Social media scheduling tools advertise starter plans at $10–$15 per month. That number holds only if you post to a single platform. Add Twitter, LinkedIn, Instagram, and a Facebook page, and the same tool bills you $40–$60 monthly—or forces you into a higher tier.

    The pricing structure isn’t hidden, but it’s rarely surfaced until you hit the connect-account screen. For solo operators running content-driven businesses across multiple channels, per-account billing turns an affordable utility into a recurring line item that rivals your hosting or email costs.

    How per-account pricing works across platforms

    Most scheduling tools define an “account” or “channel” as a single social profile. One Twitter account, one LinkedIn personal profile, one Instagram business account, one Facebook page—each counts separately.

    Buffer’s free tier allows three channels. The $6/month Essentials plan gives you one channel. To schedule across four platforms, you need the Team plan at $12/month per channel—$48 monthly for four accounts.

    Hootsuite’s Professional plan starts at $99/month for ten social accounts. If you manage fewer profiles, you’re still paying the base rate; there’s no cheaper tier that scales down.

    Later (focused on visual platforms) offers one social set per user on the Starter plan at $25/month. A “set” includes one profile per platform—Instagram, Facebook, Twitter, LinkedIn, TikTok, Pinterest, and YouTube. That’s better for multi-platform operators, but you’re locked into the bundle even if you only use three.

    Publer breaks the pattern slightly: the free tier supports one account per platform (up to three total), and paid plans at $12/month allow multiple accounts per platform for up to ten total social profiles. For an operator running personal and business accounts across Twitter, LinkedIn, and Instagram, that’s six profiles under one plan.

    When per-account pricing costs more than the tool’s value

    If your business generates revenue directly from social traffic—affiliate clicks, newsletter signups, course sales—the $50/month cost is defensible. But many solo operators schedule content as brand presence, not primary acquisition. In that case, you’re paying $600 annually to post three times per week across four channels.

    Compare that to native scheduling: Twitter, LinkedIn, Facebook, and Instagram all offer free post-scheduling inside their apps. The trade-off is context-switching and no unified calendar view, but the cost difference is $600 per year.

    For operators running a single content pillar across platforms—republishing the same blog post summary or newsletter link—per-account billing penalises efficiency. You’re doing less work (one piece of content, four destinations), but paying more than someone who writes custom posts for a single channel.

    How to audit whether you’re overpaying

    Pull up your scheduling tool’s billing page and count connected accounts. Then check your analytics for the last 90 days. For each social profile, calculate:

    • Monthly cost allocated to that profile (total bill divided by number of accounts)
    • Clicks or conversions attributed to that profile
    • Cost per click or cost per conversion

    If a profile costs $12/month and sends 30 clicks, you’re paying $0.40 per click before counting the time to create and schedule the post. If those clicks convert at 2%, you’re paying $20 per conversion from that channel.

    That math doesn’t mean the channel is bad—it means you should compare the cost to other acquisition channels (SEO content, paid ads, email) to decide whether the scheduling tool is worth keeping for that profile.

    Cheaper alternatives and when to switch

    If you’re overpaying for profiles that generate little return, three paths cut costs:

    Consolidate platforms. Drop the social profile with the weakest return. If Facebook sends five clicks per month and costs $12 in allocated scheduler fees, disconnect it and reallocate that budget.

    Switch to a per-user tool. Platforms like Publer or Buffer’s higher tiers charge per user, not per account, up to a cap. If you’re a solo operator, one seat with ten account slots costs less than per-account billing for four profiles.

    Use native scheduling. For low-frequency posting (once or twice per week), native tools cost nothing and require only a few extra minutes per session. Save the unified dashboard for high-volume operations where time savings justify the expense.

    One operator I know switched from Hootsuite ($99/month) to Publer ($12/month) and native LinkedIn scheduling for her personal profile. She posted to six accounts before; now she posts to five and saves $87 monthly. The profile she dropped—Pinterest—had sent 12 clicks in six months.

    Want more breakdowns like this? Reply with the tool or pricing structure you’d like examined next. We’ll pull the numbers and show you where the cost hides.

    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.

  • WordPress object caching: what it fixes and when to skip it

    WordPress object caching: what it fixes and when to skip it

    Object caching is one of those WordPress optimizations everyone talks about but few operators actually understand. The idea is simple: instead of hitting the database every time someone loads a page, WordPress stores frequently accessed data—posts, user info, theme settings—in memory. When the same data is requested again, it’s served from RAM instead of MySQL.

    That sounds like a win. And for many sites, it is. But object caching introduces moving parts—another service to monitor, another thing that can fail—and if your traffic or query load doesn’t justify it, you’re adding complexity for marginal gain.

    What object caching actually does

    Out of the box, WordPress uses a non-persistent object cache. That means data is stored in PHP memory for the duration of a single page load, then discarded. If the next visitor requests the same page, WordPress queries the database all over again.

    A persistent object cache—typically Redis or Memcached—stores that data in memory across page loads. When WordPress asks for a post’s metadata or a list of recent comments, the cache serves it instantly. No database round trip.

    This makes the biggest difference on sites with:

    • High concurrent traffic (50+ visitors at once)
    • Complex database queries (custom post types, meta fields, WooCommerce)
    • Plugins that query the database on every page load (membership tools, dynamic content widgets)

    If your site doesn’t fit those profiles, object caching won’t do much. A static homepage with 20 posts and light traffic won’t see a speed boost—you’re already fast enough.

    When to skip it

    Object caching adds a dependency. If Redis goes down, your site slows to a crawl—or breaks entirely, depending on how your host configured the fallback. Managed WordPress hosts like BigScoots typically handle this gracefully, but if you’re self-managing a VPS, you need monitoring in place.

    You also need to flush the cache deliberately when you update content. Most caching plugins handle this automatically, but edge cases exist: custom fields updated via WP-CLI, direct database edits, or theme changes can leave stale data in Redis for hours.

    Skip object caching if:

    • Your traffic is under 10,000 page views per month
    • Your average page load is already under 1 second (check your server response time in Google Search Console or Pingdom)
    • You’re running a static site generator or headless setup (the database isn’t the bottleneck)

    In those scenarios, you’ll get more value from a CDN, image optimization, or trimming down plugins. Object caching is overkill.

    How to set it up (if you need it)

    Most managed WordPress hosts offer Redis or Memcached as a one-click add-on. If you’re on a VPS, you’ll need to install Redis via SSH, then add a PHP extension and a WordPress plugin to connect the two.

    The most common plugin is Redis Object Cache by Till Krüss. It’s free, actively maintained, and shows you cache hits versus misses in the WordPress admin. If your hit rate is below 80%, something’s misconfigured—either the cache isn’t being populated correctly, or your queries aren’t cacheable.

    After enabling object caching, test these scenarios:

    • Load your homepage twice in quick succession. The second load should be faster.
    • Publish a new post and confirm it appears immediately (not after a manual cache flush).
    • Check your server’s memory usage. Redis should sit around 50–100 MB for a typical site. If it’s ballooning past 500 MB, your cache isn’t expiring old data.

    One non-obvious tip

    Not all database queries should be cached. User-specific data—cart contents, login states, personalized recommendations—needs to stay dynamic. If you cache those, you’ll serve the wrong content to the wrong people.

    Most caching plugins exclude these by default, but custom plugins don’t always play nice. If you’re seeing logged-in users get logged-out views, or vice versa, check your cache exclusions. You may need to add specific query keys or user roles to a denylist.

    The other gotcha: WordPress transients. These are temporary database entries that plugins use to store short-lived data—API responses, rate-limit counters, import progress. If your object cache is working, transients get stored in Redis instead of MySQL. That’s faster, but it also means transients disappear when you flush the cache. If a plugin relies on a transient sticking around, flushing can break it mid-operation.

    Check your transient usage with a plugin like Transients Manager. If you see hundreds of expired transients piling up, something’s writing to the cache inefficiently.

    Want more infrastructure breakdowns like this? Reply and tell us what hosting or performance topic to tackle next—or subscribe to catch every Tuesday tutorial.

  • Analytics tool sampling: when free plans skip your best traffic

    Analytics tool sampling: when free plans skip your best traffic

    Most analytics platforms don’t show you every visitor. On free and starter plans, tools like Google Analytics 4, Fathom, and Plausible apply data sampling once you cross certain thresholds—sometimes without telling you clearly in the dashboard.

    Sampling means the platform processes a subset of your traffic and extrapolates the rest. For solo operators running content sites or newsletters, this can distort the metrics you’re optimizing for: which posts drive signups, which UTM sources convert, and how long readers stay.

    Here’s what sampling looks like in practice, when it kicks in, and how to tell if your numbers are directionally wrong.

    What gets sampled and what doesn’t

    Sampling typically applies to custom reports, segments, and date-range queries—not the default real-time or overview dashboards. If you filter traffic by UTM campaign, landing page, or device type over a trailing 90-day window, you’re more likely to hit sampling.

    Google Analytics 4 samples when a query touches more than 10 million events in the selected property and date range. For a site logging 50,000 monthly sessions with typical event instrumentation (page views, scrolls, clicks), you’ll cross that threshold in about six months of retained data.

    Plausible and Fathom don’t sample on their paid plans, but their free tiers and trials cap total event volume. Plausible’s free plan allows 10,000 monthly page views before sampling or blocking; Fathom’s trial is capped at 30 days and 100,000 page views, after which data stops flowing entirely unless you convert.

    The metrics most affected: conversion funnels, cohort retention, and multi-touch attribution. Sampling drops edge-case paths—your highest-intent visitors often behave differently from the median, so a 10% sample may miss the behavior that matters most.

    How to spot sampling in your reports

    Google Analytics 4 shows a green checkmark or yellow warning icon at the top of exploration reports. The yellow icon means your query was sampled; the percentage shown (e.g., “based on 8.3% of sessions”) tells you how much data was used.

    If you’re running a custom segment—say, traffic from a specific referrer with a conversion event—and the icon shows sampling, your funnel metrics are modeled estimates, not raw counts.

    Plausible and Fathom don’t display sampling warnings because they don’t sample on paid plans. If you’re on a free or trial tier and your traffic exceeds the cap, you’ll see a hard cutoff: events stop logging, or the dashboard shows partial days.

    Other platforms—Mixpanel, Heap, Amplitude—offer generous free tiers but throttle or sample retroactively once you exceed event limits. Mixpanel’s free plan caps at 20 million monthly events; past that, older data gets archived and queries slow down or return incomplete results.

    When sampling breaks your decisions

    Sampling matters most when you’re optimizing for conversion rate, attribution, or cohort behavior. If you’re A/B testing two landing pages and your analytics tool samples the traffic, a 2% lift in conversions might be noise, not signal.

    Example: You’re tracking newsletter signups from three UTM sources—organic search, Twitter, and a paid Facebook campaign. GA4 samples your 90-day report at 12%. The dashboard shows Twitter driving 40 signups and Facebook driving 38. In reality, Facebook drove 52 and Twitter drove 29—but the sample skewed toward a few high-traffic Twitter days.

    You reallocate budget based on bad data. Two weeks later, your cost per signup doubles.

    Sampling also hides outlier sessions: your longest time-on-page visits, your highest scroll depths, and your multi-page readers. These are your most engaged users, and they’re statistically rare. A 10% sample has a lower chance of capturing them.

    How to avoid or reduce sampling

    The simplest fix: narrow your date range and segment size. Instead of querying 90 days of traffic with five filters, query 30 days with two. If GA4 still samples, break the report into weekly chunks and aggregate manually in a spreadsheet.

    If you’re on Google Analytics 4 and sampling is chronic, consider exporting raw event data to BigQuery. GA4’s BigQuery export is free for up to 1 million events per day on the free tier, and queries run on unsampled data. The learning curve is steep—you’ll need SQL and a basic understanding of GA4’s event schema—but it’s the only way to guarantee complete data at scale.

    For operators who don’t want to manage SQL, switching to a paid analytics plan eliminates sampling. Plausible starts at $9/month for 10,000 monthly page views with no sampling. Fathom starts at $14/month for 100,000 page views, also unsampled. Both platforms count page views, not events, so instrumentation is simpler.

    If you’re running a high-traffic site (500,000+ monthly page views), expect to pay $50–$100/month for unsampled analytics. That’s the floor for tools that process every session.

    One more thing: sampling isn’t always disclosed

    Not every platform tells you when data is modeled or incomplete. If your dashboard shows a suspiciously round conversion rate—exactly 5.0%, not 4.87%—or if your funnel drop-off percentages don’t add up to 100%, you’re probably looking at sampled or aggregated data.

    Test this by exporting a raw event log (if your tool supports it) and comparing totals to the dashboard. If the counts don’t match, ask support whether sampling is applied and at what threshold.

    For newsletter operators and solo founders, unsampled data isn’t perfectionism—it’s the difference between knowing which traffic source pays for itself and guessing based on a model that drops your best readers.

    Want more breakdowns like this? Subscribe to One Two Three Send for weekly deep-dives on the tools and tactics that run online businesses.

  • Google’s Helpful Content Update Changed How Internal Links Count

    Google’s Helpful Content Update Changed How Internal Links Count

    Google’s Helpful Content Update in August 2023 didn’t just penalise AI slop and affiliate farms. It also changed how the algorithm weighs internal link structure when determining which pages deserve to rank.

    Most coverage focused on the content-quality signals—understandably. But buried in the technical SEO weeds was a shift in how PageRank flows through site architecture, and it’s been quietly reshaping traffic distribution for sites that rely on pillar content and hub pages.

    If you run a content site and noticed certain cornerstone posts losing traffic while thinner, newer pages climbed, this is probably why.

    What changed: context over volume

    Before August 2023, internal linking operated on a fairly predictable model: the more internal links a page received, the stronger its ranking potential. Hub pages with dozens of inbound links from across your site carried the most authority.

    The update introduced a contextual weighting layer. Now, Google evaluates not just how many internal links point to a page, but where those links come from and how topically related the linking page is to the target.

    A link from a closely related article on the same subtopic carries significantly more weight than a boilerplate footer link or a sidebar widget linking to your “Best Of” archive. Volume still matters, but relevance matters more.

    This explains why some sites saw their sprawling hub pages—previously propped up by sitewide navigation links—lose rankings, while deep, narrowly focused articles with fewer but more contextually relevant inbound links gained ground.

    How to audit your internal link structure now

    Pull a Screaming Frog or Sitebulb crawl of your site and export the internal link report. You’re looking for two patterns:

    Pattern one: High-value pages that receive most of their inbound links from unrelated posts or sitewide elements (header, footer, sidebar). These pages are vulnerable. Their authority is inflated by low-context links that no longer carry the weight they used to.

    Pattern two: Deep posts with strong topical relevance to your most important pages, but zero or one internal link pointing to those hubs. These are missed opportunities. A single contextual link from a related deep-dive post now moves the needle more than five generic sidebar links.

    Run a topic-cluster map. Group your posts by semantic similarity—use a spreadsheet, Airtag clusters in Ahrefs, or even a manual pass. Then cross-reference: do your most important pages have internal links from at least three to five posts within the same cluster?

    If not, add them. But don’t force it. A link from a post about WordPress caching to a post about email deliverability doesn’t help either page. Relevance is the gate.

    What breaks when you over-optimise

    The temptation is to stuff every related post with links to your cornerstone content. Resist it.

    Google’s algorithm now appears to discount internal links that appear in identical boilerplate text across multiple pages. If you’re using the same call-out box or inline CTA in twenty posts, all linking to the same hub page, those links are being treated as low-signal.

    Variation matters. Each internal link should be contextually integrated into unique sentences. Yes, that takes more time. But the alternative is a bunch of links that register as noise.

    Also: don’t orphan your older content. If you’ve been publishing for years and your early posts don’t link to anything else on your site, they’re functionally invisible to the new weighting model. A quarterly audit to add a few contextual internal links to older posts will lift their discoverability and stabilise traffic.

    Practical next step

    Pick your three highest-value pages—the ones that drive email signups, affiliate clicks, or product sales. Export every page on your site that ranks for a related keyword or covers a related subtopic. Go through that list and add one or two contextual internal links from those related posts to your high-value pages.

    Track organic traffic to those three pages over the next 30 days. If you’ve been relying on sitewide navigation or footer links to prop them up, you’ll likely see a lift once the relevance signal kicks in.

    This isn’t a one-time fix. Internal link structure is now a living part of your content strategy, not a set-it-and-forget-it SEO checkbox. Treat it like ongoing editorial work, and it’ll pay dividends in stabilised rankings and more predictable traffic.

    Got a question about your own site’s internal link structure? Hit reply—I read every response and often turn reader questions into future deep-dives.

  • AI assistants hallucinate pricing data—here’s how to verify

    AI assistants hallucinate pricing data—here’s how to verify

    You ask Claude or ChatGPT for a quick comparison: “Which newsletter platform costs less for 10,000 subscribers?” The model replies with confident numbers—$79/month here, $99/month there—and you make a purchasing decision based on that data.

    Then you click through to the actual pricing page and discover the real number is $129, or that the plan it recommended doesn’t exist anymore, or that the feature you need is only available on enterprise.

    AI assistants hallucinate pricing information more often than almost any other category of data. They blend outdated documentation, conflated product tiers, and invented numbers into answers that sound authoritative but cost you real money when you act on them.

    Why pricing data breaks LLMs

    Large language models train on static snapshots of the web. SaaS companies change their pricing every six to eighteen months—new tiers, revised limits, seasonal promotions, regional variations. The model’s training cutoff means it’s often working from information that’s twelve months stale or older.

    Worse, many pricing pages live behind JavaScript paywalls or login gates, so the training corpus captures incomplete or misleading fragments. The model fills gaps by interpolating from similar tools, which works tolerably well for feature descriptions but fails catastrophically for hard numbers.

    You’ll also see blended answers: the AI might pull a base price from one tier, a subscriber limit from another, and a feature list from a third, then present them as a single coherent package that doesn’t exist on any real plan.

    How to verify AI-generated pricing claims

    Treat every pricing figure, plan name, or feature-limit claim from an AI assistant as a research starting point, not a fact. Here’s the verification checklist:

    • Go directly to the vendor’s pricing page. Don’t rely on third-party review sites or affiliate comparison tables—those go stale even faster than the AI’s training data.
    • Check the date on any cited source. If the AI links to a blog post or help doc, look at the publish date. Anything older than six months is suspect for pricing.
    • Open the plan details or feature matrix. Don’t assume the headline price includes what you need. Verify the specific limits—sends per month, team seats, API access—that matter to your use case.
    • Test with a pricing calculator if available. Tools like Mailchimp, ConvertKit, and Brevo offer interactive calculators that show exactly what you’ll pay at your subscriber count. Use them.
    • Email sales for enterprise or custom plans. If the AI mentions an enterprise tier, assume the pricing it provides is invented. Those numbers rarely appear on public pages.

    For high-stakes decisions—annual contracts, multi-tool migrations, anything over $500/year—don’t verify once. Check again the week before you commit. SaaS companies announce pricing changes with as little as thirty days’ notice, and your six-week evaluation window can span a price hike.

    Where AI pricing answers do work

    AI assistants handle relative comparisons better than absolute numbers. If you ask, “Which is generally cheaper for small lists, Substack or Beehiiv?” the model can give you a directionally accurate answer because the relationship holds even when the exact figures drift.

    They’re also useful for surfacing lesser-known tools in a category. You might not have heard of a newer platform, and the AI can introduce you to it—but you’ll still need to verify the details yourself.

    Use AI to draft your shortlist and identify decision criteria. Then do the pricing research manually, in a spreadsheet, with current numbers from each vendor’s site.

    What to do if you’ve already bought based on AI output

    If you signed up for a service and the price or features don’t match what the AI told you, most SaaS companies offer refunds within seven to thirty days. Contact support immediately, explain the discrepancy, and ask for a prorated refund or a plan adjustment.

    For annual contracts, you have less flexibility, but it’s still worth asking. Some vendors will let you switch tiers or pause the subscription if you catch the issue within the first billing cycle.

    Document what the AI told you—screenshot the conversation—so you have a record of the claim. It won’t obligate the vendor to honor a hallucinated price, but it helps frame the conversation as a misunderstanding rather than buyer’s remorse.

    Have you caught an AI assistant inventing pricing data? Reply with the tool and the claim—I’m tracking which categories hallucinate most often, and I’ll share the patterns in a future issue.

    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.

  • How ConvertKit’s ‘Incentive Email’ Field Works and When to Use It

    How ConvertKit’s ‘Incentive Email’ Field Works and When to Use It

    ConvertKit includes a feature called the Incentive Email that most solo operators either overlook or misunderstand. It’s designed to deliver your lead magnet or opt-in bribe automatically—without building a separate automation sequence. But the way it fires, when it doesn’t fire, and how it interacts with existing automations can trip you up if you don’t know the rules.

    Here’s what the Incentive Email actually does, when to use it, and one non-obvious gotcha that can double-send your lead magnet if you’re not careful.

    What the Incentive Email Does

    When you create a form in ConvertKit, you’ll see a checkbox labeled “Send incentive email.” Toggle it on, and you can draft a single email that fires immediately after someone confirms their subscription (if you’re using double opt-in) or submits the form (if you’re using single opt-in).

    The email includes merge tags for the subscriber’s name and a custom download link. You write it once, and ConvertKit sends it to every new subscriber who joins via that specific form. No automation, no sequence, no visual canvas required.

    It’s a faster setup than building a full automation if you’re just delivering a PDF, checklist, or Notion template. You don’t need to tag subscribers, filter them into a sequence, or manage conditional logic. The form handles everything.

    When to Use It vs. When to Skip It

    The Incentive Email makes sense when your funnel is simple: one form, one lead magnet, one confirmation email. If you’re running a single opt-in offer and you don’t plan to segment subscribers or trigger follow-up emails based on behavior, it’s the cleanest option.

    Skip it if you’re doing any of the following:

    • Segmenting subscribers by interest, source, or product intent at the point of opt-in
    • Running A/B tests on lead-magnet delivery timing or copy
    • Tracking open or click behavior in your automation reporting (Incentive Emails don’t appear in sequence stats)
    • Delivering multiple resources in a welcome series

    The Incentive Email doesn’t play well with complex funnels. It’s a one-and-done trigger. If you need to branch logic, delay delivery, or send a second email 24 hours later, you’re better off using a visual automation with tags and conditions.

    The Double-Send Trap

    Here’s the non-obvious problem: if you enable the Incentive Email and have an automation that triggers on the same form submission, both will fire. ConvertKit doesn’t suppress one in favor of the other. Your subscriber gets two emails—one from the Incentive Email, one from the automation—within minutes of each other.

    This happens most often when you’re migrating from an old automation setup to the Incentive Email (or vice versa) and forget to disable the other. The form doesn’t warn you. The automation builder doesn’t flag the conflict. You only notice when a subscriber replies asking why they got the same PDF link twice.

    The fix: audit your forms and automations before enabling the Incentive Email. Search for any automation that uses the form as a trigger. If you find one, decide which delivery method you want to keep, then disable the other. Don’t run both at once unless you’re intentionally sending different content in each email.

    Editing and Timing Notes

    Once you enable the Incentive Email, you can edit the subject line, body copy, and sender name at any time. Changes apply to all future sends, but they won’t retroactively update emails already delivered. If you need to fix a broken link or update the lead magnet, you’ll need to manually email past subscribers or rely on an automation to catch them.

    Timing is immediate: ConvertKit sends the Incentive Email as soon as the subscriber confirms (double opt-in) or submits (single opt-in). There’s no built-in delay. If you want to wait 10 minutes or 24 hours, you need an automation instead.

    The Incentive Email also doesn’t respect sending windows or time-zone adjustments. If someone opts in at 2 a.m., they get the email at 2 a.m. This usually doesn’t matter for lead magnets—people expect instant delivery—but it’s worth noting if you’re used to sequence-based sends that respect subscriber time zones.

    When It’s Worth the Simplicity

    If you’re launching a single opt-in offer and you don’t plan to iterate on delivery timing or segmentation, the Incentive Email is the fastest path to a working funnel. You skip the automation builder entirely. The trade-off: less flexibility, no reporting granularity, and no conditional logic.

    For most solo operators, that trade-off is fine—until it isn’t. If you find yourself wanting to A/B test subject lines, track open rates in a dedicated sequence, or send a follow-up email two days later, you’ll outgrow the Incentive Email quickly. At that point, migrate to a visual automation and disable the Incentive Email on the form.

    Just make sure you turn off one before you turn on the other. Your subscribers don’t need two copies of the same PDF.

    One Two Three Send helps online operators make smarter tooling decisions. If you want sharp breakdowns like this in your inbox every week, subscribe below—or reply with a question you’d like answered next.