Skip to content

Update UTM mapping#2555

Merged
Crabcyborg merged 21 commits into
masterfrom
update_utm_mapping
Oct 27, 2025
Merged

Update UTM mapping#2555
Crabcyborg merged 21 commits into
masterfrom
update_utm_mapping

Conversation

@Crabcyborg
Copy link
Copy Markdown
Contributor

@Crabcyborg Crabcyborg commented Oct 22, 2025

This update changes how our UTM attributes are mapped, based on how the marketing team wants them.

I've also changed a lot of hard coded URLs to go through our admin upgrade link function, many of which had no UTM attributes.

  1. Change source from WordPress to plugin.
  2. Change campaign from liteplugin to what we're currently using for medium.
  3. Change medium from a category to lite or pro based on if Pro is active.
  4. Content stays the same.
  5. If medium is pro, add an additional utm_license param with their active license type.

@Crabcyborg Crabcyborg added this to the 6.25.1 milestone Oct 22, 2025
@Crabcyborg Crabcyborg marked this pull request as ready for review October 27, 2025 16:25
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Oct 27, 2025

Walkthrough

Centralizes and standardizes UTM handling: replaces "medium" with "campaign", adds UTM helper utilities and license-aware enrichment in FrmAppHelper, replaces many hard-coded docs/upgrade links with admin_upgrade_link(), injects floating-links URLs into JS, and adds a min-version notice view.

Changes

Cohort / File(s) Summary
UTM Helper Refactoring
classes/helpers/FrmAppHelper.php
Adds adjust_legacy_utm_args(), get_utm_medium(), maybe_add_utm_license(). Refactors admin_upgrade_link()/maybe_add_missing_utm() to accept campaign, anchor, and license enrichment; moves min-version notice markup into an include.
Controller UTM Updates
classes/controllers/FrmAddonsController.php, classes/controllers/FrmAppController.php
Switches explicit query construction to using UTM arrays + maybe_add_missing_utm()/admin_upgrade_link(); exposes floating-links upgradeUrl/documentationUrl with new UTMs.
Views: Upgrade/Docs Link Migration
classes/views/.../pro-features-list.php, classes/views/frm-entries/no_entries.php, classes/views/frm-settings/license_box.php, classes/views/shared/admin-footer-links.php, classes/views/shared/views-info.php, classes/views/frm-settings/general.php
Replace hard-coded docs/upgrade URLs with admin_upgrade_link() and migrate mediumcampaign/content UTM keys; added escaping/translatable link usage where applicable.
Dashboard & Entries Helpers
classes/helpers/FrmDashboardHelper.php, classes/helpers/FrmEntriesListHelper.php, classes/controllers/FrmDashboardController.php
Update UTMs from mediumcampaign, build upgrade/docs links via helper, escape upgrade link output, and expose floating-links payload.
Forms Controller & Field Sanitization
classes/controllers/FrmFormsController.php, classes/models/fields/FrmFieldCaptcha.php
Adds get_form_too_long_docs_url() and uses it; adds docblock param annotation; sanitize reCAPTCHA URL to replace ?& with ?.
Addons Views Added/Removed
classes/views/addons/min-version-notice.php, removed classes/views/addons/upgrade_to_pro.php
Adds min-version-notice.php that conditionally renders renewal/update links with UTMs; removes deprecated wrapper file.
Floating Links JS Integration
js/packages/floating-links/config.js
Replace hard-coded external URLs with runtime s11FloatingLinksData.upgradeUrl and s11FloatingLinksData.documentationUrl.
Tests Updated
tests/cypress/e2e/.../validateAddOnsPage.cy.js, tests/cypress/e2e/.../validateApplicationsPage.cy.js
Update expected external URLs/UTM query strings in Cypress assertions to match new UTM keys and source values.

Sequence Diagram(s)

