Install
$ agentstack add skill-mardab96-linkedin-ads-claude-skills-conversion-tracking-audit-linkedin-ads ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Conversion Tracking Audit for LinkedIn Ads
Use this skill when
Every other decision in a LinkedIn account rests on whether the conversion data is real. This skill audits the measurement layer first across both the browser side (the Insight Tag) and the server side (the Conversions API and offline conversion import): is the tag firing, is a server-side feed sending backend and offline events like qualified leads and closed deals, are browser and server events deduplicated or double-counted, is view-through inflating the numbers, and do LinkedIn's reported leads survive contact with GA4 and the CRM.
Common user requests:
- "LinkedIn says 60 conversions, GA4 says 22. Which is right?"
- "Is my Insight Tag actually firing on the right pages?"
- "Are view-through conversions padding these results?"
- "We are about to triple spend. Can I trust this tracking first?"
- "Do we have the Conversions API set up, or are we only firing the pixel?"
- "Are our Insight Tag and CAPI events deduplicated, or counted twice?"
Do not use this skill when:
- The tracking is trusted and the question is whether cheap leads become pipeline. Route to
cpl-vs-crm-reconciliation-linkedin-ads. - The question is where budget leaks across placements and expansion. Route to
wasted-spend-finder-linkedin-ads. - The question is which seniorities or industries received delivery. Route to
demographics-leak-finder-linkedin-ads.
Required input
Ask only for what the requested scope needs. If something cannot be verified, say so and mark it unverified rather than assuming the setup is correct.
Minimum useful data:
- The list of conversion actions defined in Campaign Manager, each with its type (Insight Tag event, Lead Gen Form, Conversions API, or event-specific), attribution setting, and the campaigns using it.
- The attribution windows in use per conversion: post-click (1, 7, 30, or 90 day) and view-through (1 or 7 day).
- A LinkedIn export by campaign with cost, impressions, clicks, conversions, leads, cost per conversion, cost per lead, and conversion rate.
- Whether leads come from native Lead Gen Forms, a landing page, or both.
- Whether a server-side feed exists: the Conversions API (CAPI, direct or via a partner or tag-management server) and offline conversion import (CRM stages like qualified lead or closed-won uploaded back to LinkedIn), and which conversion actions each one feeds.
Helpful for reconciliation:
- GA4 conversion counts for the same window and source or medium (LinkedIn / paid social).
- CRM counts of records created from LinkedIn in the same window.
- Access to confirm the Insight Tag is present sitewide and that event conversions fire on the intended pages or actions.
- For any server-side source, the reported match rate and the dedup and matching setup: shared event IDs between the tag and CAPI, order or lead IDs on offline uploads, and which hashed fields are sent (email, name, LinkedIn first-party identifiers).
Confirm the exact date range and time zone for every source, because LinkedIn, GA4, and the CRM often bucket dates differently and that alone explains many mismatches.
Analysis workflow
- Inventory the setup. List every conversion action, its type, the pages or events it fires on, its attribution window, and which campaigns count it. Flag any conversion no campaign uses and any campaign optimizing to a conversion that barely fires.
- Verify the base tag and events. Confirm the Insight Tag base loads sitewide and that each event-specific conversion actually fires where it should, once. Note duplicate firing (the tag or event loaded twice on a page), missing firing (a key thank-you or purchase page uncovered), and events firing on the wrong action.
- Audit the server-side layer. Determine whether a Conversions API feed exists at all (direct, through a partner, or via a tag-management server) and whether offline conversion import is running (uploading CRM stages like qualified lead or closed-won back to LinkedIn). CAPI sends events server to server rather than only from the pixel, which is what lets backend and offline events, ones no browser ever fires, reach LinkedIn. For each server source, confirm it is actually receiving events (not just configured), which conversion actions it feeds, and whether campaigns optimize to those actions. A missing server-side layer means bidding never sees the qualified-lead and closed-deal signals that make pipeline optimization possible.
- Check dedup and match rate. Where the Insight Tag and CAPI both report the same conversion, confirm they share a dedup key (a common event ID, or an order or lead ID) so the same action is counted once, not doubled. Read the reported match rate for each server source: it depends on the hashed identifiers sent (email, name, and LinkedIn first-party data), and a low match rate quietly drops real conversions before bidding ever sees them. Flag missing dedup keys (inflation risk) and weak match rates (undercount risk) as distinct defects.
- Isolate view-through. Split reported conversions into post-click and view-through. Quantify how much of the headline number is view-through, and treat view-through as directional support, not proof, especially on awareness and video objectives where it inflates most.
- Separate Lead Gen Form events from website conversions. Native forms fire their own lead event with a high submit rate; landing-page conversions fire through the Insight Tag. Do not add them as if they measure the same thing, and note that form leads often carry lower intent than a landing-page conversion.
- Reconcile across sources. Line up LinkedIn, GA4, and CRM counts for the identical window and label each gap by its likely cause: attribution model difference (LinkedIn last-touch versus GA4), view-through inclusion, window length, time-zone bucketing, tag coverage gaps, browser-versus-server dedup errors, low CAPI match rate, or genuine data loss.
- Rank the defects by how much they distort spend decisions, not by how easy they are to fix.
- Recommend fixes in order: correct firing and duplication first, then set up or repair the server-side layer (CAPI dedup keys and offline import feeding qualified stages), then align attribution windows to the sales cycle, then decide how view-through and form leads are reported, then set an ongoing reconciliation cadence with the CRM.
Decision rules
Treat thresholds as starting heuristics that move with vertical, sales-cycle length, audience size, and account maturity.
Attribution windows: a long B2B sales cycle justifies a longer post-click window (30 or even 90 day) so real influence is captured, but the longer the window the more the numbers diverge from a short-window tool like GA4. Match the window to the buying cycle and report the choice openly.
View-through: when view-through makes up a large share of reported conversions (a rough flag is more than a quarter to a third), assume the headline cost per conversion is optimistic and re-check performance on post-click alone before making budget calls.
Duplication and coverage: a conversion firing twice halves the apparent cost per conversion and is a correctness bug, not a nuance. A missing tag on a key page silently understates results and starves optimization. Both are priority-one.
Server-side dedup and match rate: if the Insight Tag and CAPI both send the same conversion without a shared event ID or order or lead ID, treat the reported count as inflated until dedup is proven. A low match rate on CAPI or offline import is the opposite failure, real conversions silently dropped, so a server feed that reports far fewer matches than the CRM created is undercounting, not clean. Neither is healthy; name which direction the error runs.
Server-side coverage: browser-only tracking cannot feed backend or offline events (a lead sales later qualifies, a deal that closes weeks later), so an account that optimizes on pixel form fills alone is bidding blind to pipeline. When the goal is pipeline rather than form volume, a missing CAPI or offline import feed is a priority gap, not a nice-to-have, because bidding can only optimize toward signals it actually receives.
LinkedIn versus CRM: LinkedIn uses last-touch and will over-credit itself relative to a multi-touch CRM. A persistent gap in the same direction is expected; a gap that swings wildly period to period points to a firing, dedup, or windowing defect.
Do not declare tracking healthy from matching totals alone; totals can match by coincidence while the underlying events are wrong. Verify the firing, not just the sums.
Output format
Return an audit structured as:
Setup inventory
Every conversion action with type, firing location, attribution window, and the campaigns using it, plus anything unused or misconfigured. Note which actions are browser-side (Insight Tag), which are server-side (CAPI or offline import), their dedup keys and reported match rate, and whether a server-side feed is missing entirely.
Defects found
Ranked list. For each: what is wrong (duplicate, missing, wrong page, view-through inflation, mismatched window), the evidence, the impact on reported numbers, and the fix.
Reconciliation table
LinkedIn versus GA4 versus CRM for the same window, with each gap labeled by cause and whether it is expected or a defect.
Fix plan and monitoring
Ordered remediation steps, the attribution and view-through reporting decisions to lock in, and a recurring reconciliation cadence (for example, a monthly LinkedIn-to-CRM match) with the metrics to watch.
Practical example
A B2B SaaS account reports 74 conversions at a $41 cost per conversion across three campaigns over 30 days, which looks excellent. The audit finds three problems. First, the demo-request event fires on both the form page and the thank-you page, double-counting roughly 18 conversions. Second, 26 of the remaining conversions are view-through on a video-views campaign set to a 7-day view-through window, so they are exposure, not clicks. Third, GA4 shows 21 LinkedIn conversions and the CRM shows 17 created records for the same window.
A fourth problem is structural: the account fires the Insight Tag only, with no Conversions API and no offline conversion import, so every qualified lead and closed deal the CRM records is invisible to LinkedIn bidding, which optimizes purely toward front-end form fills.
Adjusted for the double fire and view-through, real post-click conversions land near 30, a cost per conversion closer to $100, and CRM-confirmed leads near half of that. Recommended actions: remove the duplicate event fire so it triggers once on the thank-you page, report the video campaign on post-click only, shorten the view-through window or exclude it from the primary KPI, stand up a monthly LinkedIn-to-CRM reconciliation so the true number is the one that drives budget, and add a server-side feed (CAPI for web events with a shared event ID for dedup, plus offline import of qualified and closed-won stages) so bidding can eventually optimize toward pipeline, not form volume. Only after these fixes should the account act on the wasted-spend or reallocation skills, because those depend on trustworthy conversions.
Guardrails
- Never call tracking healthy on matching totals alone; verify that each event fires correctly and once.
- Always separate post-click from view-through, and never report a blended number as if it were click-driven proof.
- Do not merge Lead Gen Form leads and website conversions into one figure without labeling the intent and source difference.
- Audit the server side, not just the pixel: confirm whether CAPI and offline conversion import exist, and never treat browser-only tracking as complete when the goal is pipeline, because backend and offline events cannot reach LinkedIn without a server-side feed.
- Where the Insight Tag and CAPI both send a conversion, require a shared dedup key (event ID, or order or lead ID) before trusting the count; without it, assume double-counting.
- Read the match rate on any server-side or offline source and flag a low one as dropped conversions; matching relies on hashed first-party data (email, name, LinkedIn identifiers), and client match uploads that mix work and personal emails match worse than they appear. Note that conversation and message ads, one place first-party matched audiences are used, are restricted in the EU, so do not assume those formats are available for every account.
- Expect LinkedIn last-touch to over-credit versus the CRM; investigate only unstable or reversing gaps as defects.
- If the setup cannot be verified directly, mark it unverified rather than assuming correctness, and recommend fixing measurement before optimizing spend.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: mardab96
- Source: mardab96/linkedin-ads-claude-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.