AEO Growth
Digital Marketing

Brand Discoverability: 15% ROAS Gain in 2026

Listen to this article · 14 min listen

Brand discoverability isn’t just a buzzword; it’s the bedrock of modern marketing success, defining whether your business thrives or merely survives in a crowded digital marketplace. Without it, even the most innovative products and services remain invisible, gathering dust in the internet’s forgotten corners. How, then, do we ensure our brands are not just found, but sought after?

Key Takeaways

  • Configure Google Ads Performance Max campaigns with specific product feeds and geo-targeting to achieve a minimum 15% improvement in ROAS within three months.
  • Implement Meta Advantage+ Shopping Campaigns by selecting “New Customer Acquisition” and setting a 10-15% higher bid for new customers to expand reach efficiently.
  • Utilize HubSpot’s SEO content strategy tools to identify long-tail keywords with search volumes between 500-2000 and create pillar pages that attract qualified organic traffic.
  • Regularly audit your Google Business Profile for consistent NAP (Name, Address, Phone) data and respond to at least 80% of reviews within 24 hours to boost local search rankings.

Step 1: Architecting Discoverability with Google Ads Performance Max

I’ve seen firsthand how quickly the digital advertising landscape shifts. The days of simply throwing money at broad keywords are long gone. Today, Google Ads Performance Max campaigns are absolutely essential for maximizing brand discoverability across Google’s entire ecosystem – Search, Display, Discover, Gmail, and YouTube. This isn’t just another campaign type; it’s Google’s answer to consolidating and automating your reach.

1.1. Campaign Setup: The Foundation of Reach

To get started, log into your Google Ads account. On the left-hand navigation pane, click “Campaigns”. Then, click the blue plus button (+ New Campaign).

  1. Choose Your Objective: Select “Sales” or “Leads”. For e-commerce brands, “Sales” is your non-negotiable choice. For service-based businesses, “Leads” will drive those crucial inquiries.
  2. Select Campaign Type: This is where you’ll pick “Performance Max”. Google will prompt you to connect your conversion goals. Ensure you’ve set up accurate conversion tracking (e.g., purchases, form submissions) beforehand; otherwise, this entire exercise is pointless.
  3. Budget and Bidding: Set your daily budget. For bidding, I strongly recommend starting with “Maximize Conversion Value” if you have robust conversion tracking, or “Maximize Conversions” if your goal is volume. Always enable “Set a target Return On Ad Spend (ROAS)” or “Set a target Cost Per Acquisition (CPA)” once you have sufficient conversion data (at least 30 conversions in the last 30 days). A recent IAB report highlighted that advertisers using automated bidding strategies saw a 22% increase in efficiency compared to manual methods.

Pro Tip: Don’t be afraid to start with a slightly lower target ROAS than you’d ideally want. This allows the algorithm to gather data more aggressively. You can always tighten it up later.

Common Mistake: Neglecting conversion tracking. If Google doesn’t know what a successful outcome looks like, Performance Max can’t perform. Double-check your Google Analytics 4 (GA4) integration and Google Ads conversion actions.

Expected Outcome: Within the first two weeks, you should see impressions and clicks across multiple Google properties. Initial CPA or ROAS might be volatile as the system learns, but expect a stabilization as it optimizes towards your goals.

1.2. Asset Group Configuration: Your Brand’s Digital Storefront

This is where you give Performance Max the ingredients to tell your brand’s story. Think of an asset group as a collection of creative elements for a specific product line or service category.

  1. Final URL: Enter the primary landing page for this asset group.
  2. Images and Logos: Upload a diverse range of high-quality images (landscape, square, portrait) and your brand logos. Google needs options to fit various ad placements. Aim for at least 5 landscape images (1200×628), 5 square images (1200×1200), and 2-3 logos.
  3. Headlines and Descriptions: Craft compelling headlines (3-30 characters) and long headlines (3-90 characters), along with descriptions (2-90 characters) and long descriptions (2-360 characters). Provide at least 5 unique headlines and 3 unique descriptions. Focus on benefits, not just features. For instance, instead of “Durable sneakers,” try “Experience all-day comfort with our ultra-durable sneakers.”
  4. Business Name: Your official brand name.
  5. Calls to Action (CTAs): Choose relevant CTAs like “Shop Now,” “Learn More,” “Get Quote.”
  6. Audience Signals: This is where we give Google hints about who to target. Click “Add an audience signal”. You can include your first-party data (customer lists), custom segments (people who searched for specific terms or visited competitor sites), and interest-based audiences. I always upload customer lists here; it’s gold for finding similar audiences.
  7. Product Feeds (for e-commerce): If you’re selling products, ensure your Google Merchant Center feed is linked. This is critical. Performance Max will automatically generate ads from your product catalog.

Pro Tip: Create multiple asset groups for different product categories or customer segments. This allows Performance Max to tailor messaging more effectively. For a client selling artisan coffees, we created separate asset groups for “Single Origin Roasts” and “Espresso Blends,” each with distinct imagery and copy.

Common Mistake: Providing too few assets. Performance Max thrives on variety. The more high-quality assets you provide, the better it can adapt to different placements and audiences.

Expected Outcome: Enhanced ad relevance and better ad quality scores. Google’s AI will test various combinations of your assets to find what resonates best, improving click-through rates (CTR) and engagement.

Step 2: Amplifying Presence with Meta Advantage+ Shopping Campaigns

While Google captures intent, Meta’s platforms (Facebook and Instagram) excel at driving demand and nurturing discovery through social proof and visual storytelling. Their Advantage+ Shopping Campaigns are a game-changer for e-commerce, streamlining complex campaign structures into an AI-powered engine.

2.1. Campaign Creation: Automated Retail Power

From your Meta Business Suite, navigate to “Ads Manager”. Click “Create”.

  1. Choose Campaign Objective: Select “Sales”.
  2. Campaign Type: Choose “Advantage+ Shopping Campaign”. This is paramount.
  3. Budget: Set your daily or lifetime budget. Meta recommends a minimum daily budget of $100 for optimal performance, though I’ve seen success starting lower for smaller businesses, especially those targeting a specific geographic area like Atlanta’s Ponce City Market shoppers.
  4. Conversion Location: Select “Website”. Ensure your Meta Pixel is correctly installed and firing conversion events. This is non-negotiable.
  5. Targeting: This is where Advantage+ truly shines. You can choose to target “New customers”, “Existing customers”, or “Both”. My recommendation for discoverability is always to prioritize “New customers” first, perhaps with a 10-15% higher bid adjustment for them. You can also upload customer lists to exclude existing purchasers, ensuring your ad spend focuses on fresh eyes.
  6. Geo-targeting: Define your audience’s location. For a local boutique, setting a 5-10 mile radius around specific zip codes (e.g., 30308, 30309 for Midtown Atlanta) is highly effective.

Pro Tip: Leverage Meta’s “New Customer Acquisition” setting. This allows you to bid higher for users identified as new to your brand, directly addressing discoverability. According to a eMarketer report from late 2025, brands using this feature saw an average 18% increase in new customer acquisition at a comparable CPA.

Common Mistake: Over-segmenting audiences within Advantage+ campaigns. The entire point is to let Meta’s AI find your best customers. Provide broad signals, and let the algorithm do the heavy lifting.

Expected Outcome: Simplified campaign management with Meta’s AI automatically optimizing for sales. You should see a broader reach to potential new customers and improved ROAS over time, typically stabilizing after 3-4 weeks.

2.2. Creative Assets and Product Catalogs: Visual Engagement

Advantage+ relies heavily on your product catalog and engaging visuals.

  1. Product Catalog: Ensure your product catalog is perfectly synced from your e-commerce platform (Shopify, WooCommerce, etc.) to Meta Commerce Manager. High-quality product images are paramount here.
  2. Creative Assets: You can upload additional videos and images that are not part of your product catalog. These are crucial for storytelling. Think lifestyle shots, behind-the-scenes content, or short, punchy video ads. Aim for 5-10 diverse creatives.
  3. Primary Text: Write compelling ad copy that highlights benefits and creates urgency. Provide 3-5 variations.
  4. Headlines and Descriptions: Similar to Google Ads, provide multiple options for headlines (up to 40 characters) and descriptions (up to 30 characters).

Pro Tip: Use dynamic product ads (DPAs) within Advantage+ campaigns. These automatically showcase relevant products to users based on their browsing history, a powerful tool for re-engagement and new customer discovery. I had a client last year, “Peach State Provisions,” who saw a 25% uplift in repeat purchases after implementing DPAs with a strong new customer acquisition focus.

Common Mistake: Using low-resolution or generic product images. Visuals are everything on Meta. Invest in professional photography.

Expected Outcome: Highly personalized and visually appealing ads delivered to users most likely to convert, leading to increased website traffic and sales.

Step 3: Mastering Organic Discoverability with HubSpot’s SEO Tools

Paid ads are great, but organic search discoverability provides sustainable, long-term traffic and builds authority. HubSpot’s SEO tools, particularly its content strategy features, are invaluable for structuring your website to rank for what people are actually searching for.

3.1. Topic Cluster Strategy: Building Authority

In HubSpot, navigate to “Marketing” > “Website” > “SEO”. Here, you’ll find the “Topic Clusters” section.

  1. Create a New Topic Cluster: Click “Add Topic Cluster”.
  2. Define Your Pillar Content: This is your broad, authoritative piece of content (e.g., “The Ultimate Guide to Sustainable Gardening”). Enter its URL as the “Pillar page URL”.
  3. Add Subtopic Content: Identify related, more specific keywords and content pieces that link back to your pillar. For our gardening example, subtopics might be “Best Organic Fertilizers,” “Beginner’s Guide to Composting,” or “Indoor Herb Gardens for Small Spaces.” For each subtopic, add its “Subtopic content URL” and the primary keyword it targets.

Pro Tip: Focus on long-tail keywords for your subtopics. These often have lower search volume but higher intent. Use HubSpot’s keyword research tool (under “Reports” > “Analytics Tools” > “Traffic Analytics” > “Keywords”) to identify terms with a monthly search volume between 500-2000 and a low difficulty score. This is where you can win. For more on this, check out our guide on why intent beats keywords in 2026 marketing.

Common Mistake: Creating content without a clear topic cluster strategy. This leads to keyword cannibalization and diluted authority. Every piece of content should serve a purpose within a larger, interconnected structure.

Expected Outcome: Improved search engine rankings for your pillar and subtopic content, establishing your brand as an authority in your niche. This leads to a consistent stream of qualified organic traffic.

3.2. On-Page SEO Optimization: The Devil is in the Details