sequenceDiagram
    participant Controller as Controller/View
    participant Helper as FrmAppHelper
    participant UTM as UTM Normalizer
    participant JS as Floating Links JS

    rect rgb(245,245,255)
    Note over Controller,Helper: Build tracked admin/docs/upgrade links
    Controller->>Helper: admin_upgrade_link(args, path)
    Helper->>UTM: adjust_legacy_utm_args(args)
    UTM-->>Helper: normalized campaign/content/medium
    Helper->>Helper: maybe_add_utm_license(query_args)
    Helper-->>Controller: return URL (with utm params & anchor)
    end

    rect rgb(245,255,245)
    Note over Controller,JS: Provide floating links to client
    Controller->>Helper: build upgrade/docs URLs
    Helper-->>JS: inject s11FloatingLinksData.upgradeUrl & documentationUrl
    JS->>JS: config.js reads s11FloatingLinksData and uses URLs in UI
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Focus areas:
    • classes/helpers/FrmAppHelper.php (new UTM normalization, license enrichment, anchor/campaign handling).
    • Floating-links data injection and JS consumption (js/packages/floating-links/config.js and where s11FloatingLinksData is populated).
    • New min-version notice view and removal of deprecated wrapper.
    • Verify consistent mediumcampaign migration, URL escaping/sanitization (e.g., esc_url, ?& replacement), and updated Cypress assertions.

Possibly related PRs

Suggested reviewers

  • shervElmi
  • lauramekaj1

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The title "Update UTM mapping" directly and concisely captures the primary objective of the pull request. According to the PR description, the main goal is changing how UTM attributes are mapped per marketing team requirements, which is exactly what the title communicates. The raw summary confirms this is the central theme across all modified files, with systematic changes to utm_source, utm_campaign, and utm_medium parameters throughout the codebase. The title is specific enough that a teammate reviewing history would immediately understand the core change.
Description Check ✅ Passed The description is clearly related to the changeset and provides meaningful detail about the changes. It explains the primary objective (updating UTM mapping per marketing team requirements), identifies a secondary change (replacing hard-coded URLs with admin_upgrade_link), and then lists five specific UTM mapping changes. The raw summary confirms all of these points: systematic changes from 'medium' to 'campaign', utm_source changes from "WordPress" to "plugin", conditional medium values based on Pro status, and utm_license additions. The description is neither generic nor vague—it provides actionable information about what was changed and why.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch update_utm_mapping

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 86790b8 and 3c53e7e.

