Marketing analytics: what we can see, what we can't

An inspection of every piece of traffic and marketing measurement we have today, what the LinkedIn boost actually did, and the options for seeing clearly before we spend more on ads.

2026-10-24 · propflowai.co, LinkedIn page, demo form · Proposed — pending review · owner: session 003

The answerDecisionsThe boostWhat we haveGapsLinkedIn → ClaudeThe dashboardSources

The answer

About 10 real outside visitors a day. The Oct 19 jump is the LinkedIn boost plus ad-network scanners; engagement did not move; the site has never recorded a demo request. Half of Vercel's "visitors" are us and bots.

Sessions per day on propflowai.co, by who they really are (our first-party recorder, Oct 10–24) 0100200300 101112131415161718192021222324* LinkedIn boost starts real outside visitors of which ad-network / offshore (likely low intent) our team bots and scanners

Decisions for Fede

#DecisionRecommendation
1Create the LinkedIn developer app and request both API products (10 minutes; steps in "Connecting LinkedIn" below).yes, today
2Audience Network off; future ads via Campaign Manager, not "Boost".yes
3Small site fixes: source fields on demo requests, "how did you hear about us", wire the contact form, three funnel events, per-channel landing paths, full sitemap.yes
4Vercel Web Analytics Plus, $10 / month (campaign tags, 24 months of history).yes
5Build marketing.propflowai.co (three goals, nightly pulls), after #1 and #3.yes
6$19 / month connector as a bridge if LinkedIn approval drags.hold
7Turn on Google Analytics 4.hold
8Give engineering access to Google Search Console.yes

What the LinkedIn boost did

What the Vercel dashboard says

1,040 visitors in 30 days. 435 last week. A spike to 111 a day from Oct 19.

What is actually true

About 10 real outside people a day before the boost; 40 to 120 a day during it, of which a third to a half is ad-network plumbing. Our own team is 15 to 40 sessions a day. Bots are 50 to 230 a day. Engaged outside visits stayed at 0 to 7 a day throughout.

Source: the site's own first-party traffic recorder (DynamoDB table propflow-traffic, which already labels each session as anonymous, staff, customer or bot). "Real outside" = anonymous, non-bot, on a public page. "Ad-network / offshore" = arrived from an ad exchange or scanner, or from outside the US, Canada and Mexico on a boost day. Oct 24 is a partial day.

Sean posted on Oct 19 and boosted it (campaign "Boost Post Website Visits", Oct 19 to Nov 1, audience "All followers"). Numbers from the LinkedIn export Fede pulled on Oct 24, matched against our own recorder.

LinkedIn says (Oct 19–22)ValueOur site saw (Oct 19–22)Value
Paid impressions12,252Extra outside sessions vs. the 9-a-day baseline≈ 285
Paid clicks156…of which arrived from ad exchanges or scanners78
Paid click-through rate1.27%…of which from outside US / CA / MX70
Organic impressions / clicks165 / 21Sessions that read a second page or opened the demo or contact page8 (vs 10 the 4 days before)
Reactions4Demo requests0
Spendnot in exportVisits with "linkedin" as the referrer4

What we have today

PieceStateWhat it gives usWhat it can't do
Vercel Web AnalyticsonVisitors, page views, pages, referrers, countries, devices. Has a public API (used for this page).Mixes the marketing site with the signed-in app. Cannot tell us from strangers. Bots filtered by browser label only. No campaign tags (UTMs) without the $10/month add-on. No conversion events are sent.
Our own traffic recorderon, unusedEvery page view with country, device, referrer, dwell, page speed, and a label: anonymous / staff / customer / bot. 90 days of raw data. A hidden admin page (/admin/dev/traffic) nobody looks at.No view built for marketing questions. No campaign tags, no conversions, no LinkedIn or Google data.
Google Analytics 4installed, offThe component is in the code; it does nothing because no tracking id is set.Turning it on means cookies, a privacy-policy update and honoring the browser opt-out signal.
Google Search Consoleverified, unreadThe domain carries three Google verification records, so a Search Console property almost certainly exists. It is the only source of which Google searches find us.Nobody on the engineering side has access or has looked. Not connected to anything.
LinkedIn page analyticsmanual exportDaily impressions, clicks, engagement, organic vs paid, per post.No automatic pull. No spend. No link between a LinkedIn click and a site visit (the LinkedIn app strips the referrer; only 4 of ~285 boost visits said "linkedin").
Demo request formworksStores the request and emails the team. Verified today with one internal test submission: stored in 3 seconds and the team notice reached #hello-email.Zero real demo requests recorded since the form started storing them on Oct 7. Stores no source, campaign, landing page or referrer, so a future lead cannot be traced to a channel.
Contact formnot wired—Submitting opens the visitor's own mail program (a 2026 Q2 TODO still in the code). Nothing is recorded; most phone visitors will bounce off it.
SitemappartialLists 8 pages.Leaves out the platform, solutions, who-it's-for, resources, blog and careers pages, so Google is not told they exist.
LinkedIn Insight Tag / conversion trackingnone—LinkedIn cannot see which clicks became demo requests, and cannot show us the job titles and companies of our visitors.
Campaign tag conventionnone—The boost linked to the bare homepage, so paid, organic and partner-network clicks are indistinguishable on our side.

