const DEFAULT_UPGRADE_URL = "https://swiftcommerce.io/pricing/" interface UpgradeAttribution { feature: string placement: string } function toCampaignToken(value: string): string { return value .trim() .toLowerCase() .replace(/[^a-z0-9]+/g, "_") .replace(/^_+|_+$/g, "") } /** * Add anonymous dashboard attribution to an upgrade link while preserving any * query parameters already supplied by WordPress or the licensing provider. */ export function getTrackedUpgradeUrl( upgradeUrl: string, { feature, placement }: UpgradeAttribution, ): string { const url = new URL(upgradeUrl || DEFAULT_UPGRADE_URL) const content = [toCampaignToken(feature), toCampaignToken(placement)] .filter(Boolean) .join("_") url.searchParams.set("utm_source", "swift_commerce_plugin") url.searchParams.set("utm_medium", "plugin_dashboard") url.searchParams.set("utm_campaign", "upgrade_to_pro") url.searchParams.set("utm_content", content || "feature_header") return url.toString() }