📒 Files selected for processing (2)
  • tests/cypress/e2e/Add-Ons/validateAddOnsPage.cy.js (41 hunks)
  • tests/cypress/e2e/Applications/validateApplicationsPage.cy.js (3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Cypress
  • GitHub Check: PHP 8 tests in WP trunk
  • GitHub Check: PHP 7.4 tests in WP trunk
🔇 Additional comments (4)
tests/cypress/e2e/Applications/validateApplicationsPage.cy.js (1)

70-70: LGTM! Test assertions correctly updated for new UTM parameters.

The changes properly update the expected utm_source from WordPress to plugin for the Learn More links in the Business Directory, Letter of Recommendation, and Testimonials template modals. This aligns with the PR's objective to standardize UTM tracking per marketing team requirements.

Also applies to: 198-198, 314-314

tests/cypress/e2e/Add-Ons/validateAddOnsPage.cy.js (3)

16-16: LGTM!

The updated URL assertion correctly validates the new UTM parameter scheme with utm_source=plugin, utm_campaign=addons, and utm_content=upgrade-cta for the upgrade banner CTA link.


157-157: LGTM!

The docs link assertion correctly updates to the new UTM scheme with utm_source=plugin and utm_campaign=addons. The absence of utm_content for documentation links appears intentional and appropriate.


175-645: LGTM!

All add-on card "Plan required" link assertions have been consistently updated to the new UTM parameter scheme. Each link correctly includes utm_source=plugin, utm_campaign=addons, and a unique utm_content value matching the add-on slug, enabling granular tracking of upgrade link engagement per add-on.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
classes/controllers/FrmAppController.php (1)

437-442: Inconsistency confirmed: migrate 'medium' to 'campaign' at line 439.

The review comment is accurate. Line 439 uses the legacy 'medium' key while identical array structures elsewhere in the file (line 583, lines 1338–1342) use the new 'campaign' key. The migration is incomplete, and line 439 should be updated for consistency.

Additionally, line 361 also uses the legacy 'medium' key in a similar context and should be migrated as well for completeness.

🧹 Nitpick comments (4)
classes/models/fields/FrmFieldCaptcha.php (1)

183-185: Fix is correct, but consider refactoring to use add_query_arg for more robust URL construction.

The string replacement correctly addresses the URL malformation issue when query parameters are conditionally appended. However, the hcaptcha_api_url method (lines 200-222) demonstrates a cleaner pattern using add_query_arg (line 210) for URL construction, which is more maintainable and less prone to edge cases.

Consider refactoring the method to use add_query_arg:

 protected function recaptcha_api_url( $frm_settings ) {
-	$api_js_url = 'https://www.google.com/recaptcha/api.js?';
+	$api_js_url = 'https://www.google.com/recaptcha/api.js';
+	$query_args = array();
 
 	if ( $this->allow_multiple( $frm_settings ) ) {
-		$api_js_url .= '&onload=frmRecaptcha&render=explicit';
+		$query_args['onload'] = 'frmRecaptcha';
+		$query_args['render'] = 'explicit';
 	}
 
 	$lang = apply_filters( 'frm_recaptcha_lang', $frm_settings->re_lang, $this->field );
 	if ( $lang ) {
-		$api_js_url .= '&hl=' . $lang;
+		$query_args['hl'] = $lang;
 	}
 
-	// Since this URL initially ends with ? and we never use add_query_arg, remove the extra
-	// & that appears immediately after the ?
-	$api_js_url = str_replace( '?&', '?', $api_js_url );
+	if ( ! empty( $query_args ) ) {
+		$api_js_url = add_query_arg( $query_args, $api_js_url );
+	}
 
 	/**
 	 * @param string $api_js_url
 	 */
 	$api_js_url = apply_filters( 'frm_recaptcha_js_url', $api_js_url );
 
 	return $api_js_url;
 }
classes/controllers/FrmFormsController.php (1)

321-333: Polish: set accurate @SInCE and consider naming/comment clarity

  • Replace @SInCE x.x with the release version used in this PR (likely 6.25).
  • Optional: add a short comment that we intentionally route through admin_upgrade_link for KB pages to inherit UTMs/affiliate handling.

No behavior change required.

Confirm that applying affiliate tracking to knowledgebase links is desired; if not, we can bypass make_affiliate_url for docs.

js/packages/floating-links/config.js (1)

57-57: Guard against undefined s11FloatingLinksData to prevent runtime errors

If s11FloatingLinksData isn’t localized on a page, direct access throws a ReferenceError. Guard it and reuse the guarded object.

Apply this diff:

@@
-( wp => {
+( wp => {
@@
-	// Determine the appropriate links and initialize the S11FloatingLinks class
-	frmFloatingLinksConfig.links = s11FloatingLinksData.proIsInstalled ? frmFloatingLinksConfig.proVersionLinks : frmFloatingLinksConfig.freeVersionLinks;
+	// Safely read localized data with fallbacks
+	const data = window.s11FloatingLinksData || {
+		upgradeUrl: '#',
+		documentationUrl: 'https://formidableforms.com/knowledgebase/',
+		proIsInstalled: false
+	};
@@
-			url: s11FloatingLinksData.upgradeUrl,
+			url: data.upgradeUrl,
@@
-			url: s11FloatingLinksData.documentationUrl,
+			url: data.documentationUrl,
@@
-			url: s11FloatingLinksData.documentationUrl,
+			url: data.documentationUrl,
@@
-	frmFloatingLinksConfig.links = s11FloatingLinksData.proIsInstalled ? frmFloatingLinksConfig.proVersionLinks : frmFloatingLinksConfig.freeVersionLinks;
+	frmFloatingLinksConfig.links = data.proIsInstalled ? frmFloatingLinksConfig.proVersionLinks : frmFloatingLinksConfig.freeVersionLinks;

Please confirm s11FloatingLinksData is always localized before this script loads; if so, the guard is a no-op but prevents hard-to-debug errors on edge screens.

Also applies to: 69-69, 81-81, 108-109

classes/helpers/FrmAppHelper.php (1)

3642-3648: Docblock @SInCE placeholders

Replace @SInCE x.x with the release version used in this PR (e.g., 6.25) to keep docs consistent.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5c74400 and d12dc24.

📒 Files selected for processing (17)
  • classes/controllers/FrmAddonsController.php (1 hunks)
  • classes/controllers/FrmAppController.php (2 hunks)
  • classes/controllers/FrmDashboardController.php (1 hunks)
  • classes/controllers/FrmFormsController.php (3 hunks)
  • classes/helpers/FrmAppHelper.php (3 hunks)
  • classes/helpers/FrmDashboardHelper.php (1 hunks)
  • classes/helpers/FrmEntriesListHelper.php (1 hunks)
  • classes/models/fields/FrmFieldCaptcha.php (1 hunks)
  • classes/views/addons/min-version-notice.php (1 hunks)
  • classes/views/addons/upgrade_to_pro.php (0 hunks)
  • classes/views/dashboard/templates/pro-features-list.php (1 hunks)
  • classes/views/frm-entries/no_entries.php (1 hunks)
  • classes/views/frm-settings/general.php (1 hunks)
  • classes/views/frm-settings/license_box.php (2 hunks)
  • classes/views/shared/admin-footer-links.php (2 hunks)
  • classes/views/shared/views-info.php (2 hunks)
  • js/packages/floating-links/config.js (3 hunks)
💤 Files with no reviewable changes (1)
  • classes/views/addons/upgrade_to_pro.php
🧰 Additional context used
🧬 Code graph analysis (11)
classes/helpers/FrmEntriesListHelper.php (1)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4664)
  • admin_upgrade_link (122-165)
classes/views/frm-entries/no_entries.php (1)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4664)
  • admin_upgrade_link (122-165)
classes/views/addons/min-version-notice.php (2)
classes/controllers/FrmAddonsController.php (2)
  • FrmAddonsController (6-1512)
  • is_license_expired (475-493)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4664)
  • admin_upgrade_link (122-165)
classes/views/frm-settings/general.php (1)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4664)
  • admin_upgrade_link (122-165)
classes/helpers/FrmAppHelper.php (1)
stubs.php (2)
  • FrmProAddonsController (128-163)
  • get_readable_license_type (161-162)
classes/controllers/FrmDashboardController.php (1)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4664)
  • admin_upgrade_link (122-165)