The gaps, ranked

  1. We cannot connect a visit to a channel or a lead to a channel. No campaign tags, no per-channel landing paths, nothing saved on the demo request. Every dollar of ads is unattributable today.
  2. The number everyone looks at is wrong. Vercel's visitor count is roughly half team and bots. Our own recorder already knows the difference, but no one has a view of it.
  3. No conversion signal. Nothing records "engaged visit", "started the form", "asked for a demo" as events, so the funnel below "visit" is blank.
  4. Paid clicks may be going to partner apps, not LinkedIn. Audience Network is on by default on boosts; the traffic shape says it was on.
  5. LinkedIn and Google data are not pulled anywhere. Manual export; Search Console never opened.
  6. The contact form is broken for intent. It only opens a mail client.
  7. Month-over-month is impossible today: the recorder keeps 90 days, and nothing snapshots the daily numbers.

Connecting LinkedIn to Claude

LinkedIn has no official MCP server or Claude connector. Everything legitimate goes through LinkedIn's Marketing API, which needs a developer app that Fede, as page admin, creates and verifies. The community MCP servers that exist either wrap that same API (so they still need the app) or scrape a logged-in session, which LinkedIn's terms forbid and which puts the company page at risk.

OptionWhat it givesCost / effortVerdict
A. Our own pull through LinkedIn's APIPage views, follower growth, per-post impressions/clicks/engagement (organic), and, with a second approval, campaign spend, impressions and clicks per ad. Pulled daily into the dashboard.$0. Fede: ~10 minutes to create the app and verify the page. LinkedIn: days to a couple of weeks per approval. Us: a day of wiring once approved.Recommended
B. A connector service (Windsor.ai, Supermetrics)Same data, pulled under the vendor's already-approved app into Sheets or a database, no LinkedIn review wait.$19–37 / month. Purchase = Fede's call.Good bridge if A's approval drags past two weeks.
C. A community LinkedIn MCP serverThe same API calls as A, wrapped for Claude.Still needs the developer app from A; adds a dependency we don't control.No advantage over A.
D. Headless browser on Fede's loginAnything the admin screens show, including spend.Breaks LinkedIn's user agreement; can get the page or account restricted.No
E. Manual export (today)The content export Fede pulled on Oct 24; the skill reads any new export dropped in Downloads automatically.A minute of Fede's time per pull.Keep as the fallback until A lands.
Fede's steps for option A (one sitting):
  1. Go to linkedin.com/developers, "Create app", name it PropFlow Marketing, pick the PropFlow company page, upload the logo, agree to terms.
  2. On the app's "Settings" tab, click "Verify" next to the page and approve it as page admin.
  3. On "Products", request Community Management API (page and post analytics) and Advertising API (campaign spend and clicks). Each opens a short form; say it is for an internal reporting dashboard for our own page and ads.
  4. Send the app's Client ID and Client Secret to this session (not in Slack). I store them in Keychain and finish the token handshake with you in one browser step.
Until approval, the skill keeps reading your manual exports.

The dashboard: three goals, three answers

It is not a dump of all data. Fede's three goals, in order, are the whole dashboard. Everything else is detail folded away underneath.

#GoalThe one answer on screenCan we answer it today?
1Are real people coming?Real outside visitors this week vs last week, team and bots removed, with a small daily bar chart.yes from our own recorder
2What does each channel bring?LinkedIn · Google · Direct / word of mouth · Other: real visits, engaged, demo requests this week.partly LinkedIn clicks arrive as "direct" until links carry tags or landing paths (decision 3)
3Is the ad paying?Per campaign: spent → clicks → real visits → demo requests → cost per demo.partly spend needs Campaign Manager (decision 1 or a manual export); demos need the form to store its source (decision 3)

Now: the local report /web-traffic shows these three answers on one screen from our recorder, Vercel and the LinkedIn export, and snapshots every day so month-over-month accrues. Next, if approved: the same three answers at marketing.propflowai.co, fed nightly by LinkedIn's API and Search Console, with demo requests joining the moment they are submitted. The research helpers' comparison of GA4, PostHog, HubSpot, Plausible, Dreamdata, HockeyStack and the connector vendors, and their build-vs-buy table, are in the research notes under Sources; the short version is that nothing we can buy joins LinkedIn, Search Console and our own demo records, and a custom page costs about $10 a month.

Sources

Earlier page on the same subject: Never flying blind (2026-09-15, proposed PostHog; still pending). This page supersedes its recommendation: the first-party recorder it did not know about already exists, so the plan here builds on that instead.

PropFlow Docs