A small, offline toolkit for turning a list of public landing pages into campaign links. Give every destination the same campaign details, review the output, and download a CSV for your campaign sheet.
What problem does it solve?
Preparing a newsletter or a campaign across several pages can mean repeating the same tagging work. This toolkit applies one campaign configuration to up to 200 destinations and highlights rows that need attention. It suits links to WordPress pages, WooCommerce product pages, and other public websites.
- Build a batch without installing a plugin or creating an account.
- Retain ordinary query values, such as coupon parameters, and URL fragments.
- Replace old UTM values rather than accumulating duplicate campaign tags.
- Export links, status, and warnings together as a CSV.
Google offers a Campaign URL Builder for individual links. This toolkit focuses on an offline batch workflow. It does not install Analytics, shorten URLs, check destinations, or guarantee attribution.
1. Open the toolkit
- Choose Download ZIP and extract the folder
bulk-utm-link-builder. - Open
index.htmlin a JavaScript-enabled desktop browser. The HTML is self-contained; generation does not require a server or internet connection. - Choose Load example, then Build links to try the included sample. You can also use the online preview above.
2. Build your campaign links
- Paste your public destination URLs, one per line. Include
https://orhttp://. Maximum: 200 URLs. - Enter Source and Medium, plus either a Campaign name or Campaign ID.
- Optionally add source platform, campaign ID, content, and term. All supplied fields apply to every destination in the batch.
- Choose Build links. Review each result and warning. A failed row does not prevent other valid rows from being generated.
For example, use newsletter as the source, email as the medium, and november_launch as the campaign. The destination below keeps its coupon value and fragment:
https://example.com/shop/?coupon=welcome#offers
https://example.com/shop/?coupon=welcome&utm_source=newsletter&utm_medium=email&utm_campaign=november_launch#offers
This example preserves a URL value; it does not create or validate a WooCommerce coupon. Campaign values retain their case, so keep your naming consistent. Google documents case sensitivity in its campaign URL guidance.
3. Export and check before sharing
- Choose Copy ready links to copy successful rows, or Download CSV for all rows, including errors and warnings.
- If clipboard access is blocked for a local file, select and copy a result manually or use CSV.
- Open a generated URL on your own website. Confirm it loads the intended page and its existing query values still work.
- Check campaign capture with your actual consent and analytics setup before distributing links. The builder does not perform that check.
CSV contains destination, campaign_url, status, and notes. Review error rows before importing. Cells that resemble spreadsheet formulas are prefixed with an apostrophe for safer spreadsheet handling.
Important behavior and limits
- Old UTMs are replaced: every existing
utm_*key is removed, including unsupported and case-variant keys. Blank optional fields remove old values. Fill in every campaign field you want to retain. - Public landing pages only: avoid signed links, checkout/payment links, login links, private links, and personal data. Common signed/token/nonce URLs are rejected, but this is not exhaustive detection.
- Encoding may change: query values and fragments are retained, but URLs can be normalized during serialization. Do not use this tool where exact URL bytes matter.
- One campaign per batch: use separate batches for different creatives or campaign details. Dynamic advertising placeholders are not supported.
- Ad tracking needs review: the tool retains common ad click IDs and shows a warning. Consult Google’s manual and auto-tagging guidance before editing ad URLs. Avoid adding campaign tags to internal navigation.
- Platform behavior varies: redirects, hash-routed apps, and systems that strip parameters need their own checks. No WordPress or WooCommerce settings are changed.
Privacy and permissions
The toolkit makes no network requests and uses no analytics, cookies, or persistent storage. Inputs stay in page memory; your browser may independently remember form inputs. Exports are saved to your device. Generated URLs expose campaign values to recipients and destination servers, so do not put names, email addresses, passwords, or private customer data in them. The contact link opens Usman’s website only when clicked.
What has been tested?
Version 1.0.0 was checked on 28 October 2026. Nine automated core tests passed on Node.js 24.22.1: query and fragment preservation, old UTM replacement, Unicode encoding, URL validation, campaign requirements, warnings, batch limits/error handling, CSV escaping/formula protection, and all seven supported fields. The UI script passed syntax checking. Tests and source are included in the ZIP; run node --test tests/core.test.cjs from the extracted folder.
Browser acceptance testing is pending. Clipboard access, local HTML interaction, and CSV download have not been certified across browser versions. The toolkit uses standard browser APIs; it does not claim tested integration with WordPress, WooCommerce, or a live Google Analytics property.
Troubleshooting
- No output: enable JavaScript, use full URLs, and enter the required campaign fields.
- An old UTM value disappeared: replacement is deliberate. Re-enter values you want to keep before rebuilding.
- Campaign missing in reports: check Analytics installation, consent, redirects, and reporting configuration. A tagged URL alone does not set up tracking.
- A row is rejected: read the row’s error. For signed/private URLs, choose a normal public landing page.
Removal and rollback
Close the toolkit and delete its extracted folder, ZIP, and exports when no longer needed. Nothing is installed on your site. To undo a distributed campaign link, replace it with the original destination wherever you published it. Previously collected analytics data is unchanged.
Version and license
1.0.0 — 28 October 2026: initial offline batch builder, seven UTM fields, warnings, clipboard copy, CSV export, and core tests. Released under the MIT license; free to use and modify. Full license text is included.
Research and official references
Reviewed 28 October 2026: Google campaign URL parameters, manual and auto-tagging, and Google’s Campaign URL Builder. This is an independent toolkit by Usman Shahid.