classes/controllers/FrmAppController.php (1)
classes/helpers/FrmAppHelper.php (3)
  • FrmAppHelper (6-4664)
  • pro_is_installed (355-357)
  • admin_upgrade_link (122-165)
classes/views/shared/admin-footer-links.php (1)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4664)
  • admin_upgrade_link (122-165)
classes/controllers/FrmFormsController.php (1)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4664)
  • admin_upgrade_link (122-165)
classes/controllers/FrmAddonsController.php (1)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4664)
  • maybe_add_missing_utm (215-238)
classes/views/shared/views-info.php (2)
classes/controllers/FrmAddonsController.php (1)
  • FrmAddonsController (6-1512)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4664)
  • admin_upgrade_link (122-165)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: Run PHP Syntax inspection (8.3)
  • GitHub Check: Cypress
  • GitHub Check: PHP 8 tests in WP trunk
  • GitHub Check: PHP 7.4 tests in WP trunk
  • GitHub Check: PHP 7.4 tests in WP trunk
  • GitHub Check: PHP 8 tests in WP trunk
  • GitHub Check: Cypress
🔇 Additional comments (23)
classes/models/fields/FrmFieldCaptcha.php (1)

183-185: Inconsistency between PR objectives and actual changes.

The PR objectives and AI summary describe updating UTM mapping and refactoring UTM parameters across the codebase. However, this specific change addresses a URL construction bug in the reCAPTCHA API URL and does not involve UTM parameters or campaign tracking.