Within HubSpot’s content editor (for blog posts, landing pages, or website pages), access the “Optimize” tab.

  1. Meta Description: Craft compelling meta descriptions (under 160 characters) that entice clicks. This isn’t just for ranking; it’s your brand’s elevator pitch in search results.
  2. Title Tag: Ensure your title tag (the HTML `` element) includes your primary keyword and is engaging.</li> <li><strong>Image Alt Text:</strong> Add descriptive alt text to all images. This not only helps with accessibility but also provides search engines with more context.</li> <li><strong>Internal Linking:</strong> HubSpot will often suggest internal links to related content within your topic cluster. Take these suggestions seriously. Strong internal linking distributes “link equity” and helps search engines understand your site’s structure.</li> <li><strong>Readability:</strong> Use HubSpot’s readability checker. Short sentences, clear headings (H2, H3), and bullet points improve user experience, which indirectly boosts SEO.</li> </ol> <p><strong>Pro Tip:</strong> Don’t just stuff keywords. Write naturally for your audience first. HubSpot’s content grading tools will flag over-optimization. My rule of thumb: if it sounds forced, it probably is. To avoid common pitfalls, review these <a href="https://aeo-growth.com/faq-optimization-blunders-costing-you-clicks-in-2026/">FAQ optimization blunders costing you clicks in 2026</a>.</p> <p><strong>Common Mistake:</strong> Ignoring local SEO elements. For brick-and-mortar businesses, ensure your address, phone number, and hours are consistent across your website, Google Business Profile, and other directories. This is huge for local discoverability. We ran into this exact issue at my previous firm with a chain of coffee shops; inconsistent NAP data meant they weren’t showing up in “coffee shops near me” searches.</p> <p><strong>Expected Outcome:</strong> Higher organic click-through rates, better engagement metrics (lower bounce rate, higher time on page), and ultimately, improved organic search rankings.</p> <aside class="related-callout"><span class="related-callout-label">Related Reading</span><a href="https://aeo-growth.com/nielsen-norman-structure-content-for-40-engagement/">Nielsen Norman: Structure Content for 40% Engagement</a></p> <p class="related-callout-excerpt">Learn how effective content structure, as highlighted by Nielsen Norman, can significantly increase user engagement and discoverability.</p> </aside> <h2 id="section-5">Step 4: Local Brand Discoverability with Google Business Profile</h2> <p>For any business with a physical location, your Google Business Profile (GBP) is arguably the single most important tool for local discoverability. It’s your digital storefront on Google Maps and local search results.</p> <h3>4.1. Profile Optimization: Your Local Identity</h3> <p>Log into your Google Business Profile Manager.</p> <ol> <li><strong>Accurate NAP Data:</strong> Ensure your business name, address, and phone number are 100% accurate and consistent with your website. This is non-negotiable. Even a slight discrepancy can hurt your local ranking.</li> <li><strong>Categories:</strong> Select the most precise categories for your business. Don’t be too broad. If you’re a “Vegan Bakery,” don’t just pick “Bakery.”</li> <li><strong>Service Areas/Hours:</strong> Clearly define your service areas and operating hours.</li> <li><strong>Description:</strong> Write a concise, keyword-rich description of your business.</li> <li><strong>Photos and Videos:</strong> Upload high-quality photos of your storefront, interior, products, and team. Businesses with more photos on their GBP typically receive 42% more requests for directions.</li> </ol> <p><strong>Pro Tip:</strong> Regularly post updates (under the <strong>“Posts”</strong> section) about new products, promotions, or events. These act like mini-blog posts directly on your GBP and can significantly boost engagement and discoverability.</p> <p><strong>Common Mistake:</strong> Neglecting to claim and verify your profile. An unverified profile is practically invisible.</p> <p><strong>Expected Outcome:</strong> Increased local search visibility, more direct calls, website visits, and requests for directions.</p> <h3>4.2. Review Management: Building Trust and Authority</h3> <p>Customer reviews are a massive ranking factor for local SEO and are crucial for building trust.</p> <ol> <li><strong>Respond to Reviews:</strong> Make it a priority to respond to every review, positive or negative. A simple “Thank you for your feedback!” goes a long way. For negative reviews, address concerns professionally and offer solutions.</li> <li><strong>Encourage Reviews:</strong> Politely ask satisfied customers to leave a review. You can use QR codes in-store or follow-up emails.</li> </ol> <p><strong>Pro Tip:</strong> Don’t just respond, engage. If someone praises your specific “Peach Cobbler,” mention it in your response. This shows authenticity and reinforces your brand’s offerings.</p> <p><strong>Common Mistake:</strong> Ignoring negative reviews. This signals to potential customers that you don’t care about feedback. A well-handled negative review can actually turn into a positive brand experience.</p> <p><strong>Expected Outcome:</strong> Improved local search rankings, enhanced brand reputation, and increased customer confidence, leading to more business.</p> <p>Brand discoverability in 2026 demands a multi-faceted, intelligent approach, integrating automated ad platforms with strategic organic efforts. By meticulously configuring tools like Google Ads Performance Max, Meta Advantage+ Shopping Campaigns, HubSpot’s SEO features, and your Google Business Profile, you’re not just hoping to be found – you’re engineering your brand to be unavoidable. For further insights into ensuring your brand’s visibility, explore our article on <a href="https://aeo-growth.com/search-visibility-5-shifts-dominating-2026/">Search Visibility: 5 Shifts Dominating 2026</a>.</p> <div class="faq-section"> <div class="faq-item"> <h3 class="faq-question">What is the primary benefit of using Google Ads Performance Max for brand discoverability?</h3> <div class="faq-answer"> <p>The primary benefit of Performance Max is its ability to automatically optimize and serve ads across all of Google’s advertising channels (Search, Display, Discover, Gmail, YouTube) from a single campaign, maximizing reach and efficiency with minimal manual oversight.</p> </div> </div> <div class="faq-item"> <h3 class="faq-question">How do Meta Advantage+ Shopping Campaigns specifically help with new customer acquisition?</h3> <div class="faq-answer"> <p>Meta Advantage+ Shopping Campaigns offer a “New Customer Acquisition” setting that allows advertisers to bid higher for users identified as new to their brand, directly targeting and expanding reach to potential new customers rather than just remarketing to existing ones.</p> </div> </div> <div class="faq-item"> <h3 class="faq-question">Why is a topic cluster strategy important for organic discoverability?</h3> <div class="faq-answer"> <p>A topic cluster strategy organizes your website content around central “pillar pages” and supporting “subtopic content,” creating a robust internal linking structure. This signals to search engines that your site is an authority on a subject, improving rankings for a wider array of related keywords and enhancing organic discoverability.</p> </div> </div> <div class="faq-item"> <h3 class="faq-question">What role do reviews play in Google Business Profile’s impact on local discoverability?</h3> <div class="faq-answer"> <p>Reviews are a critical ranking factor for local SEO. A high volume of positive reviews and prompt, professional responses to all feedback (positive and negative) on your Google Business Profile significantly boosts your visibility in local search results and builds trust with potential customers.</p> </div> </div> <div class="faq-item"> <h3 class="faq-question">Should I prioritize broad or long-tail keywords for SEO content strategy?</h3> <div class="faq-answer"> <p>For content strategy, you should prioritize long-tail keywords, especially for subtopic content. While broad keywords have higher search volume, long-tail keywords (typically 3+ words) indicate higher user intent and are often easier to rank for, driving more qualified organic traffic to your site.</p> </div> </div> </div> </div> <div class="t8-share"> <span class="t8-share-label">Share</span> <a class="t8-share-fb" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Faeo-growth.com%2Fbrand-discoverability-15-roas-gain-in-2026%2F" target="_blank" rel="noopener noreferrer" aria-label="Facebook"><svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"/></svg></a> <a class="t8-share-x" href="https://twitter.com/intent/tweet?url=https%3A%2F%2Faeo-growth.com%2Fbrand-discoverability-15-roas-gain-in-2026%2F&text=Brand+Discoverability%3A+15%25+ROAS+Gain+in+2026" target="_blank" rel="noopener noreferrer" aria-label="X"><svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg></a> <a class="t8-share-li" href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Faeo-growth.com%2Fbrand-discoverability-15-roas-gain-in-2026%2F&title=Brand+Discoverability%3A+15%25+ROAS+Gain+in+2026" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn"><svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2zM4 6a2 2 0 100-4 2 2 0 000 4z"/></svg></a> </div> <div class="t8-feedback" id="t8-feedback"> <span class="t8-feedback-q">Was this article helpful?</span> <button type="button" data-vote="yes">Yes</button> <button type="button" data-vote="no">No</button> </div> <script> (function(){ var fb = document.getElementById('t8-feedback'); if(!fb) return; fb.querySelectorAll('button').forEach(function(btn){ btn.addEventListener('click', function(){ fetch('/wp-json/site/v1/feedback', {method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({post_id:13586, vote:this.dataset.vote})}).catch(function(){}); fb.innerHTML = '<span class="t8-feedback-thanks">Thanks for your feedback!</span>'; }); }); })(); </script> <div class="t8-author-bio"> <div class="t8-author-av"><img fetchpriority="low" loading="lazy" alt='' src='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=88&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=176&d=mm&r=g 2x' class='avatar avatar-88 photo' height='88' width='88' decoding='async'/></div> <div> <h3 class="t8-author-name"><a href="https://aeo-growth.com/author/aeogrowteditorialteam/">Editorial Team</a></h3> <p class="t8-author-desc">The Editorial Team at AEO Growth is a group of writers and editors who cover marketing, brand, and growth. They research each story and publish under a shared desk byline — experts in their fields, working as one team.</p> </div> </div> <section class="t8-block t8-related"> <div class="t8-sechead"> <div class="t8-sechead-text"> <h2 class="t8-sectitle">Related Post</h2> </div> </div> <div class="t8-grid t8-grid-3"> <article class="t8-scard t8-reveal"> <a class="t8-scard-media" href="https://aeo-growth.com/geo-crm-and-ai-2026-s-conversion-uplift-secret/" aria-label="Geo-CRM & AI: 2026’s Conversion Uplift Secret"> <img width="600" height="400" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-600x400.webp?v=1792518722" class="attachment-site-card size-site-card wp-post-image" alt="Geo-CRM & AI: 2026’s Conversion Uplift Secret" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-400x267.webp 400w" sizes="auto, (max-width: 600px) 100vw, 600px" /> </a> <div class="t8-scard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/digital-marketing/">Digital Marketing</a> <span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>2</span> </div> <h3 class="t8-scard-title"><a href="https://aeo-growth.com/geo-crm-and-ai-2026-s-conversion-uplift-secret/">Geo-CRM & AI: 2026’s Conversion Uplift Secret</a></h3> <p class="t8-scard-excerpt">Boost campaign conversions by 22% with geo-CRM and AI product suggestions. Learn how to implement location-aware personalization tactics…</p> <div class="t8-byline"> <span class="t8-byline-av"><img fetchpriority="low" loading="lazy" alt='' src='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=34&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=68&d=mm&r=g 2x' class='avatar avatar-34 photo' height='34' width='34' decoding='async'/></span> <span class="t8-byline-meta"> <a class="t8-byline-name" href="https://aeo-growth.com/author/aeogrowteditorialteam/">Editorial Team</a> <span class="t8-byline-date">20 October 2026</span> </span> </div> </div> </article> <article class="t8-scard t8-reveal"> <a class="t8-scard-media" href="https://aeo-growth.com/maker-marketing-myths-5-truths-for-2026/" aria-label="Maker Marketing Myths: 5 Truths for 2026"> <img width="600" height="400" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-600x400.webp?v=1792498795" class="attachment-site-card size-site-card wp-post-image" alt="Maker Marketing Myths: 5 Truths for 2026" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-400x267.webp 400w" sizes="auto, (max-width: 600px) 100vw, 600px" /> </a> <div class="t8-scard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/digital-marketing/">Digital Marketing</a> <span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>5</span> </div> <h3 class="t8-scard-title"><a href="https://aeo-growth.com/maker-marketing-myths-5-truths-for-2026/">Maker Marketing Myths: 5 Truths for 2026</a></h3> <p class="t8-scard-excerpt">Stop ineffective maker marketing. Learn 5 truths for 2026 to scale unique offerings, from Etsy to micro-influencers. Get…</p> <div class="t8-byline"> <span class="t8-byline-av"><img fetchpriority="low" alt='' src='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=34&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=68&d=mm&r=g 2x' class='avatar avatar-34 photo' height='34' width='34' loading='lazy' decoding='async'/></span> <span class="t8-byline-meta"> <a class="t8-byline-name" href="https://aeo-growth.com/author/aeogrowteditorialteam/">Editorial Team</a> <span class="t8-byline-date">20 October 2026</span> </span> </div> </div> </article> <article class="t8-scard t8-reveal"> <a class="t8-scard-media" href="https://aeo-growth.com/ai-trust-brand-safety-and-aeo-in-2026/" aria-label="AI Trust: Brand Safety & AEO in 2026"> <img width="600" height="400" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/ai-trust-brand-safety-aeo-in-2026-featured-600x400.webp?v=1792461871" class="attachment-site-card size-site-card wp-post-image" alt="AI Trust: Brand Safety & AEO in 2026" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/ai-trust-brand-safety-aeo-in-2026-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/ai-trust-brand-safety-aeo-in-2026-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/ai-trust-brand-safety-aeo-in-2026-featured-400x267.webp 400w" sizes="auto, (max-width: 600px) 100vw, 600px" /> </a> <div class="t8-scard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/digital-marketing/">Digital Marketing</a> <span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>6</span> </div> <h3 class="t8-scard-title"><a href="https://aeo-growth.com/ai-trust-brand-safety-and-aeo-in-2026/">AI Trust: Brand Safety & AEO in 2026</a></h3> <p class="t8-scard-excerpt">Protect brand reputation with AI. Get tactics for content moderation, AEO, and ad placement audits to improve organic…</p> <div class="t8-byline"> <span class="t8-byline-av"><img fetchpriority="low" alt='' src='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=34&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=68&d=mm&r=g 2x' class='avatar avatar-34 photo' height='34' width='34' loading='lazy' decoding='async'/></span> <span class="t8-byline-meta"> <a class="t8-byline-name" href="https://aeo-growth.com/author/aeogrowteditorialteam/">Editorial Team</a> <span class="t8-byline-date">20 October 2026</span> </span> </div> </div> </article> </div> </section> </article> <aside class="t8-sidebar" aria-label="Sidebar"> <div class="t8-widget t8-widget--search"> <form role="search" method="get" class="t8-searchform" action="https://aeo-growth.com/"> <input type="search" name="s" value="" placeholder="Search Here ..." aria-label="Search" /> <button type="submit" aria-label="Search"> <svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg> </button> </form> </div> <div class="t8-widget t8-widget--tabs" data-t8-tabs> <div class="t8-tabs-head"> <button type="button" class="t8-tab is-active" data-tab="recent">Recent</button> <button type="button" class="t8-tab" data-tab="popular">Popular</button> </div> <div class="t8-tab-panel is-active" data-panel="recent"> <article class="t8-lcard"> <a class="t8-lcard-thumb" href="https://aeo-growth.com/aeo-global-logistics-2026-compliance-imperative/" aria-label="AEO: Global Logistics’ 2026 Compliance Imperative"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/aeo-global-logistics-2026-compliance-imperative-featured-300x200.webp?v=1792514329" class="attachment-site-thumb size-site-thumb wp-post-image" alt="AEO: Global Logistics’ 2026 Compliance Imperative" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/aeo-global-logistics-2026-compliance-imperative-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/aeo-global-logistics-2026-compliance-imperative-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/aeo-global-logistics-2026-compliance-imperative-featured-400x267.webp 400w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div class="t8-lcard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/expert-opinions/">Expert Opinions</a> </div> <h4 class="t8-lcard-title"><a href="https://aeo-growth.com/aeo-global-logistics-2026-compliance-imperative/">AEO: Global Logistics’ 2026 Compliance Imperative</a></h4> <div class="t8-metaline t8-metaline--sm"><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>2</span><span class="t8-mi">20 Oct</span></div> </div> </article> <article class="t8-lcard"> <a class="t8-lcard-thumb" href="https://aeo-growth.com/geo-crm-and-ai-2026-s-conversion-uplift-secret/" aria-label="Geo-CRM & AI: 2026’s Conversion Uplift Secret"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-300x200.webp?v=1792518722" class="attachment-site-thumb size-site-thumb wp-post-image" alt="Geo-CRM & AI: 2026’s Conversion Uplift Secret" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-400x267.webp 400w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div class="t8-lcard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/digital-marketing/">Digital Marketing</a> </div> <h4 class="t8-lcard-title"><a href="https://aeo-growth.com/geo-crm-and-ai-2026-s-conversion-uplift-secret/">Geo-CRM & AI: 2026’s Conversion Uplift Secret</a></h4> <div class="t8-metaline t8-metaline--sm"><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>2</span><span class="t8-mi">20 Oct</span></div> </div> </article> <article class="t8-lcard"> <a class="t8-lcard-thumb" href="https://aeo-growth.com/maker-marketing-myths-5-truths-for-2026/" aria-label="Maker Marketing Myths: 5 Truths for 2026"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-300x200.webp?v=1792498795" class="attachment-site-thumb size-site-thumb wp-post-image" alt="Maker Marketing Myths: 5 Truths for 2026" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-400x267.webp 400w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div class="t8-lcard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/digital-marketing/">Digital Marketing</a> </div> <h4 class="t8-lcard-title"><a href="https://aeo-growth.com/maker-marketing-myths-5-truths-for-2026/">Maker Marketing Myths: 5 Truths for 2026</a></h4> <div class="t8-metaline t8-metaline--sm"><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>5</span><span class="t8-mi">20 Oct</span></div> </div> </article> <article class="t8-lcard"> <a class="t8-lcard-thumb" href="https://aeo-growth.com/ai-martech-15-budget-cuts-by-q3-2026/" aria-label="AI Martech: 15% Budget Cuts by Q3 2026"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/ai-martech-15-budget-cuts-by-q3-2026-featured-300x200.webp?v=1792486635" class="attachment-site-thumb size-site-thumb wp-post-image" alt="AI Martech: 15% Budget Cuts by Q3 2026" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/ai-martech-15-budget-cuts-by-q3-2026-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/ai-martech-15-budget-cuts-by-q3-2026-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/ai-martech-15-budget-cuts-by-q3-2026-featured-400x267.webp 400w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div class="t8-lcard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/marketing-tech/">Marketing Tech</a> </div> <h4 class="t8-lcard-title"><a href="https://aeo-growth.com/ai-martech-15-budget-cuts-by-q3-2026/">AI Martech: 15% Budget Cuts by Q3 2026</a></h4> <div class="t8-metaline t8-metaline--sm"><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>5</span><span class="t8-mi">20 Oct</span></div> </div> </article> </div> <div class="t8-tab-panel" data-panel="popular"> <article class="t8-lcard"> <a class="t8-lcard-thumb" href="https://aeo-growth.com/content-structure-your-marketing-superpower/" aria-label="Content Structure: Your Marketing Superpower"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/content-structure-your-marketing-superpower-featured-300x200.webp?v=1774439783" class="attachment-site-thumb size-site-thumb wp-post-image" alt="Content Structure: Your Marketing Superpower" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/content-structure-your-marketing-superpower-featured-300x200.webp?v=1774439783 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/content-structure-your-marketing-superpower-featured-600x400.webp?v=1774439783 600w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div class="t8-lcard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/campaign-insights/">Campaign Insights</a> </div> <h4 class="t8-lcard-title"><a href="https://aeo-growth.com/content-structure-your-marketing-superpower/">Content Structure: Your Marketing Superpower</a></h4> <div class="t8-metaline t8-metaline--sm"><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>394</span><span class="t8-mi">25 Mar</span></div> </div> </article> <article class="t8-lcard"> <a class="t8-lcard-thumb" href="https://aeo-growth.com/answer-engine-optimization-2026-marketing-strategies/" aria-label="Answer Engine Optimization: 2026 Marketing Strategies"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/answer-engine-optimization-2026-marketing-strategies-featured-300x200.webp?v=1773397736" class="attachment-site-thumb size-site-thumb wp-post-image" alt="Answer Engine Optimization: 2026 Marketing Strategies" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/answer-engine-optimization-2026-marketing-strategies-featured-300x200.webp?v=1773397736 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/answer-engine-optimization-2026-marketing-strategies-featured-600x400.webp?v=1773397736 600w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div class="t8-lcard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/digital-marketing/">Digital Marketing</a> </div> <h4 class="t8-lcard-title"><a href="https://aeo-growth.com/answer-engine-optimization-2026-marketing-strategies/">Answer Engine Optimization: 2026 Marketing Strategies</a></h4> <div class="t8-metaline t8-metaline--sm"><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>375</span><span class="t8-mi">13 Mar</span></div> </div> </article> <article class="t8-lcard"> <a class="t8-lcard-thumb" href="https://aeo-growth.com/faq-optimization-your-2026-marketing-powerhouse/" aria-label="FAQ Optimization: Your 2026 Marketing Powerhouse"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/faq-optimization-your-2026-marketing-powerhouse-featured-300x200.webp?v=1773690299" class="attachment-site-thumb size-site-thumb wp-post-image" alt="FAQ Optimization: Your 2026 Marketing Powerhouse" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/faq-optimization-your-2026-marketing-powerhouse-featured-300x200.webp?v=1773690299 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/faq-optimization-your-2026-marketing-powerhouse-featured-600x400.webp?v=1773690299 600w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div class="t8-lcard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/customer-experience/">Customer Experience</a> </div> <h4 class="t8-lcard-title"><a href="https://aeo-growth.com/faq-optimization-your-2026-marketing-powerhouse/">FAQ Optimization: Your 2026 Marketing Powerhouse</a></h4> <div class="t8-metaline t8-metaline--sm"><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>353</span><span class="t8-mi">15 Mar</span></div> </div> </article> <article class="t8-lcard"> <a class="t8-lcard-thumb" href="https://aeo-growth.com/aeo-boost-roi-with-ai-powered-answers-in-2026/" aria-label="AEO: Boost ROI with AI-Powered Answers in 2026"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/aeo-boost-roi-with-ai-powered-answers-in-2026-featured-300x200.webp?v=1773596542" class="attachment-site-thumb size-site-thumb wp-post-image" alt="AEO: Boost ROI with AI-Powered Answers in 2026" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/aeo-boost-roi-with-ai-powered-answers-in-2026-featured-300x200.webp?v=1773596542 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/aeo-boost-roi-with-ai-powered-answers-in-2026-featured-600x400.webp?v=1773596542 600w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div class="t8-lcard-body"> <div class="t8-metaline"> <a class="t8-cat" href="https://aeo-growth.com/category/customer-experience/">Customer Experience</a> </div> <h4 class="t8-lcard-title"><a href="https://aeo-growth.com/aeo-boost-roi-with-ai-powered-answers-in-2026/">AEO: Boost ROI with AI-Powered Answers in 2026</a></h4> <div class="t8-metaline t8-metaline--sm"><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>342</span><span class="t8-mi">15 Mar</span></div> </div> </article> </div> </div> <div class="t8-widget"> <div class="t8-widget-head"><span class="t8-widget-title">Most Viewed</span></div> <article class="t8-ocard t8-reveal"> <a class="t8-ocard-media" href="https://aeo-growth.com/content-structure-your-marketing-superpower/" aria-label="Content Structure: Your Marketing Superpower"> <img width="600" height="400" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/content-structure-your-marketing-superpower-featured-600x400.webp?v=1774439783" class="attachment-site-card size-site-card wp-post-image" alt="Content Structure: Your Marketing Superpower" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/content-structure-your-marketing-superpower-featured-600x400.webp?v=1774439783 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/03/content-structure-your-marketing-superpower-featured-300x200.webp?v=1774439783 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /> <span class="t8-ocard-shade"></span> </a> <div class="t8-ocard-body"> <div class="t8-metaline t8-metaline--ondark"> <a class="t8-cat" href="https://aeo-growth.com/category/campaign-insights/">Campaign Insights</a> <span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>0</span><span class="t8-mi"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>394</span> </div> <h3 class="t8-ocard-title"><a href="https://aeo-growth.com/content-structure-your-marketing-superpower/">Content Structure: Your Marketing Superpower</a></h3> <div class="t8-byline"> <span class="t8-byline-av"><img fetchpriority="low" alt='' src='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=34&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/b76802ede79969ef5e7d80f0d7282f06271ddedfc0d834837fa8c14b810d1b39?s=68&d=mm&r=g 2x' class='avatar avatar-34 photo' height='34' width='34' loading='lazy' decoding='async'/></span> <span class="t8-byline-meta"> <a class="t8-byline-name" href="https://aeo-growth.com/author/aeogrowteditorialteam/">Editorial Team</a> <span class="t8-byline-date">25 March 2026</span> </span> </div> </div> </article> </div> <div class="t8-widget t8-widget--subscribe"> <span class="t8-sub-eyebrow">Subscribe</span> <h3 class="t8-sub-title">Newsletter</h3> <p class="t8-sub-sub">Get Latest Updates</p> <form class="t8-sub-form site-newsletter-form" data-nl-source="sidebar"> <input type="email" name="email" placeholder="Enter your email address" aria-label="Enter your email address" /> <button type="submit">Subscribe</button> </form> </div> <div class="t8-widget"> <div class="t8-widget-head"><span class="t8-widget-title">Categories</span></div> <ul class="t8-cat-list"> <li><a href="https://aeo-growth.com/category/ai-agent-attribution/"><span style="background:#2130ff"></span>AI Agent Attribution</a><em>148</em></li> <li><a href="https://aeo-growth.com/category/digital-marketing/"><span style="background:#2130ff"></span>Digital Marketing</a><em>2948</em></li> <li><a href="https://aeo-growth.com/category/content-strategy/"><span style="background:#2130ff"></span>Content Strategy</a><em>1412</em></li> <li><a href="https://aeo-growth.com/category/marketing-tech/"><span style="background:#2130ff"></span>Marketing Tech</a><em>784</em></li> <li><a href="https://aeo-growth.com/category/marketing-analytics/"><span style="background:#2130ff"></span>Marketing Analytics</a><em>522</em></li> <li><a href="https://aeo-growth.com/category/customer-experience/"><span style="background:#2130ff"></span>Customer Experience</a><em>498</em></li> <li><a href="https://aeo-growth.com/category/expert-opinions/"><span style="background:#2130ff"></span>Expert Opinions</a><em>419</em></li> <li><a href="https://aeo-growth.com/category/social-media/"><span style="background:#2130ff"></span>Social Media</a><em>387</em></li> </ul> </div> </aside> </div> </main> </div> <footer class="t8-footer" role="contentinfo"> <div class="t8-container"> <div class="t8-footer-grid"> <div class="t8-footer-col t8-footer-col--brand"> <a class="t8-footer-brand" href="https://aeo-growth.com/"> <span class="t8-brand-mark" aria-hidden="true"><svg width="30" height="30" viewBox="0 0 40 40" fill="none"><path d="M6 34V6h9l10 15V6h5v28h-9L11 19v15z" fill="currentColor"/></svg></span> <span class="t8-footer-logo">AEO Growth</span> </a> <p class="t8-footer-about">Expert insights, guides, and stories about marketing</p> <form class="t8-footer-subscribe site-newsletter-form" data-nl-source="footer"> <input type="email" name="email" required placeholder="Enter your email address" aria-label="Enter your email address" /> <button type="submit">Subscribe</button> </form> </div> <div class="t8-footer-col"> <h4 class="t8-footer-title">Categories</h4> <ul class="t8-footer-links"> <li><a href="https://aeo-growth.com/category/ai-agent-attribution/">AI Agent Attribution</a></li> <li><a href="https://aeo-growth.com/category/digital-marketing/">Digital Marketing</a></li> <li><a href="https://aeo-growth.com/category/content-strategy/">Content Strategy</a></li> <li><a href="https://aeo-growth.com/category/marketing-tech/">Marketing Tech</a></li> <li><a href="https://aeo-growth.com/category/marketing-analytics/">Marketing Analytics</a></li> </ul> </div> <div class="t8-footer-col"> <h4 class="t8-footer-title">Quick Links</h4> <ul class="t8-footer-links"> <li><a href="https://aeo-growth.com/">Home</a></li><li><a href="https://aeo-growth.com/about/">About</a></li><li><a href="https://aeo-growth.com/contact/">Contact</a></li><li><a href="https://aeo-growth.com/privacy-policy/">Privacy Policy</a></li><li><a href="https://aeo-growth.com/terms-of-service/">Terms of Service</a></li> </ul> </div> <div class="t8-footer-col"> <h4 class="t8-footer-title">Latest Posts</h4> <div class="t8-footer-post"> <a class="t8-footer-post-thumb" href="https://aeo-growth.com/aeo-global-logistics-2026-compliance-imperative/"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/aeo-global-logistics-2026-compliance-imperative-featured-300x200.webp?v=1792514329" class="attachment-site-thumb size-site-thumb wp-post-image" alt="AEO: Global Logistics’ 2026 Compliance Imperative" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/aeo-global-logistics-2026-compliance-imperative-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/aeo-global-logistics-2026-compliance-imperative-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/aeo-global-logistics-2026-compliance-imperative-featured-400x267.webp 400w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div> <div class="t8-footer-post-date">20 Oct 2026</div> <a class="t8-footer-post-title" href="https://aeo-growth.com/aeo-global-logistics-2026-compliance-imperative/">AEO: Global Logistics’ 2026 Compliance Imperative</a> </div> </div> <div class="t8-footer-post"> <a class="t8-footer-post-thumb" href="https://aeo-growth.com/geo-crm-and-ai-2026-s-conversion-uplift-secret/"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-300x200.webp?v=1792518722" class="attachment-site-thumb size-site-thumb wp-post-image" alt="Geo-CRM & AI: 2026’s Conversion Uplift Secret" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/geo-crm-ai-2026-s-conversion-uplift-secret-featured-400x267.webp 400w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div> <div class="t8-footer-post-date">20 Oct 2026</div> <a class="t8-footer-post-title" href="https://aeo-growth.com/geo-crm-and-ai-2026-s-conversion-uplift-secret/">Geo-CRM & AI: 2026’s Conversion Uplift Secret</a> </div> </div> <div class="t8-footer-post"> <a class="t8-footer-post-thumb" href="https://aeo-growth.com/maker-marketing-myths-5-truths-for-2026/"> <img width="300" height="200" src="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-300x200.webp?v=1792498795" class="attachment-site-thumb size-site-thumb wp-post-image" alt="Maker Marketing Myths: 5 Truths for 2026" loading="lazy" decoding="async" srcset="https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-300x200.webp 300w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-600x400.webp 600w, https://aeo-growth.com/wp-content/uploads/sites/42/2026/10/maker-marketing-myths-5-truths-for-2026-featured-400x267.webp 400w" sizes="auto, (max-width: 300px) 100vw, 300px" /> </a> <div> <div class="t8-footer-post-date">20 Oct 2026</div> <a class="t8-footer-post-title" href="https://aeo-growth.com/maker-marketing-myths-5-truths-for-2026/">Maker Marketing Myths: 5 Truths for 2026</a> </div> </div> </div> </div> </div> <div class="t8-footer-bottom-wrap"> <div class="t8-container t8-footer-bottom"> <span><strong>AEO Growth</strong> ©2026. All rights reserved.</span> <span class="t8-footer-bottom-links"><a href="https://aeo-growth.com/privacy-policy/">Privacy Policy</a><a href="https://aeo-growth.com/contact/">Contact Us</a><a href="https://aeo-growth.com/unsubscribe/">Unsubscribe</a></span> </div> </div> </footer> <script> (function(){ function openLead(source){ try { if (window.LawyerLeadFormV2 && window.LawyerLeadFormV2.open) { window.LawyerLeadFormV2.open(source); return true; } if (window.AeoLeadPopup && window.AeoLeadPopup.open) { window.AeoLeadPopup.open(source); return true; } if (window.ExitIntentPopup && window.ExitIntentPopup.open) { window.ExitIntentPopup.open(source); return true; } document.dispatchEvent(new CustomEvent('site:open-lead-popup', {detail: {source: source}})); return true; } catch(e){ return false; } } document.querySelectorAll('[data-t8-cta-trigger]').forEach(function(el){ el.addEventListener(el.tagName === 'FORM' ? 'submit' : 'click', function(e){ e.preventDefault(); if (!openLead('t8_cta')) { var f = document.getElementById('t8-subscribe'); if (f) f.scrollIntoView({behavior:'smooth', block:'center'}); } }); }); })(); </script> <script id="sat-tts-script"> (function(){ if (!('speechSynthesis' in window) || !('SpeechSynthesisUtterance' in window)) { document.querySelectorAll('.sat-tts-player').forEach(function(el){ el.setAttribute('data-state', 'unsupported'); var t = el.querySelector('.sat-tts-title-text'); var i18n = el.querySelector('.sat-tts-i18n'); if (t && i18n) t.textContent = i18n.dataset.unsupported; }); return; } var player = document.querySelector('.sat-tts-player[data-sat-tts]'); if (!player) return; var contentRoot = document.querySelector('.post-content') || document.querySelector('article .single-post-main') || document.querySelector('article'); if (!contentRoot) return; var toggleBtn = player.querySelector('.sat-tts-toggle'); var rateBtn = player.querySelector('.sat-tts-rate'); var titleText = player.querySelector('.sat-tts-title-text'); var progressEl = player.querySelector('.sat-tts-progress-fill'); var i18n = player.querySelector('.sat-tts-i18n'); var STORAGE_KEY = 'sat_tts_v1_' + (location.pathname || '/'); var RATE_CYCLE = [1, 1.25, 1.5, 2, 0.85]; // ── Build chunks ───────────────────────────────────────────── // Strip HTML to a clean, sequential text array. We skip elements // that read awkwardly aloud (figures, embedded video/audio, the // related-callout sidebars, FAQ schema-heavy sections, code). function buildChunks(root) { var clone = root.cloneNode(true); // Remove things we never want spoken. clone.querySelectorAll( 'script,style,figure,iframe,video,audio,svg,noscript,' + 'aside,.related-callout,.sidebar-share,.sat-tts-player,' + '.article-feedback,.author-bio,.post-tags,.read-next-bar,' + '.post-navigation,.related-posts,form,nav,.toc-container' ).forEach(function(n){ n.parentNode && n.parentNode.removeChild(n); }); var blockSel = 'h1,h2,h3,h4,h5,h6,p,li,blockquote,td,th,dt,dd'; var blocks = clone.querySelectorAll(blockSel); var chunks = []; blocks.forEach(function(b){ var t = (b.textContent || '').replace(/\s+/g, ' ').trim(); if (!t) return; // Long paragraphs: break on sentence boundaries so Chrome // doesn't silently drop after ~15s of a single utterance. if (t.length > 220) { var sentences = t.match(/[^.!?]+[.!?]+(?:\s|$)|[^.!?]+$/g) || [t]; var buf = ''; sentences.forEach(function(s){ s = s.trim(); if (!s) return; if ((buf + ' ' + s).trim().length > 220 && buf) { chunks.push(buf.trim()); buf = s; } else { buf = (buf ? buf + ' ' : '') + s; } }); if (buf.trim()) chunks.push(buf.trim()); } else { chunks.push(t); } }); return chunks; } var chunks = buildChunks(contentRoot); if (chunks.length === 0) return; var totalChars = chunks.reduce(function(a,c){ return a + c.length; }, 0); // ── State machine ─────────────────────────────────────────── var state = { playing: false, paused: false, chunkIndex: 0, charsSpoken: 0, rate: 1, voice: null, currentUtter: null, }; try { var saved = JSON.parse(localStorage.getItem(STORAGE_KEY) || 'null'); if (saved && typeof saved.chunkIndex === 'number' && saved.chunkIndex < chunks.length) { state.chunkIndex = saved.chunkIndex; state.charsSpoken = saved.charsSpoken || 0; state.rate = saved.rate || 1; } } catch (e) {} applyRate(state.rate); updateProgress(); // ── Voice selection ───────────────────────────────────────── // speechSynthesis populates voices async on most browsers. The // picker: // 1. filters by html lang prefix (en/es/...) // 2. drops novelty/character voices (Apple ships ~30 of them // and they sort BEFORE the natural ones on macOS, which is // why an unguarded pool[0] fallback ends up reading // Spanish articles in Eddy/Flo/Reed instead of Mónica) // 3. ranks survivors by an explicit per-language preference // list of high-quality voices, with a fallback that prefers // `localService` (built-in premium) over remote voices. var NOVELTY_NAME_RE = /^(Albert|Bad News|Bahh|Bells|Boing|Bubbles|Cellos|Deranged|Good News|Hysterical|Pipe Organ|Trinoids|Whisper|Wobble|Zarvox|Eddy|Flo|Grandma|Grandpa|Jester|Junior|Kathy|Organ|Princess|Ralph|Reed|Rocko|Sandy|Shelley|Superstar|Vicki|Victoria|Bahh|Boing|Cellos)\b/i; var PREFERRED_BY_LANG = { es: [ // macOS / iOS premium Spanish voices (best quality) /^M[oó]nica/i, // es-ES, very natural /^Paulina/i, // es-MX, very natural /^Jorge\b/i, // es-ES /^Diego\b/i, // es-AR /^Juan\b/i, // Microsoft Edge / Windows neural Spanish voices /Microsoft.*\b(Elvira|Dalia|Alvaro|Jorge|Helena|Sabina)\b.*Online/i, /Microsoft.*\b(Elvira|Dalia|Alvaro)\b/i, // Google Spanish (Chrome desktop, Android) /^Google\s+espa[ñn]ol(?:\s+de\s+(?:M[eé]xico|Estados Unidos))?$/i, /^Google\s+espa[ñn]ol/i, ], en: [ /^Google\s.*(US|UK|English)/i, /^Microsoft.*(Aria|Jenny|Guy|Ryan|Davis)\b.*Online/i, /^Microsoft.*(Aria|Jenny|Guy|Ryan|Davis)\b/i, /^Samantha$/i, /^Alex$/i, /English/i, ], }; function scoreVoice(v, preferredList) { for (var i = 0; i < preferredList.length; i++) { if (preferredList[i].test(v.name)) { // Earlier list entries score higher. localService gets a // small bump so a built-in voice wins over a remote one // when both match the same pattern. return 1000 - i * 10 + (v.localService ? 1 : 0); } } // No name match — still prefer non-novelty + localService. return (v.localService ? 1 : 0); } function pickVoice() { var voices = speechSynthesis.getVoices() || []; if (voices.length === 0) return null; var lang = (document.documentElement.lang || 'en').toLowerCase().split('-')[0]; var pool = voices.filter(function(v){ return (v.lang || '').toLowerCase().indexOf(lang) === 0; }); if (pool.length === 0) pool = voices; // Strip novelty voices unless that leaves us with nothing. var filtered = pool.filter(function(v){ return !NOVELTY_NAME_RE.test(v.name); }); if (filtered.length > 0) pool = filtered; var preferredList = PREFERRED_BY_LANG[lang] || PREFERRED_BY_LANG.en; var best = null, bestScore = -Infinity; pool.forEach(function(v){ var s = scoreVoice(v, preferredList); if (s > bestScore) { bestScore = s; best = v; } }); return best || pool[0]; } if (typeof speechSynthesis.addEventListener === 'function') { speechSynthesis.addEventListener('voiceschanged', function(){ state.voice = pickVoice(); }); } state.voice = pickVoice(); // ── Utterance queue ───────────────────────────────────────── function speakNext() { if (state.chunkIndex >= chunks.length) { stopAll(true); return; } var u = new SpeechSynthesisUtterance(chunks[state.chunkIndex]); u.rate = state.rate; u.pitch = 1; u.volume = 1; // Setting `lang` explicitly is what triggers the Spanish // synthesis backend on Chrome/Edge (which shipped neural // Spanish voices that aren't always exposed via getVoices // until referenced). When `voice` is set we prefer the // voice's own lang to avoid a mismatch. if (state.voice) { u.voice = state.voice; if (state.voice.lang) u.lang = state.voice.lang; } else { u.lang = (document.documentElement.lang || 'en'); } u.onend = function() { if (!state.playing) return; state.charsSpoken += chunks[state.chunkIndex].length; state.chunkIndex += 1; persist(); updateProgress(); if (state.chunkIndex < chunks.length) { speakNext(); } else { stopAll(true); } }; u.onerror = function(ev) { if (ev && ev.error === 'interrupted') return; state.playing = false; state.paused = false; state.currentUtter = null; renderState(); }; u.onboundary = function(ev) { if (ev && typeof ev.charIndex === 'number') { var partial = state.charsSpoken + Math.min(ev.charIndex, chunks[state.chunkIndex].length); var pct = Math.min(100, (partial / totalChars) * 100); progressEl.style.width = pct + '%'; } }; state.currentUtter = u; speechSynthesis.speak(u); } function play() { if (state.paused) { speechSynthesis.resume(); state.paused = false; state.playing = true; renderState(); return; } // Some browsers leave the queue stuck after a previous error; // cancel before starting fresh. try { speechSynthesis.cancel(); } catch (e) {} state.playing = true; state.paused = false; renderState(); speakNext(); } function pause() { if (!state.playing) return; try { speechSynthesis.pause(); } catch (e) {} state.paused = true; state.playing = false; persist(); renderState(); } function stopAll(reset) { try { speechSynthesis.cancel(); } catch (e) {} state.playing = false; state.paused = false; state.currentUtter = null; if (reset) { state.chunkIndex = 0; state.charsSpoken = 0; progressEl.style.width = '0%'; try { localStorage.removeItem(STORAGE_KEY); } catch (e) {} } renderState(); } // ── Rate cycle ───────────────────────────────────────────── function applyRate(r) { state.rate = r; rateBtn.textContent = r.toFixed(2).replace(/\.?0+$/, '') + 'x'; persist(); } rateBtn.addEventListener('click', function(){ var i = RATE_CYCLE.indexOf(state.rate); var next = RATE_CYCLE[(i + 1) % RATE_CYCLE.length]; applyRate(next); // If currently playing, restart the current chunk at the // new rate (Web Speech doesn't let you change rate mid-utter). if (state.playing && state.currentUtter) { stopAll(false); state.playing = true; renderState(); speakNext(); } }); toggleBtn.addEventListener('click', function(){ if (state.playing) { pause(); } else { play(); } }); // ── Chrome 15-second cutoff workaround ───────────────────── // Chrome stops Web Speech after ~15s of continuous output. We // ping pause+resume every 10s while playing to keep the queue // alive. Harmless on browsers that don't need it. setInterval(function(){ if (state.playing && !state.paused) { try { speechSynthesis.pause(); speechSynthesis.resume(); } catch (e) {} } }, 10000); // ── Persistence + UI ─────────────────────────────────────── function persist() { try { localStorage.setItem(STORAGE_KEY, JSON.stringify({ chunkIndex: state.chunkIndex, charsSpoken: state.charsSpoken, rate: state.rate, })); } catch (e) {} } function updateProgress() { var pct = totalChars ? Math.min(100, (state.charsSpoken / totalChars) * 100) : 0; progressEl.style.width = pct + '%'; } function renderState() { if (!i18n) return; if (state.playing) { player.setAttribute('data-state', 'playing'); titleText.textContent = i18n.dataset.playing; toggleBtn.setAttribute('aria-label', 'Pause'); } else if (state.paused) { player.setAttribute('data-state', 'paused'); titleText.textContent = i18n.dataset.paused; toggleBtn.setAttribute('aria-label', 'Resume'); } else { player.removeAttribute('data-state'); titleText.textContent = i18n.dataset.listen; toggleBtn.setAttribute('aria-label', 'Play'); } } // ── GA4 listen events ───────────────────────────────────── // Fire a small custom event the first time a visitor presses // play, so we can answer "does the listen button move // engagement?" from the analytics dashboard. var firedFirstPlay = false; toggleBtn.addEventListener('click', function(){ if (firedFirstPlay) return; if (typeof window.gtag === 'function') { try { window.gtag('event', 'tts_listen_play', { event_category: 'engagement', event_label: location.pathname, value: 1, }); } catch (e) {} } firedFirstPlay = true; }); // Stop speech when the visitor leaves the page so it doesn't // continue narrating in the background after navigation. window.addEventListener('beforeunload', function(){ try { speechSynthesis.cancel(); } catch (e) {} }); })(); </script> <script> (function(){ var SUB="https:\/\/aeo-growth.com\/wp-json\/site\/v1\/newsletter"; var UNSUB="https:\/\/aeo-growth.com\/wp-json\/site\/v1\/newsletter\/unsubscribe"; var PAGE="https:\/\/aeo-growth.com\/unsubscribe\/"; var LANG=(document.documentElement.lang||'en').slice(0,2); var SEL=[ 'form.site-newsletter-form', 'form.newsletter-form', 'form.t1-newsletter-form','form.t1-footer-subscribe', 'form.t4-footer-subscribe','form.t4-sub-form', 'form.t5-footer-subscribe','form.t5-sub-form', 'form.t6-footer-subscribe','form.t6-sub-form', 'form.t7-news-form','form.t7-stayup-form','form.t7-sub-form', 'form.t8-sub-form','form.t8-footer-subscribe', 'form.t9-sub-form','form.t9-footer-subscribe', '.benqu-newsletter form' ].join(','); function msg(status, mode){ var es=LANG==='es'; if(mode==='unsubscribe') return es?"Te has dado de baja.":"You have been unsubscribed."; if(status==='already_subscribed') return es?"Ya est\u00e1s suscrito.":"You are already subscribed."; return es?"Te has suscrito.":"You are subscribed."; } function sourceOf(form){ return form.getAttribute('data-nl-source') || (form.classList.contains('t1-newsletter-form')||form.classList.contains('t7-news-form')||form.classList.contains('newsletter-form')?'homepage': (form.closest('.t4-widget--subscribe,.t5-widget--subscribe,.t6-widget--subscribe,.t7-widget--subscribe,.t8-widget--subscribe,.t9-widget--subscribe')?'sidebar':'footer')); } function bind(form){ if(form.getAttribute('data-sat-nl')==='1') return; form.setAttribute('data-sat-nl','1'); ['data-t1-cta-trigger','data-t4-cta-trigger','data-t5-cta-trigger','data-t6-cta-trigger','data-t7-cta-trigger','data-t8-cta-trigger','data-t9-cta-trigger','data-benqu-cta-trigger'].forEach(function(a){ form.removeAttribute(a); }); if(form.getAttribute('data-nl-mode')!=='unsubscribe'){ var next=form.nextElementSibling; if(!next || !next.classList || !next.classList.contains('site-nl-unsub')){ var p=document.createElement('p'); p.className='site-nl-unsub'; p.innerHTML='<a href="'+PAGE+'">Unsubscribe</a>'; form.insertAdjacentElement('afterend', p); } } form.addEventListener('submit', function(e){ e.preventDefault(); e.stopImmediatePropagation(); var input=form.querySelector('input[type="email"]'); var btn=form.querySelector('button[type="submit"],button:not([type]),input[type="submit"]'); if(!input||!input.value) return; var mode=form.getAttribute('data-nl-mode')==='unsubscribe'?'unsubscribe':'subscribe'; var endpoint=mode==='unsubscribe'?UNSUB:SUB; var orig=btn?btn.textContent:''; if(btn){btn.disabled=true;btn.textContent='...';} fetch(endpoint,{ method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({email:input.value,source:sourceOf(form)}) }).then(function(r){return r.json();}).then(function(data){ if(data && data.success){ var note=document.createElement('p'); note.style.cssText='font-weight:600;padding:12px 0;margin:0;'; note.textContent=msg(data.status,mode); form.innerHTML=''; form.appendChild(note); }else{ if(btn){btn.textContent=(data&&data.message)||'Error';btn.disabled=false;} } }).catch(function(){ if(btn){btn.textContent='Error';setTimeout(function(){btn.textContent=orig;btn.disabled=false;},2000);} }); }, true); } function scan(){ document.querySelectorAll(SEL).forEach(bind); } scan(); if(window.MutationObserver){ new MutationObserver(scan).observe(document.body,{childList:true,subtree:true}); } })(); </script> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/sites/42/*","/wp-content/*","/wp-content/plugins/*","/wp-content/static/theme8/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script src="https://aeo-growth.com/wp-content/static/theme8/assets/main.js?ver=1.0.1" id="theme8-main-js"></script> <script> (function(){ var DOMAIN="aeo-growth.com"; var EVENT="https:\/\/aeo-growth.com\/wp-json\/site\/v1\/lead-event"; function vid(){ try{ var k='_vid',v=localStorage.getItem(k); if(!v){v=(crypto&&crypto.randomUUID)?crypto.randomUUID():String(Date.now())+Math.random().toString(16).slice(2);localStorage.setItem(k,v);} return v; }catch(e){return 'anon';} } function internal(host){ host=host.replace(/^www\./,''); return host===DOMAIN||host.slice(-DOMAIN.length-1)==='.'+DOMAIN; } document.addEventListener('click',function(ev){ var a=ev.target&&ev.target.closest?ev.target.closest('a[href]'):null; if(!a||a.getAttribute('data-ol')==='1') return; var url; try{url=new URL(a.getAttribute('href')||'',location.href);}catch(e){return;} if(!/^https?:$/.test(url.protocol)||internal(url.hostname.toLowerCase())) return; a.setAttribute('data-ol','1'); var body=JSON.stringify({ domain:DOMAIN, event_type:'link_click', visitor_id:vid(), page_url:location.href, metadata_json:JSON.stringify({host:url.hostname.toLowerCase(),href:url.href,path:url.pathname}) }); try{ if(navigator.sendBeacon){navigator.sendBeacon(EVENT,new Blob([body],{type:'application/json'}));} else{fetch(EVENT,{method:'POST',keepalive:true,headers:{'Content-Type':'application/json'},body:body}).catch(function(){});} }catch(e){} },true); })(); </script> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=DM+Mono:wght@400;500&display=swap" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=DM+Mono:wght@400;500&display=swap"></noscript> <style id="aeo-popup-styles"> #aeo-popup-root { --accent: #E8471A; --accent-dim: #C93C12; --accent-mid: #F07040; --accent-soft: #F9A07A; --card-bg: linear-gradient(105deg, #ffffff 0%, #fff4f0 40%, #ffeee7 70%, #ffffff 100%); --card-fade: #fff8f5; --bar-bg: linear-gradient(105deg, #ffffff 0%, #fff4f0 40%, #ffeee7 70%, #ffffff 100%); --cta-grad: linear-gradient(90deg, #E8471A 0%, #F07040 50%, #E8471A 100%); --cta-text: #ffffff; --shadow-rgb: 232,71,26; --ink: #111111; --ink-soft: #555555; --ink-faint: #999999; --border: #E2E4DC; --banner-h: 88px; /* "Google Sans" is in the stack as the brand fallback for installs that have it locally (e.g. internal Google environments); Inter is the loaded webfont and the de-facto free substitute. */ --font-display: 'Inter', 'Google Sans', system-ui, sans-serif; --font-body: 'Inter', 'Google Sans', system-ui, sans-serif; --font-mono: 'DM Mono', ui-monospace, Menlo, monospace; } #aeo-popup-root, #aeo-popup-root * { box-sizing: border-box; } @keyframes aeoPulse { 0%,100% { opacity:1; transform:scale(1); } 50% { opacity:.4; transform:scale(.7); } } @keyframes aeoCtaShimmer { 0% { background-position:0% 0%; } 50% { background-position:100% 0%; } 100% { background-position:0% 0%; } } @keyframes aeoBannerBreathe{ 0% { background-position:0% 50%; } 50% { background-position:100% 50%; } 100% { background-position:0% 50%; } } @keyframes aeoCardSlideUp { to { transform: translateY(0); opacity: 1; } } @keyframes aeoCardSlideDown{ to { transform: translateY(calc(100% + 32px)); opacity: 0; } } @keyframes aeoBarSlideUp { to { transform: translateY(0); opacity: 1; } } @keyframes aeoScTicker { 0% { transform: translateX(0); } 100% { transform: translateX(-33.3333%); } } /* ── STICKY CARD (bottom-left, initial state) ────────────────────── Default state is hidden -- JS adds .aeo-iframe-ready on the root once the modal iframe has finished loading in the background (or after a safety timeout), so the slide-up coincides with the funnel being click-ready. */ #aeo-popup-root .sticky-card { position: fixed; bottom: 24px; left: 24px; z-index: 9990; width: 340px; border-radius: 16px; overflow: hidden; border: 1px solid var(--border); box-shadow: 0 8px 40px rgba(var(--shadow-rgb),0.15), 0 2px 8px rgba(0,0,0,0.07); background: var(--card-bg); background-size: 300% 300%; transform: translateY(calc(100% + 32px)); opacity: 0; } #aeo-popup-root.aeo-iframe-ready .sticky-card { animation: aeoCardSlideUp 0.6s cubic-bezier(0.22,1,0.36,1) forwards, aeoBannerBreathe 5s ease-in-out 0.6s infinite; } #aeo-popup-root.aeo-skip-card .sticky-card { display: none; } #aeo-popup-root.aeo-lead-done .sticky-card, #aeo-popup-root.aeo-lead-done .sticky-banner { display: none; } #aeo-popup-root .sticky-card.hiding { animation: aeoCardSlideDown 0.4s cubic-bezier(0.4,0,1,1) forwards !important; } /* ── Border Beam ─────────────────────────────────────── A bright accent-coloured "comet" travels around the card perimeter. Implemented as a single ::before pseudo-element: 1. conic-gradient paints the comet (transparent for ~75% of the circle, then a soft -> bright -> soft fade across the last ~100°), 2. mask-composite:exclude cuts the inside out so only a 2px ring remains -- the comet appears to glide along the border, 3. @property animates the gradient's `from` angle so the rotation is on the gradient itself, not via transform (no sub-pixel shimmer, no GPU compositing cost, and the corners stay sharp). Browsers without @property (older Firefox <128, older Safari <16.4) render the gradient statically -- graceful degradation. */ @property --aeo-beam-angle { syntax: '<angle>'; initial-value: 0deg; inherits: false; } #aeo-popup-root .sticky-card::before { content: ''; position: absolute; inset: 0; border-radius: inherit; padding: 2px; background: conic-gradient( from var(--aeo-beam-angle), transparent 0deg, transparent 250deg, var(--accent-soft) 305deg, var(--accent) 340deg, var(--accent-soft) 360deg ); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; z-index: 1; opacity: 0; transition: opacity .4s ease; } #aeo-popup-root.aeo-iframe-ready .sticky-card::before { opacity: 1; animation: aeoBeamRotate 5s linear infinite; } @keyframes aeoBeamRotate { to { --aeo-beam-angle: 360deg; } } #aeo-popup-root .sc-inner { padding: 18px 18px 20px; } #aeo-popup-root .sc-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; } #aeo-popup-root .sc-label { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent-dim); display: flex; align-items: center; gap: 6px; } #aeo-popup-root .sc-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: aeoPulse 2s ease-in-out infinite; flex-shrink: 0; } #aeo-popup-root .sc-close { width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--border); background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center; color: var(--ink-faint); font-size: 16px; line-height: 1; transition: border-color .2s, color .2s, background .2s; flex-shrink: 0; padding: 0; } #aeo-popup-root .sc-close:hover { border-color: var(--ink); color: var(--ink); background: #F5F6F2; } #aeo-popup-root .sc-headline { font-family: var(--font-display); font-size: 19px; font-weight: 800; color: var(--ink); letter-spacing: -0.4px; line-height: 1.25; margin: 0 0 8px; } #aeo-popup-root .sc-sub { font-size: 13px; color: var(--ink-faint); line-height: 1.5; margin: 0 0 12px; font-family: var(--font-body); } #aeo-popup-root .sc-ticker-wrap { position: relative; overflow: hidden; margin-bottom: 14px; height: 28px; } #aeo-popup-root .sc-ticker-wrap::before, #aeo-popup-root .sc-ticker-wrap::after { content: ''; position: absolute; inset-block: 0; width: 20px; z-index: 2; pointer-events: none; } #aeo-popup-root .sc-ticker-wrap::before { left: 0; background: linear-gradient(to right, var(--card-fade), transparent); } #aeo-popup-root .sc-ticker-wrap::after { right: 0; background: linear-gradient(to left, var(--card-fade), transparent); } #aeo-popup-root .sc-ticker { /* Marquee math (do not change without revisiting both this rule AND the aeoScTicker keyframe + the JS that builds the chip list): - Each chip is 28px wide with an 8px trailing margin = 36px slot. - We render 3 copies of the 6-engine ticker = 18 chips = 648px. - One copy width = 6 * 36 = 216px = exactly 1/3 of the total. - The keyframe translates -33.3333% (= -216px), so the moment the first copy finishes scrolling out, the second copy is already occupying its exact original position. Seamless loop. We use margin-right on the chip (not flex gap) on purpose: flex gap only sits *between* siblings, which is one short for the cycle to line up with translateX. margin-right counts on every chip, so the total width is N*(chip+gap) and -1/N translation hits the boundary cleanly. Three copies is also what keeps the right edge of the card from ever going empty mid-scroll -- a single copy (216px) is narrower than the visible card content area, so doubled content would leave a gap on the right at the end of every cycle. */ display: flex; width: max-content; animation: aeoScTicker 18s linear infinite; align-items: center; height: 100%; } #aeo-popup-root .sc-logo-chip { width: 28px; height: 28px; border-radius: 8px; flex-shrink: 0; margin-right: 8px; display: flex; align-items: center; justify-content: center; overflow: hidden; /* Faint inset border. On dark/coloured chips it's invisible; on the white Copilot chip it's what keeps the icon from floating against the light card background. */ box-shadow: inset 0 0 0 1px rgba(0,0,0,0.06); } #aeo-popup-root .sc-logo-chip img { width: 18px; height: 18px; object-fit: contain; display: block; filter: drop-shadow(0 1px 1px rgba(0,0,0,0.15)); } /* Copilot-specific override: Microsoft's multicolor ribbon mark has finer detail than any of the other engines' marks (which are single- colour silhouettes), and its lighter gradient tips (cyan, yellow, pink) wash out at small sizes on a white chip. Bumping the image to nearly fill the 28px chip restores legibility. We target by [title] so future engine additions don't accidentally pick this up. */ #aeo-popup-root .sc-logo-chip[title="Copilot"] img { width: 24px; height: 24px; /* No drop-shadow on the Copilot icon -- the soft glow muddies the gradient ribbon. */ filter: none; } #aeo-popup-root .sc-cta { display: flex; align-items: center; justify-content: center; gap: 6px; width: 100%; font-family: var(--font-body); font-size: 14px; font-weight: 600; color: var(--cta-text); background: var(--cta-grad); background-size: 200% 100%; border: none; border-radius: 100px; padding: 11px 20px; cursor: pointer; text-decoration: none; animation: aeoCtaShimmer 3s ease-in-out 2.4s infinite; transition: transform .15s, box-shadow .2s; } #aeo-popup-root .sc-cta:hover { transform: scale(1.02); box-shadow: 0 4px 20px rgba(var(--shadow-rgb),0.4); animation-play-state: paused; } #aeo-popup-root .sc-cta .arrow { font-size: 15px; transition: transform .2s; } #aeo-popup-root .sc-cta:hover .arrow { transform: translateX(3px); } /* ── STICKY BAR (after card dismissed) ──────────────────────────── */ #aeo-popup-root .sticky-banner { position: fixed; bottom: 0; left: 0; right: 0; z-index: 9990; transform: translateY(100%); opacity: 0; pointer-events: none; background: var(--bar-bg); background-size: 300% 300%; border-top: 1px solid var(--border); box-shadow: 0 -4px 32px rgba(var(--shadow-rgb),0.08), 0 -1px 0 rgba(var(--shadow-rgb),0.15); } #aeo-popup-root .sticky-banner.visible { pointer-events: all; animation: aeoBarSlideUp 0.5s cubic-bezier(0.22,1,0.36,1) forwards, aeoBannerBreathe 5s ease-in-out 0.5s infinite; } #aeo-popup-root .sticky-banner::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, var(--accent) 0%, var(--accent-soft) 60%, transparent 100%); } #aeo-popup-root .banner-inner { max-width: 1240px; margin: 0 auto; padding: 0 32px; height: var(--banner-h); display: flex; align-items: center; gap: 24px; } #aeo-popup-root .banner-label { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent-dim); white-space: nowrap; flex-shrink: 0; display: flex; align-items: center; gap: 6px; } #aeo-popup-root .banner-label::before { content: ''; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: aeoPulse 2s ease-in-out infinite; } #aeo-popup-root .banner-divider-v { width: 1px; height: 32px; background: var(--border); flex-shrink: 0; } #aeo-popup-root .banner-headline { font-family: var(--font-display); font-size: 15px; font-weight: 800; color: var(--ink); letter-spacing: -0.3px; flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; } #aeo-popup-root .banner-sub { font-size: 13px; color: var(--ink-faint); flex-shrink: 0; white-space: nowrap; font-family: var(--font-body); } #aeo-popup-root .banner-cta { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-body); font-size: 14px; font-weight: 600; color: var(--cta-text); background: var(--cta-grad); background-size: 200% 100%; border: none; border-radius: 100px; padding: 11px 28px; cursor: pointer; text-decoration: none; white-space: nowrap; flex-shrink: 0; animation: aeoCtaShimmer 3s ease-in-out 0.5s infinite; transition: transform .15s, box-shadow .2s; } #aeo-popup-root .banner-cta:hover { transform: scale(1.03); box-shadow: 0 4px 20px rgba(var(--shadow-rgb),0.4); animation-play-state: paused; } #aeo-popup-root .banner-cta .arrow { font-size: 16px; line-height: 1; transition: transform .2s; } #aeo-popup-root .banner-cta:hover .arrow { transform: translateX(3px); } /* ── IFRAME MODAL (full-screen takeover) ────────────────────────── */ /* Matches the Verdict V2 full-page lead capture pattern: edge-to-edge shell, no card chrome, just a translucent floating top bar with "Back to article" and a close pill. The AEO funnel's own branding inside the iframe carries the visual weight. */ #aeo-popup-root .aeo-modal { position: fixed; inset: 0; z-index: 10000; background: #ffffff; display: flex; flex-direction: column; opacity: 0; pointer-events: none; transition: opacity .25s ease; } #aeo-popup-root .aeo-modal.open { opacity: 1; pointer-events: all; } #aeo-popup-root .aeo-modal-backdrop { display: none; } #aeo-popup-root .aeo-modal-shell { position: relative; z-index: 1; display: flex; flex-direction: column; width: 100%; height: 100%; background: #ffffff; } #aeo-popup-root .aeo-modal-bar { position: relative; z-index: 3; display: flex; align-items: center; justify-content: space-between; padding: 12px 20px; background: #ffffff; border-bottom: 1px solid rgba(0,0,0,0.06); flex-shrink: 0; } #aeo-popup-root .aeo-modal-back { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-body); font-size: 13px; font-weight: 500; color: var(--ink-soft); background: transparent; border: none; cursor: pointer; padding: 6px 8px; border-radius: 8px; transition: background .15s, color .15s; } #aeo-popup-root .aeo-modal-back:hover { background: #F0F1EC; color: var(--ink); } #aeo-popup-root .aeo-modal-iframe-wrap { position: relative; flex: 1; background: #ffffff; overflow: hidden; } #aeo-popup-root .aeo-modal-iframe { width: 100%; height: 100%; border: 0; display: block; background: #ffffff; } #aeo-popup-root .aeo-modal-loading { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-faint); background: #ffffff; transition: opacity .3s ease; z-index: 1; pointer-events: none; } #aeo-popup-root .aeo-modal-iframe-wrap.loaded .aeo-modal-loading { opacity: 0; } #aeo-popup-root .aeo-modal-loading .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: aeoPulse 1.2s ease-in-out infinite; margin-right: 8px; } /* lock background scroll when modal is open */ body.aeo-modal-open { overflow: hidden; } /* Bar collapses to headline + CTA on narrower viewports, but the card keeps its 340px bottom-left footprint all the way down to phone widths. Real phones (≤480px) get the full-width card so the CTA stays tappable. */ @media (max-width: 900px) { #aeo-popup-root .banner-inner { padding: 0 16px; gap: 12px; } #aeo-popup-root .banner-label, #aeo-popup-root .banner-divider-v, #aeo-popup-root .banner-sub { display: none; } #aeo-popup-root .banner-headline { font-size: 13px; } #aeo-popup-root .banner-cta { font-size: 13px; padding: 9px 18px; } } @media (max-width: 480px) { #aeo-popup-root .sticky-card { left: 12px; bottom: 12px; width: calc(100vw - 24px); } } @media (prefers-reduced-motion: reduce) { #aeo-popup-root .sticky-card, #aeo-popup-root .sticky-banner.visible, #aeo-popup-root .sc-cta, #aeo-popup-root .banner-cta { animation: none !important; } #aeo-popup-root.aeo-iframe-ready .sticky-card { transform: none; opacity: 1; } } </style> <div id="aeo-popup-root" data-variant="small-report" data-domain="aeo-growth.com"> <div class="sticky-card" id="aeoStickyCard" role="complementary" aria-label="AI Visibility Radar — Free AEO Report"> <div class="sc-inner"> <div class="sc-header"> <span class="sc-label"><span class="sc-dot"></span>AI VISIBILITY RADAR</span> <button type="button" class="sc-close" id="aeoCardClose" aria-label="Dismiss">×</button> </div> <p class="sc-headline">Are AI engines recommending your brand?</p> <p class="sc-sub">Check your score on 5 AI engines — instantly.</p> <div class="sc-ticker-wrap"><div class="sc-ticker" id="aeoScTicker"></div></div> <a href="#" class="sc-cta" id="aeoCardCta"> Check for Free <span class="arrow">→</span> </a> </div> </div> <div class="sticky-banner" id="aeoStickyBanner" role="complementary" aria-label="AI Visibility Radar — Free AEO Report"> <div class="banner-inner"> <span class="banner-label">AI VISIBILITY RADAR</span> <div class="banner-divider-v"></div> <p class="banner-headline">Are AI engines recommending your brand?</p> <span class="banner-sub">Check your score on 5 AI engines — instantly.</span> <a href="#" class="banner-cta" id="aeoBarCta"> Check for Free <span class="arrow">→</span> </a> </div> </div> <div class="aeo-modal" id="aeoModal" role="dialog" aria-modal="true" aria-label="AI Visibility Radar — Free AEO Report" aria-hidden="true"> <div class="aeo-modal-backdrop" data-aeo-close></div> <div class="aeo-modal-shell"> <header class="aeo-modal-bar"> <button type="button" class="aeo-modal-back" data-aeo-close> <span aria-hidden="true">←</span> Back to article </button> </header> <div class="aeo-modal-iframe-wrap" id="aeoModalIframeWrap"> <div class="aeo-modal-loading"><span class="dot"></span>Loading report…</div> <iframe id="aeoModalIframe" class="aeo-modal-iframe" title="AI Visibility Radar — Free AEO Report" referrerpolicy="no-referrer-when-downgrade" allow="clipboard-write" src="https://aeo.prod-mobtools.com/aeo/small-report?embed=1&utm_source=aeo-growth.com&utm_medium=satellite&utm_campaign=aeo-popup&utm_content=small-report"></iframe> </div> </div> </div> </div> <script id="aeo-popup-script"> (function () { var root = document.getElementById('aeo-popup-root'); if (!root) return; var card = document.getElementById('aeoStickyCard'); var bar = document.getElementById('aeoStickyBanner'); var modal = document.getElementById('aeoModal'); var iframe = document.getElementById('aeoModalIframe'); var wrap = document.getElementById('aeoModalIframeWrap'); var closeBtn = document.getElementById('aeoCardClose'); var cardCta = document.getElementById('aeoCardCta'); var barCta = document.getElementById('aeoBarCta'); var ticker = document.getElementById('aeoScTicker'); /* ---------- analytics -------------------------------- Posts to the existing /wp-json/site/v1/lead-event proxy, which forwards to the backend's POST /api/leads/event. Events here are prefixed with "aeo_" so the lawyer funnel chart on the same dashboard never picks them up. ----------------------------------------------------- */ var AEO_DOMAIN = "aeo-growth.com"; var AEO_VARIANT = "small-report"; var AEO_NICHE = "marketing"; var AEO_EVENT_URL = "https:\/\/aeo-growth.com\/wp-json\/site\/v1\/lead-event"; var AEO_EVENT_NONCE = "df7bb9ad74"; /* localStorage visitor_id so unique-clicker counts on the dashboard are stable across sessions on the same browser. UUIDv4-ish via random bytes; no PII, just a stable handle for COUNT(DISTINCT) on the backend. */ function aeoGetVisitorId() { try { var KEY = 'aeo_vid'; var existing = localStorage.getItem(KEY); if (existing) return existing; var b = (crypto && crypto.getRandomValues) ? crypto.getRandomValues(new Uint8Array(16)) : (function () { var arr = []; for (var i=0;i<16;i++) arr.push(Math.floor(Math.random()*256)); return arr; })(); b[6] = (b[6] & 0x0f) | 0x40; // version 4 b[8] = (b[8] & 0x3f) | 0x80; // variant var hex = Array.prototype.map.call(b, function (x) { return ('0' + x.toString(16)).slice(-2); }).join(''); var id = hex.slice(0,8)+'-'+hex.slice(8,12)+'-'+hex.slice(12,16)+'-'+hex.slice(16,20)+'-'+hex.slice(20,32); localStorage.setItem(KEY, id); return id; } catch (e) { return ''; // private mode / disabled storage -- silently drop } } var AEO_VISITOR_ID = aeoGetVisitorId(); function aeoTrack(eventType, extraMeta) { try { var meta = { variant: AEO_VARIANT, niche: AEO_NICHE }; if (extraMeta) for (var k in extraMeta) if (Object.prototype.hasOwnProperty.call(extraMeta, k)) meta[k] = extraMeta[k]; var payload = { domain: AEO_DOMAIN, event_type: eventType, visitor_id: AEO_VISITOR_ID, page_url: location.href, metadata_json: JSON.stringify(meta) }; var body = JSON.stringify(payload); if (navigator.sendBeacon) { navigator.sendBeacon( AEO_EVENT_URL + '?_wpnonce=' + encodeURIComponent(AEO_EVENT_NONCE), new Blob([body], { type: 'application/json' }) ); } else { fetch(AEO_EVENT_URL, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-WP-Nonce': AEO_EVENT_NONCE }, body: body, keepalive: true }); } } catch (e) { /* analytics must never break the popup */ } } /* ---------- cookies ---------- */ function readCookie(name) { var m = document.cookie.match('(?:^|;)\\s*' + name + '=([^;]*)'); return m ? decodeURIComponent(m[1]) : ''; } function writeCookie(name, value, days) { var d = new Date(); d.setTime(d.getTime() + days * 24 * 60 * 60 * 1000); document.cookie = name + '=' + encodeURIComponent(value) + '; expires=' + d.toUTCString() + '; path=/; SameSite=Lax'; } /* Cookie names are versioned. An earlier iteration of this script set aeo_lead_done from a 15s dwell-time heuristic (since removed); any tester who left the modal open during that period now carries a 30-day cookie that silently hides the popup forever. Bumping the name to _v2 retires that stale state without forcing anyone to clear browser cookies. */ var CARD_DISMISSED = 'aeo_card_dismissed_v2'; var LEAD_DONE = 'aeo_lead_done_v2'; if (readCookie(LEAD_DONE) === '1') { root.classList.add('aeo-lead-done'); return; } /* ---------- reveal the card (or bar) ---------- The iframe is preloading in the background regardless of card state, so we don't gate reveal on it -- we just slide the card up on a quick fixed timer so the popup is visible reliably on every refresh, even when the cross-origin iframe's load event is slow or never fires. By the time the user finishes reading the article and clicks the CTA, the iframe is virtually always fully loaded, so clicks still open the modal instantly. */ var revealed = false; var dismissedBefore = readCookie(CARD_DISMISSED) === '1'; if (dismissedBefore) root.classList.add('aeo-skip-card'); function reveal() { if (revealed) return; revealed = true; if (dismissedBefore) { if (bar) bar.classList.add('visible'); aeoTrack('aeo_bar_impression', { source: 'bar' }); } else { root.classList.add('aeo-iframe-ready'); aeoTrack('aeo_impression', { source: 'card' }); } } /* 600ms is long enough to feel intentional (not jarring on first paint), short enough that it always wins against a slow cross-origin iframe. */ setTimeout(reveal, 600); /* ---------- ticker ---------- Three full copies of the chip list, not two. The aeoScTicker keyframe translates by exactly one copy's width (-33.3333%) so the second copy slides into the first's position seamlessly; the third copy is there to keep the right edge of the card filled while the second is doing the heavy lifting -- one copy alone (216px) is narrower than the visible card content area, so a doubled ticker leaves a visible gap at the right edge near the end of every animation cycle. */ var TOOLS = [{"name":"Gemini","bg":"#1A73E8","logo":"https:\/\/aeo-growth.com\/wp-content\/mu-plugins\/aeo-assets\/logos\/gemini.svg"},{"name":"Grok","bg":"#111111","logo":"https:\/\/aeo-growth.com\/wp-content\/mu-plugins\/aeo-assets\/logos\/grok.svg"},{"name":"Perplexity","bg":"#1FB8CD","logo":"https:\/\/aeo-growth.com\/wp-content\/mu-plugins\/aeo-assets\/logos\/perplexity.svg"},{"name":"ChatGPT","bg":"#10A37F","logo":"https:\/\/aeo-growth.com\/wp-content\/mu-plugins\/aeo-assets\/logos\/chatgpt.svg"},{"name":"Copilot","bg":"#FFFFFF","logo":"https:\/\/aeo-growth.com\/wp-content\/mu-plugins\/aeo-assets\/logos\/copilot.svg"},{"name":"Claude","bg":"#D97757","logo":"https:\/\/aeo-growth.com\/wp-content\/mu-plugins\/aeo-assets\/logos\/claude.svg"}]; if (ticker) { var tripled = TOOLS.concat(TOOLS).concat(TOOLS); ticker.innerHTML = tripled.map(function (t) { return '<div class="sc-logo-chip" title="' + t.name + '" style="background:' + t.bg + ';">' + '<img src="' + t.logo + '" alt="' + t.name + '" loading="lazy" width="18" height="18">' + '</div>'; }).join(''); } /* ---------- card -> bar dismissal ---------- The slide-down animation is 0.4s. We use a matched setTimeout instead of animationend because Chrome occasionally swallows the event when another animation (the breathing background) is in flight on the same element. */ if (closeBtn) { closeBtn.addEventListener('click', function () { writeCookie(CARD_DISMISSED, '1', 30); aeoTrack('aeo_card_dismiss', { source: 'card' }); card.classList.add('hiding'); setTimeout(function () { card.style.display = 'none'; if (bar) bar.classList.add('visible'); }, 420); }); } /* ---------- modal open / close ---------- */ if (iframe && wrap) { if (iframe.complete) wrap.classList.add('loaded'); else iframe.addEventListener('load', function () { wrap.classList.add('loaded'); }, { once: true }); } function swapCardToBar() { if (!card || card.style.display === 'none' || card.classList.contains('hiding')) return; card.classList.add('hiding'); setTimeout(function () { card.style.display = 'none'; if (bar) bar.classList.add('visible'); }, 420); } function openModal(e) { if (e) e.preventDefault(); if (!modal) return; modal.setAttribute('aria-hidden', 'false'); requestAnimationFrame(function () { modal.classList.add('open'); }); document.body.classList.add('aeo-modal-open'); } function closeModal() { if (!modal || !modal.classList.contains('open')) return; modal.classList.remove('open'); document.body.classList.remove('aeo-modal-open'); setTimeout(function () { modal.setAttribute('aria-hidden', 'true'); }, 320); aeoTrack('aeo_modal_close'); /* If the card was still showing behind the modal, collapse it to the bar so the user has an obvious re-entry point. No cookie is set here -- only the explicit X on the card persists dismissal across page loads. */ swapCardToBar(); } if (cardCta) cardCta.addEventListener('click', function (e) { aeoTrack('aeo_cta_click', { source: 'card' }); openModal(e); }); if (barCta) barCta.addEventListener('click', function (e) { aeoTrack('aeo_cta_click', { source: 'bar' }); openModal(e); }); /* Generic trigger: any element with [data-aeo-open] opens the same modal. The in-article banner (aeo-inline-banner.php) uses this so it doesn't have to duplicate the modal HTML/JS -- it just renders a CTA with data-aeo-open + data-aeo-source="inline" and rides on the popup infrastructure that's already in the footer. Source is read from data-aeo-source so we can split CTR by surface in the analytics dashboard (card / bar / inline / future surfaces). */ document.querySelectorAll('[data-aeo-open]').forEach(function (el) { el.addEventListener('click', function (e) { var source = el.getAttribute('data-aeo-source') || 'external'; aeoTrack('aeo_cta_click', { source: source }); openModal(e); }); }); if (modal) { modal.querySelectorAll('[data-aeo-close]').forEach(function (el) { el.addEventListener('click', closeModal); }); } document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && modal && modal.classList.contains('open')) closeModal(); }); /* ---------- future postMessage handshake (stub) ---------- Listens for a "lead-complete" event from the iframe so we can flip the LEAD_DONE cookie immediately on real submission (not on dwell time). Wire this up on the AEO side and remove the dwell-time fallback above. */ window.addEventListener('message', function (e) { if (!e || !e.origin || e.origin.indexOf('aeo.prod-mobtools.com') === -1) return; var data = e.data || {}; if (data && data.type === 'aeo:lead-complete') { writeCookie(LEAD_DONE, '1', 30); root.classList.add('aeo-lead-done'); closeModal(); } }); })(); </script> <script id="site-cta-fallback">(function(){ function ready(fn){ if(document.readyState!=='loading'){fn();} else {document.addEventListener('DOMContentLoaded',fn);} } ready(function(){ document.querySelectorAll('[class*="-sticky-cta"]').forEach(function(el){ var b = el.querySelector('[class*="-sticky-cta-btn"]'); if (b && /subscribe/i.test(b.textContent)) { el.remove(); } }); }); document.addEventListener('site:open-lead-popup', function(){ var has = (window.LawyerLeadFormV2&&window.LawyerLeadFormV2.open)||(window.AeoLeadPopup&&window.AeoLeadPopup.open)||(window.ExitIntentPopup&&window.ExitIntentPopup.open); if (!has) { window.location.href = 'https://aeo-growth.com/contact/'; } }); })();</script> <script> (function(){ var bar = document.getElementById('reading-progress'); if(!bar) return; var article = document.querySelector('.post-content'); if(!article) return; var milestones = {25:false,50:false,75:false,100:false}; var startTime = Date.now(); function sendGA4(name, params){ if (window.gtag) window.gtag('event', name, params); } window.addEventListener('scroll', function(){ var rect = article.getBoundingClientRect(); var total = article.offsetHeight - window.innerHeight; var progress = Math.min(100, Math.max(0, (-rect.top / total) * 100)); bar.style.width = progress + '%'; var pct = Math.floor(progress); [25,50,75,100].forEach(function(m){ if (pct >= m && !milestones[m]) { milestones[m] = true; sendGA4('scroll_depth', {percent: m, reading_seconds: Math.round((Date.now()-startTime)/1000)}); } }); }, {passive:true}); function sendReadingTime(){ var seconds = Math.round((Date.now()-startTime)/1000); if (seconds > 3) sendGA4('reading_time', {seconds: seconds}); } document.addEventListener('visibilitychange', function(){ if(document.visibilityState==='hidden') sendReadingTime(); }); window.addEventListener('beforeunload', sendReadingTime); })(); </script> <script> (function(){ var toc = document.querySelector('.toc-container'); if(!toc) return; var title = toc.querySelector('.toc-title'); if(window.innerWidth <= 768 && title) { toc.classList.add('toc-collapsed'); title.addEventListener('click', function(){ toc.classList.toggle('toc-collapsed'); }); } var links = toc.querySelectorAll('.toc-list a'); var sections = []; links.forEach(function(a){ var id = a.getAttribute('href'); if(id) { var el = document.querySelector(id); if(el) sections.push({el:el,link:a}); } }); if(!sections.length) return; var raf; window.addEventListener('scroll', function(){ if(raf) return; raf = requestAnimationFrame(function(){ raf = null; var scrollY = window.scrollY + 120; var active = sections[0]; for(var i=0;i<sections.length;i++){ if(sections[i].el.offsetTop <= scrollY) active = sections[i]; } links.forEach(function(l){ l.classList.remove('toc-active'); }); if(active) active.link.classList.add('toc-active'); }); }, {passive:true}); })(); </script> </body> </html>