Category: staffingResources

  • Scroll-Synced Video Animations in Divi with JavaScript

    What the Client Needed

    The goal: let users “control” the video timeline by scrolling. As the user scrolls down the page, the video would scrub forward frame-by-frame—reversing if they scrolled back up. It needed to work seamlessly within Divi’s layout system and be reusable across multiple product pages. We used Divi theme and Divi builder to create immersive, scroll-based animations that worked across all responsive layouts on the WordPress site. Using scroll triggers to custom GSAP stuff allowed synchronization with currentTime for smooth video playback.

    Key Challenges Solved

    Divi’s section structure conflicted with animation layers


    Early tests caused choppy frame playback and browser viewport issues

    • Video contained blank frames that disrupted flow
    • Off-the-shelf plugin or WordPress plugin wasn’t customizable
    • enough for scroll-triggered video or scroll image animation
    • Frame rate and file size needed careful balancing for performant playback
    • We optimized video encoding and trimmed start and end frames for smooth video experiences

    How We Built It

    Custom Scroll Script
    A JavaScript scroll listener updated the video’s currentTime based on scroll position as the user scrolls, enabling scroll-based animations and scrolly telling content from Lottie files to video experiences.

    Frame Rate Tweaks
    We tested 30fps, 60fps, and 90fps. Final videos ran at 60fps for smooth video without heavy load, ensuring elegant themes and Divi websites supported smooth UX and better user experience.

    Video Editing Cleanup
    Start and end frames were trimmed to eliminate white flashes, slow loading moments, or blank frames that could affect page load.

    Divi Layout Optimization
    We fine-tuned section spacing, Divi timeline, image module, background image, and layering within the Divi builder to make sure the video played seamlessly. Custom code and CSS adjustments helped synchronize animations in Divi, parallax effects, and scroll animations for multiple product pages.

    Result
    ✅ Smooth, scroll-based video playback
    ✅ Works across pages, screen sizes, and viewports
    ✅ No blank frames or jittery animation
    ✅ Easy to replicate for other products and landing page designs ✅ Using scroll, triggers, and keyframe animations made the animation immersive and performant

    Looking to add immersive video animation or scrolly telling content to your WordPress site? Learn how to create synchronized scroll-based animations from Lottie files to custom Divi video experiences using scroll triggers.

    Frequently Asked Questions (Scroll-Synced Video Animations in Divi with JavaScript)

    How do you scroll effects in Divi?

    In Divi, scroll effects are added via the Module, Row, or Section settings. Go to Design → Scroll Effects, then choose from options like Vertical, Horizontal, Fade, or Zoom. Adjust speed, direction, and offset to create dynamic motion as users scroll, enhancing visual engagement.

    How to use animate on scroll Library?

    To use the Animate On Scroll (AOS) library, include its CSS and JS files in your project. Add data-aos="animation-name" attributes to HTML elements, then initialize with AOS.init() in JavaScript. Customize duration, delay, and easing using additional data-aos-* attributes for scroll-triggered animations.

    How to create a scroll animation in Canva?

    In Canva, create scroll animations using the Animate feature. Select an element or page, click Animate, and choose effects like Rise, Pan, or Fade. Adjust speed and direction if available. Preview the animation, then download as MP4 or GIF to preserve scroll-like motion.

    How to create an animated scroll to top button with JavaScript?

    To create an animated scroll-to-top button in JavaScript, add a button in HTML, style it with CSS, and use window.scrollTo({ top: 0, behavior: 'smooth' }) in a click event listener. Optionally, show the button only after scrolling down for better UX.

  • Solving Featured Image Display Bugs in Custom WordPress Themes

    Plugin Dependency Check

    The theme assumed WooCommerce and other WordPress plugins were active, causing PHP warnings when they weren’t. Logic was updated to safely verify plugin presence before executing related code and to ensure WordPress function calls in the dashboard don’t fail.

    Shortcode Issue Resolved

    A broken rendering pipeline prevented shortcodes like [member_logged_in_title] from appearing. Fixing upstream errors restored their functionality across template files and post or page content, making sure embeds and lazy loading images show properly.

    Fixing the Meta Logic

    The “Hide Featured Image” toggle wasn’t working as intended due to incorrect handling of serialized custom fields. The logic was updated to properly read and apply the toggle across all WordPress site posts, ensuring featured image 0 / 3-15 and thumbnail display correctly, regardless of file permissions or image size.

    Removed Hardcoded Limits

    The visibility rule was oddly restricted to post IDs over 29997. We eliminated this condition so the toggle now works for all posts, whether in media library, archive.php, or new post pages, and respects customizer settings, functions.php logic, and block editor previews.

    Final Outcome

    ✅ PHP warnings eliminated
    ✅ Featured image toggle now works everywhere
    ✅ Shortcodes and embeds function normally
    ✅ Page editor UX simplified by aligning toggle behavior

    If your theme’s logic is holding back your WordPress site, we’re here to help.

    Frequently Asked Questions (Solving Featured Image Display Bugs in Custom WordPress Themes)

    Why is my WordPress featured image not showing properly?

    Your WordPress featured image may not show properly due to theme limitations, incorrect image size, caching issues, or plugin conflicts. Check if the theme supports featured images, regenerate thumbnails, clear cache, and deactivate plugins one by one to identify conflicts. Correct settings usually fix it.

    How to fix a broken WordPress theme?

    To fix a broken WordPress theme, first switch to a default theme to isolate the issue. Check for plugin conflicts by deactivating all plugins, then reactivate one by one. Clear cache, update WordPress, theme, and plugins, and restore a backup if needed. Custom code may require debugging.

    How to make a featured image responsive in WordPress?

    To make a featured image responsive in WordPress, ensure your theme uses the_post_thumbnail() with proper CSS. Add img { max-width: 100%; height: auto; } in your stylesheet or use a responsive image plugin. WordPress’s built-in srcset usually handles different screen sizes automatically.

    What is the best size for featured image?

    The best featured image size for WordPress is typically 1200×628 pixels. This size works well for blog posts, social media sharing, and responsive themes. Use optimized, high-quality images with a consistent aspect ratio to ensure proper display across all devices.

  • Solving Popup & Layout Glitches in ACF-Powered WordPress Pages

    Here’s how we solved a similar problem and how you can too.

    ️ What Was Going Wrong?

    On a custom-built webinar landing page, two annoying issues came up:

    • Popups linked to speaker images weren’t opening at all for some users.
    • Longer user names were breaking the layout, pushing spacing out of alignment and making the section look messy.

    After a quick inspection, it became clear the ACF-powered popups were clashing with the front-end layout—especially where content was incomplete or improperly configured.

    What We Fixed

    ✅ 1. Removed Empty Popup Triggers

    An unlinked popup trigger attached to one image was causing the popup script to fail. We removed the rogue trigger so each image only fired when data actually existed.

    ✅ 2. Extended ACF for More Profiles

    We updated the template and backend to support up to six speakers dynamically, using ACF fields cleanly mapped to each popup’s content.

    ✅ 3. Repaired the Layout Grid

    Long names were throwing off alignment. We restructured the layout using a more flexible grid, adjusting spacing and vertical alignment for a polished appearance.

    ✅ 4. Built-In Fallbacks

    We tested how the page would behave when ACF popup content was missing—and added fallback behavior to ensure the layout stays clean even without complete data.

    ✅ The Result?

    • Fully functional popups, displayed only when actual data exists
    • A consistent layout that works for short or long names
    • Clean content management in the backend with flexible ACF fields

    Want help designing dynamic layouts that just work?

    ‍

  • Switching from Dynamic to Static Google Maps in WordPress

    The Problem ‍

    Using dynamic Google Maps on dozens of WordPress sites and custom post pages can drain your API quota and impact site performance. If every location page loads a live map using Google Maps API, embedded maps, or dynamic markers, you’re likely triggering map API calls that rack up unnecessary costs and slow things down. This affects page load, map display, and overall user experience.

    What We Found

    Dynamic map calls were made on each page load
    API usage logs showed high volume, even during low-traffic periods, impacting API quota and pricing
    Zoom levels, map type, map markers, and pin placements varied slightly, causing design inconsistencies
    Pages loaded slower due to external map requests, JavaScript, and Google API scripts

    Our Approach
    ‍

    1: Add a Static Map Field

    Created an ACF image field (location_static_map) for uploading pre-generated static image thumbnails to each location post. This allowed custom fields to store coordinates and address details, resolving dynamic map display issues.

    2: Generate Map Thumbnails

    Used manual tools, Google Maps Static API, and Google Maps previews to generate map images with precise zoom, style, and marker placement. This ensured consistent design across locations while following Google API official documentation and terms of service. Optional placeholder images were added for pages with missing coordinates.

    3: Replace Live Maps with Images

    Updated the location template PHP code to pull in the uploaded static map image instead of making a live map request. This swap reduced usage, removed unnecessary scripts, and controlled map load and map markers dynamically.

    4: Optimize and Clean Up

    ‍Removed unused Google Maps scripts and JavaScript, tested across devices for speed, responsiveness, and visual clarity, and enabled caching to reduce costly API requests.

    The Result

    ‍
    ✅ Lower API usage
    ✅ Faster page loads
    ✅ Accurate, consistent visuals
    ✅ No more surprise billing from Google

    This approach is especially useful for franchise sites, healthcare chains, and service-based businesses with multiple locations.

    Want to Lower API Costs While Keeping Visual Quality?
    Let Integriti Studio help you streamline your WordPress maps setup with a smarter, static approach.

    Frequently Asked Questions (Switching from Dynamic to Static Google Maps in WordPress)

    How do I change the Google Maps in WordPress?

    To change Google Maps in WordPress, edit the page or post where the map is added. Update the address, embed code, or API key inside the block, shortcode, or plugin settings. Save changes, clear cache if needed, and refresh the page to see updates.

    What is the difference between static and dynamic Google Maps?

    A static Google Map is a simple image showing a fixed location with no interaction. A dynamic Google Map is interactive, allowing users to zoom, drag, click markers, and get directions. Static maps load faster, while dynamic maps offer better user engagement and functionality.

    How do I change the map type in Google Maps?

    To change the map type in Google Maps, open the map and click the Layers or Map type icon. Choose options like Default, Satellite, Terrain, or Street View. On websites or apps, adjust the map type setting in the embed code or API configuration.

    Does the Google Static maps API require a maps API key?

    Yes, the Google Static Maps API requires a Maps API key for most use cases. The API key helps Google track usage, apply quotas, and ensure billing compliance. Without a valid key, requests may fail or return limited functionality, especially for production websites or applications.

  • Troubleshooting API Access & Payment Issues with Authorize.net in WooCommerce

    The Checkout Issue at a Glance

    A client noticed possible disruptions at checkout, especially for non-logged-in users. The payment method in use was Authorize.net’s CIM integration for credit card processing. Even with orders still trickling in, there were red flags worth investigating.

    What We Uncovered

    The issue wasn’t just technical—it involved platform access, permissions, and workflow constraints:

    • Access Required 2FA: Gaining entry into the Authorize.net account was delayed due to two-factor authentication (2FA), which needed manual PIN relays from the client.
    • Missing API Key Options: Logged-in users couldn’t see the API regeneration section—hinting at limited permission access.
    • High-Risk API Rotation: Replacing the live API key without a backup would risk cutting off checkout immediately.

    How We Moved Forward Safely

    1. Secure Login Coordination
      Worked closely with the client to retrieve time-sensitive 2FA codes for dashboard access.
    1. Checked Admin Rights
      Confirmed the account user had restricted visibility; flagged the need for full admin rights to proceed.
    1. Planned a Zero-Downtime Switch
      Held off any API regeneration until a backup key could be pre-configured and tested.
    1. Collaborated with the Client
      Created a joint action plan so updates could happen in real time, with no checkout breakage.

    What It Meant for the Business

    By staying cautious and collaborative, we ensured the live store wasn’t impacted—even as we dug into critical gateway connections. The client now has a clear, secure path forward for managing future Authorize.net credentials with confidence.

    Need Help With Secure Checkout Setup?

    Payment integrations are delicate. One misstep can mean lost revenue. Let our team guide you through secure, high-uptime eCommerce architecture—whether you use Authorize.net, Stripe, or custom API workflows.

    ‍

  • Troubleshooting Dealer Pricing Issues in WooCommerce

    What’s Going Wrong?

    Sometimes, even after removing or updating dealer pricing in your WooCommerce backend, the old product prices continue to show up for logged-in merchant or distributor users. The issue often appears in:

    • The “Your Price” or dealer-specific price field.
    • The “From–To” pricing range on variable products.
    • Front-end views for distributor or wholesale user roles.

    If your backend is clean but outdated prices still display, it’s usually a sign that your pricing data hasn’t recalculated properly, even when using the latest version of the WooCommerce plugin or after switching between regular price and sale price.

    How to Fix the Problem

    1. Review Distributor Pricing Logic

    Start by checking any custom function or code that sets dealer or distributor prices—especially for variable products. These functions need to correctly reset or update pricing on save and reflect changes in Google Merchant Center feeds.

    2. Trigger a Product Save

    WooCommerce doesn’t always recalculate pricing automatically. After fixing the logic, you’ll likely need to manually save the affected products—or better yet, run a bulk script to do it at scale, ensuring that all database entries are updated.

    3. Revisit Variable Products

    With variable products, the pricing often won’t update unless you open the tab and manually save changes. This WooCommerce limitation can occur even in the latest version, so each specific product may need individual attention.

    4. Clear All Caches

    Outdated cache (from CDNs, caching plugins, object cache, or browser sessions) can serve incorrect prices even after fixes. Always clear all layers of cache after updates to avoid frontend display issues.

    ✅ After You Fix It

    Once your functions are working, products are re-saved, and cache is cleared:

    • Dealer pricing updates will reflect instantly for logged-in distributors.
    • Price ranges on variable products will show the correct range.
    • Your product catalog will remain consistent across user roles.

    Pro Tips

    • Variation Pricing Requires Manual Handling: 
      WooCommerce doesn’t always let you fully automate price recalculation for product variations.
    • Custom Code Errors Hide in Logs: Check your PHP logs for silent function failures or fatal errors that can break price updates.
    • Bulk Update with Caution: Use custom scripts carefully—test on staging first to ensure that sale and regular prices are correctly applied.
    • Clear All Cache Layers: Don’t forget about object cache, CDN cache, and plugin cache to make latest pricing visible.

    Need help managing custom pricing, user role conditions, or WooCommerce display logic?

    Frequently Asked Questions (Troubleshooting Dealer Pricing Issues in WooCommerce)

    Why are dealer prices not showing for certain users?

    Check that the user role is correctly assigned to “Dealer.” Ensure your pricing plugin is active and properly configured. Clear any caching plugins and refresh the product page to see updated prices.

    How do I fix incorrect dealer discounts?

    Verify the discount rules in your pricing or membership plugin. Check for conflicts with other WooCommerce plugins or custom code. Update the plugin and recalculate prices if necessary.

    Dealer pricing is showing but checkout total is wrong. What to do?

    Ensure the pricing rules apply to cart and checkout. Clear WooCommerce and browser caches. Check for plugin conflicts or outdated templates affecting price calculations.

    Why isn’t WooCommerce applying dealer pricing automatically?

    Confirm the user is logged in with the dealer role. Make sure product visibility settings allow dealer pricing. Check that your pricing plugin’s automatic rules are enabled.

  • How to Prioritize Products in WordPress Search Results

    What Was Happening

    Search queries like “virus” or “case study” didn’t return any product results, even though matching products were published and indexed inside the default WordPress search engine. Meanwhile, unrelated static pages showed up instead. Custom search behavior that once prioritized products had stopped working after some plugin or theme updates, affecting the search results page and overall search experience.

    What We Found

    No Priority for CPTs

    The theme’s search.php and functions.php didn’t include any logic to elevate custom post types like “product” over standard posts and pages inside default WordPress search results.

    WP_Query Was Basic

    The query wasn’t configured to weight or include custom fields, taxonomies, product categories, or keyword relevance, leading to inconsistent search results in WordPress. The search functionality wasn’t optimized for ecommerce or on-site product search.

    How We Fixed It

    1:Adjusted the Search Query

    We added a pre_get_posts filter in functions.php to explicitly prioritize the product post type, helping WordPress search results highlight important products and improving the order of search results for users looking for specific products:

    php

    CopyEdit

    function prioritize_products_in_search($query) {
    if (!is_admin() && $query->is_main_query() && $query->is_search) {
    $query->set(‘post_type’, [‘product’, ‘page’, ‘post’]);
    }
    }
    add_action(‘pre_get_posts’, ‘prioritize_products_in_search’);

    2:Tweaked Search Ranking

    Where relevant, we added meta_query conditions to help highlight results with product-related fields or keywords, improving custom search accuracy and making custom fields searchable through the WordPress core search process.

    3: Cleaned Up the Layout

    We also updated the styling to clearly differentiate product search results from regular posts or pages on the search results page in WordPress, improving the overall user experience and helping visitors easily find what they’re looking for.

    4: Excluded Unwanted Results

    Certain pages were excluded altogether based on the client’s request — helping keep the results more relevant and conversion-focused and preventing page not found-type issues or irrelevant results from cluttering the search page.

    The Result

    Now, when users search, product pages are displayed first, followed by any relevant blog posts or static pages. No more dead ends or confusing results. This simple customization makes the default WordPress search engine behave more like an advanced search tool, ensuring customers can easily find what they want, especially on an online store or WooCommerce setup.

    Let Integriti Studio optimize your search experience.

    Frequently Asked Questions (How to Prioritize Products in WordPress Search Results)

    How do I change the order of products in WordPress?

    To change the order of products in WordPress, go to WooCommerce → Products, enable Sorting, and drag and drop products into the desired order. You can also edit a product and set a custom Menu Order value for precise control.

    How to do product prioritization?

    Product prioritization is done by ranking features or products based on business goals, customer impact, revenue potential, and effort. Use frameworks like MoSCoW, RICE, or value vs effort analysis to focus on high-impact, low-effort items first and align with strategy.

    How do you sort search results in WordPress?

    In WordPress, you can sort search results by modifying the query using WP_Query or the pre_get_posts hook. Results can be ordered by date, title, relevance, or custom fields. Plugins like SearchWP also allow advanced sorting without coding.

    How to customize search results page in WordPress?

    You can customize the WordPress search results page by editing the search.php file in your theme or child theme. Use custom WP_Query, change the layout with template tags, add filters, or use plugins to modify design, sorting, and displayed content.

  • How to Protect Everest Forms Email Styling from Plugin Updates

    Issue Overview:

    During a security-related plugin update on a staging site, the default Everest Forms email template in the WordPress form system was overwritten, wiping out previously approved visual styling. Though functionality remained intact, cosmetic differences (like a message saying “You can upload up to 1 files”) highlighted the risk of default template reliance found in many contact form plugin setups and form solutions.

    What We Found:

    • Default templates get replaced: The Everest Forms plugin for WordPress overwrites its core form email template during updates.
    • Inline styling was lost: Custom CSS and layout settings were tied to the default template, similar to how other WordPress plugins like WPForms, Fluent Forms, Contact Form 7, and Formidable Forms handle styling options.
    • Live vs. staging mismatch: A minor cosmetic difference appeared post-update but didn’t affect core functionality or email notifications triggered when a user submits a form.

    What We Did:

    • Created a custom email template: Replicated the design of the default email and saved it as a standalone, update-safe version for long-term customization of the contact form styling.
    • Used inline CSS: All styles were embedded directly into the HTML for email compatibility and stability, avoiding the need for heavy add-on configuration found in some premium or pro form builders.
    • Tested thoroughly on staging: Updates to all related Everest Forms plugins were tested for compatibility, similar to testing form plugin integrations or database-driven form entry behavior.
    • Verified design match post-deployment: Ensured the client-approved styling stayed consistent across environments regardless of plugin upgrade or installation differences.

    Final Outcome:
    Thanks to a custom template and inline styling, future plugin updates won’t disrupt the visual integrity of email templates. Integriti Studio’s approach ensures lasting design consistency and saves time on manual fixes after updates, even when multiple plugins, fields, or settings are involved in a WordPress dashboard workflow.

    Struggling with plugin updates breaking your custom styles?

    Integriti Studio builds update-proof solutions that preserve your brand’s look and feel.

    Frequently Asked Questions (How to Protect Everest Forms Email Styling from Plugin Updates)

    Is it safe to update plugins in WordPress?

    Yes, updating plugins in WordPress is generally safe and recommended for security, performance, and compatibility. However, always take a full site backup first, update plugins one by one, and test your website after updates to avoid conflicts or functionality issues.

    How to update a WordPress plugin without losing customization?

    To update a WordPress plugin without losing customization, never edit plugin core files directly. Use child themes, custom plugins, hooks, filters, or CSS overrides instead. Always back up your site, test updates on staging, and review the plugin changelog before updating.

    How to connect contact form to email in WordPress?

    To connect a contact form to email in WordPress, install a form plugin like Contact Form 7, WPForms, or Gravity Forms. Configure the form’s notification settings with a valid email address. For reliable delivery, use an SMTP plugin to prevent emails going to spam.

    How to manually update a WordPress plugin?

    To manually update a WordPress plugin, download the latest plugin ZIP file from a trusted source. Go to Plugins → Add New → Upload Plugin, upload the ZIP, and replace the existing version. Alternatively, update via FTP by replacing the plugin folder. Always back up first.

  • How to Sort WordPress Taxonomy Dropdowns by Date Using ACF

    Issue Background:

    The “Browse by Magazine Issue” dropdown under Book Reviews displayed items alphabetically by title (e.g., “HNR Issue 102”), not by actual publication date. This was affecting the WordPress site structure because the taxonomy term order didn’t respect the custom date field. A legacy fix required a plugin toggle every quarter to manually input dates—leading to conflicts, inconsistent sorting, and issues when using custom taxonomies for content display.

    What We Did:

    • Created a permanent ‘Issue Date’ field:
      Added a custom date field to the mag_edition taxonomy using Advanced Custom Fields (ACF) and ACF taxonomy field configuration, replacing the old plugin workaround. 
    • Updated the admin experience:
      Admins can now add or edit the publication date directly within the taxonomy term editor—no plugin toggles required. The backend now stores the field value properly using an ACF date structure that works smoothly with WordPress custom functionality.
    • Rebuilt the front-end dropdown logic:
      The dropdown now queries taxonomy terms using a dynamic array and sorts them in reverse chronological order using the new field. Instead of alphabetical display, it fetches the correct values via meta query parameters and processes them through custom query loops so WordPress taxonomies like mag_edition sort by actual dates.
    • Populated live dates:
      Historical magazine issues were updated with proper dates, so the dropdown reflects accurate ordering from oldest to newest. This ensures the taxonomy fields and custom date field values remain consistent with the custom post type relationships and prevent outdated default sorting behavior.
    Need help organizing your content better?

    Integriti Studio builds smart, scalable WordPress solutions that make content easy to manage and even easier to navigate.

    Frequently Asked Questions (How to Sort WordPress Taxonomy Dropdowns by Date Using ACF)

    Can ACF taxonomy fields be sorted by date?

    Yes, ACF taxonomy dropdowns can be sorted by date using custom PHP filters. By modifying the get_terms query with arguments like orderby and meta_value, you can control term order based on creation date or custom term meta.

    Does WordPress support taxonomy sorting by default?

    By default, WordPress sorts taxonomy terms alphabetically. Sorting by date or custom fields requires custom code using get_terms, acf/load_field, or acf/fields/taxonomy/query filters.

    How do I sort taxonomy terms by custom date field in ACF?

    You can store a date as term meta using ACF, then hook into acf/fields/taxonomy/query and set meta_key, orderby => meta_value, and order => DESC to sort terms by that date field.

    Will this affect frontend taxonomy display?

    No, this customization only affects the ACF dropdown field in the admin or frontend form. It does not change how taxonomy terms are displayed on the website unless you apply similar sorting to frontend queries.

  • How to Troubleshoot Missing UTM Tracking in GA4 & Google Tag Manager

    The Problem: UTM Parameters Missing in GA4

    A client reached out when they noticed that their UTM-tagged campaign URLs were no longer showing up in their Google Analytics reports. Both old and new UTM links failed to populate traffic source fields like Source, Medium, or Campaign.

    Initial concerns pointed toward possible misconfigurations in their GTM setup or broken integration between GTM and GA4.

    What We Found

    After digging into the tracking setup, here’s what we discovered:

    • GTM was installed—but inactive
      The GTM container was embedded on the site, but had no active tags or triggers configured. In short, GTM wasn’t being used for any analytics functions.
    • GA4 was running independently
      Google Analytics was tracking events, sessions, and conversions—but it wasn’t doing so through GTM.
    • UTM parameters were never routed through GTM
      The client had assumed GTM was handling tracking. In reality, UTM tags are captured natively by GA4 and don’t require GTM at all.

    Need help reviewing your GA4 or GTM setup? Book a free audit call.

    How We Fixed It

    With a clearer picture in place, we walked the client through a few simple but important checks:

    ✅ Confirmed GA4 was tracking UTM data

    We tested UTM-tagged links using Google’s Realtime Reports. The UTM parameters (source, medium, campaign) showed up immediately.

    ✅ Reviewed historical campaign traffic

    Looking back four months, we found limited use of UTM-tagged URLs—confirming it wasn’t a tracking failure but a lack of consistent campaign tagging.

    ✅ Verified new campaigns

    The client shared a fresh UTM URL. We tested it live and confirmed that Session Source, Session Medium, and Campaign Name all showed up correctly in GA4.

    Want to be 100% sure your UTM tracking is working? Let’s test it together.

    What You Should Know

    UTM tracking confusion is common, especially when multiple tools (like GA4, GTM, and CRM systems) are in play. Here’s what matters:

    • UTM tags are read directly by GA4
      You don’t need Google Tag Manager to track campaign parameters like source, medium, or campaign name.
    • Use GA4’s Realtime Report for testing
      It’s the fastest way to confirm whether UTM-tagged links are being tracked properly.
    • Keep GTM clean and purposeful
      If you’re not actively using GTM for event tracking, don’t assume it’s capturing campaign data.
    • Be consistent with UTM usage
      Inconsistent tagging often looks like “missing data” when it’s actually just incomplete link building.

    Need a UTM strategy that works across platforms? Let’s build it →

    Final Outcome

    No broken tools. No bugs. Just a bit of miscommunication. After clarifying how their setup worked, the client was relieved to see their campaign data flowing correctly—and now has a direct report to track UTM-tagged traffic in real time.

    Struggling with Google Analytics or Tag Manager?

    ‍
    Integriti Studio can help you streamline campaign tracking, build custom dashboards, and troubleshoot analytics confusion—whether you’re using Shopify, WordPress, or Webflow.

    ‍