classes/views/shared/views-info.php (2)

31-36: LGTM! Dynamic link generation implemented correctly.

The demo link properly uses the new UTM parameter structure with campaign and content keys, and correctly calls FrmAppHelper::admin_upgrade_link directly to generate the URL dynamically.


107-119: LGTM! Dynamic link generation implemented correctly.

The learn more link properly uses the new UTM parameter structure with campaign and content keys, and correctly calls FrmAppHelper::admin_upgrade_link directly to generate the URL dynamically.

classes/views/addons/min-version-notice.php (3)

1-4: LGTM: Standard WordPress security check.

The ABSPATH check correctly prevents direct file access.


6-7: LGTM: Proper WordPress admin banner structure.

The banner uses appropriate classes and properly translates the message using esc_html_e().


9-15: LGTM: Proper license check and UTM structure.

The conditional logic correctly checks license expiration, and the UTM array properly uses the campaign key as per the PR's refactoring objectives.

classes/helpers/FrmDashboardHelper.php (1)

217-219: UTM key migration looks good

Switch to campaign/content is consistent with the new helpers and preserves existing behavior. LGTM.

classes/views/dashboard/templates/pro-features-list.php (1)

23-25: Consistent UTM usage

campaign/content keys align with admin_upgrade_link and maybe_add_missing_utm. Looks correct.

classes/controllers/FrmFormsController.php (1)

309-311: Good: centralized docs link generation

Using self::get_form_too_long_docs_url() avoids hardcoded UTMs and keeps tracking consistent. LGTM.

classes/helpers/FrmAppHelper.php (3)

116-165: Centralized upgrade/docs URL builder looks solid; verify utm_source change

Updated admin_upgrade_link uses:

  • utm_source=plugin (was previously different in parts of the codebase),
  • utm_medium via get_utm_medium(),
  • legacy UTM normalization and anchors.

LGTM. Please verify analytics/reporting expect utm_source='plugin' for these links.


200-207: Legacy arg shim is correct

Mapping medium -> campaign keeps older call sites working with the new UTM shape. LGTM.


1513-1515: Banner UTMs migrated correctly

campaign/content keys align with the new helper behavior. Looks good.

classes/controllers/FrmDashboardController.php (1)

259-259: LGTM! Good security practice.

Wrapping the dynamically generated URL with esc_url() is appropriate defensive coding when outputting URLs in HTML attributes, even when the source function is trusted.

classes/views/frm-settings/license_box.php (1)

12-15: LGTM! UTM parameter naming updated correctly.

The changes properly migrate from the legacy medium key to the new campaign key structure, consistent with the PR's UTM mapping refactor.

Also applies to: 28-31

classes/controllers/FrmAddonsController.php (1)

836-847: LGTM! Cleaner UTM handling approach.

Replacing explicit query parameter construction with the centralized maybe_add_missing_utm helper improves maintainability and ensures consistent UTM handling across the codebase.

classes/controllers/FrmAppController.php (3)

582-591: LGTM! Correct UTM structure.

Lines 583-584 properly use the new campaign key structure, consistent with the PR's UTM mapping refactor.


1337-1350: LGTM! Proper dynamic URL generation for floating links.

The floating links now use campaign-based UTMs and dynamically generate URLs via admin_upgrade_link, which properly centralizes UTM handling and URL construction.


