Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
chromed
/
wp-content
/
plugins
/
woocommerce
/
src
/
Internal
/
StockNotifications
/
Utilities
:
UtmHelper.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php declare( strict_types=1 ); namespace Automattic\WooCommerce\Internal\StockNotifications\Utilities; /** * Helper for appending UTM campaign parameters to outgoing stock-notification email links. * * Centralizes the `utm_source` / `utm_medium` values so order attribution stays consistent * across all three email types (verify, verified, back-in-stock). * * @internal */ class UtmHelper { /** * UTM source value used for all stock notification emails. */ public const UTM_SOURCE = 'back-in-stock-notifications'; /** * Default UTM medium for stock notification emails. */ public const UTM_MEDIUM_EMAIL = 'email'; /** * Append the standard email UTM parameters to a URL. * * @param string $url The URL to annotate. * @param string $medium The UTM medium (defaults to `email`). * @return string */ public static function add_email_utm_params( string $url, string $medium = self::UTM_MEDIUM_EMAIL ): string { if ( empty( $url ) ) { return $url; } // Defensive: lock down the medium to a safe URL-friendly slug, falling back to the default // if sanitization strips everything. Prevents any future caller from piping user-controlled // input into the outbound tracking URL. $sanitized_medium = sanitize_key( $medium ); if ( '' === $sanitized_medium ) { $sanitized_medium = self::UTM_MEDIUM_EMAIL; } return add_query_arg( array( 'utm_source' => self::UTM_SOURCE, 'utm_medium' => $sanitized_medium, ), $url ); } }