# Link Manager Pro — Complete Documentation > Generated from https://docs.linkmanagerpro.com > This file contains all documentation pages concatenated for LLM consumption. --- # System Requirements > **TL;DR:** Link Manager Pro requires WordPress 5.8 or later, PHP 8.0 or later, and MySQL 5.7+ or MariaDB 10+. It works with any standard WordPress hosting environment. No external services or API keys are needed. Before you install Link Manager Pro, verify that your environment meets these minimum requirements. ## WordPress - **Minimum version**: 5.8 or higher - **Tested up to**: 6.9 ## PHP - **Minimum version**: 8.0 or higher - **Extensions**: Standard WordPress PHP extensions (no additional extensions required) ## Database - **MySQL**: 5.7 or higher - **MariaDB**: 10.0 or higher ## Need Help? If you are unsure whether your environment meets these requirements: - Check your PHP and WordPress versions under **Tools → Site Health** in your WordPress admin - Contact your hosting provider for server-level details - Reach out to our support team at [https://linkmanagerpro.com/support](https://linkmanagerpro.com/support?utm_source=docs&utm_medium=referral&utm_campaign=requirements) --- # Installation > **TL;DR:** Upload the plugin ZIP file through your WordPress admin at **Plugins → Add New → Upload Plugin**, then activate it. The plugin creates its database tables automatically on first activation. No configuration is required before you start. Install Link Manager Pro on your WordPress site using one of the methods below. ## Prerequisites - WordPress 5.8 or higher - PHP 8.0 or higher - Administrator access to your WordPress dashboard For full details, see [System Requirements](https://docs.linkmanagerpro.com/getting-started/requirements). ## Method 1: Upload via WordPress Admin (Recommended) 1. Download the `link-manager-pro.zip` file from your purchase confirmation or account page. 2. In your WordPress admin, go to **Plugins → Add New**. 3. Click **Upload Plugin** at the top of the page. 4. Click **Choose File**, select the `.zip` file, then click **Install Now**. 5. After the upload finishes, click **Activate Plugin**. ## Method 2: Manual FTP Upload 1. Download and unzip the `link-manager-pro.zip` file on your computer. 2. Connect to your server using an FTP client (FileZilla, Cyberduck, etc.). 3. Upload the `link-manager-pro` folder to `/wp-content/plugins/`. 4. In your WordPress admin, go to **Plugins**. 5. Find **Link Manager Pro** in the list and click **Activate**. ## What Happens on Activation When you activate the plugin, three things happen automatically: 1. **Database tables** — The plugin creates the tables it needs for links, clicks, redirects, and other data. 2. **Permissions** — The plugin registers the `manage_link_manager_pro` capability for the Administrator role. 3. **Rewrite rules** — The plugin refreshes WordPress rewrite rules so that masked link URLs (e.g., `yoursite.com/go/slug`) resolve immediately. When you open the plugin for the first time, the **onboarding wizard** appears. It walks you through initial configuration, privacy settings, and a full site scan. See [Quick Start](https://docs.linkmanagerpro.com/getting-started/quick-start) for a step-by-step walkthrough. ## Verify the Installation After you complete the onboarding wizard, confirm that everything is working: 1. **Admin menu** — Check that **Link Manager** appears in your WordPress sidebar with these sub-items: Dashboard, Pretty Links, Link Audit, Campaigns, Affiliates, Link Health, and Settings. 2. **Dashboard** — Click **Link Manager** and verify that the Dashboard loads without errors. 3. **Test a masked link** — Create a test link (or use one discovered by the site scan), then visit `yoursite.com/go/your-slug` in a new browser tab. You should be redirected to the destination URL. 4. **Click tracking** — After visiting the test link, return to **Pretty Links** and confirm that the click count incremented. If any step fails, check [System Requirements](https://docs.linkmanagerpro.com/getting-started/requirements) or contact support at [https://linkmanagerpro.com/support](https://linkmanagerpro.com/support?utm_source=docs&utm_medium=referral&utm_campaign=installation). --- # Quick Start > **TL;DR:** After activation, go to Link Manager Pro in your WordPress admin. Run a site scan to detect external links, then create your first masked link with a custom slug. The entire setup takes under five minutes. Get Link Manager Pro configured and your first link created in under five minutes. ## Step 1: Complete the Onboarding Wizard The onboarding wizard launches automatically after you activate the plugin. It has four steps. ### Welcome The wizard opens with a welcome screen that introduces Link Manager Pro. Click **Next** to begin. ### Links Configure how your links are structured and redirected: - **Auto-Mask on Save** — Toggle automatic detection and masking of external links whenever you save content. When enabled, you can set: - **Link Structure Prefix** — Set the base path for your masked URLs (default: `go`, producing URLs like `yoursite.com/go/slug`). - **Mask Internal Links** — Include internal site URLs in the masking engine. When enabled, you can set: - **Internal Mask Prefix** — Set the prefix for internal redirects (default: `go`). - **Default Redirect Type** — Choose your default redirect method (default: 301 permanent, 302 temporary, or 307 temporary). Applied when a link does not specify a custom type. ### Privacy Configure how the plugin handles visitor data and click tracking: - **Click Tracking** — Enable or disable click tracking globally. - **Anonymize IP Addresses** — Truncate visitor IPs for GDPR and privacy compliance. - **Bot Detection** — Filter out known bots and crawlers from click analytics. - **Cookie Consent Acknowledgment** — Confirm that your site handles cookie consent for visitors who interact with tracked links. ### Scan The wizard scans your existing posts and pages to detect and mask external links. The scan: - Processes posts in batches and shows a live progress bar with the number of posts processed out of the total. - Displays live counters for **Links Found** and **Posts Updated** as it runs. - Replaces each discovered external link with a masked URL. - Creates a pretty link record for every unique destination URL found. Wait for the progress bar to reach 100%. When the scan finishes, click **View Links** to see all discovered links on the **Pretty Links** page. ## Step 2: Review Your Links Go to **Link Manager → Pretty Links** to see every link the scan discovered. Each row shows: - **Link Details** — The masked URL and the target destination URL. - **Routing** — Redirect type (301, 302, 307), conditional rule count, and source (Manual or Scan). - **Categories** — Assigned categories. - **Tags** — Assigned tags. - **Keywords** — Auto-linking keywords, if configured. - **Engagement** — Total click count. - **Created** — The date the link was created. ## Step 3: Create Your First Link 1. Click the **New Pretty Link** button in the top-right corner of the Pretty Links screen. 2. Fill in the link details: | Field | Description | |---|---| | **Destination URL** | The final URL where visitors redirect to. | | **Custom Slug (Optional)** | The path segment for your masked URL (e.g., `running-shoes` → `yoursite.com/go/running-shoes`). Leave blank to auto-generate. | | **Redirect Type** | 301 (permanent), 302 (temporary), or 307 (temporary). | | **Source** | How the link was created — **Manual** or **Scan**. | | **Link Attributes** | Toggle Nofollow, Noopener, Noreferrer, or Sponsored. | | **Keywords** | Enter keywords that the plugin auto-links to this URL across your content. | | **Forward URL Parameters** | Pass query parameters from the masked URL through to the destination. | | **UTM Parameters** | Add campaign, source, medium, term, and content parameters — or load values from a saved template. | | **Password Protection** | Require visitors to enter a password before redirecting. | | **Scheduling & Access** | Set an **Active From** date and an **Expires At** date to control when the link is live. | | **Conditional Routing Rules** | Add routing rules based on click count, visitor country, or date range. | | **Categories** | Assign one or more categories for organization. | | **Tags** | Select or create tags for filtering and grouping. | 3. Click **Register Link** to save. Your masked link is now live at `yoursite.com/go/your-slug`. ## Step 4: Use Your Link ### In Posts and Pages 1. Edit any post or page. 2. Highlight the text you want to link. 3. Click the link button in the toolbar and paste your masked URL. 4. Click **Apply**. ### In Navigation Menus 1. Go to **Appearance → Menus**. 2. Open the **Custom Links** panel. 3. Paste your masked URL and add a label. 4. Click **Add to Menu**, then save. ## What's Next? Now that your first link is live, explore these features: - **[Click Tracking & Analytics](../user-guide/analytics)** — View click data with country detection, device breakdown, and IP anonymization. - **[Affiliate Management](../user-guide/affiliates)** — Organize affiliates with domain-based matching and per-affiliate auto-linking. - **[Link Health Monitoring](../features/health-monitoring)** — Detect 404 errors and broken links with scheduled health scans. - **[Campaigns](../features/campaigns)** — Group links under UTM-based campaigns and track campaign-level performance. - **[Settings](../user-guide/settings)** — Configure link prefixes, redirect defaults, email digests, UTM templates, and more. Need help? Contact support at [https://linkmanagerpro.com/support](https://linkmanagerpro.com/support?utm_source=docs&utm_medium=referral&utm_campaign=quick-start). --- # Creating Links > **TL;DR:** Go to **Link Manager → Pretty Links** and click **New Pretty Link**. Enter a destination URL, set a custom slug, choose a redirect type (default: 301), and configure attributes. You can also add password protection, scheduling, parameter forwarding, and conditional routing rules. Create, configure, and manage redirect links with full control over behavior, scheduling, attributes, and conditional routing. ## Link Components Every link supports the following fields: | Field | Type | Description | |-------|------|-------------| | **Destination URL** | URL, required | The full URL visitors redirect to. Max 2,048 characters | | **Slug** | Text, optional | Short URL path (e.g., `running-shoes`). Auto-generated if you leave it blank. Max 64 characters, must be unique | | **Redirect Type** | Select, default 301 | 301 = permanent (default), 302 = temporary, 307 = temporary preserving HTTP method | | **Link Attributes** | Toggles | nofollow, noopener, noreferrer, and sponsored | | **Keywords** | Text list | Keywords used for auto-linking in post content | | **Enable Auto-Linking** | Toggle | Turn auto-linking on or off for this link | | **Auto-Link Priority** | Number, default 10 | Range 0–100. Lower number = higher priority when keywords conflict across links | | **Forward URL Parameters** | Toggle | Forward query parameters from the redirect URL to the destination | | **Password Protection** | Text, optional | Restrict access with a password prompt. Max 128 characters | | **UTM Campaign Parameters** | Text fields | utm_source, utm_medium, utm_campaign, utm_term, utm_content. Max 255 characters each | | **Active From** | Date and time, optional | Link activates after this date. Before this date, the link shows as "scheduled" | | **Expires At** | Date and time, optional | Link stops working after this date. After expiry, the link shows as "expired" | | **Categories** | Taxonomy | Assign to link categories (each category supports a color label) | | **Tags** | Taxonomy | Assign to link tags | | **Conditional Routing Rules** | Rule list | Condition-based alternate redirects (see [Conditional Routing Rules](#conditional-routing-rules)) | ## Creating a Link 1. Go to **Link Manager → Pretty Links**. 2. Click **New Pretty Link**. 3. Enter the **Destination URL** — the full URL where visitors redirect to. 4. Enter a **Slug** or leave it blank for an auto-generated code. The slug becomes part of your masked URL: `yoursite.com/go/your-slug`. 5. Select a **Redirect Type**: - **301** (default) — permanent redirect. Use for links that never change. Search engines cache this. - **302** — temporary redirect. Use for links you may change later. - **307** — temporary redirect that preserves the original HTTP method (POST stays POST). 6. Configure **Link Attributes** — toggle nofollow, noopener, noreferrer, or sponsored as needed. 7. Add **Keywords** and enable **Auto-Linking** if you want this link inserted automatically into post content. 8. Set **Auto-Link Priority** if multiple links share overlapping keywords. 9. Toggle **Forward URL Parameters** to pass query strings from the masked URL through to the destination. 10. Set a password under **Password Protection** if you want to gate access behind a password prompt. 11. Add **UTM Campaign Parameters** to append campaign tracking values to the destination URL. 12. Set **Active From** and **Expires At** dates to schedule the link's availability window. 13. Assign **Categories** and **Tags** to organize the link. 14. Add **Conditional Routing Rules** for advanced redirect logic. 15. Click **Register Link**. ## Link Attributes Configure `rel` attribute values on each link to control SEO signals and browser behavior. | Attribute | What It Does | When to Use | |-----------|-------------|-------------| | **nofollow** | Tells search engines not to pass link equity | Affiliate links, paid placements, untrusted URLs | | **noopener** | Prevents the destination page from accessing `window.opener` | Any link that opens in a new tab — protects against reverse tabnapping | | **noreferrer** | Hides your site as the traffic source from the destination | When you do not want the destination to know where the click came from | | **sponsored** | Marks the link as a paid or sponsored placement | FTC-compliant affiliate links, sponsored content, paid partnerships | You can combine multiple attributes on a single link. For affiliate links, enable both **nofollow** and **sponsored**. ## Slug Best Practices Your slug is the readable part of the masked URL. Keep it clean and descriptive. **Good slugs:** `amazon-echo`, `hosting-recommendation`, `wordpress-course` **Bad slugs:** `link1`, `prod123`, `a-very-long-slug-that-nobody-will-remember-or-type` Tips: - Use lowercase letters and hyphens only. - Keep it under 50 characters. - Make it descriptive — readers should understand the destination from the slug. - Avoid special characters and spaces. - The slug must be unique across all your links (max 64 characters). ## Auto-Linking per Link Auto-linking automatically replaces keyword matches in your post content with this link. 1. In the link editor, add one or more **Keywords**. 2. Toggle **Enable Auto-Linking** to on. 3. Set **Auto-Link Priority** (default: 10). Lower numbers take priority when two links compete for the same keyword. Auto-linking respects the global settings for case sensitivity, max replacements per keyword, max links per page, excluded headings, and applicable post types. Configure those at **Link Manager → Settings → Auto-Linking**. ## UTM Campaign Parameters Append UTM campaign tracking values to the destination URL for each link. | Parameter | Purpose | Example | |-----------|---------|---------| | **utm_source** | Identifies the traffic source | `newsletter`, `twitter` | | **utm_medium** | Identifies the marketing medium | `email`, `social`, `cpc` | | **utm_campaign** | Identifies the campaign name | `spring-sale`, `product-launch` | | **utm_term** | Identifies paid search keywords | `running-shoes`, `best-hosting` | | **utm_content** | Differentiates similar content or links | `header-cta`, `sidebar-banner` | When a visitor clicks the masked link, the plugin appends these values as query parameters to the destination URL before redirecting. ## Password Protection Restrict access to a link by requiring a password before redirect. ### Setting a Password 1. In the link editor, enter a password in the **Password Protection** field. 2. Save the link. The plugin never stores the plain text password. When you edit a password-protected link, the password field is blank with the placeholder "Leave blank to keep current." Enter a new password to change it, or leave it blank to keep the existing password. ### Visitor Experience When a visitor clicks a password-protected link: 1. The plugin displays a password prompt instead of redirecting. 2. The visitor enters the password. 3. If the password matches, the visitor redirects to the destination URL. 4. If the password is wrong, the prompt redisplays with an error. ## Link Scheduling Control when a link is active using date-based scheduling. | Field | Behavior | |-------|----------| | **Active From** | The link only works after this date and time. Before this date, the link status shows as **scheduled** and does not redirect visitors. | | **Expires At** | The link stops working after this date and time. After expiry, the link status shows as **expired** and does not redirect visitors. | You can use either field independently or combine both to create a specific availability window. **Examples:** - Set only **Active From** to launch a link at a future date. - Set only **Expires At** to create a limited-time link. - Set both to run a link during a specific promotion window. ## Forward URL Parameters When you enable **Forward URL Parameters**, the plugin passes any query parameters from the masked URL through to the destination URL. **Example:** A visitor clicks: `yoursite.com/go/product?color=red&size=large` - **Forward URL Parameters off:** Visitor redirects to `https://shop.example.com/item-123` - **Forward URL Parameters on:** Visitor redirects to `https://shop.example.com/item-123?color=red&size=large` This is useful for passing tracking IDs, variant selectors, or referral codes without creating separate links for each combination. ## Conditional Routing Rules Conditional routing lets you redirect visitors to different destination URLs based on rules you define. Each link can have multiple rules. ### Rule Fields | Field | Type | Description | |-------|------|-------------| | **Name** | Text, optional | A descriptive label for the rule. Max 120 characters | | **Is Active** | Toggle, default on | Turn the rule on or off without deleting it | | **Priority** | Number, default 100 | Range 0–100. Lower numbers evaluate first | | **Match Mode** | Select, default `all` | `all` = every condition must match (AND). `any` = at least one condition must match (OR) | | **Target URL** | URL, required | The alternate destination when this rule matches. Max 2,048 characters | | **Redirect Type** | Select, default 302 | 301, 302, or 307 for this specific rule | | **Start At** | Date and time, optional | Rule only evaluates after this date | | **End At** | Date and time, optional | Rule stops evaluating after this date | | **Conditions** | Condition list | One or more conditions (see below) | ### Condition Types | Condition | Operators | Value | Description | |-----------|-----------|-------|-------------| | **total_clicks** | gt, gte, eq, lt, lte | Number | Match based on the link's total click count | | **country_in** | in | Array of 2-letter country codes | Match the visitor's country (e.g., `["US", "CA", "GB"]`) | | **date_after** | gt, gte | Date string | Match if the current date is after the specified date | | **date_before** | lt, lte | Date string | Match if the current date is before the specified date | ### How Rule Evaluation Works 1. The plugin loads all **active** rules for the link, sorted by **priority** (lowest number first). 2. For each rule, the plugin checks whether the current date falls within the rule's **Start At** / **End At** range (if set). 3. The plugin evaluates the rule's conditions using the **match mode**: - `all` — every condition must be true (AND logic). - `any` — at least one condition must be true (OR logic). 4. The **first matching rule wins**. The visitor redirects to that rule's target URL with that rule's redirect type. 5. If **no rules match**, the visitor redirects to the link's default destination URL. ### Creating a Rule 1. In the link editor, scroll to **Conditional Routing Rules**. 2. Click **Add Rule**. 3. Enter a **Name** (e.g., "US visitors after 1000 clicks"). 4. Set the **Priority** (lower = evaluated first). 5. Choose a **Match Mode** (`all` or `any`). 6. Enter the **Target URL** for this rule. 7. Select a **Redirect Type**. 8. Optionally set **Start At** and **End At** dates to limit when the rule is active. 9. Add one or more **Conditions** using the condition types above. 10. Verify **Is Active** is on (it defaults to on for new rules). 11. Save the link. ### Rule Examples **Geo-targeting:** Redirect US and Canadian visitors to a regional landing page. - Match Mode: `any` - Condition: `country_in` → `in` → `["US", "CA"]` - Target URL: `https://shop.example.com/north-america` **Click threshold:** Switch to a new destination after 5000 clicks. - Match Mode: `all` - Condition: `total_clicks` → `gte` → `5000` - Target URL: `https://shop.example.com/updated-offer` **Time-limited promotion:** Redirect to a sale page only during a specific date range. - Match Mode: `all` - Condition 1: `date_after` → `gte` → `2026-04-01` - Condition 2: `date_before` → `lte` → `2026-04-15` - Target URL: `https://shop.example.com/spring-sale` **Combined geo + time:** Redirect UK visitors to a regional page only in April. - Match Mode: `all` - Condition 1: `country_in` → `in` → `["GB"]` - Condition 2: `date_after` → `gte` → `2026-04-01` - Condition 3: `date_before` → `lte` → `2026-04-30` - Target URL: `https://shop.example.com/uk-april-promo` ## Categories and Tags Organize your links using categories and tags. - **Categories** group links into broad topics. Each category supports a color label for visual identification in the link list. - **Tags** add flexible, cross-cutting labels to links. To assign categories or tags: 1. In the link editor, find the **Categories** and **Tags** sections. 2. Select existing categories/tags or create new ones inline. 3. Save the link. You can filter the link list by category or tag to find links quickly. ## Editing Links 1. Go to **Link Manager → Pretty Links**. 2. Click the **edit icon** on the link you want to modify. 3. Update any fields. 4. Click **Update Link**. Your masked URL (`yoursite.com/go/slug`) stays the same when you change the destination URL. Existing shared links and bookmarks continue to work. ## Deleting Links 1. Go to **Link Manager → Pretty Links**. 2. Click the **trash icon** on the link you want to remove. 3. Confirm the deletion in the popup. > **Warning:** Deletion is permanent. Any visitor who clicks the deleted link's URL receives a 404 error. If you want to temporarily disable a link, use link scheduling instead. --- **Step-by-step guides:** - [How to Cloak Affiliate Links](https://docs.linkmanagerpro.com/guides/cloak-affiliate-links) - [How to Create Redirects](https://docs.linkmanagerpro.com/guides/redirect-links) - [How to Add Nofollow Links](https://docs.linkmanagerpro.com/guides/nofollow-links) --- # Managing Links > **TL;DR:** The Links dashboard lists all your masked links with status, click count, and destination. Search by keyword, filter by category or tag, and export link data. Click any link to view its report or edit its settings. View, search, filter, and take action on your links from the central link list. ## Link List View Go to **Link Manager → Pretty Links** to open the link list. The list displays the following columns: | Column | What It Shows | |--------|---------------| | **Link Details** | The full masked URL (clickable, opens in a new tab) and the destination URL | | **Routing** | Redirect type (301, 302, 307), number of conditional routing rules, and an internal/external badge | | **Categories** | Assigned categories for the link | | **Tags** | Assigned tags for the link | | **Keywords** | Auto-link status (enabled/disabled) and assigned keywords | | **Engagement** | Total click count for the link | | **Created** | Date the link was created | | **Actions** | Copy, QR code, edit, and delete buttons | ## Search and Filtering ### Search Use the search bar at the top of the link list. Search matches against: - Destination URL - Slug - Keywords Type your query and the list filters in real time. ### Filters Use the tab bar and dropdowns above the list to narrow results: | Filter | How It Works | |--------|--------------| | **All / Internal / External tabs** | Switch between all links, links whose destination matches your site domain (internal), or links pointing to other domains (external) | | **Category** | Select a category from the dropdown to show only links assigned to it | | **Tag** | Select a tag from the dropdown to show only links assigned to it | Combine filters with search for precise results. The list supports pagination for large link sets. ## Link Actions Each link row provides the following actions: | Action | How to Access | What It Does | |--------|---------------|--------------| | **View Report** | Click anywhere on the row | Opens the detailed per-link report with clicks, device/OS/country/referrer breakdowns | | **Edit** | Click the edit icon | Opens the link editor to modify any field | | **Delete** | Click the trash icon | Permanently deletes the link (confirmation popup appears) | | **QR Code** | Click the QR code icon | Opens a dialog with a QR code for the masked URL (see [QR Code](#qr-code) below) | | **Copy** | Click the copy icon | Copies the full masked URL to your clipboard | ## Per-Link Report Click any row in the link list to open the detailed report for that link. ### Summary Metrics | Metric | Description | |--------|-------------| | **Total Clicks** | Total number of click events | | **Unique Clicks** | Distinct visitor clicks | | **Qualified Clicks** | Clicks that originated from within your site content | | **Conversion Rate** | Ratio of qualified clicks to total clicks | ### Clicks Over Time A time-series chart showing total vs. unique clicks. Select a date range to zoom into a specific period. ### Device Distribution Breakdown of clicks by device type: - Desktop - Mobile - Tablet - Other ### Operating System Breakdown of clicks by OS family: - Windows - macOS - iOS - Android - Linux - Other ### Country Breakdown Click distribution by visitor country, displayed as 2-letter country codes. ### Referrer Domains Top domains that sent traffic to this link. ### Recent Activity A paginated list of recent individual click events for the link. ### Shareable Link and QR Code The report sidebar displays a **Shareable Link** card with: - **Masked URL** — the full masked URL for the link. Click **Copy** to copy it to your clipboard. - **Tracking params** — if you have global tracking parameters configured, they appear here. - **QR code** — a QR code image rendered inline. Click **Download QR** to save it as a PNG file. ## QR Code You can generate a QR code for any link from two locations: **From the link list:** Click the QR code icon in the actions column. A dialog titled **Pretty Link QR** opens with the QR code image and a **Download QR** link. **From the link report:** The QR code appears inline in the Shareable Link card on the right side of the report page. The QR code encodes the full masked URL (including any global tracking parameters you have configured). The download saves a 192×192 pixel PNG file named `pretty-link-{slug}.png`. ## Import and Export For full import and export instructions — including JSON backup, JSON restore, and CSV export — see [Backup & Restore](https://docs.linkmanagerpro.com/user-guide/backup-restore). --- # Managing Affiliates > **TL;DR:** Register affiliate partners with a name, website, and domain. Link Manager Pro auto-links that domain's URLs in your content and tracks clicks per affiliate. You set default link attributes and view per-partner analytics. Register affiliate partners, configure auto-linking for affiliate URLs, and track affiliate performance. Go to **Link Manager → Affiliates** to open the affiliate list. Use the search bar to find partners by site name, domain, affiliate link, or keywords. ## Affiliate Fields Each affiliate partner supports the following fields: | Field | Description | |-------|-------------| | **Site Name** | Required. A recognizable label for this partner (e.g., "Amazon", "Bluehost"). Max 100 characters. | | **Affiliate Link** | Required. The full affiliate URL pattern (e.g., `https://amazon.com/?tag=myid-20`). | | **Domain** | Auto-extracted from the affiliate link. Strips `www.` prefix. Must be unique across all affiliates. | | **Redirect Type** | The HTTP redirect code for this affiliate's masked links. Options: 301 (default), 302, 307. | | **Keywords** | Comma-separated keywords for auto-linking in post content. | | **Enable Auto-Linking** | Toggle to activate keyword auto-linking for this affiliate. | | **Auto-Link Priority** | Controls which entry wins when keywords overlap. Range: 0–100. Default: 10. Lower number = higher priority. | | **Attributes** | Toggles for `nofollow`, `noopener`, `noreferrer`, and `sponsored` rel attributes. Default: `nofollow` and `noopener` are on. | | **UTM Parameters** | Optional tracking values appended during redirect: utm_source, utm_medium, utm_campaign, utm_term, utm_content. Max 200 characters each. | ## Creating an Affiliate Partner 1. Go to **Link Manager → Affiliates**. 2. Click **New Partner**. 3. Enter the **Site Name** — a recognizable label for this partner. 4. Enter the **Affiliate Link** — the full affiliate URL. The plugin automatically extracts the domain from this URL. 5. Select a **Redirect Type** (default: 301). 6. Configure **Link Attributes** — toggle nofollow, noopener, noreferrer, or sponsored as needed. 7. Add **Keywords** for auto-linking. Separate multiple keywords with commas. 8. Toggle **Enable Auto-Linking** on if you want keywords in post content to link to this affiliate automatically. 9. Set **Auto-Link Priority** (default: 10) if multiple affiliates share overlapping keywords. 10. Add **UTM Parameters** to append campaign tracking values to the affiliate URL. 11. Click **Register Partner**. ## Key Behaviors ### Domain Uniqueness Two affiliates cannot share the same domain. The plugin enforces this by extracting and deduplicating domains from affiliate link URLs. If you try to register a second affiliate with a matching domain, validation fails. ### Automatic UTM and Attribute Inheritance When a visitor clicks any masked link whose destination matches an affiliate's domain, the plugin appends that affiliate's UTM parameters to the redirect URL. When auto-linking inserts an affiliate's keywords into post content, the plugin applies the affiliate's rel attributes (`nofollow`, `noopener`, etc.) to the generated link. You do not need to set these values manually on each link. ### Automatic Pretty Link Creation When you save an affiliate, the plugin automatically creates a pretty link (masked redirect) for the affiliate URL. This ensures auto-linked keywords point to a masked URL rather than the raw affiliate URL. ### Click Tracking Each affiliate tracks its own click count. When a visitor clicks any masked link whose destination matches the affiliate's domain, the affiliate's click count increments. ## Editing an Affiliate 1. Go to **Link Manager → Affiliates**. 2. Click the **edit icon** on the affiliate you want to modify. 3. Update any fields. 4. Click **Update Partner**. ## Deleting an Affiliate 1. Go to **Link Manager → Affiliates**. 2. Click the **trash icon** on the affiliate you want to remove. 3. Confirm the deletion in the popup. > **Warning:** Deleting an affiliate removes the partner record. Review any auto-linked content that references this affiliate. ## Affiliate Auto-Linking Affiliate auto-linking works the same way as link auto-linking, but uses the affiliate's pretty link as the destination. ### How It Works 1. You add keywords to an affiliate and enable auto-linking. 2. The plugin creates a pretty link for the affiliate URL. 3. When WordPress renders a post, the plugin scans the content for keyword matches. 4. Matched keywords are replaced with links pointing to the affiliate's pretty link. 5. The plugin respects all global auto-linking settings: case sensitivity, max replacements per keyword, max links per page, excluded headings, and applicable post types. ### Priority Resolution When a keyword matches both a link and an affiliate, the affiliate always wins regardless of priority values. The **Auto-Link Priority** value resolves conflicts within the same type — affiliate vs. affiliate or link vs. link. Lower numbers take priority. ### Best Practices - Use specific, multi-word keywords: "WordPress managed hosting" instead of "hosting". - Check a few posts after setup to verify keywords link correctly. - Monitor affiliate reports to measure click-through performance. - Avoid single-word keywords that appear frequently — this leads to excessive link insertion. ## Affiliate Report Click an affiliate row to open the affiliate report. The report provides the same structure as the per-link report, aggregated across all links matching the affiliate's domain: - **Summary:** total clicks, unique clicks, qualified clicks - **Device distribution:** Desktop, Mobile, Tablet, Other - **Operating system:** Windows, macOS, iOS, Android, Linux, Other - **Country breakdown:** visitor countries - **Referrer domains:** traffic sources - **Clicks over time:** time-series chart with date range selection - **Recent activity:** paginated list of recent click events --- **Step-by-step guides:** - [How to Manage Affiliate Links](https://docs.linkmanagerpro.com/guides/manage-affiliate-links) - [How to Add FTC Disclosure](https://docs.linkmanagerpro.com/guides/ftc-affiliate-disclosure) --- # Categories & Tags > **TL;DR:** Organize links with color-coded categories and lightweight tags. Manage categories from a drawer on the Pretty Links page — create, edit, search, and delete. Tags are created on demand from the link form. Use categories for broad grouping and tags for specific labeling. Organize your links with categories and tags to keep large link collections manageable and filterable. ## Overview Link Manager Pro provides two ways to organize links: | Type | Purpose | Color Support | |------|---------|---------------| | **Categories** | Group links into broad topics (e.g., "Hosting", "Email Tools", "Themes") | Yes — each category has a color | | **Tags** | Label links with specific attributes (e.g., "recurring", "one-time", "high-commission") | No | Categories and tags are non-public. They do not create archive pages or appear in your site's front-end navigation. Each link can have multiple categories and multiple tags assigned. ## Categories ### Managing Categories Go to **Link Manager → Pretty Links** and click the **Categories** button in the toolbar. This opens a drawer where you can create, edit, search, and delete categories. ### Creating a Category You can create categories in two places: **From the Categories drawer:** 1. Click the **Categories** button in the toolbar. 2. Click **New**. 3. Enter a **name**. 4. Pick a **color** from the palette or use the custom color picker. 5. Click **Create**. **From the link form:** 1. Open the link creation or editing form. 2. In the **Categories** dropdown, scroll to the bottom and click the create button. 3. Enter a **name** and pick a **color**. 4. Click **Create & Select** to create the category and assign it to the link in one step. The new category is immediately available across all links. ### Editing a Category 1. Click the **Categories** button in the toolbar to open the drawer. 2. Click the edit icon on the category you want to change. 3. Update the **name** or **color** inline. 4. Click **Save**. Changes apply everywhere the category appears. The link count shown on each category reflects how many links currently use it. ### Deleting a Category 1. Click the **Categories** button in the toolbar to open the drawer. 2. Click the delete icon on the category. 3. Confirm the deletion. Deleting a category removes it from all links that reference it. The links themselves are not deleted. ### Category Properties | Property | Description | |----------|-------------| | **Name** | Display name. Must be unique — the plugin rejects duplicate category names. | | **Color** | Color shown as a dot next to the category name. Pre-selected from a palette or customizable via color picker. Default: `#6B7280` (gray). | | **Link count** | Number of links assigned to this category | ### Searching Categories The category drawer supports search by name. Type in the search field to filter categories in real time. The list is paginated when you have many categories. ## Tags Tags are lightweight labels with no dedicated management UI. You create and assign them directly from the link form. ### Creating and Assigning Tags 1. Open the link creation or editing form. 2. In the **Tags** field, type a tag name and press Enter. 3. Save your changes. If a tag with the same name already exists, the plugin reuses it instead of creating a duplicate. You can assign multiple tags to a single link. ### Removing a Tag from a Link 1. Open the link editing form. 2. Click the **×** on the tag you want to remove in the **Tags** field. 3. Save the link. This unassigns the tag from that link. The tag remains available for other links. ## Assigning to Links You assign categories and tags during link creation or editing. For the full walkthrough, see [Creating Links](https://docs.linkmanagerpro.com/user-guide/creating-links#categories-tags-and-keywords). One link can belong to multiple categories and have multiple tags. One category or tag can be shared across many links. ## Filtering Links Use categories and tags to filter the link list on the **Link Manager → Pretty Links** page. Select a **Category** or **Tag** from the dropdowns above the link list. Combine with the search bar for more specific results. For details, see [Managing Links — Search and Filtering](https://docs.linkmanagerpro.com/user-guide/managing-links#search-and-filtering). ## Best Practices - **Use categories for broad groups.** Think of categories as folders — "Hosting Providers", "SEO Tools", "WordPress Plugins". Keep the total number of categories manageable (10–20 for most sites). - **Use tags for specific attributes.** Tags work best for cross-cutting labels — "high-commission", "seasonal", "new-partner", "needs-review". A link can have many tags without cluttering the category structure. - **Name consistently.** Decide on a naming convention early. Use lowercase or title case — not both. Consistent names make filtering reliable. - **Leverage color coding.** Assign distinct colors to categories so you can visually identify link groups at a glance in the link list. - **Review unused categories.** Open the Categories drawer periodically and check for categories with zero links. Remove them to keep your organization clean. - **Combine filters with search.** When you need to find a specific link in a large collection, filter by category first, then search within the filtered results. --- # Dashboard & Reports > **TL;DR:** The Dashboard shows aggregate click data, top-performing links, top affiliates, and link health status. Click any link or affiliate row to open a detailed report with device, country, OS, and referrer breakdowns. View campaign reports with UTM variant performance. Track link performance, measure audience engagement, and review traffic patterns across your links, affiliates, and campaigns. ## Dashboard Overview Go to **Link Manager → Dashboard** to view the dashboard. ### Top-Level Metrics | Metric | Description | |--------|-------------| | **Total Links** | Count of all active link endpoints | | **Total Events** | Sum of all click engagements across all links | | **Unique Clicks** | Distinct visitor clicks (deduplicated) | | **Avg. Reach** | Average clicks per link | | **Broken Links** | Count of broken URLs and 404 errors detected by link health scans | ### Dashboard Widgets | Widget | What It Shows | |--------|---------------| | **Clicks Over Time** | Time-series chart comparing total vs. unique clicks. Defaults to 30 days; filter by custom start and end dates | | **Top Pretty Links** | Top links ranked by click count (default: 5, configurable limit) | | **Top Affiliates** | Top 10 affiliates ranked by click count | | **Top Performing Posts** | Posts with the highest link click engagement | | **Link Health Status** | Summary of broken URLs and 404 errors with overall health status | ## Per-Link Report Click any link row in **Link Manager → Pretty Links** to open a detailed report with click metrics, device/OS/country/referrer breakdowns, a clicks-over-time chart, QR code, and recent activity. For full details, see [Managing Links — Per-Link Report](https://docs.linkmanagerpro.com/user-guide/managing-links#per-link-report). ## Affiliate Report Click any affiliate row in **Link Manager → Affiliates** to open an aggregate report across all links matching the affiliate's domain. The report follows the same structure as the per-link report. For full details, see [Managing Affiliates — Affiliate Report](https://docs.linkmanagerpro.com/user-guide/affiliates#affiliate-report). ## Campaign Report Open a campaign report by clicking a campaign in the campaigns view. ### Campaign Metrics | Metric | Description | |--------|-------------| | **Total Clicks** | Total click events for the campaign | | **Unique Clicks** | Distinct visitor clicks | | **Links in Campaign** | Number of pretty links using this campaign | | **Top Source** | The most used `utm_source` value across campaign links | ### UTM Variant Breakdown Each row shows a unique combination of UTM parameters used across the campaign's links, with performance metrics for that variant: | Column | Description | |--------|-------------| | **Source** | Traffic source (e.g., newsletter, twitter, google) | | **Medium** | Marketing medium (e.g., email, social, cpc) | | **Term** | Paid search keyword | | **Content** | Content or creative variant (e.g., header-cta, sidebar-banner) | | **Links** | Number of links using this combination | | **Clicks** | Total click events for this variant | | **Unique Clicks** | Distinct visitor clicks for this variant | ### Additional Features - **Clicks over time** — time-series chart with selectable date range. - **Campaign links** — paginated list of all links associated with the campaign. ## Understanding Your Data ### Click Patterns - **Spikes in clicks** — may indicate viral content, a successful campaign, or bot traffic. Cross-check with the qualified clicks metric. - **Consistent clicks** — steady engagement from evergreen content. - **Declining clicks** — content may be outdated. Consider updating the destination or the content linking to it. ### Geographic Data Country breakdowns help you: - Identify your primary audience regions. - Plan localized campaigns for high-traffic countries. - Set up geo-targeted conditional routing rules to serve regional landing pages. ### Device Types Understand how visitors access your links: - **High mobile traffic** — ensure destination pages are mobile-optimized. - **High desktop traffic** — traditional web browsing; consider richer landing page layouts. - **Tablet traffic** — verify touch-friendly interfaces. ### Referring Sources Top referrers reveal where your traffic originates: - **Direct** — visitors typed the URL or used a bookmark. - **Search** — traffic from Google, Bing, and other search engines. - **Social** — traffic from social media platforms. - **Referral** — traffic from other websites linking to your content. Use referrer data to double down on high-performing channels and investigate unexpected traffic sources. --- **Step-by-step guide:** [How to Track Link Clicks in WordPress](https://docs.linkmanagerpro.com/guides/track-link-clicks) --- # Settings > **TL;DR:** Configure Link Manager Pro at Settings. Options include default redirect type, link prefix (slug base), link attributes, click tracking behavior, IP anonymization, bot detection, click retention period, auto-linking rules, disclosure settings, and data management. Configure every aspect of Link Manager Pro. Access all settings at **Link Manager Pro → Settings**. ## General Settings | Setting | Description | |---------|-------------| | **Auto-Mask on Save** | Automatically replace external links with masked URLs when you save a post | | **Mask Internal Links** | Include internal links (links pointing to your own site) in the masking engine | | **Link Structure Prefix** | URL prefix for masked links. Default: `link`. Your links become `yoursite.com/link/slug` | | **Internal Mask Prefix** | Separate prefix for internal masked links. Default: `go` | | **Unique Code Length** | Length of auto-generated slug codes (6–16 characters) when you do not provide a custom slug | | **Automated Link Health Scans** | How often to run automated link health scans: **disabled** (default), **daily**, or **weekly** | | **Minimum Role for Access** | WordPress capability required to access the plugin. Default: `manage_link_manager_pro`. Other option: `manage_options` (administrator only) | | **Min. Inbound Links** | Minimum inbound internal links for a post to be considered "healthy" in link audit. Default: 3 | | **Min. Outbound Links** | Minimum outbound links for a post to be considered "healthy" in link audit. Default: 2 | | **Email Digest** | Receive periodic link health summaries via email. Options: **disabled** (default), **weekly**, or **monthly** | > **Warning:** Changing the **Link Structure Prefix** after creating links breaks all existing masked URLs. Set this during initial setup and do not change it later. Click **Save Changes** after updating. ## Redirection Settings | Setting | Description | |---------|-------------| | **Default Redirect Type** | Default redirect type for new links. **301** (permanent, default), **302** (temporary), or **307** (temporary, preserves HTTP method) | | **REL Rules** | Configure nofollow, noopener, noreferrer, and sponsored attributes globally | ### REL Rules REL rules let you set global defaults for link attributes and add domain-specific overrides. For each attribute (**nofollow**, **noopener**, **noreferrer**, **sponsored**): 1. **Set a global default:** - **Yes** — apply this attribute to all masked links. - **No** — do not apply this attribute to any masked link. 2. **Add domain-specific overrides:** - Domains you list receive the **opposite** of the global default. **Example:** You set global nofollow to **Yes** (all links get nofollow). You add `trusted-partner.com` to the nofollow override list. Now all links get nofollow **except** links pointing to `trusted-partner.com`. **Example:** You set global sponsored to **No** (no links get sponsored). You add `affiliate-network.com` to the sponsored override list. Now only links pointing to `affiliate-network.com` get the sponsored attribute. Click **Save Changes** after updating. ## Tracking Settings | Setting | Description | |---------|-------------| | **Click Tracking** | Master toggle — enable or disable all click tracking | | **Bot Detection** | Filter out bot traffic using 45+ built-in user agent patterns | | **Anonymize IP Addresses** | Truncate visitor IPs for GDPR compliance. Replaces the last octet of IPv4 addresses with `0` and zeros the last 5 groups of IPv6 addresses | | **Cookie Notice** | Acknowledge that you handle cookie consent for the tracking cookie | | **Internal Link Click Tracking** | Track clicks on internal links within your post content via JavaScript | | **Global UTM Injection** | Parameters appended to all managed link redirects (e.g., `utm_source=link-manager-pro&utm_medium=proxy`) | | **Click Data Retention** | Number of days to keep click data. Set to 0 to keep forever. A daily cron job automatically purges older data | | **Blocked IP Addresses** | IP addresses to exclude from click tracking (one per line) | | **Custom Patterns** | Custom user agent patterns to filter, in addition to the built-in bot patterns (one per line) | | **Content Selector** | CSS selector for the content area containing internal links to track. Only links inside this container are tracked | > **Note:** Disabling **Click Tracking** stops all data collection. Existing click data is preserved but no new clicks are recorded. Click **Save Changes** after updating. ## Auto-Linking Settings | Setting | Description | |---------|-------------| | **Enable Auto-Linking** | Master toggle for the auto-linking feature | | **Case Sensitive Matching** | Match keywords with exact case only. When enabled, "MacBook" does not match "macbook" | | **Exclude Headings** | Skip heading tags (h1–h6) when replacing keywords with links | | **Max Per Keyword** | Maximum number of replacements for each keyword per page | | **Max Per Page** | Maximum total auto-links inserted per page across all keywords | | **Post Types** | Which post types to process for auto-linking (e.g., posts, pages, custom post types) | When auto-linking is enabled, the plugin scans rendered content for keyword matches defined on your links and affiliates, then replaces them with masked link URLs. Each link and affiliate can independently toggle auto-linking on or off. Click **Save Changes** after updating. ## Disclosure Settings | Setting | Description | |---------|-------------| | **Enable Affiliate Disclosure** | Show an affiliate disclosure notice on pages that contain masked links with sponsored or affiliate attributes | | **Disclosure Text** | The disclosure message text. Customize this to match your compliance requirements | | **Position** | Where to display the notice: **before content** or **after content** | | **Style** | Display style: **minimal** (inline text), **boxed** (bordered box), or **custom** (your own CSS class) | | **Custom CSS Class** | CSS class name applied to the disclosure element when using the "custom" style | | **Post Types** | Which post types show the disclosure notice | The disclosure notice only appears on pages that contain masked links with the **sponsored** attribute or affiliate link attributes. Pages without qualifying links do not display the notice. Click **Save Changes** after updating. ## License | Setting | Description | |---------|-------------| | **License Key** | Enter your license key (minimum 8 characters) | | **Activate** | Validate and activate your license | | **Deactivate** | Deactivate your current license | | **Status** | Current license status: **active**, **inactive**, or **expired** | License types: **lifetime**, **one-time**, or **renewal**. Your license type determines whether and when revalidation is required. ## Backup & Restore | Action | Description | |--------|-------------| | **Backup (JSON)** | Export your data as a JSON file. Select which items to include: links, link rules, clicks, affiliates, link health, redirects, settings, and posts | | **Restore (JSON)** | Import data from a previously exported JSON backup file | | **Export CSV** | Download all links as a CSV spreadsheet | Backup uses batched processing — large datasets export in chunks with progress indication. See [Backup & Restore](https://docs.linkmanagerpro.com/user-guide/backup-restore) for detailed step-by-step instructions. ## Data Migration | Feature | Description | |---------|-------------| | **Auto-detection** | The plugin automatically detects if Pretty Links or BetterLinks is installed | | **Selectable Items** | Choose which data to migrate from the detected plugin | | **Conflict Strategy** | **Skip existing** (keep your current data) or **Overwrite** (replace with migrated data) | | **Batched Processing** | Large migrations process in chunks with progress indication | > **Warning:** Overwriting during migration replaces matching records permanently. Back up your data before migrating with the overwrite strategy. --- # Backup, Restore & Data Migration > **TL;DR:** Export all your link data as JSON for backup or CSV for spreadsheets. Restore from a JSON backup to recover links, affiliates, categories, and tags. Migrate from Pretty Links or BetterLinks with automatic detection and conflict handling (skip or overwrite). Export your data, restore from backups, download CSV spreadsheets, and migrate from competing plugins — all from one place. ## Overview Link Manager Pro provides four data management tools: | Tool | Purpose | |------|---------| | **Backup (JSON)** | Export selected data as a JSON file | | **Restore (JSON)** | Import data from a previously exported JSON backup | | **CSV Export** | Download all links as a CSV spreadsheet | | **Data Migration** | Import data from Pretty Links or BetterLinks | Access backup and restore at **Link Manager Pro → Settings → Backup & Restore**. Access migration at **Link Manager Pro → Settings → Data Migration**. ## Creating a Backup Back up your data as a JSON file. You choose exactly which items to include. ### Selectable items | Item | What it includes | |------|-----------------| | **Links** | All masked links and their configuration | | **Link Rules** | Conditional routing rules attached to links | | **Clicks** | Click tracking data | | **Affiliates** | Affiliate partner records | | **Link Health** | Health check results and 404 records | | **Redirects** | Redirect mappings from broken links | | **Settings** | Plugin configuration | | **Posts** | Post-level link data | ### Steps 1. Go to **Link Manager Pro → Settings → Backup & Restore**. 2. Click **Backup**. 3. Select the items you want to include. 4. Click **Start Backup**. 5. Wait for the batched export to complete. A progress indicator shows the current status. 6. Click the download link when the export finishes. ### How it works The export processes records in batches of 50. Large datasets export in multiple rounds — you see progress update after each batch completes. The final JSON file is stored in a protected directory (blocked by `.htaccess`) and served through a nonce-verified download URL. ## Restoring from Backup Upload a JSON file previously exported from Link Manager Pro to restore your data. > **Warning:** Restore replaces existing data for the selected items. This is destructive — the plugin clears current records before importing. Always create a fresh backup before restoring. ### Steps 1. Go to **Link Manager Pro → Settings → Backup & Restore**. 2. Click **Restore**. 3. Upload the JSON backup file. 4. Select the items you want to restore. 5. Click **Start Restore**. 6. Wait for the batched import to complete. A progress indicator shows the current status. The restore processes records in batches of 50, the same as export. You can only restore files that Link Manager Pro originally exported — the plugin validates the file format before processing. ## CSV Export Download all your links as a CSV spreadsheet. Use this when you need link data in Excel, Google Sheets, or another spreadsheet application. ### Exported columns | Column | Description | |--------|-------------| | ID | Internal link ID | | Slug | The short URL path | | Target URL | The destination URL | | Redirect Type | HTTP redirect code (301, 302, 307) | | Source | How the link was created (manual, migration, etc.) | | Click Count | Total clicks recorded | | Autolink | Whether auto-linking is enabled (yes/no) | | Keywords | Comma-separated auto-link keywords | | Created At | Date the link was created | ### Steps 1. Go to **Link Manager Pro → Settings → Backup & Restore**. 2. Click **Export CSV**. 3. The CSV file downloads immediately. CSV export streams the file directly — there is no batched processing or progress indicator. The download starts as soon as you click. ### When to use CSV vs JSON backup | Use case | Tool | |----------|------| | Restore data into Link Manager Pro | JSON Backup | | Analyze links in a spreadsheet | CSV Export | | Move data between WordPress sites | JSON Backup | | Share link data with a team member | CSV Export | ## Pre-Migration Checklist Complete these steps before you start a data migration: - [ ] Back up your WordPress site (files and database). - [ ] Note how many links, categories, and redirects your current plugin has — you use these numbers to verify the results. - [ ] Verify Link Manager Pro is activated and working on the target site. - [ ] Consider testing on a staging site first, especially for large datasets. ## Migrating from Pretty Links Link Manager Pro auto-detects Pretty Links by checking for the `prli_links` database table. If detected, the migration option appears automatically. ### What migrates | Pretty Links data | Becomes in Link Manager Pro | |--------------------|-----------------------------| | Links (slug, redirect type, nofollow, sponsored) | Links with mapped redirect types and REL attributes | | Groups | Categories | | Clicks (cookie, IP, user agent) | Click records | | Settings (redirect type, nofollow, bot filtering) | Plugin settings | ### Migration phases The migration runs in order: **groups → links → clicks → settings → finalize**. The finalize step recalculates click counts for each migrated link. ### Steps 1. Go to **Link Manager Pro → Settings → Data Migration**. 2. The plugin detects Pretty Links and displays it as an available source. 3. Select **Pretty Links** as the source plugin. 4. Choose which items to migrate. 5. Set a conflict strategy: **Skip** (keep existing records) or **Overwrite** (replace with migrated data). 6. Click **Start Migration**. 7. Wait for batched processing to complete. Progress updates per phase. 8. Review the results summary: migrated, skipped, and failed counts per item. ## Migrating from BetterLinks Link Manager Pro auto-detects BetterLinks by checking for the `betterlinks` database table. If detected, the migration option appears automatically. ### What migrates | BetterLinks data | Becomes in Link Manager Pro | |------------------|-----------------------------| | Categories | Categories | | Tags | Tags | | Links (with scheduling/expiry dates) | Links with `active_from` / `expires_at` | | Keywords | Auto-linking configuration | | Passwords | Hashed link passwords | | Geo redirect rules | Link rules with `country_in` conditions | | Clicks (country, user agent) | Click records | | Settings (redirect type, nofollow) | Plugin settings | ### Migration phases The migration runs in order: **terms → links → keywords → passwords → geo_rules → clicks → settings → finalize**. ### Steps 1. Go to **Link Manager Pro → Settings → Data Migration**. 2. The plugin detects BetterLinks and displays it as an available source. 3. Select **BetterLinks** as the source plugin. 4. Choose which items to migrate. 5. Set a conflict strategy: **Skip** (keep existing records) or **Overwrite** (replace with migrated data). 6. Click **Start Migration**. 7. Wait for batched processing to complete. Progress updates per phase. 8. Review the results summary: migrated, skipped, and failed counts per item. ## Conflict Strategies When migrating data, you choose how to handle records that already exist in Link Manager Pro. | Strategy | Behavior | |----------|----------| | **Skip** | Keep your existing record. The migrated record is ignored. Use this when you have already created some links in Link Manager Pro and do not want them overwritten. | | **Overwrite** | Replace the existing record with the migrated data. Use this when you want the source plugin's data to take priority. | > **Warning:** Overwrite replaces matching records permanently. Back up your data before migrating with the overwrite strategy. The results summary shows how many records were migrated, skipped, and failed — so you can verify exactly what happened. ## Troubleshooting ### Backup download does not start - Check that your server allows file downloads through `admin-ajax.php`. - Verify you are logged in as an administrator with the required capability. - Check your server's PHP memory limit — large exports need sufficient memory. ### Restore fails or stalls - Confirm the file is a JSON backup originally exported from Link Manager Pro. The plugin does not accept files from other sources. - Check the file size against your server's `upload_max_filesize` and `post_max_size` PHP settings. - If the restore stalls mid-batch, reload the page and try again. Partial restores may leave incomplete data — restore from a fresh backup. ### Migration does not detect the source plugin - The source plugin (Pretty Links or BetterLinks) must be installed. It does not need to be active, but the database tables must exist. - If you uninstalled the source plugin and chose to delete its data, the tables no longer exist and migration is not possible. ### Migration shows failed records - Check the error messages in the results summary. Common causes include duplicate slugs and invalid redirect types. - Run the migration again with the **Skip** strategy to skip already-migrated records and retry only the failures. ### CSV export produces an empty file - Verify you have at least one link in Link Manager Pro. - Check your server's output buffering settings — some caching plugins interfere with streamed downloads. Temporarily disable caching plugins if the file downloads empty. ## Post-Migration Verification After migration completes, verify your data transferred correctly: 1. Test 3–5 sample redirects by visiting their short URLs and confirming they reach the correct destination. 2. Check that categories (from Pretty Links groups or BetterLinks categories) appear under **Link Manager Pro → Categories**. 3. Verify click data imported by comparing click counts on a few links against your source plugin. Click data only imports if you selected it during migration. 4. Open **Link Manager Pro → Settings** and confirm migrated settings match your expectations. 5. Compare the results summary totals (migrated, skipped, failed) against the counts you noted in the pre-migration checklist. ## Rollback Plan If migration results are not what you expected: 1. Deactivate Link Manager Pro from **Plugins → Installed Plugins**. 2. Reactivate your previous plugin (Pretty Links or BetterLinks). Your source plugin's data remains in the database — migration reads from it without modifying it. 3. If you need to undo changes to Link Manager Pro's data, restore from the WordPress backup you created before migrating. --- # Link Masking > **TL;DR:** You replace long destination URLs with short branded links on your own domain (e.g., `yoursite.com/go/product`). Link Manager Pro handles the redirect using 301, 302, or 307 status codes. You control the slug prefix, link attributes, and parameter forwarding from one dashboard. Replace destination URLs with short, readable links that use your own domain. ## What Is Link Masking? Link masking hides the actual destination URL behind a short, readable link that uses your own domain. When a visitor clicks the masked link, Link Manager Pro looks up the destination and redirects them instantly. ### Before and After **Before:** ``` https://www.amazon.com/Echo-Dot-Generation-Smart-Speaker/dp/B07PZMDQHW/ref=as_li_ss_tl?ref=XYZ&tag=your-affiliate-id-20&linkCode=ll1&linkId=abc123 ``` **After:** ``` https://yourwebsite.com/link/amazon-echo-dot ``` ## How It Works 1. You create a link with a destination URL and a slug (e.g., `amazon-echo-dot`). 2. When you save or update a post, Link Manager Pro scans the post content for external links. 3. Matching URLs are replaced with their masked equivalents. 4. REL attributes (e.g., `nofollow`, `sponsored`) are applied from your global settings and any domain-level overrides. 5. When a visitor clicks the masked link, Link Manager Pro redirects them to the destination. The click is recorded for analytics. ## Configuring the Link Prefix The default prefix is `/link/`. You can change it to match your brand. 1. Go to **Link Manager Pro → Settings → General**. 2. Find **Link Structure Prefix**. 3. Enter your preferred prefix (e.g., `go`, `refer`, `recommend`). 4. Click **Save Changes**. **Example** — with prefix `refer` and slug `hosting`: ``` yourwebsite.com/refer/hosting ``` > **Warning:** Only change the prefix during initial setup. Changing it later breaks all existing masked links. ## Masking Internal Links Link Manager Pro can also mask internal links within your post content. This gives you click tracking and consistent link management for links pointing to pages on your own site. 1. Go to **Link Manager Pro → Settings → General**. 2. Enable **Mask Internal Links**. 3. Set the **Internal Mask Prefix** to a value that differs from your external prefix (e.g., `go`). 4. Click **Save Changes**. Internal links in your post content are then rewritten using the internal prefix when you save a post. ## Forwarding Query Parameters Enable **Forward URL Parameters** on any link to pass query parameters from the masked URL through to the destination. **Example** — a visitor clicks: ``` yoursite.com/link/product?ref=email&promo=spring ``` With **Forward URL Parameters** enabled, the destination receives: ``` https://example.com/product-page?ref=email&promo=spring ``` This is useful for passing attribution data, coupon codes, or tracking IDs directly to the destination. ## Password-Protected Links You can gate any masked link behind a password. When a visitor clicks a password-protected link, they see a password prompt before the redirect happens. 1. Edit the link you want to protect. 2. Set a value in the **Password Protection** field. 3. Save the link. Visitors who enter the correct password proceed to the destination. Visitors who do not have the password cannot access the redirect. ## Link Scheduling Control when a link is accessible using scheduling fields: | Field | Description | |-------|-------------| | **Active From** | Date and time when the link becomes accessible | | **Expires At** | Date and time when the link stops working | A visitor who clicks a scheduled link outside the active window does not get redirected. Use scheduling for time-limited promotions, product launches, or seasonal campaigns. ## Redirect Types You can control how the browser handles each redirect. Set a global default under **Link Manager Pro → Settings → Redirection Matrix**, or override it per link. | Type | Behavior | |------|----------| | **301** | Permanent redirect. Browsers and search engines cache this. Use for links that will not change. | | **302** | Temporary redirect. The browser does not cache. Use when the destination may change. | | **307** | Temporary redirect that preserves the original request method. Use when you need strict method preservation. | The default redirect type is **301**. If a link does not have a per-link override, the global default applies. ## Conditional Routing You can add rules to a link that change the redirect destination based on conditions like total click count, visitor country, or date range. When a visitor clicks the link, Link Manager Pro evaluates the rules in priority order and redirects to the first matching rule's destination. If no rule matches, the default destination is used. Each rule can also override the redirect type independently. To add rules, edit a link and open the **Conditional Routing Rules** section. ## Organizing Links with Categories and Tags Keep your links organized by assigning **categories** and **tags**: - **Categories** — group links by type (e.g., "Affiliate", "Social", "Internal"). - **Tags** — add descriptive labels for filtering (e.g., "Q1 Campaign", "Partner A"). You can filter and search links by category or tag from the main link list. ## Tips - Test links after creating them. - Keep slugs short and descriptive. - Use categories and tags to organize links at scale. - Enable **Forward URL Parameters** only when the destination expects query parameters. - Set **Active From** and **Expires At** for time-sensitive promotions. --- **Step-by-step guide:** [How to Cloak Affiliate Links in WordPress](https://docs.linkmanagerpro.com/guides/cloak-affiliate-links) --- # Click Tracking > **TL;DR:** Every click on a masked link is logged automatically with timestamp, country, device, OS, browser, referrer, and unique visitor flag. Unique visitors are identified by a first-party cookie (UUID v4, 1-year TTL). Bot detection filters out 40+ known patterns. You configure click retention and IP anonymization in Settings. Link Manager Pro records every click on your masked and internal links. ## What Gets Tracked Each click records the following data: | Data Point | Description | |------------|-------------| | **Click type** | Masked (redirect clicks) or internal (in-page clicks) | | **Link** | The masked link that was clicked (masked clicks only) | | **Source post** | The post or page where the click originated | | **WordPress user** | The logged-in user who clicked, if any | | **Visitor cookie** | A unique visitor identifier stored in a browser cookie | | **Unique flag** | Whether this is a first-time click from this visitor for this link | | **IP address** | Visitor IP address (anonymized when you enable the setting) | | **Browser** | The visitor's browser and device information, used to determine device type and OS | | **Country** | Two-letter country code, resolved automatically from CDN headers or GeoLite2 database (masked clicks only) | | **Referrer** | The referring URL and its domain | | **Destination URL** | The final URL the visitor was sent to (internal clicks only) | | **Anchor text** | The visible text of the clicked link (internal clicks only) | | **Timestamp** | When the click occurred | ## Click Types ### Masked Clicks When a visitor clicks a masked link (e.g., `yoursite.com/link/slug`), Link Manager Pro redirects them to the destination URL and logs the click after the redirect completes. ### Internal Clicks When a visitor clicks an internal link within post content, a frontend JavaScript tracks the click and sends it to the server. Internal click tracking is rate-limited to **30 requests per minute per IP** to prevent abuse. ## Enabling and Disabling Tracking Go to **Link Manager Pro → Settings → Tracking** to configure these options: | Setting | Description | |---------|-------------| | **Click Tracking** | Master toggle — turns all click tracking on or off | | **Bot User-Agent Detection** | Filter out bot traffic using 45+ built-in user agent patterns | | **Anonymize IP Addresses** | Truncate visitor IPs for GDPR and privacy compliance | | **Cookie Notice** | Acknowledge that this plugin sets a tracking cookie for visitor identification | | **Internal Link Click Tracking** | Track visitor clicks on internal links within your post content | | **Global UTM Injection** | URL parameters appended to all managed redirects | | **Click Data Retention** | Number of days to keep click data before automatic purge (0 = keep forever) | | **Blocked IP Addresses** | IP addresses excluded from tracking (one per line) | | **Custom Patterns** | Custom user agent patterns to filter as bots (replaces the built-in list when set) | | **Content Selector** | CSS selector for the content area containing internal links to track | ## Viewing Click Data ### Per-Link Statistics 1. Go to **Link Manager Pro → Pretty Links**. 2. Click any link row to open its detail view. 3. Review the analytics: - **Total clicks** — sum of all recorded clicks - **Unique clicks** — distinct visitors based on cookie or IP - **Qualified clicks** — clicks that originated from an identified post on your site - **Clicks over time** — chart showing total vs. unique click trends - **Device breakdown** — Desktop, Mobile, Tablet, Other - **OS breakdown** — Windows, macOS, iOS, Android, Linux, Other - **Country breakdown** — geographic distribution of clicks - **Referrer domains** — where your click traffic comes from - **Recent activity** — paginated list of individual clicks You can also copy the shareable link or download a QR code from the link detail view. ### Dashboard Overview The main dashboard shows aggregate analytics across all your links: - **Total Links** — number of links currently in the system - **Total Clicks** — sum of all recorded clicks across all links - **Unique Clicks** — distinct visitors who clicked your links - **Clicks Over Time** — chart showing total vs. unique click trends (defaults to last 30 days) - **Link Health Status** — active content and traffic issues across all links - **Top Affiliates** — affiliate partners with the most clicks - **Top Performing Posts** — posts with the highest click engagement - **Top Pretty Links** — your most-clicked links ## Bot Detection and Filtering Link Manager Pro filters bot traffic to keep your analytics accurate. ### Built-In Detection The plugin includes **45+ built-in user agent patterns** that match common bots, crawlers, and AI agents. When you enable **Bot User-Agent Detection**, incoming clicks are checked in this order: 1. **Blocked IP Addresses** — any IP on this list is silently dropped (checked regardless of bot detection). 2. **User agent patterns** — if you have added custom patterns, those are used. If you have not added any, the built-in list is used. 3. **Empty user agent** — requests with no user agent string are filtered. Clicks that match any of these checks are not recorded. ### Adding Custom Patterns 1. Go to **Link Manager Pro → Settings → Tracking**. 2. Find **Custom Patterns** (visible when Bot User-Agent Detection is enabled). 3. Add user agent substrings (one per line). When you add custom patterns, they replace the built-in list entirely. 4. Click **Save Changes**. Leave this field empty to use the built-in defaults. ### Blocking Specific IPs 1. Go to **Link Manager Pro → Settings → Tracking**. 2. Find **Blocked IP Addresses**. IP filtering applies independently of bot detection — blocked IPs are always filtered even if bot detection is off. 3. Add IP addresses to exclude (one per line). 4. Click **Save Changes**. ## Privacy and Data ### IP Anonymization When **Anonymize IP Addresses** is enabled: - **IPv4:** the last octet is zeroed (e.g., `192.168.1.42` → `192.168.1.0`) - **IPv6:** the last 5 groups are zeroed This reduces tracking granularity while preserving country-level geographic data. ### Country Resolution Country codes are resolved automatically on each masked click using this fallback chain: 1. Cloudflare country header (if you use Cloudflare) 2. CDN/proxy country header 3. GeoLite2 database lookup There is no toggle for this — country resolution runs automatically when the data is available. Internal clicks do not resolve country codes. ### Cookie Tracking Link Manager Pro sets a cookie containing a unique visitor identifier. This cookie has a 1-year lifetime and is used to determine unique clicks. Use the **Cookie Notice** setting to acknowledge that you handle cookie consent for your visitors. ## Data Retention Configure how long click data is stored with the **Click Data Retention** setting in **Settings → Tracking**. Enter the number of days to retain data. Set to 0 to keep data indefinitely. A daily background task automatically deletes click records older than the configured retention period. ## Exporting Data 1. Go to **Link Manager Pro → Backup & Restore**. 2. Click the **Backup** button. 3. Select the elements you want to include in the export. 4. Click **Start Backup**. ## Understanding Click Patterns | Pattern | Possible Cause | |---------|----------------| | Sudden spike | Viral content, successful campaign, or bot traffic | | Consistent clicks | Steady engagement from regular content | | Declining clicks | Outdated content or decreased traffic | | Zero clicks | Link not visible in content or not used | ### Conversion Tracking Link Manager Pro tracks clicks, not sales. To calculate a conversion rate: 1. Get the click count from Link Manager Pro. 2. Get the sales count from your affiliate dashboard. 3. Divide: `Sales ÷ Clicks = Conversion Rate`. **Example:** 10 sales from 1,000 clicks = 1% conversion rate. --- **Step-by-step guide:** [How to Track Link Clicks in WordPress](https://docs.linkmanagerpro.com/guides/track-link-clicks) --- # Internal Click Tracking > **TL;DR:** A lightweight JavaScript tracker logs clicks on regular links within your post content — no masking required. Click data is sent to a REST API endpoint, rate-limited to 30 requests per minute per IP. Only same-origin clicks from your own site are recorded. Track clicks on internal links within your post content using a lightweight JavaScript tracker. ## What Is Internal Click Tracking? Link Manager Pro tracks two types of clicks: | Type | How It Works | |------|--------------| | **Masked clicks** | Tracked server-side when a visitor follows a masked redirect URL (e.g., `yoursite.com/go/slug`) | | **Internal clicks** | Tracked client-side via JavaScript when a visitor clicks an internal link within post content | Internal click tracking covers links that are **not** masked redirects — regular `` tags in your content that point to other pages on your site. The tracker automatically excludes masked redirect links. This gives you visibility into how visitors navigate between your pages. ## How It Works 1. **Script loading** — When a visitor views a single post or page, the plugin loads a small JavaScript tracker on the frontend. The tracker only loads on singular views (individual posts and pages) — not on archive pages, search results, or the homepage. 2. **Click listening** — The script monitors all links inside the content area defined by the **Content Selector** setting. 3. **Click capture** — When a visitor clicks an internal link, the script sends a request to the plugin's tracking endpoint. 4. **Server validation** — The plugin validates the request: - Both **Track Clicks** and **Internal Link Click Tracking** are enabled. - The request comes from your site (same-origin check). - The visitor's IP has not exceeded the rate limit (30 requests per minute). - The visitor is not filtered by your blocked IP or bot detection rules. - The target URL belongs to your domain. - The source post is published. 5. **Click recording** — The plugin records the click and determines whether it is unique based on the source post, target URL, and visitor identity (cookie or IP address). ## Enabling Internal Click Tracking 1. Go to **Link Manager Pro → Settings → Tracking**. 2. Make sure **Track Clicks** is enabled. This is the master toggle for all click tracking, including internal clicks. 3. Toggle **Internal Link Click Tracking** to on. 4. Review the **Content Selector** field. The default selector (`.entry-content`) targets the main content area in most WordPress themes. Adjust it if your theme uses a different content wrapper. 5. Click **Save Changes**. ### Configuring the Content Selector The **Content Selector** setting defines which content area the tracker monitors. All links inside the matched container are tracked. This is a standard CSS selector. Examples: | Selector | What It Matches | |----------|-----------------| | `.entry-content` | The default WordPress content wrapper (default) | | `article` | The `
` element | | `.post-content` | A custom content wrapper class | | `#main-content` | An element with the ID `main-content` | Choose a selector that targets your theme's content wrapper. This avoids tracking clicks in navigation menus, sidebars, or footers. ## What Gets Tracked Each internal click records the following data: | Data Point | Description | |------------|-------------| | **Source post** | The post or page where the click happened | | **Target URL** | The destination URL the internal link points to | | **Anchor text** | The visible text of the clicked link | | **IP address** | Visitor IP address (anonymized if the setting is enabled) | | **User agent** | Browser identification string | | **Referrer** | The page the visitor was on when the click occurred | | **Unique** | Whether this is the first click for this source post, target URL, and visitor combination | | **Timestamp** | When the click occurred | Internal clicks do not include country data. If you need country-level reporting, use masked clicks instead. ## Viewing Internal Click Data Internal clicks appear in your analytics alongside masked clicks. You can distinguish them by their click type: - **Masked** — redirect-based clicks on masked links - **Internal** — JavaScript-tracked clicks on internal links Use the click type filter to isolate internal clicks when reviewing analytics. ## Rate Limiting The internal click tracking endpoint enforces a rate limit of **30 requests per minute per IP address**. Requests that exceed this limit are silently accepted but the click is not recorded. This prevents: - Automated scripts from flooding your click data - Browser extensions or page reloads from creating excessive records ## Privacy ### Same-Origin Validation The endpoint verifies that the request originates from your site. Requests from other domains are rejected. This prevents external sites from submitting fake click data to your endpoint. The check automatically handles `www` and non-`www` variations of your domain — both are treated as the same origin. ### IP Anonymization When **Anonymize IPs** is enabled in **Settings → Tracking**, internal click records follow the same anonymization rules as masked clicks: - **IPv4:** the last octet is zeroed (e.g., `192.168.1.42` → `192.168.1.0`) - **IPv6:** the last 5 groups are zeroed ### Bot and IP Filtering Internal clicks are subject to the same bot detection and blocked IP rules as masked clicks. If you have configured blocked IPs or custom bot patterns in **Settings → Tracking**, those filters also apply to internal click tracking. ### All Visitors The tracker records clicks from all visitors, including those who are not logged in to your site. ## Settings Reference | Setting | Location | Description | |---------|----------|-------------| | **Track Clicks** | Settings → Tracking | Master toggle for all click tracking (must be enabled for internal clicks to work) | | **Internal Link Click Tracking** | Settings → Tracking | Toggle for internal click tracking | | **Content Selector** | Settings → Tracking | CSS selector for the content area the tracker monitors (default: `.entry-content`) | ## Troubleshooting ### Clicks Are Not Being Tracked Work through these checks in order: 1. **Verify both toggles are enabled.** Go to **Settings → Tracking** and confirm both **Track Clicks** and **Internal Link Click Tracking** are on. 2. **Check the content selector.** Open your browser's developer tools, run `document.querySelectorAll('your-selector')` in the console, and verify it returns the content container you expect. Then check that the container contains the internal links you want tracked. 3. **Confirm you are on a single post or page.** The tracker only loads on singular views (individual posts and pages), not on archive pages, category pages, or the homepage. 4. **Confirm same-origin.** The tracking endpoint rejects requests from other domains. Make sure your page domain matches your WordPress site URL. The check handles `www` and non-`www` automatically, but other mismatches (e.g., staging domain vs. production domain) cause rejection. 5. **Check the browser console.** Look for JavaScript errors related to the tracker script. A missing or blocked script prevents tracking. 6. **Check rate limiting.** If you are testing rapidly, you may exceed the 30 requests/minute limit. Wait a minute and try again. 7. **Inspect the network tab.** Open your browser's developer tools, go to the Network tab, click an internal link, and look for a POST request to the tracking endpoint. Check the response status code. ### Clicks Show as Non-Unique A click is unique per combination of source post, target URL, and visitor. If you click the same internal link on the same post, subsequent clicks are recorded but marked as non-unique. Clear your cookies or use a different browser to generate a unique click during testing. --- # Health Monitoring > **TL;DR:** Link Manager Pro scans your content for broken outbound links using HTTP HEAD checks and logs 404 errors from real visitor traffic on your site. Scans run automatically via WordPress cron. You can create a redirect from any broken link in one click. Detect broken links in your content and catch 404 errors from real visitor traffic. ## What Is Health Monitoring? Health monitoring finds broken links before your visitors do. It checks destination URLs in your content and logs 404 errors that real visitors encounter on your site. ## Health Issue Types Link Manager Pro tracks two types of health issues: | Type | Source | Description | |------|--------|-------------| | **content** | Content scanning | Broken links found by scanning post content. The plugin sends an HTTP HEAD request to each URL (3-second timeout). A status code ≥ 400 or 0 (connection failure) marks the link as broken. | | **traffic** | Live visitor traffic | 404 errors detected when a real visitor hits a URL that returns a WordPress 404 response. | ## Content Scanning When a content scan runs, the plugin: 1. Extracts URLs from the HTML of a post's content. 2. Sends an `HTTP HEAD` request to each URL with a 3-second timeout. 3. Marks the URL as broken if the response status is **≥ 400** or **0** (connection failure). 4. Processes a maximum of **10 URLs per post** per scan. 5. Skips masked URLs (those are already managed by the plugin). ### Scan Schedule Configure the scan schedule in **Settings → General** under **Health Scan Schedule**: | Schedule | Behavior | |----------|----------| | **Disabled** | No automatic scanning — you can still run scans manually (default) | | **Daily** | Runs once per day — catches problems quickly, uses more resources | | **Weekly** | Runs once per week — good balance for most sites | Each scheduled run scans **5 posts**. The plugin picks up where it left off on the next run, cycling through all your published posts over time. ### Manual Scan You can scan your content for broken links at any time without waiting for the schedule: 1. Go to **Link Manager Pro → Link Health**. 2. Click **Scan**. 3. The plugin scans your published posts in small batches (up to 5 posts per batch) with a 15-second time limit per batch. 4. Progress updates appear as each batch completes. 5. When all posts are scanned, the results appear in the health issues list. ## 404 Detection from Visitor Traffic Link Manager Pro detects 404 errors in real time as visitors browse your site: 1. A visitor hits a URL that returns a 404 response. 2. The plugin checks whether a **Redirect** exists for that URL. 3. **If a redirect exists** → the visitor is automatically sent to the mapped masked link. 4. **If no redirect exists** → the plugin logs a "traffic" health issue with the URL, referrer, and hit count. Each subsequent visitor hit to the same 404 URL increments the hit count on the existing issue rather than creating a duplicate. The plugin ignores 404s for static assets (images, CSS, JS, fonts) and common bot paths (wp-login, xmlrpc, wp-admin) so your health list stays focused on real content issues. ## Viewing Health Issues Go to **Link Manager Pro → Link Health** to see all detected issues. You can filter issues by type (content or traffic), by status (active, ignored, or fixed), and search by URL or referrer. ### Issue Statuses | Status | Description | |--------|-------------| | **active** | Issue needs your attention | | **ignored** | You marked it as not a problem — hidden from the active list | | **fixed** | Issue has been resolved (e.g., redirect created) | If the plugin re-detects a previously ignored or fixed issue (e.g., a link breaks again or a visitor hits the same 404), the issue returns to **active** status automatically. ## Creating Redirects from Health Issues When you find a broken link, you can create a redirect directly from the health dashboard: 1. Go to **Link Manager Pro → Link Health**. 2. Find the broken link. 3. Click the **"..."** action menu in the right column. 4. Select **Create Redirect**. 5. Enter the destination URL (where visitors should go instead) and choose a redirect type (301, 302, or 307). You can optionally set a custom slug for the masked link. 6. Submit the form. The plugin creates a masked link with a redirect mapping for the broken URL and marks the issue as **fixed**. ### Ignoring Issues If a link is working but flagged incorrectly: 1. Click **Ignore Issue** from the action menu. 2. The issue moves to "ignored" status and no longer appears in the active list. ### Deleting Issues You can permanently remove individual health issues or clear all issues at once: - **Delete a single issue** — click the action menu on any issue and select **Delete**. - **Clear all issues** — remove all health records, optionally filtered by type (content or traffic). ## Link Coverage Score Link Manager Pro calculates a coverage score from 0 to 100 that represents the overall health of your link portfolio. ### Score Grades | Grade | Score Range | |-------|-------------| | **A** | 90–100 | | **B** | 75–89 | | **C** | 60–74 | | **D** | 40–59 | | **F** | 0–39 | ### How the Score Is Calculated The score starts at 100 and applies weighted penalties: | Factor | Weight | Max Penalty | |--------|--------|-------------| | Orphaned posts (no links) | 2 | 40 points | | Weak posts (few links) | 1 | 30 points | | Broken links | 3 | 30 points | The plugin stores **weekly snapshots** of your coverage score for trend history, keeping a maximum of 12 weeks. ## Email Digest Link Manager Pro sends you periodic email reports so you stay on top of link health without checking the dashboard. ### Digest Contents - Coverage score, grade, and change since the last report - Total links, clicks, orphaned posts, and broken links counts - Top performing links with click counts - Action items for issues that need attention ### Configuration Configure the digest in **Settings → General** under **Digest Frequency**: | Setting | Options | |---------|---------| | **Frequency** | Disabled (default), Weekly, or Monthly | | **Subject line** | `[SiteName] Your Link Health Report` | Each digest includes a nonce-protected **unsubscribe link** at the bottom. ## False Positives Sometimes working links get flagged as broken. ### Common Causes - Temporary server issues at the destination - Geographic blocking (destination blocks your server's region) - Rate limiting (destination throttles automated requests) - Servers that block `HEAD` requests from bots ### How to Handle Them 1. **Test manually** — click the link in your browser to verify it works. 2. **Check from different locations** — use a tool like GeoPeeker. 3. **Adjust scan frequency** — weekly scans reduce false positives from temporary outages. 4. **Ignore the issue** — if the link works, mark it as ignored. ## Best Practices - Review the health dashboard weekly. - Fix broken links promptly — they hurt user experience and SEO. - Create redirects for recurring 404 URLs that receive traffic. - Use the coverage score to identify posts that need more links. - Keep the email digest enabled for passive monitoring. - Test links manually before ignoring flagged issues. --- **Step-by-step guide:** [How to Find Broken Links in WordPress](https://docs.linkmanagerpro.com/guides/find-broken-links) --- # Link Audit > **TL;DR:** Link Audit classifies every post on your site as orphaned (zero inbound internal links), weak (below your inbound threshold), or healthy. A coverage score from 0–100 (grades A through F) measures your overall internal linking health, with weekly snapshots to track progress. Scan your site's internal linking structure, classify every post by link health, and get a coverage score that tells you how well-connected your content is. ## What Is Link Audit Link Audit examines the internal links across all your published posts. It counts how many internal links point to each post (inbound) and how many internal links each post contains (outbound), then classifies every post as healthy, weak, or orphaned. A site-wide coverage score summarizes your overall internal linking health. Use Link Audit to find content gaps, fix orphaned posts, and strengthen your site's internal link structure. Access Link Audit at **Link Manager Pro → Link Audit**. ## Understanding Post Status Link Audit assigns one of three statuses to each scanned post based on its inbound and outbound internal link counts. | Status | Condition | What It Means | |--------|-----------|---------------| | **Orphaned** | 0 inbound internal links | No other post on your site links to this post. Search engines and visitors have no internal path to reach it. | | **Weak** | Fewer inbound or outbound links than the configured thresholds | The post has some internal links but falls short of the minimum thresholds you set. | | **Healthy** | Meets both minimum inbound and minimum outbound thresholds | The post has sufficient internal links in both directions. | ### How Thresholds Work Two settings control the boundary between weak and healthy: | Setting | Default | Description | |---------|---------|-------------| | **Min. Inbound Links** | 3 | Minimum number of inbound internal links a post needs to qualify as healthy | | **Min. Outbound Links** | 2 | Minimum number of outbound internal links a post needs to qualify as healthy | A post must meet **both** thresholds to be classified as healthy. If it falls below either one (but has at least 1 inbound link), it is classified as weak. **Example:** With the defaults, a post that has 5 inbound links but only 1 outbound link is classified as weak because it does not meet the outbound threshold of 2. ## Coverage Score The coverage score is a single number from 0 to 100 that represents how well your site's content is internally linked. Link Audit calculates it automatically after every scan. ### Letter Grades | Grade | Score Range | |-------|-------------| | **A** | 90–100 | | **B** | 75–89 | | **C** | 60–74 | | **D** | 40–59 | | **F** | 0–39 | ### How the Score Is Calculated The score starts at 100. Penalties are deducted based on the number of problematic posts and links: | Penalty Source | Weight | Max Penalty | |----------------|--------|-------------| | Orphaned posts | 2 | 40 points | | Weak posts | 1 | 30 points | | Broken links | 3 | 30 points | Each penalty is calculated as `count of problematic items × weight`, then capped at the maximum. The final score equals `100 − sum of all penalties`. **Example:** If you have 5 orphaned posts, the orphaned penalty is `5 × 2 = 10` points. If you have 25 orphaned posts, the penalty would be `25 × 2 = 50`, but it caps at 40. A site with no orphaned posts, no weak posts, and no broken links scores 100 (grade A). ## Running a Scan ### Manual Scan 1. Go to **Link Manager Pro → Link Audit**. 2. Click **Scan All Posts**. 3. Wait for the scan to complete. Link Audit processes posts in batches with a **20-second time budget per batch**. For large sites, the scan runs across multiple batches automatically. You can monitor progress as each batch completes. ### Automatic Scanning Link Audit re-scans a post automatically every time you save or update it. Your audit data stays current as you publish and edit content. ### What the Scan Extracts For each post, the scan extracts all links from the post content and counts: | Metric | Description | |--------|-------------| | **Inbound** | Number of internal links from other posts pointing to this post | | **Outbound** | Number of internal links in this post pointing to other posts on your site | | **External** | Number of links in this post pointing to external domains | Only the post types you configure in settings are included in the scan. ## Reviewing Results After a scan completes, the Link Audit screen shows a table of all scanned posts with their status and link counts. ### Stats Summary At the top of the page, you see aggregate stats: - **Total posts scanned** — number of posts included in the audit - **Healthy** — posts meeting both link thresholds - **Weak** — posts below one or both thresholds - **Orphaned** — posts with zero inbound internal links - **Average inbound links** — mean inbound link count across all scanned posts ### Filtering and Sorting Use the status filter to narrow results: - **All** — every scanned post - **Healthy** — only posts that meet both thresholds - **Weak** — only posts below thresholds - **Orphaned** — only posts with zero inbound links You can sort by any column — post title, status, inbound, outbound, external, or scan date — and search by post title. ## Link Suggestions Link Audit can suggest internal links for under-linked posts. Suggestions use keyword-based relevance scoring to find candidate posts that are topically related to the current post. ### How Suggestions Work 1. Link Audit extracts keywords from the title of the post you want to improve. 2. It scores other published posts by how closely their content matches those keywords. 3. It returns a ranked list of candidate posts, each with a relevance score and a recommended anchor text. ### Inserting a Suggested Link 1. Find the post you want more inbound links for in the audit table. 2. Click **Suggest** to load link suggestions. 3. Review the list of posts that can link to this content, along with the suggested anchor text. 4. Click **Insert Link** next to a suggestion you want to add. 5. Link Audit adds a link in the suggested post's content pointing back to the post you selected. 6. Both posts are re-scanned automatically after insertion. Link Audit only converts plain text into links and does not modify existing links. ## Coverage History Link Audit stores weekly snapshots of your coverage score for trend tracking. You can view up to **12 weeks of history** to see how your internal linking improves over time. The history chart shows your score and grade for each week, making it easy to spot the impact of your linking efforts. ## Improving Your Score Follow these steps to raise your coverage score: 1. **Fix orphaned posts first.** Orphaned posts have the largest maximum penalty (40 points). Add at least one internal link from another post to each orphaned post. 2. **Strengthen weak posts.** Add outbound internal links to posts that fall below the outbound threshold. Link to related content naturally within the text. 3. **Use link suggestions.** Review and insert the suggested links that Link Audit provides. Each inserted link improves the scores of both the source and target posts. 4. **Fix broken links.** Broken links carry the highest individual weight (3×). Repair or remove links that return errors. 5. **Publish with linking in mind.** When you write new posts, include internal links to existing content and update older posts to link back. 6. **Check your score weekly.** Use coverage history to track progress and catch regressions. ## Settings Configure Link Audit thresholds in **Link Manager Pro → Settings → General**. | Setting | Default | Description | |---------|---------|-------------| | **Min. Inbound Links** | 3 | Minimum inbound internal links for a post to be classified as healthy | | **Min. Outbound Links** | 2 | Minimum outbound internal links for a post to be classified as healthy | Adjust these thresholds based on your site's size and content strategy. A smaller site with fewer posts may work well with lower thresholds. A large content site benefits from higher thresholds to ensure thorough interlinking. After changing thresholds, run a full audit to reclassify all posts under the new values. --- # Auto-Linking > **TL;DR:** You define keywords and Link Manager Pro automatically converts them into links throughout your content. You set priority, case sensitivity, a maximum number of replacements per page and per keyword, and choose whether to skip headings. A tiered caching system prevents performance impact. Automatically convert keywords into links throughout your content — for both affiliate partners and individual links. ## What Is Auto-Linking? Auto-linking scans your post content for specific keywords and replaces them with links. You define the keywords once, and the plugin handles every future occurrence across your configured post types. Both **affiliates** and **individual links** support auto-linking. Each has its own keywords, priority, and enable toggle. ## How It Works 1. You enable auto-linking and define keywords on an affiliate or an individual link. 2. When WordPress renders a post, the plugin's `the_content` filter (priority 99) processes the content. 3. The plugin builds a keyword map from all affiliates and links that have auto-linking enabled. 4. Keywords are matched in the post content and replaced with the corresponding links. ### Where Auto-Linking Runs Auto-linking runs on the `the_content` WordPress filter. It **skips** these contexts: - Admin pages - AJAX requests - Cron jobs - REST API requests It only processes the post types you configure in the **autolink_post_types** setting. ## Settings Go to **Link Manager Pro → Settings → Auto-Linking** to configure: | Setting | Description | |---------|-------------| | **autolink_enabled** | Master toggle — turns auto-linking on or off | | **autolink_case_sensitive** | Match exact letter case only | | **autolink_exclude_headings** | Skip `h1`–`h6` heading tags during replacement | | **autolink_max_per_keyword** | Maximum replacements per keyword per page | | **autolink_max_per_page** | Maximum total auto-links inserted per page | | **autolink_post_types** | Which post types to process (e.g., post, page) | ## Setting Up Affiliate Auto-Linking 1. Go to **Link Manager Pro → Affiliate Partners**. 2. Create or edit a partner. 3. Enable **Auto-Link** for this affiliate. 4. Add **Keywords** (one per line or comma-separated): ``` WordPress hosting recommended host best web host ``` 5. Set the **Priority** (lower numbers match first, default: 10). 6. Click **Register Partner** or **Update Partner**. Every occurrence of those keywords in your content becomes a link to that affiliate's masked URL. ## Setting Up Link Auto-Linking Individual links also support auto-linking, independent of affiliates: 1. Go to **Link Manager Pro → Pretty Links**. 2. Create or edit a link. 3. Enable **Auto-Link** for this link. 4. Add **Keywords** (one per line or comma-separated). 5. Set the **Priority** (lower numbers match first, default: 10). 6. Save the link. This is useful for linking product names, tools, or internal resources without creating an affiliate partner. ## Keyword Map Building When the auto-link filter runs, the plugin builds a keyword map using this process: 1. Collects all affiliates with auto-linking enabled and all individual links with auto-linking enabled. 2. Sorts entries by: **tier** (affiliate vs. link) → **priority** (lower first) → **ID** → **keyword length** (longer first). 3. Deduplicates — the first match wins when two sources define the same keyword. 4. Enforces a maximum of **200 keywords** total. 5. Compiles a single regex alternation pattern for a one-pass replacement across the content. ### Priority and Conflicts If an affiliate and an individual link both define the keyword "Shopify," the entry with the lower priority number wins. If priorities are equal, the affiliate takes precedence (sorted by tier). If both are the same tier and priority, the lower ID wins. Longer keywords match before shorter ones within the same priority level, which prevents partial matches from consuming a longer keyword. ## Caching The keyword map is cached in two layers: | Layer | Storage | TTL | |-------|---------|-----| | **L1** | `wp_cache` (in-memory) | Until the request ends | | **L2** | WordPress transient (database) | 3,600 seconds (1 hour) | The cache is automatically invalidated when you create, update, or delete any link or affiliate. ## Keyword Best Practices ### Good Keywords - Specific phrases: "WordPress hosting", "email marketing software" - Brand names: "Shopify", "ConvertKit" - Product names: "iPhone 15", "Samsung Galaxy S24" ### Bad Keywords - Too generic: "hosting", "software", "best" - Too short: "web", "tool", "app" - Common words: "click", "here", "link" ### Tips - Use 2–4 word phrases for specificity. - Enable **case-sensitive matching** when keywords overlap with common words. - Set `autolink_max_per_keyword` to 1–3 to avoid over-linking a single post. - Set `autolink_max_per_page` to keep total link density reasonable. - Test keywords on existing content to verify the results. ## Use Cases ### Affiliate Marketing Automatically link product mentions to affiliate links: - Keywords: "Blue Yeti microphone", "Shopify platform" - Every matching mention becomes an affiliate link ### Internal Linking Boost SEO with automatic internal links: - Add keywords like "pricing page" or "documentation" to individual links - The plugin links every occurrence to the correct internal page ### Brand Partnerships Maintain consistent partner links across all content: - Add partner brand names as keywords on their affiliate profile - All mentions link to the correct partner URL ### Resource Pages Link to recommended tools and resources: - Keywords: "WordPress theme", "hosting provider" - Consistent links across all content without manual editing --- **Step-by-step guide:** [How to Manage Affiliate Links in WordPress](https://docs.linkmanagerpro.com/guides/manage-affiliate-links) --- # UTM Parameters > **TL;DR:** You create reusable UTM templates with pre-filled values for utm_source, utm_medium, utm_campaign, utm_term, and utm_content. Apply a template to any link and the parameters are appended automatically to the destination URL for Google Analytics attribution. Track campaigns and attribute traffic with UTM parameters on your links. ## What Are UTM Parameters? UTM (Urchin Tracking Module) parameters are tags appended to URLs to track marketing campaigns in analytics tools like Google Analytics. Link Manager Pro lets you manage UTM parameters at the link level, apply reusable templates, and set global parameters across all links. ## UTM Parameter Types | Parameter | Description | Example | |-----------|-------------|---------| | **utm_source** | Where traffic comes from | `google`, `newsletter`, `twitter` | | **utm_medium** | Marketing medium | `cpc`, `email`, `social` | | **utm_campaign** | Specific campaign name | `spring_sale`, `product_launch` | | **utm_term** | Search terms (for PPC) | `running+shoes` | | **utm_content** | Specific content variant | `sidebar_link`, `button_a` | ## Common Values Quick Reference | Parameter | Common Values | |-----------|---------------| | **utm_source** | `google`, `facebook`, `twitter`, `newsletter`, `partner-site` | | **utm_medium** | `cpc`, `social`, `email`, `referral`, `banner` | | **utm_campaign** | Your campaign slug — e.g., `spring-sale-2026`, `product-launch-q2` | | **utm_term** | Search keywords — e.g., `running+shoes`, `best+crm`, `free+trial` | | **utm_content** | Placement or variant identifier — e.g., `header-link`, `footer-cta`, `sidebar-banner` | ## URL Structure A destination URL with UTM parameters: ``` https://example.com/product?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale ``` When a visitor clicks a masked link, Link Manager Pro appends the configured UTM parameters to the destination URL before redirecting. ## Per-Link UTM Parameters Each link has its own UTM parameter fields: 1. Edit a link in **Link Manager Pro → Pretty Links**. 2. Find the **UTM Campaign Parameters** section. 3. Fill in the fields: source, medium, campaign, term, content. 4. Save the link. These values are appended to the destination URL when the redirect happens. ## UTM Templates UTM templates are reusable parameter sets that save you from typing the same values repeatedly. ### What a Template Contains Each template stores: **name**, **utm_source**, **utm_medium**, **utm_campaign**, **utm_term**, and **utm_content**. ### Saving a Template You save a UTM template directly from the link or affiliate editor: 1. Open a link in **Link Manager Pro → Pretty Links** (or open an affiliate in **Affiliates**). 2. Fill in the UTM parameter fields with the values you want to reuse. 3. Click **Save as Template**. 4. Enter a descriptive name (e.g., "Newsletter Q1 2025") in the prompt. 5. The template is now available for future use. ### Loading a Template When you create or edit a link (or affiliate): 1. Open the **UTM Campaign Parameters** section on the editor. 2. Click **Load template** and select a template from the list. 3. The template values populate the UTM fields. 4. Adjust any values if needed for this specific link. 5. Save the link. ### Template Behavior Loading a template fills in the UTM fields on the current form. The values are stored on the link itself, so deleting a template later does not affect links that already have those UTM values. Template names must be unique. If you try to save a template with the same name as an existing one, you see an error. ## Global UTM Injection Add parameters that apply to **every** link redirect. 1. Go to **Link Manager Pro → Settings → Tracking**. 2. Find **Global UTM Injection**. 3. Enter key-value pairs in query string format: ``` utm_source=link-manager-pro&utm_medium=proxy ``` 4. Click **Save Changes**. Global parameters are appended to all link redirects, giving you consistent attribution across every link without configuring each one individually. ## Forwarding Query Parameters Enable the **Forward URL Parameters** option on any individual link to pass query parameters from the masked redirect URL through to the destination. **Example:** A visitor clicks: ``` yoursite.com/go/product?ref=email ``` With forward parameters enabled, the destination receives: ``` https://destination.com/product?ref=email ``` This is useful for passing referral codes, coupon parameters, or tracking IDs that originate from external sources. ## Affiliate UTM Parameters When a link redirects to a URL that matches a registered affiliate's domain, the affiliate's UTM parameters are also applied to the redirect URL. You configure affiliate UTM parameters when creating or editing an affiliate in **Link Manager Pro → Affiliates**. The same five UTM fields (source, medium, campaign, term, content) are available on the affiliate form. Affiliate UTMs only apply when the destination domain matches the affiliate's registered domain. ## Parameter Priority When multiple sources provide UTM parameters with the same key, later values override earlier ones. Link Manager Pro applies parameters in this order: 1. **Global UTM Injection** — applied first (lowest priority) 2. **Per-link UTM parameters** — override global values for the same keys 3. **Affiliate UTM parameters** — override per-link values for the same keys (only when the destination matches the affiliate domain) 4. **Forwarded query parameters** — override everything for the same keys (highest priority, only when Forward URL Parameters is enabled) Parameters from different sources with **different** keys are all included. The priority only matters when two sources set the same key. **Example:** A link has `utm_source=newsletter` and the global injection sets `utm_source=link-manager-pro`. The per-link value `newsletter` wins because per-link UTMs are applied after global ones. ## Campaign Integration Links with `utm_campaign` values feed into the **Campaigns** feature in Link Manager Pro. - Virtual campaigns are auto-detected from link and affiliate UTM data. - You can view campaign-level performance without creating campaigns manually. See [Campaigns](https://docs.linkmanagerpro.com/features/campaigns) for full campaign management. ## Best Practices ### Use Consistent Naming | Good | Bad | |------|-----| | `newsletter` | `nl`, `news`, `email-blast` | | `spring_sale` | `Spring Sale`, `springsale`, `sale-2024` | | `sidebar` | `side-bar`, `sb`, `left-nav` | ### Parameter Values **utm_source** (where): - `google`, `facebook`, `twitter`, `linkedin` - `newsletter`, `email`, `rss` - `website`, `mobile_app` **utm_medium** (how): - `cpc` (cost per click) - `email` (email marketing) - `social` (social media) - `organic` (organic search) - `referral` (referral traffic) **utm_campaign** (which): - `spring_sale_2025` - `product_launch_q1` - `black_friday` - `webinar_march` ### Case Sensitivity - Use lowercase for consistency. - Avoid spaces — use underscores or hyphens. - Keep names short but descriptive. ## Campaign Examples **Email Newsletter:** ``` utm_source=newsletter&utm_medium=email&utm_campaign=march_2025 ``` **Social Media Post:** ``` utm_source=twitter&utm_medium=social&utm_campaign=product_launch ``` **Sidebar Banner:** ``` utm_source=website&utm_medium=banner&utm_campaign=sidebar_promo ``` ### A/B Testing Use `utm_content` to track variations: ``` Version A: utm_content=blue_button Version B: utm_content=red_button Version C: utm_content=text_link ``` ## Viewing UTM Data ### In Google Analytics 1. Open **Reports → Acquisition → Traffic acquisition**. 2. Change the primary dimension to **Session campaign** (or Session source, Session medium). 3. Compare performance across campaigns. ### In Link Manager Pro Link Manager Pro tracks clicks. Combine click data with UTM data from Google Analytics to see: - Which campaigns drive the most clicks - Conversion rates by campaign - ROI on marketing efforts ## URL Builders Use online tools to build UTM URLs: - [Google Analytics Campaign URL Builder](https://ga-dev-tools.web.app/campaign-url-builder/) - [UTM.io](https://utm.io/) - [Terminus UTM Builder](https://www.terminusapp.com/utm-terms-builder/) ## Tips - **Test URLs** — after creating a link, click it to verify the redirect and parameters work. - **Document parameters** — keep a spreadsheet or use UTM templates for your naming conventions. - **Be consistent** — use the same naming across all campaigns. - **Don't over-tag** — only tag what you plan to analyze. - **Use templates** — save time and reduce typos by loading UTM templates instead of typing values manually. ## Troubleshooting ### Parameters Not Showing in Analytics **Possible causes:** - Parameters not formatted correctly - Analytics tool not configured to read UTM parameters - URL encoded incorrectly **Solutions:** - Verify parameter syntax: `parameter=value` - Check your analytics configuration - Use a URL builder tool to avoid formatting errors ### Broken Links After Adding Parameters **Problem:** URL does not work with parameters added. **Solutions:** - Test the destination URL without parameters first. - Check for special characters and encode them. - Verify parameter placement — parameters go after `?` and are separated by `&`. ### Forwarded Parameters Conflicting **Problem:** Forward URL Parameters passes a query parameter that conflicts with a per-link UTM value. **Solution:** Forwarded parameters take precedence because they are applied last. If you need the per-link UTM value to win, disable Forward URL Parameters on that link, or ensure the incoming URL does not carry conflicting query parameters. --- **Step-by-step guide:** [How to Add UTM Parameters to WordPress Links](https://docs.linkmanagerpro.com/guides/add-utm-parameters) --- # Campaigns > **TL;DR:** Campaigns group links that share the same `utm_campaign` value. The Campaigns dashboard shows aggregate click data across all links in a campaign, so you compare performance across marketing initiatives from one screen. Group your links by campaign, track performance across UTM parameters, and see which campaigns drive the most clicks. ## What Are Campaigns A campaign in Link Manager Pro is a collection of links that share the same `utm_campaign` value. Campaigns give you a unified view of click performance, UTM breakdowns, and traffic trends for all the links tied to a specific marketing effort. Access Campaigns at **Link Manager Pro → Campaigns**. ## Managed vs Virtual Campaigns Link Manager Pro has two types of campaigns: | Type | Source | Editable | How It Appears | |------|--------|----------|----------------| | **Managed** | You create it manually | Yes — full CRUD | Always visible in the campaign list | | **Virtual** | Auto-detected from links or affiliates that have a `utm_campaign` value | No — read only | Appears in the campaign list alongside managed campaigns | ### Managed Campaigns You create managed campaigns through the Campaigns interface. Each managed campaign has its own name, slug, description, and UTM defaults. You have full control to edit and delete managed campaigns. ### Virtual Campaigns Virtual campaigns appear automatically when Link Manager Pro detects links or affiliates with `utm_campaign` values that do not match any managed campaign. They exist only at query time — there is no saved record for a virtual campaign. Virtual campaigns let you see campaign-level analytics for UTM values you have not explicitly organized yet. You can convert all virtual campaigns into managed campaigns at once (see [Syncing Virtual Campaigns](#syncing-virtual-campaigns)). ## Creating a Campaign 1. Go to **Link Manager Pro → Campaigns**. 2. Click **New Campaign**. 3. Fill in the campaign fields: | Field | Description | |-------|-------------| | **Campaign Name** | Descriptive name for the campaign (e.g., "Spring Sale 2026"). Required. | | **Campaign Slug** | Auto-generated from the name. Used as the `utm_campaign` value in URLs. | | **Description** | Optional notes about the campaign's purpose or target audience. | 4. Under **Default UTM Parameters**, set values that are pre-filled when you select this campaign on a link: | Field | Description | |-------|-------------| | **Source (utm_source)** | Default UTM source (e.g., "newsletter") | | **Medium (utm_medium)** | Default UTM medium (e.g., "email") | | **Term (utm_term)** | Default UTM term (e.g., "discount") | | **Content (utm_content)** | Default UTM content (e.g., "header-banner") | 5. Click **Create Campaign**. The new campaign immediately starts aggregating any links whose `utm_campaign` value matches the campaign slug. ## Viewing Campaign Analytics Open any campaign from the list to see its full report. The campaign report includes: ### Summary Metrics | Metric | Description | |--------|-------------| | **Total Clicks** | Sum of all clicks across every link in the campaign | | **Unique Clicks** | Distinct visitors who clicked campaign links | | **Links in Campaign** | Number of pretty links using this campaign | | **Top Source** | The most used `utm_source` value across campaign links | ### UTM Variant Breakdown The report shows a table of UTM variant combinations used by links in the campaign. Each row represents a unique combination of source, medium, term, and content values. For each combination, you see: | Column | Description | |--------|-------------| | **Source** | `utm_source` value for this variant (e.g., google, newsletter) | | **Medium** | `utm_medium` value (e.g., email, cpc) | | **Term** | `utm_term` value (e.g., discount, promo) | | **Content** | `utm_content` value (e.g., header-banner, sidebar) | | **Links** | Number of links using this combination | | **Clicks** | Total clicks across those links | | **Unique** | Distinct visitors across those links | ### Clicks Over Time A date-range chart shows total and unique clicks over time for the campaign. You can adjust the date window using presets or a custom range. Days with no clicks still appear on the timeline. ## Campaign Links The campaign report includes a paginated list of all links with a matching `utm_campaign` value. For each link, you see: - Slug - Target URL - Clicks Use this list to identify which individual links contribute the most to your campaign's performance. ## Syncing Virtual Campaigns Virtual campaigns are auto-detected but not saved. You can convert them all into managed campaigns at once. 1. Go to **Link Manager Pro → Campaigns**. 2. Click **Sync Campaigns**. 3. Link Manager Pro loads a list of virtual campaigns that do not yet have a managed counterpart. Each entry shows its suggested name, slug, link count, and total clicks. 4. Click **Sync _N_ Campaigns** to convert all of them into managed campaigns. 5. A progress bar shows each campaign being created. When finished, you see a summary of how many succeeded and how many failed. 6. Click **Done** to close the dialog. The converted campaigns use the virtual campaign's slug as the campaign slug and a human-friendly version of it as the name. Description and UTM defaults are left empty so you can fill them in later by editing each campaign. If no virtual campaigns exist, you see a message confirming all campaigns are already synced. ## Campaign List The main campaign list shows all managed and virtual campaigns together, with these columns: | Column | Description | |--------|-------------| | **Campaign** | Name of the managed campaign or the detected `utm_campaign` value | | **Type** | Whether the campaign is **Managed** or **Virtual** | | **Links** | Number of links with a matching `utm_campaign` | | **Total Clicks** | Sum of clicks across all campaign links | | **Unique Clicks** | Distinct visitors across all campaign links | | **Sources** | The `utm_source` values used by links in the campaign | You can search campaigns by name or slug using the search field above the table. Click any row to open its report. ## Best Practices ### Use Consistent Naming Establish a naming convention for your `utm_campaign` values and stick to it. Consistent naming ensures links group into the correct campaigns automatically. **Good:** `spring-sale-2026`, `product-launch-q2`, `newsletter-weekly` **Avoid:** `Spring Sale!`, `test123`, `campaign` ### Follow UTM Conventions - Use lowercase values for all UTM parameters to avoid case-sensitivity splits. - Keep `utm_source` and `utm_medium` consistent across campaigns (e.g., always `google` not sometimes `Google`). - Use `utm_content` to differentiate link placements within the same campaign (e.g., `hero-banner` vs `sidebar-widget`). ### Convert Virtual Campaigns Check the sync dialog regularly. Convert virtual campaigns into managed campaigns so you can add descriptions and UTM defaults for future links. ### Review Campaign Reports Check campaign reports after each marketing push to measure which campaigns and UTM variants drive the most engagement. Use the time series to correlate click spikes with specific actions you took. ### Google Analytics Integration UTM parameters automatically flow to Google Analytics when visitors click through your campaign links. Find campaign data in GA4 under **Reports → Acquisition → Traffic acquisition**, where you can change the primary dimension to Session campaign, source, or medium. Link Manager Pro tracks clicks at the redirect level. GA provides downstream metrics like conversions, bounce rate, and session duration. Use both together: Link Manager Pro for click volume at the redirect, GA for on-site behavior after the click. --- # Conditional Routing Rules > **TL;DR:** You set rules that redirect visitors to different destination URLs based on conditions: visitor country, total click count on the link, or a date range. Rules are evaluated in priority order — the first matching rule wins. If no rule matches, the default destination is used. Redirect visitors to different destinations based on their country, click thresholds, dates, or any combination of conditions — all on a per-link basis. ## What Are Conditional Rules A conditional rule overrides a link's default destination URL when its conditions match. Each link can have multiple rules, evaluated in priority order. The first rule that matches wins. If no rules match, the visitor goes to the link's default target URL. You configure conditional rules from within the link editor, under the **Conditional Routing Rules** section. ## Rule Fields Each rule has the following fields: | Field | Type | Description | |-------|------|-------------| | **name** | Text, optional (max 120 characters) | Descriptive label for the rule (e.g., "US visitors to US store") | | **is_active** | Boolean (default: true) | Toggle the rule on or off without deleting it | | **priority** | Integer, 0–100 (default: 100) | Evaluation order — lower numbers evaluate first | | **match_mode** | `all` or `any` | How conditions combine: `all` = every condition must match (AND), `any` = at least one must match (OR) | | **target_url** | URL | Alternate destination for visitors who match this rule | | **redirect_type** | `301`, `302`, or `307` | HTTP redirect status code for this rule | | **start_at** | Datetime (optional) | Rule activates after this date and time | | **end_at** | Datetime (optional) | Rule deactivates after this date and time | | **conditions** | Array (optional) | Condition objects (see below). If empty, the rule matches all visitors within its date window. | ## Condition Types Each condition checks a specific attribute of the click against your defined criteria. | Type | Description | Operators | Value Format | |------|-------------|-----------|--------------| | **total_clicks** | Total click count on the link (evaluated as what the count will be *after* the current click) | `gt`, `gte`, `eq`, `lt`, `lte` | Number | | **country_in** | Visitor's country, resolved from GeoLite2 database or Cloudflare/CDN headers | `in` | Array of 2-letter ISO country codes (e.g., `["US", "CA"]`) | | **date_after** | Current date is after a specified date | `gt`, `gte` | Date string (e.g., `"2026-04-01"`) | | **date_before** | Current date is before a specified date | `lt`, `lte` | Date string (e.g., `"2026-06-30"`) | ### Operator Reference | Operator | Meaning | |----------|---------| | `gt` | Greater than | | `gte` | Greater than or equal to | | `eq` | Equal to | | `lt` | Less than | | `lte` | Less than or equal to | | `in` | Value is in the provided list | ## Match Modes The match mode determines how multiple conditions within a single rule combine. ### All (AND Logic) Every condition in the rule must be true for the rule to match. **Example:** A rule with match mode `all` and two conditions — `country_in: ["US"]` and `total_clicks lt 500` — only matches visitors from the US when the link has fewer than 500 total clicks. ### Any (OR Logic) At least one condition must be true for the rule to match. **Example:** A rule with match mode `any` and two conditions — `country_in: ["US"]` and `country_in: ["CA"]` — matches visitors from either the US or Canada. ## Priority and Evaluation Order Rules evaluate in ascending priority order. A rule with priority `10` evaluates before a rule with priority `100`. The first rule that matches determines the redirect destination. ### Evaluation Flow 1. Link Manager Pro loads all **active** rules for the link, sorted by priority (lowest first). 2. For each rule: - Check if the current date falls within the `start_at`/`end_at` window (if set). Skip the rule if outside the window. - Evaluate all conditions using the rule's match mode. - If the rule matches → redirect the visitor to this rule's `target_url` using this rule's `redirect_type`. Stop evaluating. 3. If no rule matches → redirect to the link's default `target_url`. ## Date Range Restrictions Use `start_at` and `end_at` to limit when a rule is active, independent of its conditions. | Field | Behavior | |-------|----------| | **start_at** only | Rule activates on that date and stays active indefinitely | | **end_at** only | Rule is active immediately and deactivates on that date | | **Both set** | Rule is active only between `start_at` and `end_at` | | **Neither set** | Rule is always eligible for evaluation (conditions still apply) | Date range checks happen before condition evaluation. If the current date is outside the range, the rule is skipped entirely. ## Creating a Rule 1. Go to **Link Manager → Pretty Links**. 2. Click a link to open the link editor. 3. Scroll to the **Conditional Routing Rules** section. 4. Click **Add Rule**. 5. Fill in the rule fields: - Enter a descriptive **name**. - Set the **priority** (lower = evaluated first). - Choose the **match mode** (`all` or `any`). - Enter the **target URL** for this rule's redirect. - Select the **redirect type** (301, 302, or 307). - Optionally set **start_at** and **end_at** dates. 6. Add one or more **conditions**: - Select the condition type. - Choose the operator. - Enter the value. 7. Click **Save**. ## Use Case Examples ### Geo-Targeting: Regional Storefronts Redirect visitors to their regional store based on country. **Setup:** Create two rules on the same link. **Rule 1 — US Store (priority 10):** - match_mode: `all` - target_url: `https://us.store.com/product` - redirect_type: `302` - Condition: `country_in` → `in` → `["US"]` **Rule 2 — EU Store (priority 20):** - match_mode: `all` - target_url: `https://eu.store.com/product` - redirect_type: `302` - Condition: `country_in` → `in` → `["DE", "FR", "IT", "ES", "NL"]` Visitors from the US go to the US store. Visitors from listed EU countries go to the EU store. Everyone else goes to the link's default target URL. ### Click Cap: Redirect After a Threshold Send visitors to a different page after a link reaches a click threshold. **Rule — Redirect after 1000 clicks (priority 10):** - match_mode: `all` - target_url: `https://yoursite.com/sold-out` - redirect_type: `302` - Condition: `total_clicks` → `gte` → `1000` The first 999 visitors go to the default destination. Starting at click 1000, visitors redirect to the sold-out page. ### Time-Limited Promotion Redirect to a sale page only during a specific date range. **Rule — Holiday sale (priority 10):** - match_mode: `all` - target_url: `https://yoursite.com/holiday-sale` - redirect_type: `302` - start_at: `2026-12-20 00:00:00` - end_at: `2026-12-31 23:59:59` No conditions needed — the date range restriction alone controls when this rule is active. Outside the date window, visitors go to the default destination. ### Combining Conditions: Geo + Date Redirect US visitors to a Black Friday page during a specific window. **Rule — US Black Friday (priority 10):** - match_mode: `all` - target_url: `https://yoursite.com/black-friday` - redirect_type: `302` - Condition 1: `country_in` → `in` → `["US"]` - Condition 2: `date_after` → `gte` → `"2026-11-27"` - Condition 3: `date_before` → `lte` → `"2026-11-30"` Because match mode is `all`, all three conditions must be true. Only US visitors between November 27 and November 30 see the Black Friday page. ## Managing Rules ### Editing a Rule 1. Open the link editor. 2. Find the rule in the Conditional Routing Rules section. 3. Modify any fields or conditions. 4. Click **Save**. ### Deleting a Rule 1. Open the link editor. 2. Click the **Delete** button on the rule you want to remove. 3. Confirm the deletion. ### Reordering Rules Change the **priority** value on each rule to control evaluation order. Lower numbers evaluate first. You do not need consecutive numbers — values like 10, 20, 30 work well and leave room for inserting rules later. ### Syncing Rules (Bulk Replace) The sync operation performs an atomic replace of all rules on a link. It removes every existing rule and replaces them with a new set in a single operation. Use sync when you need to restructure all rules on a link at once rather than editing them individually. ## Troubleshooting If a conditional rule is not triggering as expected, check each item in this list: | Check | What to Verify | |-------|----------------| | **Rule is active** | Confirm `is_active` is set to true | | **Priority order** | A higher-priority rule (lower number) may be matching first — review all rules on the link | | **Date range** | If `start_at` or `end_at` is set, confirm the current date falls within the window | | **Match mode** | If set to `all`, every condition must be true — check that all conditions can be satisfied simultaneously | | **Country detection** | Country code relies on GeoLite2 or Cloudflare/CDN headers — verify your server provides this data | | **Click count timing** | `total_clicks` evaluates against the count *after* the current click, not before — a `gte 1000` condition triggers on the 1000th click | | **Condition values** | Double-check country codes are valid 2-letter ISO codes and date strings are formatted correctly | | **Link target** | Confirm the rule's `target_url` is a valid, accessible URL | If no rules match, the link uses its default target URL. This is expected behavior, not an error. --- **Step-by-step guide:** [How to Create Redirect Links in WordPress](https://docs.linkmanagerpro.com/guides/redirect-links) --- # Affiliate Disclosure > **TL;DR:** Link Manager Pro detects posts containing affiliate or sponsored links and automatically inserts a disclosure notice. You write the disclosure text, choose before-content or after-content positioning, pick a style, and select which post types to target. Automatically inject an affiliate disclosure notice into posts that contain sponsored or affiliate links. ## What Is Affiliate Disclosure? The FTC requires content creators to disclose affiliate relationships when they link to products or services for compensation. An affiliate disclosure is a short notice that tells readers your content contains affiliate links and you may earn a commission from purchases. Link Manager Pro injects a disclosure notice into your post content automatically. The notice only appears on single posts and pages that contain links managed by the plugin or links with nofollow or sponsored rel attributes. ## Why Disclosure Matters The FTC requires you to place a clear disclosure near affiliate links so readers notice it before clicking. Burying it in a footer or on a separate page does not meet this standard. Other jurisdictions have similar requirements: - **United Kingdom** — the CAP Code requires you to identify paid or affiliate content clearly. - **European Union** — consumer protection directives require transparency about commercial intent in content. - **Canada** — the Competition Bureau expects honest representation of affiliate relationships under the Competition Act. > This section provides general information about disclosure requirements. It is not legal advice. Consult a qualified attorney for guidance specific to your situation. ## Enabling Disclosure 1. Go to **Link Manager Pro → Settings → Disclosure**. 2. Toggle **Enable Affiliate Disclosure** to on. 3. Click **Save Changes**. ## Configuring the Message Write your own disclosure text in the **Disclosure Text** field. This field supports basic HTML formatting. 1. Go to **Link Manager Pro → Settings → Disclosure**. 2. Find the **Disclosure Text** textarea. 3. Write your message. Keep it clear and direct. 4. Click **Save Changes**. Example message: ``` This post contains affiliate links. If you purchase through these links, we may earn a commission at no extra cost to you. ``` Use plain language your readers understand. Avoid legal jargon and keep the notice concise. ## Position and Style ### Position The **Position** dropdown controls where the notice appears relative to your post content: | Position | Behavior | |----------|----------| | **Before Content** | The notice appears above the post content | | **After Content** | The notice appears below the post content | ### Style The **Style** dropdown controls the visual presentation: | Style | Appearance | |-------|------------| | **Boxed** | Bordered card with accent — visually distinct from surrounding content | | **Minimal** | Italic text with subtle divider | | **Custom** | Uses your own CSS class for full control over styling | ## Post Type Targeting Control which post types display the disclosure notice: 1. Go to **Link Manager Pro → Settings → Disclosure**. 2. Find the **Post Types** multi-select. 3. Select the post types that should show the disclosure (e.g., Post, Page). 4. Click **Save Changes**. The disclosure only appears on the selected post types. If a post type is not selected, the plugin skips it — even if the page contains affiliate links. ## When the Disclosure Appears The disclosure notice requires **all four conditions** to be true: 1. **Disclosure is enabled** — you turned on the toggle in Settings → Disclosure. 2. **Single content view** — the visitor is viewing a single post or page, not an archive or listing. 3. **Post type matches** — the current content type is in your selected post types. 4. **Page has qualifying links** — the content contains managed links (redirects created through Link Manager Pro) or links with nofollow or sponsored rel attributes. If any condition is false, no disclosure appears on that page. This means: - A blog post with no managed or affiliate links shows no disclosure. - A content type not included in your selected post types shows no disclosure, even if it has affiliate links. - A post with managed or affiliate links on a selected post type shows the disclosure. - Archive, category, and tag pages never show the disclosure. ## Custom Styling When you set **Style** to **Custom**, Link Manager Pro applies the CSS class you enter in the **Custom CSS Class** field to the disclosure container. ### Setup 1. Set **Style** to **Custom**. 2. Enter your CSS class name in **Custom CSS Class** (e.g., `my-disclosure-notice`). 3. Click **Save Changes**. 4. Add your CSS rules to your theme's stylesheet or customizer: ```css .my-disclosure-notice { background-color: #fef3c7; border-left: 4px solid #f59e0b; padding: 12px 16px; margin: 16px 0; font-size: 14px; line-height: 1.5; } ``` ## Settings Reference | Setting | Type | Description | |---------|------|-------------| | **Enable Affiliate Disclosure** | Toggle | Master switch for disclosure injection | | **Disclosure Text** | Textarea | The disclosure message shown to visitors (supports basic HTML) | | **Position** | Dropdown | Before Content or After Content | | **Style** | Dropdown | Boxed, Minimal, or Custom | | **Custom CSS Class** | Text | CSS class applied when Style is set to Custom | | **Post Types** | Multi-select | Which content types show the disclosure notice | ## Best Practices - **Use clear language.** Write the disclosure so any reader understands you have affiliate links. Avoid vague or overly technical wording. - **Place it before content.** The **Before Content** position ensures readers see the disclosure before clicking any links. The FTC recommends placing disclosures where they are hard to miss. - **Keep it short.** One to two sentences is enough. Longer disclosures get ignored. - **Test after setup.** Visit a published post that contains affiliate links and verify the disclosure appears. Check a post without affiliate links and confirm it does not appear. - **Match your site design.** Use the **Boxed** style for visual emphasis or the **Custom** style to integrate with your theme's design system. - **Cover all relevant post types.** If you publish affiliate content in custom post types, add them to your **Post Types** selection. ## Troubleshooting ### Disclosure Not Appearing - Confirm **Enable Affiliate Disclosure** is toggled on in **Settings → Disclosure**. - Check that the current post type is selected in the **Post Types** multi-select. - Verify the post contains qualifying links — masked URLs (using your link or internal prefix) or links with `nofollow` or `sponsored` rel attributes. - Clear any caching plugin or server-side cache. The disclosure injects at render time and cached pages may serve stale output. - Confirm the **Disclosure Text** field is not empty. The plugin skips injection when no message is set. ### Styling Issues - Inspect the disclosure element for CSS conflicts with your theme using browser developer tools. - Switch to a different **Style** option (Boxed, Minimal, or Custom) to isolate whether the conflict is style-specific. - Use the **Custom CSS Class** field with the Custom style to apply your own rules and override conflicting theme styles. --- **Step-by-step guide:** [How to Add FTC Affiliate Disclosure in WordPress](https://docs.linkmanagerpro.com/guides/ftc-affiliate-disclosure) --- # How to Cloak Affiliate Links in WordPress You cloak affiliate links in WordPress by swapping long tracking URLs for short paths on your own domain. You publish something like `yoursite.com/go/product` instead of `https://example.com/ref?id=12345&sub=abc`. Link Manager Pro stores the real affiliate destination, redirects each click to that URL, and lets you update the destination later without hunting through old posts. You pick the slug (the `go/product` segment), configure the redirect type, set `rel` attributes, and optionally forward query parameters. The masked URL works as soon as you save the link. You perform every step inside **Link Manager Pro → Links**; you never hand-edit `.htaccess` for basic affiliate hops. ## The problem Raw affiliate URLs look messy, expose opaque tracking parameters, and age badly when programs change query strings or domains. Readers hesitate to click long, unfamiliar strings. You also lock yourself into hard-coded URLs across your content whenever the merchant updates a link. ## The solution: masking with Link Manager Pro **Link cloaking** (masking) means you replace the visible URL with a branded path on your site while Link Manager Pro handles the hop to the affiliate program behind the scenes. **Why you cloak:** - **Trust** — Short, on-brand URLs look intentional and easier to verify. - **Click-through** — Clean links reduce friction compared with parameter-heavy URLs. - **Sharing** — You paste a memorable path in email, social posts, or PDFs. - **Maintenance** — You edit the destination in one place; posts that already use the masked URL keep working. ## Step-by-step: cloak a link 1. Go to **Link Manager Pro → Links → Add New**. 2. Enter the **affiliate destination URL** (the full program URL with your tracking). 3. Set a **custom slug** — the part after your prefix (for example `product` in `yoursite.com/go/product`). You configure the prefix (for example `go`, `link`, `refer`) under **Settings**. 4. Choose a **redirect type**: - **301** — permanent; search engines treat the masked URL as the canonical hop. - **302** — temporary; use when you expect the destination to change. - **307** — temporary like 302, but preserves the original HTTP method (POST stays POST). 5. Set **link attributes**. For affiliate links, enable **nofollow** and **sponsored** so search engines and policies treat the hop as paid or sponsored. 6. Optionally enable **parameter forwarding** so query strings on the masked URL pass through to the affiliate (for sub-IDs or campaign tags). 7. **Save**. The cloaked link goes live immediately. ## Best practices - Pick **descriptive slugs** (`hosting-deal`, `spring-sale`) so you recognize links in analytics and exports. - Keep **sponsored** on affiliate hops alongside **nofollow** unless your counsel advises otherwise. - Use **301** for stable, long-term affiliate destinations; use **302** when the merchant rotates landing pages often or you A/B test destinations. ### Prefix and slugs You set the **link structure prefix** once under **Settings** (for example `go`, `link`, or `refer`). Every masked URL uses that prefix plus your slug. **Plan the prefix before you print URLs**—changing it later breaks every existing masked link readers already bookmarked or shared. ### Parameter forwarding in real life You enable **Forward URL Parameters** when you append tracking on the fly—`yoursite.com/go/product?sub=newsletter`—and you need the affiliate network to receive `sub=newsletter` on the final hop. Leave forwarding off when extra query strings might confuse the merchant’s tracking or violate program rules. ### Putting cloaked URLs in content After you save the link, paste the masked URL (or rely on **auto-linking** keywords) inside posts, pages, and widgets. Link Manager Pro still tracks clicks and honors the `rel` values you set. For program compliance, pair technical attributes with visible disclosure copy—see [Affiliate disclosure](https://docs.linkmanagerpro.com/features/disclosure). For deeper detail on how masking fits SEO and disclosure rules, see [Link masking & URL cloaking](https://docs.linkmanagerpro.com/features/link-masking), [Creating links](https://docs.linkmanagerpro.com/user-guide/creating-links), and [Affiliate disclosure](https://docs.linkmanagerpro.com/features/disclosure). ## Related - [Link masking & URL cloaking](https://docs.linkmanagerpro.com/features/link-masking) - [Creating links](https://docs.linkmanagerpro.com/user-guide/creating-links) - [Affiliate disclosure](https://docs.linkmanagerpro.com/features/disclosure) --- # How to Track Link Clicks in WordPress You track link clicks in WordPress with Link Manager Pro by creating **masked** (redirect) links. Link Manager Pro **records every click** on those URLs automatically—you skip extra tags, pixels, or theme edits. Open **Link Manager Pro → Analytics** to filter by date, link, affiliate, or campaign and to read breakdowns by device, country, referrer, and operating system. For plain internal links inside post content, you enable **internal click tracking**; a JavaScript tracker posts each event to a **REST** endpoint, **rate-limited to thirty requests per minute per IP**. You own the data in your database, so you correlate traffic spikes with content updates on your timeline. ## The problem WordPress does not tell you which outbound or masked links perform, where traffic comes from, or how much is bots versus humans. Spreadsheets and UTM tags alone miss per-link detail and first-party context on your own domain. ## The solution: first-party click analytics Link Manager Pro **logs each click** on masked links as visitors pass through your redirect. You read volume, geography, technology, and referrers inside WordPress instead of exporting from a third-party shortener. **What each click record can include:** - Timestamp - IP address (**anonymized** per your privacy settings) - Country (from **GeoLite2** when the database is present, or from **CDN / geo headers** when your host forwards them) - Device type, operating system, and browser (parsed from the user agent) - Referrer URL - A **unique visitor** flag **Unique visitors:** On the first visit, Link Manager Pro sets a first-party cookie named `link_manager_pro_id` containing a **UUID v4**. The cookie lasts **one year** and lets the plugin mark repeat clicks from the same browser. **Bot handling:** The plugin ships with **40+** built-in bot and crawler patterns. You extend that list with **custom blocked patterns** and **blocked IPs** under **Settings** so you exclude known automation from human totals. **Retention:** Under **Settings → Data**, you choose how many days to keep click rows; **auto-purge deletes** rows older than that window. **Internal (non-masked) links:** Internal click tracking targets normal `` links inside post content that stay on your site. The tracker calls the REST API; the server **enforces 30 requests per minute per IP** so scripted floods cannot spam your database. **Dimensions you actually use:** Start with **per-link** totals to see winners and losers. Switch to **per-affiliate** when multiple masked links point at the same merchant domain. Use **per-campaign** when you group links with shared UTM or campaign metadata so launch reviews stay apples-to-apples. ## Step-by-step: see your numbers 1. **Create or edit** any masked link. Tracking stays on by default for redirect clicks. 2. Open **Link Manager Pro → Analytics**. 3. Set the **date range**, then narrow by **link**, **affiliate**, or **campaign** as needed. 4. Review **breakdowns** for device, country, referrer, OS, and browser. Use this workflow whenever you launch a new offer or compare affiliates—same screens, different filters. If numbers look flat, confirm visitors hit the **masked** URL (not a raw affiliate string you pasted before you created the link). For internal tracking, confirm you enabled the feature and you have not tripped the per-IP rate limit while testing. Export or screenshot key ranges after major campaigns; long-term trends make it obvious when a merchant landing page or your CTA copy stops converting. ## Related - [Click tracking](https://docs.linkmanagerpro.com/features/click-tracking) - [Internal click tracking](https://docs.linkmanagerpro.com/features/internal-click-tracking) - [Analytics user guide](https://docs.linkmanagerpro.com/user-guide/analytics) --- # How to Find Broken Links in WordPress You find broken links in WordPress with **Link Manager Pro → Link Health**. The plugin flags problems two ways: it **scans post and page content** for outbound URLs and checks each response with `wp_remote_head`, and it **records 404s** visitors actually hit on your own site. You review both lists in one dashboard, open any row for the URL, source page, HTTP status, and detection time, then either fix the HTML or create a **one-click redirect** from the bad path to a working page. You optionally turn on **email digests** in **Settings** so summaries land in your inbox on a schedule you choose. ## The problem Outbound links rot when merchants move pages, and internal URLs break after restructures. You rarely notice until SEO tools complain or readers report errors. Traffic-side 404s often never appear in a manual audit because you do not click every old permalink. ## The solution: scheduled scans plus live 404 capture **Content scanning** walks your published content, extracts outbound links, and requests each target with `wp_remote_head`. Link Manager Pro **lists** failed or error status codes as **content issues**. **Traffic monitoring** logs **404** responses for requests against **your** domain—real visitors requesting paths that no longer exist. That catches rename-and-forget permalink problems that a desktop crawler might skip because you never linked to the old path in new posts. WordPress **cron** runs the health scan on a schedule, so the issue queue refreshes without you remembering to click anything. When you migrate hosts, import hundreds of posts, or change permalink structure, you **trigger a manual scan** from the Link Health dashboard for an immediate pass. Each issue shows: - The **broken or missing URL** - The **page** where the outbound link appears (for content issues) or the path visitors requested (for traffic 404s) - The **HTTP status code** - **When** the plugin detected the problem **One-click redirect:** From an issue row you create a redirect that maps the bad URL on your site to a working destination without leaving the health UI. **Email digest:** Under **Settings**, you enable periodic **email reports** so you monitor new breaks without opening WordPress daily. ## Step-by-step 1. Go to **Link Manager Pro → Link Health**. 2. Review **content issues** (bad outbound links) and **traffic issues** (visitor 404s) in their sections. 3. **Click an issue** to read full detail—URL, referring content, status, timestamp. 4. **Fix** by updating the link in the editor **or** creating a **one-click redirect** to a valid URL. 5. Optionally open **Settings** and enable the **email digest** for proactive alerts. Run a manual scan after migrations or large plugin updates so the queue reflects the current site. ### How to choose a fix **Update the source HTML** when the destination still exists but you copied the wrong URL, or when the merchant moved a product page and you have a direct replacement. **Create a redirect** when the old path on **your** site should keep working—think renamed categories, retired landing pages, or campaign URLs you printed on physical media. Redirects buy time while you update templates or navigation menus. Some remote hosts block automated `HEAD` requests; if a link works in your browser but flags in the scanner, verify manually and whitelist or adjust the destination if needed. ## Related - [Health monitoring](https://docs.linkmanagerpro.com/features/health-monitoring) - [Link audit & coverage](https://docs.linkmanagerpro.com/features/link-audit) - [Troubleshooting](https://docs.linkmanagerpro.com/troubleshooting) --- # How to Add Nofollow Links in WordPress You add `nofollow` to links in WordPress with Link Manager Pro in two places: **global defaults** under **Settings → Link Attributes**, and **per-link toggles** when you create or edit a masked link. You can also set **domain-level defaults** for each **Affiliate** partner so every hop to that merchant inherits the same `rel` values. The plugin exposes **nofollow**, **noopener**, **noreferrer**, and **sponsored** in the UI. For **`ugc`**, Google’s label for user-generated links, you follow the same policy choice in HTML or blocks where you control raw attributes—pair it with **nofollow** on community-sourced destinations. You revisit **Settings** whenever your legal or SEO policy changes site-wide. ## The problem WordPress’s classic editor and many blocks default to “follow” links. Affiliate and paid placements should signal **nofollow** and **sponsored** consistently. Doing that by hand across hundreds of posts fails quickly, and partner-specific rules are easy to get wrong. ## What these attributes mean - **`nofollow`** — Tells search engines not to pass PageRank-style signals to the destination. - **`noopener`** — Stops the new page from accessing `window.opener` when the link opens in a new tab (security against reverse tabnapping). - **`noreferrer`** — Omits your URL as the referrer on the request (privacy). - **`sponsored`** — Marks paid or affiliate relationships for search quality and disclosure alignment. - **`ugc`** — Marks user-generated content links (comments, forums). Link Manager Pro focuses the four toggles above; add **`ugc`** in HTML or compatible blocks when you need the explicit UGC hint. ## Set attributes in Link Manager Pro ### 1. Global defaults 1. Open **Link Manager Pro → Settings → Link Attributes**. 2. Toggle **nofollow**, **noopener**, **noreferrer**, and **sponsored** to match your site-wide policy for **new** managed links and auto-linked output. 3. Save. Existing links keep their saved values until you edit them. ### 2. Per-link override 1. Go to **Link Manager Pro → Links** and open any link (or **Add New**). 2. Use the **Link Attributes** checkboxes to override globals for that redirect only. 3. Save. ### 3. Affiliate domain overrides 1. Open **Link Manager Pro → Affiliates**. 2. Edit a partner (or create one). 3. Set **Attributes** for that domain—common choice: **nofollow** + **sponsored** + **noopener** for paid partners. 4. Save. Auto-linked keywords and matching redirects inherit those values. ## Best practices - **Affiliate / paid links:** Enable **nofollow** and **sponsored**; add **noopener** when links open in a new tab. - **Editorial external links you trust:** Leave follow behavior (no `nofollow`) if you intentionally vouch for the target. - **User-submitted links:** Use **nofollow** in Link Manager Pro for managed hops; add **`ugc`** in the HTML layer when the link truly is user-generated. - **New tabs:** Always pair **noopener** (and usually **noreferrer** if you want stricter privacy) on `target="_blank"` flows. ### How overrides stack **Global defaults** apply first when you create a new managed link or when auto-linking inserts HTML. A **per-link** edit wins over globals for that redirect’s outbound `rel` string. An **affiliate** profile applies when the destination domain matches the partner—handy when every Amazon hop should look identical without you touching each slug. When rules conflict in your head, edit the specific link and read the resulting `rel` in the preview or front-end source. ### When you still touch the block editor Some native blocks strip custom `rel` values. If a block ignores your policy, switch to a custom HTML block for that paragraph or manage the hop through Link Manager Pro’s masked URL so the plugin injects attributes during render. The goal is one consistent policy: paid links disclose and do not pass equity; trusted editorial links stay clean. ## Related - [Settings](https://docs.linkmanagerpro.com/user-guide/settings) - [Creating links](https://docs.linkmanagerpro.com/user-guide/creating-links) - [Managing affiliates](https://docs.linkmanagerpro.com/user-guide/affiliates) --- # How to Create Redirect Links in WordPress You create redirect links in WordPress with **Link Manager Pro** by mapping a **custom slug on your domain** to a **destination URL**. Open **Link Manager Pro → Links → Add New**, paste the destination, set the slug (for example **`go/sale`**), pick **301**, **302**, or **307**, and save. Visitors who hit **`yoursite.com/go/sale`** land on something like **`https://shop.example.com/spring-sale?ref=you`**. You can add a password, limit active dates, forward query strings, and branch traffic with conditional rules. **301** marks a permanent move and passes link equity; **302** suits temporary promos; **307** matches **302** but keeps **POST** as **POST** for forms and APIs. ## The problem Raw long URLs look ugly in email and social posts, and you cannot change the destination later without editing every placement. Plain WordPress does not give you a single place to manage slugs, HTTP status codes, schedules, and routing logic for outbound hops. ## The solution Link Manager Pro treats each managed link as a **redirect**: your branded path on your site forwards to the real target. You control the HTTP semantics, timing, and optional gates from the admin UI. ### Redirect types you choose - **301 Permanent** — Search engines treat the short URL as the canonical hop to the destination long-term. Use this for stable affiliate or partner URLs you expect to keep. - **302 Temporary** — Signals a short-lived move; the original URL stays more prominent in search indexes. Use this for flash sales and seasonal pages. - **307 Temporary** — Like **302**, but intermediaries preserve the HTTP method. Use this when submissions or API clients must not turn **POST** into **GET**. ### Extra capabilities - **Password protection** — Visitors enter a password before the redirect runs. - **Scheduling** — You set **`active_from`** and **`expires_at`** so the slug only works inside that window. - **Parameter forwarding** — Query parameters on the masked URL carry through to the destination. - **Conditional routing** — You send clicks to different destinations by country, cumulative click count, or date range (see the conditional rules feature docs). *How a masked slug on your domain resolves to the final destination through Link Manager Pro.* ## Step-by-step: create a redirect link 1. Go to **Link Manager Pro → Links → Add New**. 2. Enter the **destination URL**. 3. Set the **slug** (for example **`go/sale`**). 4. Choose the **redirect type**: **301**, **302**, or **307**. 5. Optionally set a **password**, **schedule**, and **parameter forwarding**, and configure **conditional routing** if you need split destinations. 6. **Save**. ## When to use which type Pick **301** for permanent affiliate or evergreen partner links where you want equity to consolidate on the destination. Pick **302** for temporary promotions you plan to retire or swap. Pick **307** when method preservation matters—think checkout callbacks, form posts, or API clients that must not downgrade to **GET**. ## Password, schedule, and parameters in practice **Password protection** helps when you share a hop in a private community or a paid cohort: only people who know the passphrase reach the merchant page. **Scheduling** fits coupon windows and launch sequences—you set **`active_from`** when the deal goes live and **`expires_at`** when the slug should stop resolving, which beats editing posts at midnight. **Parameter forwarding** matters when you append tracking on the short URL (for example **`?src=ig`**) and you need those keys to survive on the final landing page for your partner’s reporting. Pair forwarding with **UTM templates** when you also run campaign analytics. ## Conditional routing at a glance When a single slug should send US clicks to one merchant path and EU clicks to another, you lean on **conditional routing** instead of maintaining two public URLs. You still measure totals on the short link, but each segment lands on the right regional offer. The same idea applies when you cap a bonus URL after N clicks or switch destinations mid-campaign—configure those splits in the conditional rules UI and retest with a private browser session before you broadcast the link. ## Verify before you ship After you save, open the short URL in an incognito window and confirm the status code, final address bar, and any forwarded query keys. If you use a cache plugin or CDN, purge caches so visitors do not see stale destinations. When you change a live **301** target, expect search engines to relearn the mapping over time; document the old destination if partners audit historical hops. *The link editor ties your public slug to the outbound URL and HTTP status.* ## Related - [Link masking](https://docs.linkmanagerpro.com/features/link-masking) - [Conditional rules](https://docs.linkmanagerpro.com/features/conditional-rules) - [Creating links](https://docs.linkmanagerpro.com/user-guide/creating-links) --- # How to Add UTM Parameters to WordPress Links You add UTM parameters to WordPress links by tagging destination URLs so **Google Analytics** attributes traffic to source, medium, and campaign. **Link Manager Pro** gives **reusable UTM templates**—preset **`utm_source`**, **`utm_medium`**, **`utm_campaign`**, **`utm_term`**, and **`utm_content`**—that you select when you create or edit a link; the plugin appends those values to the final URL. You can still type per-link overrides for one-off tests. Links sharing the same **`utm_campaign`** roll up in **Link Manager Pro → Campaigns** for aggregate performance next to click analytics. ## The problem Hand-building UTMs for every button and bio invites typos, inconsistent naming, and reports you cannot trust. Spreadsheets help, but they sit outside WordPress and drift from what you actually publish. ## The solution Link Manager Pro stores **UTM templates** in settings, applies them at link creation time, and keeps naming consistent across your site. Campaign reporting groups links by shared **`utm_campaign`** values. ### The five standard UTM parameters - **`utm_source`** — Identifies the sender (newsletter, twitter, partner-name). - **`utm_medium`** — Describes the channel (email, social, cpc). - **`utm_campaign`** — Names the initiative (spring-2026-launch). - **`utm_term`** — Captures paid-search keywords or finer splits when you need them. - **`utm_content`** — Differentiates creatives or placements (hero-button vs footer). ### Templates vs manual values Templates hold your default combinations. When you pick a template on a link, Link Manager Pro **merges** those values onto the destination. You can still adjust fields for one-off tests without rebuilding the template. *Reusable templates keep every outbound hop aligned with your analytics taxonomy.* ## Step-by-step 1. Open **Link Manager Pro → Settings** (or the **UTM** section, depending on your menu layout). 2. **Create a UTM template**—for example name it **Spring Newsletter** with **`utm_source=newsletter`**, **`utm_medium=email`**, **`utm_campaign=spring-2026`**. 3. When you **create or edit a link**, select the template; the fields **auto-fill**. 4. Or **enter UTM values manually** on that link if you skip templates for a special case. 5. Review performance under **Link Manager Pro → Campaigns** and cross-check broader behavior in **Analytics**. *Applying a template at edit time avoids retyping the same five parameters.* ## Best practices - **Stay consistent** — Pick a naming scheme and stick to it quarter over quarter. - **Use lowercase** — Mixed case splits rows in reports. - **Avoid spaces** — Use hyphens (`spring-2026`) so URLs stay clean and encodings stay rare. - **Align with Campaigns** — Shared **`utm_campaign`** strings power grouped dashboards inside Link Manager Pro. ## How this fits your publishing workflow You treat UTMs as **data contracts**: marketing agrees on **`utm_source`** and **`utm_medium`** values, editorial applies templates at publish time, and nobody hand-edits twenty query strings in the block editor. When a newsletter issue reuses last month’s template, you clone the template row, bump the campaign slug, and every new link inherits the change the moment you select it. If a partner gives you a long URL that already includes their tracking, Link Manager Pro still appends your UTMs—just confirm the final assembled URL in the preview so you do not duplicate conflicting keys. ## Reading results with confidence Inside **Link Manager Pro → Campaigns**, you watch how **`utm_campaign`** buckets perform before you dive into **Google Analytics**. When numbers disagree, you almost always find a naming drift (`Spring` vs `spring`) or a missing template on one link. Fix the template, republish or re-save the affected link, and your next traffic slice aligns. For paid social or email tools that also add their own tags, document who owns which parameter so you do not strip vendor IDs by mistake. ## Common mistakes to avoid - Starting campaigns with spaces or mixed case, which fractures rows. - Reusing the same **`utm_campaign`** for unrelated launches, which hides true winners. - Forgetting to select a template on rushed posts—add “UTM template” to your editorial checklist next to featured image and excerpt. ## Related - [UTM parameters](https://docs.linkmanagerpro.com/features/utm-parameters) - [Campaigns](https://docs.linkmanagerpro.com/features/campaigns) - [Analytics](https://docs.linkmanagerpro.com/user-guide/analytics) --- # How to Manage Affiliate Links in WordPress You manage affiliate links in WordPress from **Link Manager Pro → Affiliates** and **Links** in one dashboard. You register each partner with a **name**, **website URL**, and **domain**; the domain drives **auto-linking** when that merchant appears in post content. You set **default `rel` attributes** (for example **nofollow** and **sponsored**) per partner, organize links with **categories** and **tags**, and review **per-affiliate click analytics** in **Analytics**. You enable **disclosure** so posts that contain affiliate or sponsored links can show an FTC-style notice automatically. You filter and bulk-manage links by partner when your catalog grows. ## The problem Affiliate programs scatter tracking IDs across posts, make attribute discipline hard, and hide which partner actually earns clicks. Without a system, you chase broken hops manually and you risk inconsistent **`rel`** values. ## The solution Link Manager Pro centralizes partners, inherits their defaults on new links, auto-wraps raw merchant URLs where you allow it, and surfaces performance per affiliate. ### Affiliates: what you store - **Partner profile** — Name, public site URL, and the **domain** Link Manager Pro matches for auto-linking. - **Default link attributes** — Typical affiliate policy: **nofollow**, **sponsored**, sometimes **noopener** for new-tab flows. - **Auto-linking** — When enabled, occurrences of the partner domain in content convert to masked links that carry the right attributes. ### Organization and compliance - **Categories and tags** — You group links the same way you organize other content types. - **Analytics** — You compare partners side by side instead of exporting spreadsheets. - **Disclosure** — You automate a clear notice on posts that include affiliate or sponsored hops (configure text and placement in **Settings**). *The Affiliates screen keeps every partner domain and default policy in one place.* ## Step-by-step 1. Go to **Link Manager Pro → Affiliates → Add New**. 2. Enter **partner name**, **website URL**, and **domain**. 3. Set **default link attributes** for this affiliate (for example **nofollow** + **sponsored**). 4. **Enable auto-linking** if you want the plugin to rewrite matching merchant URLs in content. 5. **Create links** tied to this affiliate—they **inherit** the partner defaults until you override them. 6. Open **Analytics** to review **per-affiliate** click trends and spot weak performers early. *Domain-level defaults flow into every new managed hop unless you change them on the link.* ### Bulk management Use list filters by affiliate when you rotate a seasonal coupon, pause a program, or audit attributes before a compliance review. You update the partner profile once, then edit only the exceptions. ## Auto-linking: what you gain **Auto-linking** watches post content for the partner **domain** you registered. When a raw merchant URL appears, Link Manager Pro rewrites it to your masked slug and injects the **`rel`** string you chose for that partner. You spend less time swapping URLs inside old posts when a network changes tracking formats—you update the managed link record and the front end follows. You still control where auto-linking runs: disable it on landing pages that must show bare URLs, or pair it with disclosure so monetized posts stay compliant. ## Analytics and housekeeping **Per-affiliate analytics** answer which partners earn clicks—not just which single link you pinned in a hero. Export or screenshot baselines before you negotiate rates, then compare after you refresh creatives or disclosure placement. **Categories and tags** help editors find “summer tools” or “hosting stack” bundles without memorizing slugs. When a program ends, filter by affiliate, bulk-update destinations or pause links, and run a quick front-end spot check so no orphaned mentions still point at expired offers. ## Disclosure and attributes together Set **nofollow** and **sponsored** defaults on the affiliate profile so auto-linked HTML matches your SEO policy. Turn on **disclosure** in **Settings** when you want an FTC-style banner on posts that actually include affiliate hops—read the dedicated disclosure guide for wording and placement tips. The combination—correct **`rel`**, masked URLs, and visible disclosure—keeps reader trust and search quality signals aligned. ## Related - [Affiliates](https://docs.linkmanagerpro.com/user-guide/affiliates) - [Auto-linking](https://docs.linkmanagerpro.com/features/auto-linking) - [Disclosure](https://docs.linkmanagerpro.com/features/disclosure) --- # How to Add FTC Affiliate Disclosure in WordPress You add FTC affiliate disclosure in WordPress by enabling Link Manager Pro under **Settings → Disclosure**: write **custom text**, set **before** or **after** content, adjust **styles**, and pick **post types** (posts, pages, or custom types). The plugin **finds posts that contain affiliate or sponsored links** and shows the notice only there—pages without monetized hops stay clean. You keep full control of wording; Link Manager Pro handles placement and targeting so you skip pasting boilerplate into every post. Confirm output with your counsel and your theme. ## The problem The **FTC** expects readers to see a clear disclosure when you earn commissions from links in your content. Missing notices create compliance risk; boilerplate pasted everywhere clutters non-monetized pages and is easy to forget when you add a new link. ## The solution Link Manager Pro ties disclosure to **actual affiliate or sponsored links** in the rendered post. You configure the message once, control position and styling, and scope post types so landing pages and legal docs stay untouched unless you include tracked links. ### What you configure - **Custom disclosure text** — You write honest, plain-language copy (for example: *This post contains affiliate links. I may earn a commission if you make a purchase through these links at no extra cost to you.*). - **Position** — **Before content** maximizes visibility; **after content** suits minimal hero layouts—pick what fits your theme. - **Style options** — Adjust presentation so the notice matches your design system without hiding it. - **Post-type targeting** — Enable disclosures only on content types that carry affiliate material. The notice **does not** blanket your whole site; it appears when the post **includes** affiliate or sponsored links Link Manager Pro recognizes. *Settings let you target post types and choose where the notice renders relative to the body.* ## Step-by-step 1. Open **Link Manager Pro → Settings → Disclosure**. 2. **Enable** the disclosure feature. 3. **Write your disclosure text** in your own voice while staying truthful about compensation. 4. Choose **position**: **before** or **after** content. 5. **Select post types** that should participate (typically **Posts**; add **Pages** if you monetize them). 6. **Save**. Visit a post with an affiliate link and confirm the notice renders as expected across desktop and mobile breakpoints. *A live post shows the automated notice only when monetized links are present.* ## Best practices - **Prefer before content** when you need maximum visibility; readers see the notice before they scroll into recommendations. - **Keep language clear** — State the relationship simply; avoid burying the lede in legalese unless your counsel requires specific phrasing. - **Test with your theme** — Switch preview modes, check dark mode, and confirm the notice does not collide with sticky headers or ad slots. ## How detection interacts with your content Link Manager Pro evaluates posts for **affiliate or sponsored links** you manage through the plugin—masked links, auto-linked partner domains, and similar tracked hops count; a random external URL you typed without running it through Link Manager Pro may not trigger the same logic. That is why you standardize monetized placements through the **Links** and **Affiliates** screens: the disclosure engine sees a consistent signal and you avoid “sometimes on, sometimes off” behavior. When you add a new partner, register the domain, enable **auto-linking** if you want raw merchant URLs converted, and publish a test post to confirm the notice appears exactly once. ## Styling without hiding the notice Use the built-in **style options** to match typography and spacing, but resist shrinking text to illegible sizes or tucking it inside low-contrast footers. Regulators and readers both care about **clear and conspicuous** presentation. If your theme injects aggressive ad slots above the body, try **before content** placement plus a subtle border or background so the disclosure still reads as part of the article, not as an ad itself. Document the final look in your brand guidelines so guest authors do not “helpfully” duplicate disclosure manually. ## Editorial QA checklist Before you launch a monetized series, open three posts: one with affiliate links, one without, and one custom post type you enabled. Confirm the notice fires only on the monetized example, verify mobile wrapping, and capture a screenshot for your compliance binder. Re-run the check after major theme updates because header markup and content hooks sometimes shift. ## Related - [Disclosure](https://docs.linkmanagerpro.com/features/disclosure) - [Affiliates](https://docs.linkmanagerpro.com/user-guide/affiliates) - [Nofollow links](https://docs.linkmanagerpro.com/guides/nofollow-links) --- # Glossary > **TL;DR:** A reference of link management, affiliate marketing, and SEO terms you encounter when working with WordPress links. Each definition explains the term and how it applies to Link Manager Pro. ### 301 Redirect You send a 301 when you permanently move a URL. Search engines transfer link equity from the old URL to the new destination. You rely on 301 redirects for affiliate destinations and permanent URL changes, including those you manage in Link Manager Pro. ### 302 Redirect You send a 302 when you temporarily route traffic elsewhere. Search engines keep the original URL in their index. You choose 302 redirects for short-term promotions or A/B tests. ### 307 Redirect You send a 307 when you need a temporary redirect that preserves the HTTP method. If the original request was POST, the follow-up request stays POST. You use 307 redirects for form submissions and API endpoints. ### 404 Error A 404 response means the server has no resource at that URL. Link Manager Pro health monitoring logs 404 errors from real visitor traffic on your site so you spot broken destinations early. ### Affiliate Link An affiliate URL carries tracking parameters that identify you as the referrer. When someone clicks your link and completes a qualifying action (often a purchase), you earn a commission. ### Auto-Linking Auto-linking replaces specific keywords in your content with links automatically. In Link Manager Pro, you define keyword-to-link mappings with priority, case sensitivity, and per-page limits. ### Bot Detection You identify non-human traffic—search crawlers, scrapers, spam bots—and exclude it from click analytics. Link Manager Pro includes 40+ built-in bot patterns and supports custom patterns you add yourself. ### Click Tracking Click tracking records data for each link click: timestamp, visitor location, device, browser, referrer, and whether the hit counts as unique. Link Manager Pro tracks clicks on masked links automatically. ### Coverage Score Your coverage score runs from 0 to 100 (graded A through F) and reflects internal linking health across the site. Posts with zero inbound links reduce the score more than posts that already have a few internal links. ### FTC Disclosure You display an FTC disclosure when you earn money from links in content subject to US Federal Trade Commission rules. Link Manager Pro auto-inserts disclosure text on posts that contain affiliate links. ### GeoLite2 GeoLite2 is MaxMind’s free IP geolocation database. Link Manager Pro uses it to resolve visitor country from IP addresses for click tracking reports. ### Internal Link An internal link points to another page on the same website. You help visitors navigate and you help search engines understand site structure when you build strong internal links. ### IP Anonymization You remove or truncate the last segment of a visitor’s IP address before you store it. You protect privacy and align with GDPR-style expectations while you still retain coarse location signals. ### Link Audit A link audit analyzes how your site’s pages connect to one another. Link Manager Pro classifies posts as orphaned (zero inbound links), weak (below your threshold), or healthy, and it generates your coverage score. ### Link Cloaking You use “link cloaking” as a synonym for link masking. See [Link Masking](#link-masking). ### Link Equity (Link Juice) Link equity is the SEO value one page passes to another through hyperlinks. You pass equity with 301 redirects and normal followed links; you block it with `rel="nofollow"`. ### Link Masking Link masking replaces a long destination URL with a short, branded path on your own domain, so visitors see something like `yoursite.com/go/product` instead of the raw affiliate URL. Link Manager Pro handles the redirect server-side. ### Nofollow You add `rel="nofollow"` to tell search engines not to pass link equity to the destination. You use it on affiliate links, paid links, and content you do not fully trust. ### Noopener You add `rel="noopener"` so the opened page cannot access your page through `window.opener`. You treat this as a security best practice for links that open in new tabs. ### Noreferrer You add `rel="noreferrer"` so the browser does not send a Referer header to the destination. The linked site’s analytics then cannot see which page on your site originated the click. ### Orphaned Post An orphaned post has zero inbound internal links from other pages on your site. Visitors and search engines struggle to discover it. Link Manager Pro’s link audit surfaces orphaned posts. ### Parameter Forwarding Parameter forwarding passes query parameters from the masked URL through to the destination. If someone clicks `yoursite.com/go/product?color=red`, you append `?color=red` to the final destination URL. ### QR Code A QR code encodes a URL so cameras and scanners open it instantly. Link Manager Pro generates QR codes from masked links for print, packaging, and offline campaigns. ### Redirect A redirect sends a visitor from one URL to another without manual steps. Link Manager Pro supports 301, 302, and 307 redirects for masked links. ### Slug The slug is the customizable segment in the path after your configured prefix. In `yoursite.com/go/product`, you set `go` as the prefix and `product` as the slug in Link Manager Pro. ### Sponsored You add `rel="sponsored"` to flag paid or affiliate links for search engines. Google recommends `rel="sponsored"` instead of or alongside `rel="nofollow"` for affiliate links. ### UGC You add `rel="ugc"` to mark links inside user-generated content, such as comments or forum posts. You signal that you did not editorially place the link. ### Unique Visitor You count a unique visitor when a first-party cookie distinguishes someone from repeat clicks in your reporting window. Link Manager Pro sets a `link_manager_pro_id` cookie (UUID v4, one-year TTL) for that purpose. ### UTM Parameters You append five standard parameters—`utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, and `utm_content`—so Google Analytics attributes traffic to specific marketing campaigns. ## Related - [Link Masking](https://docs.linkmanagerpro.com/features/link-masking) — How URL masking works in Link Manager Pro - [Click Tracking](https://docs.linkmanagerpro.com/features/click-tracking) — What data is collected per click - [Link Audit](https://docs.linkmanagerpro.com/features/link-audit) — How the coverage score is calculated - [FAQ](https://docs.linkmanagerpro.com/faq) — Answers to common questions --- # Changelog All notable changes to Link Manager Pro are documented on this page. --- ## 1.0.0 — April 2026 Initial release. ### New Features - **Link masking** — Create clean redirect URLs with configurable prefixes for external and internal links. Use auto-generated slugs or set custom slugs per link. - **Click tracking** — Record clicks with IP anonymization, country detection, device/OS parsing, cookie-based uniqueness tracking, bot filtering, and configurable data retention. - **Affiliate management** — Manage affiliate partners with domain-based matching, auto-linking, and UTM parameter support. - **Auto-linking** — Automatically replace keywords in post content with masked link URLs. Works for both affiliate links and individual links. - **Link health monitoring** — Detect 404 errors and broken links through content scanning and scheduled health checks. - **Link audit** — Score your site's internal linking coverage with A–F grading and weekly snapshots. - **Campaign management** — Track marketing campaigns with stored and virtual campaigns, including UTM breakdown reporting. - **Conditional routing rules** — Redirect visitors based on click count, country, or date conditions. - **Categories and tags** — Organize links with WordPress taxonomy-based classification. - **Site scanning** — Scan your entire site and bulk-mask external links in one operation. - **Backup and restore** — Export data as JSON, restore from JSON backups, and download links as CSV. - **Data migration** — Import links, clicks, and settings from Pretty Links and BetterLinks with auto-detection, selectable items, and conflict strategies. - **Email digest** — Receive weekly or monthly health reports by email. - **Affiliate disclosure** — Automatically inject disclosure notices on pages containing affiliate links. - **Internal click tracking** — Track clicks on internal links within your post content via JavaScript. - **UTM templates** — Create reusable UTM parameter templates for consistent campaign tagging. - **Password-protected links** — Require a password before redirecting visitors. - **Link scheduling** — Set start and expiration dates to control when links are accessible. - **Redirect management** — Capture broken link traffic and redirect it to working destinations. ### Requirements - PHP 8.0 or higher. - WordPress 6.0 or higher. --- # Frequently Asked Questions ## General ### What is Link Manager Pro? Link Manager Pro is a WordPress plugin that centralizes link masking, click tracking, affiliate management, link health monitoring, and internal link auditing in one dashboard. You create branded redirect URLs on your own domain, track every click with country and device data, and detect broken links automatically. It runs entirely on your WordPress server with no external service dependencies. ### Do I need technical skills? No. You create links, manage affiliates, and view analytics through the WordPress admin dashboard. If you can install a plugin and navigate WordPress menus, you can use every feature. No coding, command line, or server configuration is required. ### Will it slow down my site? No. Redirects resolve in milliseconds with a single database lookup. Health scans, link audits, and data cleanup run as background cron jobs that never block page loads. The auto-linking feature uses a tiered cache to avoid repeated content processing. ### Is link masking legal? Yes. Link masking is legal, but you must follow FTC disclosure guidelines when using affiliate or sponsored links. Link Manager Pro includes a built-in disclosure feature to help with this. ## Installation ### How do I install? See the [Getting Started](https://docs.linkmanagerpro.com/getting-started/installation) guide for step-by-step instructions. ### What are the requirements? - WordPress 6.0 or higher - PHP 8.0 or higher - Administrator access ### Will it work with my theme? Yes. Link Manager Pro works with all standard WordPress themes. ## Links ### How do I create a link? Go to **Pretty Links → New Pretty Link**, fill in the required fields, and click **Register Link**. See the full walkthrough at [Creating Links](https://docs.linkmanagerpro.com/user-guide/creating-links). ### Can I edit a link later? Yes. In the Pretty Links list, click the **Edit** icon on any link, make your changes, and click **Update Link**. ### What happens if I delete a link? The link returns a 404 error. If you want to stop using a link without breaking it, create a redirect to another URL instead of deleting it. ### Can I password-protect a link? Yes. Set a password in the link editor. Visitors must enter the password before the redirect completes. ### Can I schedule a link? Yes. Set **Active From** and/or **Expires At** dates in the link editor. A scheduled link shows a 404 before its active date. An expired link also returns 404. ### What are conditional routing rules? Per-link rules that redirect visitors to alternate URLs based on conditions: total click count, visitor country, or date ranges. Rules evaluate in priority order — the first match wins. ### Can I import links? Yes. Go to **Settings → Backup & Restore → Restore** and upload a JSON backup file. ## Tracking & Analytics ### Are clicks tracked automatically? Yes, when **Click Tracking** is enabled in **Settings → Tracking**. ### What data is tracked? Each click records a timestamp, anonymized IP address, resolved country (via GeoLite2 database or CDN headers), device type, operating system, browser, referrer URL, and a unique visitor flag. Unique visitors are identified by a first-party cookie with a UUID v4 value and a one-year TTL. You control IP anonymization and data retention period in Settings. ### How long is click data kept? You set the retention period in Settings > Data. Link Manager Pro automatically purges click records older than your configured number of days via a daily WordPress cron job. You can also trigger a manual purge at any time. There is no hard-coded maximum — you choose the retention window that fits your needs. ### What is the coverage score? The coverage score is a number from 0 to 100 (graded A through F) that measures your site's internal linking health. It scans every post and classifies it as orphaned (zero inbound internal links), weak (below your configured threshold), or healthy. Penalties are weighted: orphaned posts reduce the score more than weak posts. Weekly snapshots track your progress over time. ### How does the email digest work? An automated email report sent weekly or monthly. It includes your coverage score, broken link counts, and top-performing links. Configure the frequency in settings. Every digest includes an unsubscribe link. ## Affiliate ### How do I add an affiliate partner? Go to **Affiliates → New Partner**. Enter the site name and affiliate URL (the domain is auto-extracted), then configure attributes and auto-linking keywords. ### What is auto-linking? Auto-linking automatically replaces keywords in your content with affiliate or pretty links. It works for both affiliates and individual links. Configure it in **Settings → Auto-Linking**. ### What is the disclosure feature? An automatic FTC-compliant affiliate disclosure notice inserted on pages that contain sponsored or affiliate links. You configure the text, position, and style in **Settings → Disclosure**. ## Migration ### Can I migrate from Pretty Links? Yes. The plugin auto-detects Pretty Links and offers a guided migration with selectable items and conflict handling (skip or overwrite). ### Can I migrate from BetterLinks? Yes. The same guided migration workflow applies to BetterLinks. ## Categories & Tags ### How do categories and tags work? You organize links with custom categories (with color labels) and tags. Filter links by category or tag in the Pretty Links list. ## UTM & Campaigns ### What are UTM templates? Reusable sets of UTM parameters (source, medium, campaign, term, content). Create a template once and apply it to links instead of typing values manually each time. ### How do campaigns work? Campaigns aggregate links that share the same `utm_campaign` value. The plugin auto-detects campaigns from your link UTM data. You can also create managed campaigns with descriptions and default UTM values. ## Troubleshooting ### Links not working? 1. Flush permalinks: **Settings → Permalinks → Save Changes** 2. Check **Active From** / **Expires At** dates on the link 3. Clear all caches (browser, WordPress, CDN) See the full [Troubleshooting](https://docs.linkmanagerpro.com/troubleshooting) guide. ### Clicks not tracking? 1. Verify **Click Tracking** is enabled in **Settings → Tracking** 2. Check the **Blocked IP Addresses** list 3. Check **Bot Detection** is not filtering legitimate traffic See the full [Troubleshooting](https://docs.linkmanagerpro.com/troubleshooting) guide. ### Need more help? Visit [https://linkmanagerpro.com/support](https://linkmanagerpro.com/support?utm_source=docs&utm_medium=referral&utm_campaign=faq) or email support. --- # Troubleshooting > **TL;DR:** Common issues include links not redirecting (check permalink settings and flush rewrite rules), clicks not tracking (check caching plugins and bot filters), and health scans not running (verify WordPress cron is active). Most problems resolve by flushing permalinks or clearing your cache. Quick solutions to common problems with Link Manager Pro. ## Quick Fixes Try these first — they resolve most issues: 1. **Clear all caches** — browser, WordPress, and server/CDN 2. **Flush permalinks** — go to **Settings → Permalinks → Save Changes** 3. **Deactivate other plugins** — reactivate one at a time to find conflicts 4. **Update WordPress and the plugin** — make sure you run the latest versions ## Links Not Working ### Link shows 404 - Check the link exists in **Pretty Links** - Check the **Active From** date — the link may be scheduled for the future - Check the **Expires At** date — the link may have expired - Flush permalinks: **WordPress Dashboard → Settings → Permalinks → Save Changes** - Check the link prefix has not changed (**Settings → General → Link Structure Prefix**) - Clear all caches ### Link redirects to wrong URL - Edit the link and verify the **Destination URL** - Check **conditional routing rules** — a rule may be redirecting to an alternate URL - Check for conflicts with other redirect plugins - Clear all caches including CDN ### Password-protected link not working - Verify **Password Protection** is set in the link editor - Try in an incognito/private browser window - Check that cookies are enabled — password auth uses a cookie ## Tracking Issues ### Clicks not recording - Verify **Click Tracking** is enabled in **Settings → Tracking** - Check if your IP is in the **Blocked IP Addresses** list - Check if **Bot Detection** is filtering your user agent - Wait a few minutes — clicks are logged after the redirect completes, so there is a slight delay - Check the **Click Data Retention** setting — old data may have been purged ### Click count seems too high - Likely bot traffic — enable **Bot Detection** in **Settings → Tracking** - Add suspicious user agent patterns to **Custom Patterns** under Bot Detection - Add suspicious IPs to **Blocked IP Addresses** - Review analytics for patterns (regular intervals, same country) ### Internal clicks not tracking - Verify **Internal Link Click Tracking** is enabled in **Settings → Tracking** - Check the **Content Selector** setting matches your theme's content area - Verify the page is not an admin, AJAX, or REST context - Check the browser console for JavaScript errors - The tracker requires same-origin: the source page must be on the same domain - Rate limit: 30 requests per minute per IP ## Auto-Linking Issues ### Auto-links not appearing - Verify **Auto-Linking** is enabled in **Settings → Auto-Linking** - Check the specific link or affiliate has **Enable Auto-Linking** turned on - Verify keywords are set and spelled correctly - Check the post type is included in the **Auto-Linking Post Types** setting - Check **Max Per Page** limit is not set too low - Auto-linking skips admin, AJAX, cron, and REST contexts - Cache may be stale — auto-link cache refreshes every 3600 seconds ### Too many auto-links or wrong keywords matched - Reduce **Max Per Keyword** and **Max Per Page** in settings - Enable **Case Sensitive Matching** - Use longer, more specific keyword phrases - Adjust **Auto-Link Priority** (lower number = higher priority) - Enable **Exclude Headings** to skip h1–h6 tags - Maximum 200 keywords supported — excess keywords are dropped by priority ## Health Monitoring Issues ### False positives in health scan - Some servers block automated HEAD requests (the scan uses a 3-second timeout) - Geographic blocking may cause false results - Temporary server issues resolve on the next scan - Test the URL manually in your browser - Mark the link as **Ignored** if it works correctly ### Health scan not running - Check cron is working — install the WP Crontrol plugin to verify - Check **Automated Link Health Scans** in **Settings → General** is set to daily or weekly - The scan processes 5 posts per cron run — large sites need multiple runs - Check the server is not blocking `wp-cron.php` ## Disclosure Issues ### Disclosure notice not appearing - Verify disclosure is enabled in **Settings → Disclosure** - Check the post type is in the **Disclosure Post Types** list - The notice only appears on pages that contain masked links or links with `nofollow` or `sponsored` REL attributes - Check **Disclosure Text** is not empty - Check the page source for the disclosure HTML — it may be hidden by theme CSS ## Coverage Score Issues ### Coverage score is low - Check for orphaned posts (no inbound internal links) — these carry the heaviest penalty - Check for broken links — each broken link has a high penalty weight - Check for weak posts (few inbound or outbound links) - Run a full link audit scan from **Link Audit** - Add internal links to orphaned posts using the link suggestion feature ## Campaign Issues ### Campaign not showing in list - Campaigns appear when links have `utm_campaign` values set - Virtual campaigns auto-detect from link UTM data - Managed campaigns appear in the list immediately after creation - Check the spelling of the `utm_campaign` value matches across links ## Conditional Rules Issues ### Rule not triggering - Check the rule's active toggle is enabled - Check the **Start** / **End** date range includes the current date - Check condition values: country codes must be 2-letter ISO codes, dates must be valid - Check **Match Mode**: "All conditions" requires every condition to match, "Any condition" requires at least one - Check **Priority**: lower number = evaluated first, first matching rule wins - Check the rule's **Target URL** is valid ## Import/Export Issues ### Import fails - Import expects **JSON** format (not CSV) - Ensure the file was exported from Link Manager Pro's backup feature - Check file encoding is UTF-8 - For large files, the import processes in batches — wait for completion - Check PHP `memory_limit` and `upload_max_filesize` ### Export has no data - Verify you selected items to include in the export - Check you have administrator access - Check the plugin's backup directory is writable ## Migration Issues ### Migration from Pretty Links or BetterLinks fails - Verify the source plugin is still installed (its database tables must exist) - Check the conflict strategy: **skip** skips existing slugs, **overwrite** replaces them - Migration processes in batches — wait for all batches to complete - Check PHP `memory_limit` for large datasets ## Common Error Messages | Error | Solution | |-------|----------| | Link already exists | Choose a different slug | | Invalid destination URL | URL must start with `http://` or `https://` | | Permission denied | Log in as Administrator or a role with `manage_link_manager_pro` capability | | Domain already in use | Each affiliate must have a unique domain | | Rate limit exceeded | Internal click tracker allows max 30 requests/minute per IP | ## Database Reset If the plugin is in a broken state and you need to start fresh, you can reset all plugin tables by visiting: ``` yoursite.com/lmp/migrate/fresh ``` > **Warning:** This drops and recreates all plugin database tables. All links, clicks, affiliates, categories, rules, and settings are permanently deleted. This cannot be undone. To use the database reset: 1. Log in to your WordPress site as an Administrator. 2. Navigate to `yoursite.com/lmp/migrate/fresh` in your browser. 3. Read the confirmation warning. 4. Click **Run Fresh Migration** to proceed. 5. Wait for the success page to appear. During the reset, all plugin API calls return a temporary 503 error until the migration completes. Only one reset can run at a time. Non-administrators cannot access this page. Use this only as a last resort when the plugin is not functioning correctly and other troubleshooting steps have not resolved the issue. ## Still Need Help? 1. Check the [FAQ](https://docs.linkmanagerpro.com/faq) 2. Visit [https://linkmanagerpro.com/support](https://linkmanagerpro.com/support?utm_source=docs&utm_medium=referral&utm_campaign=troubleshooting) 3. When contacting support, include: - WordPress version - Plugin version (currently 1.1.0) - PHP version - Error messages or screenshots - Steps to reproduce the issue