359-364: Review comment is valid but background compatibility mitigates the concern.

The code at line 361 does use the legacy 'medium' key. However, verification shows that FrmAppHelper::maybe_add_missing_utm() automatically calls adjust_legacy_utm_args() internally, which converts 'medium' to 'campaign' on the fly. This means the code functions correctly.

That said, the review comment's suggestion to update this for consistency is reasonable. While the backward-compatible conversion works transparently, directly using the new 'campaign' key structure would be more maintainable and consistent with the PR's migration intent.

The suggested diff is appropriate:

-			$upgrade_link = FrmAppHelper::maybe_add_missing_utm( $upgrade_link, array( 'medium' => 'plugin-row' ) );
+			$upgrade_link = FrmAppHelper::maybe_add_missing_utm( $upgrade_link, array( 'campaign' => 'plugin-row' ) );
classes/helpers/FrmEntriesListHelper.php (1)

231-243: LGTM! Dynamic URL generation implemented correctly.

The spam protection link now uses the new campaign-based UTM structure and dynamically generates the knowledgebase URL via admin_upgrade_link, replacing the previous hardcoded approach.

classes/views/frm-entries/no_entries.php (1)

35-44: LGTM! Dynamic documentation link implemented correctly.

The documentation link now uses the new campaign-based UTM structure and dynamically generates the knowledgebase URL, making it consistent with the broader UTM refactor.

classes/views/shared/admin-footer-links.php (2)

10-22: LGTM! Upgrade link UTM structure updated correctly.

The upgrade link now uses the new campaign-based UTM structure, and the fallback logic properly handles both Pro and Lite scenarios with consistent UTM parameters.


39-45: LGTM! Dynamic documentation link implemented correctly.

The documentation link now uses the new campaign-based UTM structure and dynamically generates the knowledgebase URL via admin_upgrade_link, replacing the previous hardcoded approach.

classes/views/frm-settings/general.php (1)

99-109: LGTM! Dynamic GDPR documentation link implemented correctly.

The GDPR documentation link now uses the new campaign-based UTM structure and dynamically generates the knowledgebase URL. The translation string is properly structured with placeholders for the link tags.

Comment thread classes/helpers/FrmAppHelper.php
Comment thread classes/views/addons/min-version-notice.php Outdated
Comment thread classes/views/addons/min-version-notice.php
Comment thread classes/views/shared/views-info.php
@codecov
Copy link
Copy Markdown

codecov Bot commented Oct 27, 2025

Codecov Report

❌ Patch coverage is 52.17391% with 33 lines in your changes missing coverage. Please review.
✅ Project coverage is 27.19%. Comparing base (98aaff5) to head (86790b8).
⚠️ Report is 24 commits behind head on master.

Files with missing lines Patch % Lines
classes/controllers/FrmAppController.php 0.00% 13 Missing ⚠️
classes/controllers/FrmFormsController.php 14.28% 6 Missing ⚠️
classes/helpers/FrmAppHelper.php 86.48% 5 Missing ⚠️
classes/helpers/FrmEntriesListHelper.php 0.00% 5 Missing ⚠️
classes/helpers/FrmDashboardHelper.php 0.00% 2 Missing ⚠️
classes/controllers/FrmDashboardController.php 0.00% 1 Missing ⚠️
classes/models/fields/FrmFieldCaptcha.php 0.00% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #2555      +/-   ##
============================================
+ Coverage     27.15%   27.19%   +0.04%     
- Complexity     8753     8766      +13     
============================================
  Files           143      143              
  Lines         29472    29518      +46     
============================================
+ Hits           8002     8027      +25     
- Misses        21470    21491      +21     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@Crabcyborg Crabcyborg merged commit 6c429e1 into master Oct 27, 2025
16 checks passed
@Crabcyborg Crabcyborg deleted the update_utm_mapping branch October 27, 2025 16:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant