Uptown Reply Buddy & Tracker
Uptown Reply Buddy drafts your LinkedIn replies, anywhere on LinkedIn. Uptown Tracker logs every outreach event, runs follow-up cadences, and keeps track of it all on your dashboard.
1.Welcome & Quick Start
Two paths through this guide, depending on what you're trying to do:
Read Reply Buddy (section 2). Then, when you're ready for the system to remind you which prospects to follow up with and when, read Follow-up cadences & tasks (section 3). That's the whole low-friction path. Everything past section 3 is the pipeline-operator playbook - skip it unless you're running outreach at volume.
Reply Buddy is still your starting point - the same extension handles both modes. Read Follow-up cadences & tasks (section 3) right after Reply Buddy if you want the system to nudge you on who to follow up with and when. From there, layer on Sales Navigator setup (section 4), lead lists (section 5), saved searches (section 6), the daily workflow (section 7), and the dashboard (section 8). That's how the Tracker side of Uptown gives you a real funnel.
How the pieces fit together
- Uptown Reply Buddy is the in-page sidebar that
drafts replies, classifies inbound sentiment, and offers
one-click Connection Request Sent /
New Message Sent / Log Meeting Booked buttons.
Works on every LinkedIn surface: the inbox, individual profile
pages (
/in/<slug>), the home feed when a chat overlay is open, and Sales Navigator. - Follow-up cadences & tasks are the part most Reply Buddy users reach for next - automatic reminders that surface who to follow up with and when. Configured per account on the dashboard, then surfaced in Reply Buddy's Follow-ups tab so you don't have to leave LinkedIn to work them.
- Uptown Tracker is the same extension's bulk-log mode (only relevant on Sales Navigator list pages) plus the dashboard at app.uptown.com. This is where pipeline volume, funnel rates, prospect history, and integrations live.
- Sales Navigator only matters if you want to run Tracker workflows. Reply Buddy and cadences don't need it.
- Pricing. $15/seat/month after a 7-day free trial, or $120/seat/year. One "seat" = one LinkedIn handle (one Uptown account). The Chrome extension itself is always free to install.
Your first week (Tracker path)
Skip this section if you're only using Reply Buddy. For operators running a full outreach pipeline:
- Install the Chrome extension and sign in (Reply Buddy install) - same extension powers both products.
- Activate LinkedIn Sales Navigator (section 4).
- Build your lead lists (section 5) - 12 monthly Connection Request lists, 12 monthly Messages Sent lists, plus Responded and InMails Sent. About 15 minutes once you know the naming convention.
- Build your four saved searches (section 6) - Connection Requests, Send Message 1, InMail, Retargeting. The first one (Connection Requests) is where you'll spend most of your filter time; the others lean on the lead lists you just built.
- Send your first 25 connection requests (section 7.1) and log them with the Tracker bar. That's day one.
2.Uptown Reply Buddy
Reply Buddy lives inside LinkedIn as a sidebar pinned to the right edge of every page. Open a conversation - whether it's an inbox thread, a profile-page message, or a floating chat overlay on the home feed - and Reply Buddy reads the thread, drafts a reply following your reply instructions (a "Blurb"), classifies the inbound's sentiment, and lets you log the outcome with one click. No new tab. No copy-paste.
2.1 — Install & sign in
Two pieces have to be in place before the extension can do anything: an Uptown account (with one LinkedIn handle added) and the Chrome extension itself signed into that account. Here's the order that works:
- Sign up at app.uptown.com if you don't already have an account. Signup creates a personal Uptown organization for you automatically. Adding your first LinkedIn account starts a 7-day free trial.
- Add a LinkedIn account from the dashboard with
the + Add new account button in the top right. One
Uptown "account" maps to one LinkedIn handle you'll be running
outreach for. Name it after whoever owns that handle
(e.g.
jane-doe) so the dropdown is readable later. - Optional but recommended: set your reply instructions. The Reply Instructions tab on the dashboard is where you teach the AI what to do and what to avoid. Even one paragraph - what you sell, who you target, how you sign off, words you'd never use - makes a real difference in the quality of Blurbs.
- Install the Chrome extension from the Chrome Web Store and pin the Uptown icon in your toolbar so it's one click away.
- Open the popup and sign in with the same email/password you used on the dashboard. Google sign-in works here too.
- Pick your active account from the dropdown. Everything you log from here on tags to that account until you switch.
Now open any LinkedIn conversation and the sidebar will appear on the right with a Blurb drafted within a second.
2.2 — Where Reply Buddy works
Anywhere on LinkedIn that has a conversation. Specifically:
- Individual profile pages (
/in/<slug>) - opens with the profile owner as the prospect. If you open a chat with someone else from that page (a floating bubble), Reply Buddy switches to the new chat automatically and prioritizes whoever you most recently opened. - LinkedIn messaging (
/messaging/) - picks up whichever thread you have selected in the left rail. - Home feed, search results, any other LinkedIn page - no conversation visible by default, but the moment you click "Message" on any profile and a chat bubble opens, Reply Buddy reads from it.
- Sales Navigator - inbox + lead detail pages flip Reply Buddy into conversation mode automatically. On list/search pages Reply Buddy is hidden in favor of the Tracker bulk-log bar.
2.3 — The sidebar layout
Three vertical zones, top to bottom:
- Person card with the prospect's name, title, company, and three quick-action icon buttons (see 2.4).
- Conversation showing the most recent Message Sent (outbound) and LinkedIn Response (inbound) it could detect, plus a collapsible Edit reply instructions drawer (see 2.5).
- Suggested Reply - the AI-drafted blurb with a Copy button, then sentiment pills (Positive / Neutral / Negative), then the Log Response primary button + a "+" overflow for ad-hoc events.
2.4 — The three quick-action buttons
Top-right of the person card, left to right:
- Connection Request Sent (user-plus icon) - logs a connection request.
- New Message Sent (envelope icon) - logs a message AND enrolls the prospect in the Follow-up Cadence (see section 3.2).
- Log Meeting Booked (calendar-check icon) - logs a booked meeting AND exits the prospect from any active cadence.
All three are one click, no modal. A toast confirms each save.
2.5 — Editing reply instructions inline
Right below the LinkedIn Response card, there's a collapsible Edit reply instructions drawer. Click to expand; you'll see a textarea pre-filled with the current account's instructions (whatever you set in the popup or on the dashboard's Reply Instructions tab).
Edit, click Save, and the next blurb the AI drafts will follow the new instructions immediately. The status line ("Unsaved" → "Saving…" → "Saved") shows you where you are.
Tip: this is the fastest way to nudge the AI when you don't like the tone of recent blurbs. Add a one-liner like "Keep responses under 40 words" or "Always sign off with my first name" and save.
2.6 — Blurbs (AI-suggested replies)
When Reply Buddy detects a new inbound, it kicks off a draft automatically (about 700ms after the conversation opens, to avoid firing on every scroll twitch). The status line under the suggested textarea shows Drafting blurb…, then Blurb ready.
Edit the textarea inline if you want to tweak. The Copy button copies the current contents to your clipboard so you can paste straight into LinkedIn's reply box. Reply Buddy doesn't auto-send.
2.7 — Sentiment pills + Log Response
Below the blurb sits three sentiment pills: 👍 Positive, 😐 Neutral, 👎 Negative. Reply Buddy classifies the inbound automatically and pre-selects one; you can override by clicking another pill if the AI got it wrong.
Hit Log Response to write the event to the dashboard. The sentiment goes with it, and a positive response also enrolls the prospect in the Positive Response Cadence.
2.8 — Multiple chat overlays open at once
LinkedIn lets you have several floating chat bubbles open simultaneously. Reply Buddy handles this consistently:
- On a profile page - first visit, the profile owner wins. If you then open a chat with someone else, the new chat takes precedence. Close the new chat → profile owner wins again.
- Anywhere else - the most recently opened chat wins.
2.9 — The Follow-ups tab
The second tab at the top of the sidebar opens your current follow-up queue - same data as the dashboard's Follow-ups tab but always one click away from inside any LinkedIn page. Click Open thread on a task to jump to that prospect's LinkedIn DM with the template already loaded.
2.10 — The account chip
Top-center of the sidebar header shows the active account as a small
pill (e.g., test2). This is read-only inside the
sidebar - to switch accounts, click the Uptown icon in your Chrome
toolbar and pick a different one from the popup dropdown. The sidebar
live-updates the chip when you switch.
3.Follow-up cadences & tasks
Most LinkedIn responses don't come from the first message - they come from the second, third, or fourth. Reply Buddy makes the writing fast; cadences make sure you actually send the follow-ups instead of forgetting who you said you'd circle back to.
Three kinds of follow-ups feed your daily queue. You don't have to configure them to get started - both cadences are pre-set per account and start working the moment you log your first message.
3.1 — The three kinds of follow-ups
- Regular Follow-up Cadence - your scheduled "ping if they didn't reply" sequence. Triggered when you click New Message Sent in Reply Buddy.
- Positive Response Cadence - a separate sequence aimed at booking a meeting. Triggered when you log a response with the Positive sentiment pill.
- Manual follow-up tasks - one-off reminders you schedule on a thread by hand when a prospect says "circle back next quarter" or similar.
3.2 — Regular Follow-up Cadence
This is the cadence most operators use most. The day you send your first outreach message and click the New Message Sent icon in Reply Buddy, the prospect is enrolled.
From there, Tracker schedules each step on its configured day-offset. A common starting sequence is day 3, day 7, day 14, day 21 - four chances to follow up over three weeks. Each step has its own message body, set directly inside the cadence step itself.
Edit the schedule, the per-step messages, and the on/off toggle from either of two surfaces - both write to the same place:
- Dashboard → Cadence tab - the full editor with both cadences side by side.
- Extension toolbar popup → Follow-up Cadence drawer - same fields collapsible inside the popup, useful for quick tweaks while you're already on LinkedIn.
The cadence stops automatically when:
- The prospect responds (you log any sentiment in Reply Buddy).
- You click Log Meeting Booked on the thread.
- You cancel the cadence manually from the prospect's row in Prospects or from the follow-up task itself.
Nobody gets all four follow-ups if they reply at step 2 - the remaining steps drop out of your queue the moment you log the response.
There's a Skip weekends toggle on the Cadence tab. With it on, a day-3 follow-up scheduled on a Friday lands the following Wednesday (only Mon-Fri count toward the offset). Most operators keep this on - weekend follow-ups don't get read.
3.3 — Positive Response Cadence
When you log a response with the Positive sentiment pill, the prospect exits the regular cadence and enters the Positive Response Cadence. The goal of this one is different: get the meeting booked.
The default sequence is shorter and more direct - often day 2 and day 5 - with templates that nudge toward a specific time. Edit the schedule, the per-step templates, and the on/off toggle from either the Cadence tab on the dashboard or the toolbar extension popup (same two surfaces as the regular cadence above).
Stops on:
- Log Meeting Booked in Reply Buddy (the success state this cadence is built around).
- Manual cancellation.
A positive prospect who never books gets the full positive cadence and then drops off your queue. They stay in the Prospects table with their full sentiment history so you can retarget them later if it makes sense.
3.4 — Manual follow-up tasks
Some follow-ups don't fit either cadence. A prospect says "we're budgeting in Q3" - that's a "remind me in July" task, not a day-3 ping. Or you sent a custom proposal and want to follow up specifically on that, not run a generic template.
Two ways to schedule one:
- From the conversation in Reply Buddy - hit the + overflow next to Log Response and pick Schedule follow-up. Set the date, type the message you want to send.
- From the Prospects table - find the prospect in Prospects and use the schedule-follow-up action on their row.
The task lands in your Follow-ups queue on its scheduled day, alongside any active cadence steps. Manual tasks always co-exist with cadence tasks - if a prospect is in the regular cadence and you also schedule a manual one, both surface on their respective due dates.
Manual tasks always co-exist with cadence tasks. If a prospect is in the regular cadence and you also schedule a manual task for them, both surface in your queue on their respective due dates.
3.5 — Working the queue
Due tasks surface in two places, same data, pick whichever fits your flow:
- Reply Buddy → Follow-ups tab - the second tab at the top of the sidebar. Always one click away while you're on LinkedIn.
- Dashboard → Follow-ups tab - same data with more screen real estate and per-type counts. Useful for working through a big queue first thing in the morning.
Each task shows: prospect name, what kind of follow-up it is (Regular / Positive / Manual), the day-offset within that cadence, and the pre-filled message body. Click Open thread on a task to jump to that prospect's LinkedIn DM - copy the template, paste in LinkedIn, send. Then hit Mark sent on the task; Tracker logs the message and queues the next step (if any) on its scheduled date.
A typical Message 1 gets a response rate around 20-25%. That means 75-80% of the people you message don't reply on the first try. If you don't follow up, you're throwing away the bigger half of your funnel. The cadence makes the follow-up automatic so you can't forget.
4.Sales Navigator: setup
Everything from here through section 8 is for operators running outreach as a pipeline (the Tracker side of Uptown). If you're just using Reply Buddy with cadences, you can skip ahead to Benchmarks or FAQ.
Why Sales Navigator is required
Uptown Tracker is built around Sales Navigator, not regular LinkedIn search. Without it, you can't realistically run this system — the filter precision and lead list capacity simply aren't there on the free tier.
- Filter depth. Industry, function, seniority, geography, company size, recent posters, signals like job changes — none of these are usable through regular LinkedIn search.
- Lead lists. You can build the 26+ named lists this playbook depends on. Free LinkedIn caps you at one "My Network" view.
- Saved searches with alerts. Saved searches are how you run the same pipeline every day without rebuilding filters.
- InMail credits. InMail is how you reach 2nd-degree and out-of-network prospects who haven't accepted a connection request yet.
- Higher visibility. Sales Navigator profiles signal seriousness to other professionals. Your acceptance rate ticks up.
Subscribing
- Go to linkedin.com/sales-solutions and pick a plan. Sales Navigator Core is the right starting point for individual outreach. Advanced and Advanced Plus are for sales teams using CRMs and don't add anything Uptown Tracker needs.
- LinkedIn typically offers a free trial; use it. The first month is also when you'll be doing the most setup.
- After signing up, go to
linkedin.com/sales. That's the Sales Navigator home — bookmark it. Most of your day will live there. - If you've never used Sales Navigator before, spend 15 minutes clicking around the lead filters and lead lists views. The Lead filters panel on the left of any search is where you'll spend the most time.
The rest of this guide assumes you have an active Sales Navigator subscription. If yours lapses, the saved searches still exist but you lose access to filters — the pipeline freezes until you renew.
5.Building your Lead Lists
Lead lists are how you keep Sales Navigator organized over time. We use a monthly naming convention so that searches can grab specific months by typing a date fragment, and so no single list ever bumps into LinkedIn's 1,000-leads-per-list ceiling.
At the start of each calendar year you'll create the year's set of lists. Below assumes 2027 — adjust the year for whichever year you're in.
The 12 + 12 monthly lists
Create these two sets, one entry per month:
Connection Request lists (×12)
- 1/27 Connection Request Sent
- 2/27 Connection Request Sent
- 3/27 Connection Request Sent
- 4/27 Connection Request Sent
- 5/27 Connection Request Sent
- 6/27 Connection Request Sent
- 7/27 Connection Request Sent
- 8/27 Connection Request Sent
- 9/27 Connection Request Sent
- 10/27 Connection Request Sent
- 11/27 Connection Request Sent
- 12/27 Connection Request Sent
Messages Sent lists (×12)
- January 2027 Messages Sent
- February 2027 Messages Sent
- March 2027 Messages Sent
- April 2027 Messages Sent
- May 2027 Messages Sent
- June 2027 Messages Sent
- July 2027 Messages Sent
- August 2027 Messages Sent
- September 2027 Messages Sent
- October 2027 Messages Sent
- November 2027 Messages Sent
- December 2027 Messages Sent
The two formats look inconsistent — they are, on purpose. Sales Navigator's
list-picker has a search box. Typing /27 filters to just the
twelve Connection Request lists; typing 2027 filters to just
the twelve Messages Sent lists. Mixing the formats means you can grab the
right set in one keystroke instead of scrolling a 26-item dropdown.
Responded & InMails Sent
Two more lists, named the same way regardless of year:
- Responded — every prospect who replies to anything goes
here. We use it as an exclusion filter on Retargeting saved searches so
we never re-target someone who's already replied.
When to make a second one
LinkedIn caps lists at 1,000 leads. If Responded fills up, create Responded 2 and add it to your retargeting exclusion set. Most operators don't hit this for 12+ months.
- InMails Sent — every InMail recipient. Used to verify you don't double-InMail the same person (LinkedIn doesn't surface this cleanly otherwise).
Retargeting lists (ad-hoc)
You don't pre-create retargeting lists. Instead, when you decide to run a
retargeting batch (we recommend roughly once a month), you build the list
right then and name it for the date you started — e.g.
Retargeting 4/23/2027. That way each batch is auditable
in isolation if a particular pass underperforms.
How to create a lead list
- From
linkedin.com/sales, hover the Lead Lists menu in the top nav and click Create new list. - Type the name exactly as written above. Capitalization matters less
than the year fragment —
/27and2027are what your search-picker keys off. - Save. Repeat 25 more times. (It's tedious; do it once a year and forget about it.)
6.Saved Searches as a pipeline
With lead lists in place, saved searches turn Sales Navigator into a production line: each search is a "queue" you pull from for one specific action. You'll build four of them.
Filters overview
Sales Navigator gives you dozens of lead filters. The ones that matter most for outreach quality are:
- Connection — limit to 2nd and 3rd-degree connections so you're not pinging people you already know.
- Geography — region, country, or metro area.
- Industry & Company headcount — coarse company-level filters; useful when your ICP is "mid-market SaaS" or similar.
- Function & Current job title — the person's role. Title is more precise; Function is broader and forgives inconsistent titling.
- Seniority level — Director, VP, CXO, Owner, etc.
- Posted on LinkedIn — the goldmine. Setting this to last 30 days filters down to people who are demonstrably active on the platform. Acceptance and response rates on "active" leads run 30–50% higher than on dormant profiles.
- Saved leads and accounts — used as the exclusion to stop re-targeting your existing saved leads (covered below).
- People you've interacted with — exclude Messaged so saved searches never hand you a person you've already DM'd.
- Lead lists — the include filter that drives every saved search after the first one.
If you do nothing else with filters, set Posted on LinkedIn → in the past 30 days. Targeting active LinkedIn users is the single biggest lever on acceptance rate.
Saved Search 1 — Connection Requests
This is the entry point of your pipeline. It's the only search you have to tune for ICP fit; the others piggyback off the lists this one populates.
Anchor filters (always on)
- Connection: 2nd degree connections, 3rd+ degree connections (only — exclude 1st).
- Saved leads and accounts: All my saved leads (Exclude). This means anyone you've ever saved to any list won't show up.
- People you've interacted with → Messaged: Exclude. Redundant safety net for anyone who slipped past the saved-leads exclusion (e.g. you unsaved them, or messaged them outside the playbook).
ICP filters (whatever defines your ideal client)
Add the filters that make someone an ideal customer for your offer. There's no universal answer here, but a workable starter pattern is:
- Geography: your serviceable region.
- Industry: 1–3 industries you've sold to before.
- Seniority: Owner, Founder, CXO, VP, Director (whoever buys what you sell).
- Job title or Function: the role of the buyer.
- Posted on LinkedIn → past 30 days (highly recommended).
Save the search. Name it Connection Requests. Each day, this saved search is the queue you start from.
Saved Search 2 — Send Message 1
This search auto-populates with people who accepted a connection request — they're your "ready to message" queue.
Anchor filters
- Lead Lists → Include — all twelve
X/27 Connection Request Sentlists. (Type/27in the picker to grab them all in one keystroke.) - People you've interacted with → Messaged: Exclude. Once you've sent Message 1 they fall out of this search.
That's it. No ICP filters needed — the connection-request list already did the targeting work. Save as Send Message 1.
The Connection Requests search shows you 2nd/3rd-degree people. The Send Message 1 search shows you 1st-degree people who just accepted. Different populations, different next actions. Splitting them into two queues keeps the day-to-day clean: one queue per task.
Saved Search 3 — InMail (as needed)
Build an InMail saved search whenever you want to test a new audience or a new filter combination. It's a great cheap experiment because InMail bypasses the connection-request acceptance step.
Anchor filters
- Same as Connection Requests: Connection 2nd/3rd, exclude all my saved leads, exclude Messaged.
- Add an exclude on the InMails Sent lead list so you don't double-InMail the same person.
Layer in whatever experimental ICP filters you want to test, save with a
descriptive name (e.g. InMail — VP Ops, US, last 30 days),
and burn through your monthly InMail credits there.
Saved Search 4 — Retargeting (build per batch)
Retargeting hits people you messaged a few months back who never replied. We typically run a retargeting batch once a month.
Anchor filters
- Lead Lists → Include — one or more older
Month YYYY Messages Sentlists. A good rule of thumb is at least 2–3 months back, sometimes 6+. Example: if it's October 2027, includingJanuary 2027 Messages SentandFebruary 2027 Messages Sentgives you a clean 8–9-month-old cohort to retarget. - Lead Lists → Exclude: the Responded list. Critical — never retarget someone who already replied to a previous touch.
Save with the date suffix: Retargeting 4/23/2027. After the
batch, the saved search becomes a record of which cohort you hit on which
day, which makes after-the-fact analysis tractable.
You can reduce your need for retargeting by extending your follow-up cadence inside Uptown Tracker — for example, adding a 60- or 90-day step. The dashboard's Cadence tab lets you tune this per account.
7.The daily outreach workflow
Once your lists and saved searches are in place, the day-to-day flow is small and repeatable. Here's the order of operations.
7.1 — Send connection requests
Volume target: 25–50 per day, 100–200 per week. LinkedIn enforces a weekly cap (varies but ~200 is the practical ceiling). The extension's streak panel tracks where you are vs. that weekly target in real time.
- Open the Connection Requests saved search. Each page shows 25 results.
- Send a connection request to everyone on the page. Click Connect on each lead — Sales Nav lets you click through without leaving the page. Add a note only if your strategy includes note-with-request; most operators send noteless to maximize acceptance.
- Save them all to this month's Connection Request Sent list.
Click the Save dropdown on each lead and select e.g.
4/27 Connection Request Sent. (Sales Nav lets you select multiple at once with the page-wide checkbox + Save to list.) - Log the batch in the tracker. The Uptown Tracker extension's
tracker bar appears at the top of the search page. With all 25 leads
still selected on the page (the tracker mirrors page selection), click
Connection, then Log Outreach.
What gets logged
One
connectionevent per selected prospect, attributed to your currently-selected account. The dashboard's Acceptance Rate and Connections-this-week numbers update immediately.What if I forget to log?Accidentally hit refresh, click to the next page, or get distracted before clicking Log Outreach? Open the current month's Connection Request Sent list in Sales Nav and select the 25 most recently added leads — the Uptown Tracker Extension works on lead lists too, not just saved searches. Log them as connections from there. You can do the same thing if you ever forget to Log a Message Sent.
- Repeat until you hit your daily target. Most operators do 1–2 pages of 25 per day.
7.2 — Send the initial message ("Message 1")
The Send Message 1 saved search auto-populates whenever a connection request is accepted. These are the people who said "yes" to connecting — they're now ready for your real opener.
- Open the Send Message 1 saved search.
- For each new person on this saved search, send your initial message.
We recommend renaming your first saved template inside Uptown Tracker's Templates tab
to
Message 1and copying it from the extension popup or the per-account dashboard so the wording stays consistent across the team. - Save them to the current month's Messages Sent list.
E.g.
April 2027 Messages Sent.When to saveSome operators save before sending the message — that way if you get distracted you don't lose them out of the pipeline. Either order works as long as both happen.
- Select the people on the page in the Uptown Tracker bar, click Message, then Log Outreach. (Usually 25 if your saved search has 25+ pending.)
Because we send Message 1 the moment someone becomes a new connection, the count of Messages Sent in your pipeline equals the count of connection requests that were accepted in that period. That's why the dashboard's Acceptance Rate is calculated as Messages Sent ÷ Connection Requests Sent. It's the cleanest measurable proxy for "did they accept?" given LinkedIn doesn't expose a true acceptance event.
7.3 — Inbox management
Every reply needs to be logged with the tracker. Logging a reply ends any existing follow-up cadence on that prospect, so they don't keep getting automated nudges after they've engaged.
- Open the LinkedIn or Sales Navigator inbox. Either works; the extension recognizes both.
- Filter to Unread. Cuts the visible thread list down to messages you actually need to act on. Skim once a day.
- Open each thread. Read the response.
- Log the response with the tracker. The Uptown Tracker
bar shows on the inbox page. With the thread open, click
Response, pick a sentiment, click Log Outreach.
- Positive — they said yes-ish: interested, want to learn more, asked a buying-related question. Kicks off the Positive Response Cadence (whose goal is booking the meeting).
- Negative — clear no, "remove me", "not interested", "wrong person". Use this honestly — it's how the Positive Rate tells you whether your message is landing.
- Neutral — replies that aren't a yes or a no: "what's this about", "send me more info", auto-replies. The cadence ends; future steps are up to you.
- Reply. Use the Reply Buddy sidebar's suggested reply (see section 2) as a starting draft, or write from scratch — your call.
- Add them to the Responded list as redundancy. In the inbox view, click the Saved button under their name and pick Responded. The tracker logs the response, but adding them to the lead list is what protects future Retargeting batches from accidentally re-hitting them.
The dashboard's Response Rate, Positive Rate, and benchmarking tags all depend on having an honest count of every reply, not just the good ones. Skipping negatives makes your funnel look better than it is and hides whichever issue tag would otherwise tell you exactly what to fix.
7.4 — Completing follow-ups
Each day the dashboard and the extension queue up follow-up tasks that are due. There are two flavors:
- Regular follow-ups — the next step in your standard Follow-up Cadence for prospects who haven't responded yet.
- Positive follow-ups — the next step in the Positive Response Cadence, aimed at moving an interested prospect toward a booked meeting.
- Manual follow-ups — anything you scheduled by hand via the "Schedule follow-up" flow on a thread.
The fastest way to work the follow-up queue is from the inbox, not from the task list:
- Open Uptown Tracker's Follow-ups tab in the extension popup or in the per-account dashboard. You'll see today's due tasks grouped by type with per-pill counts.
- Copy the prospect's name from the task. The extension shows a small clipboard icon to the left of each name — one click copies just the name.
- Switch to your Sales Nav messaging inbox and paste the name into the Search Messages field. Their thread comes up instantly.
- Send the next follow-up message. Use the cadence template assigned to this step if you want to stay on-script (the extension's Open thread button auto-flips the sidebar to the Follow-ups view so the template is right there).
- In the Uptown Tracker bar click Follow-up (or Positive Follow-up if it's a positive-response cadence step), then Log Outreach. The task drops off the queue.
- Repeat until the day's follow-up queue is empty.
You can click Open Task on each task and the extension will deep-link to the LinkedIn thread, but the round-trip feels slow when you're working through 20+ follow-ups. Copy-paste-into-search is faster once you've got the muscle memory.
7.5 — Monthly retargeting
Once a month, kick off a retargeting batch. Build a fresh saved search as described in section 6.4, name it for today's date, and send a retargeting message to everyone in it.
- Build the saved search (older Messages Sent list, exclude Responded).
- For each page: send the retargeting message, save them to a freshly
created
Retargeting MM/DD/YYYYlist, and log Retargeting in the tracker. - Move on with your week. The retargeting list itself is your record of who got hit; if any reply, the inbox-management flow takes care of them like any other response.
8.The Dashboard, tab by tab
The dashboard is at app.uptown.com. It's a fast, sortable view of every account you have access to, with a deep per-account drill-in.
8.1 — Logging in
First-time users land here from an email invite. After that, sign in with the email and password you set up. If you forget your password, click Forgot password on the login screen.
8.2 — Top-level Account dashboard
After logging in you see a sortable table of every account you have access to. Each row is one account; columns show the funnel for the selected timeframe.
Filters & timeframe
- Accounts / Companies / Status — narrow the table to just the accounts you want to look at. Status defaults to All; switch to Active to hide accounts that haven't seen activity.
- Timeframe pills — 1W / 2W / 3W / 1M / 2M / 3M / This Year / All Time. This Year is the default — fastest to load and most relevant for ongoing performance reviews.
- Show archived checkbox in the table header reveals archived accounts (greyed out, with an Unarchive button).
Reading the columns
Each row's data cells form a single tinted card running across the row. Hover any data cell to see a deeper tint and a small › chevron; click anywhere on the row to drill into that account's per-account dashboard.
- Connections — connection requests sent in the timeframe.
- Messages — Message 1 sends (= new accepted connections).
- Acc. rate — Messages ÷ Connections. Color-coded against the 30% benchmark (good ≥30%, ok ≥15%, bad below).
- Responses — replies received.
- Resp. rate — Responses ÷ Messages. Benchmark 20%.
- Positives — replies you tagged as positive sentiment.
- Pos. resp. rate — Positives ÷ Responses. Benchmark 15%.
- Meetings — meetings booked in the timeframe.
- Pos. booking rate — Meetings ÷ Positives. Benchmark 40%.
- Trend — a tiny cumulative chart (orange = positives, green = meetings) over the selected timeframe. Quick visual on whether an account is building momentum or flat-lining.
Additional outreach (collapsed by default)
Click the → toggle in the header to reveal four extra columns: Regular FU, Positive FU, InMails, Retargeting. These roll into the funnel but live behind a toggle to keep the default view scannable.
Adding a new account
Admins see a + Add new account button on the right of the section header. Clicking it opens a small modal with name + slug fields. If you're at your seat cap, you'll be routed to the Stripe purchase modal first; once a seat frees up the new account is created and seeded with default templates and cadence steps.
8.3 — Per-account: Summary
Click any row to land on the per-account view. The account name shows as the page heading with a small ✎ pencil to its right; admins click the pencil to rename the account inline. The default tab is Summary:
- Timeframe pills — same set as the top-level dashboard, independent per-account selection.
- KPI strip — the headline funnel numbers (Connections, Messages, Acc. rate, Responses, Resp. rate, Positives, Pos. resp. rate, Meetings, Pos. booking rate) for the selected timeframe.
- Cumulative chart — a line per metric over the timeframe. Four series are hidden by default behind the + pill in the legend (Regular FU, Positive FU, InMails, Retargeting); click to expand inline.
- Trends by Period table — period-over-period comparison (1W → 2W → 3W → 1M → 2M → 3M → YTD → All Time). The bold rate rows (Acceptance, Response, Positive, Pos. Booking) are what you watch week-over-week to see whether a change moved the needle.
Rate cells are color-coded against the benchmark targets. A clean diagonal of green is what a healthy account looks like; clusters of yellow/red are where you focus.
8.4 — Per-account: Prospects
The Prospects tab is a spreadsheet view of every distinct person this account has touched, auto-clustered across name / LinkedIn ID / email / profile URL so the same person isn't counted multiple times across events.
What's in each row
- Name & basic info (with an Edit-info pencil for corrections).
- Status — derived from the most recent event (Connected, Messaged, Responded, Booked, etc.).
- Sentiment — most recent response sentiment (positive / neutral / negative). Inline-editable via the small pill.
- Rating — your own thumbs up / thumbs down on this prospect. Click 👍 or 👎 to set; click the same one again to clear. See Rating & Notes below for how to use this.
- Event count — total touches scoped to the active timeframe. Click the row to expand the full event timeline.
- Last touch — sortable; three-state click cycle (desc → asc → clear).
- Notes — a spreadsheet-style cell. Click anywhere in the cell to start editing; click out (or press Esc to cancel) to save. Long notes wrap and the row grows; very long notes clamp visually with internal scroll while editing. See Rating & Notes below.
Rating & Notes — post-pipeline evaluation
Rating and Notes are your own qualitative read on each prospect, separate from the activity-based funnel data. They're meant for evaluating connections and meetings after they're already in pipeline — not for grading raw outreach volume.
Examples:
- A connection accepts and replies positively, but on a discovery call it's clear they're not a fit. Thumbs down + a one-line note ("not enough headcount, recheck in 6 months") so future-you doesn't waste a follow-up slot on them.
- A meeting closes a deal. Thumbs up + notes ("closed $X / signed Y date / referred to Z") so the win is one search away in the Prospects tab forever.
- Mid-pipeline gut call — a thread is going somewhere good but you don't have a meeting yet. Thumbs up + notes capture the context so the next operator (or you in two weeks) knows why this one matters.
Use the Rating and Notes filter chips above the table to slice by either: e.g. Rating: Thumbs up + Status: Meeting = your best closed/closing prospects across the timeframe. Rating and Notes also export to CSV.
Setting a rating or saving notes is a metadata-only update — it doesn't bump the prospect's Last touch date, status, sentiment, or event counts. Those only change when real outreach activity is logged. So you can rate and re-rate without rearranging your sort order.
Rating and Notes live in the dashboard's Prospects tab only — they don't show up in the Sales Nav sidebar. The sidebar is for logging outreach as you go; rating and notes are for evaluating prospects after they're in pipeline.
Editing events
Each event in the expanded timeline has a pencil (edit) and an X (delete) icon. Edit lets you fix a wrong-typed message body, change a response's sentiment, or correct a mis-categorized event type. Delete removes the event from the funnel; if it was the last event for that prospect, the prospect row auto-disappears.
Bulk actions
Tick the checkbox on multiple rows (use Shift+click for range select) and a floating bulk bar appears at the top: count + Clear + Delete N. Useful for cleaning up bad imports or duplicates a manual merge missed.
Mark meeting booked
Each prospect row has a Mark meeting booked button. Use it when you booked a meeting outside of an integrated calendar (or want to log one manually). The button flips to Meeting logged ✓ after; deleting the meeting event flips it back.
Email enrichment (Apollo)
The Email column has an Enrich ↗ button on any empty cell. Clicking it fetches the prospect's email from Apollo; the bulk action bar exposes the same as Enrich N for multi-select. There's also a per-account Auto-enrich on acceptance toggle that fires Apollo automatically when a prospect's status moves into Messaged, Responded, or Meeting.
See 8.12 — Enrichment for the full setup walkthrough (getting an Apollo account, finding your API key, wiring it up on the Team page) plus details on cost, match rates, and the auto-enrich behavior.
8.5 — Per-account: Follow-ups
The Follow-ups tab is the per-account version of the daily queue. It shows all follow-up tasks across all three sources (regular cadence, positive cadence, manual) due today and overdue, grouped by type with filter pills.
From here you can:
- Click Open thread to deep-link to the LinkedIn DM.
- Click the small clipboard icon next to a name to copy the name to paste into Sales Nav's Search Messages box.
- Mark a task complete (which logs the corresponding follow-up event).
- Cancel a task (removes it without logging).
- Reschedule a task to a different date.
8.6 — Per-account: Templates
Templates are your one-off message library — Message 1, retargeting copy, and any other paste-ready text you reuse. Up to 10 per account.
- Add, rename inline, edit body, copy, delete.
- Templates support these variables, expanded automatically when the
extension copies them into a message:
{{first_name}},{{company}},{{title}}. - Templates are also available from the extension popup so you can copy without leaving Sales Nav.
We recommend renaming your first saved template to Message 1
and writing your initial-message copy there. The naming consistency
makes the daily workflow ("copy Message 1, send, log") clean across
your team.
8.7 — Per-account: Reply Instructions
A free-form text box that becomes the system prompt for the AI suggested-reply feature in the extension sidebar. The AI reads this instruction plus the message you sent and the prospect's reply when drafting a suggested response.
Good Reply Instructions are short, specific, and outcome-oriented. Examples:
- "Warm but brief. We help SaaS teams cut churn. If pricing comes up, pivot to a quick call. Never quote numbers."
- "Tone: senior consultant, not salesy. Always end with a soft CTA toward a 15-minute call."
- "If the response is a clear no, draft a polite acknowledgement and offer to circle back in 6 months."
8.8 — Per-account: Cadence
Cadence controls automated follow-up timing. There are two independent sequences per account:
Follow-up Cadence
Anchored on a Message 1 send. Steps fire on the days you specify
(e.g. day 3, day 7, day 14) and stop when the prospect responds, books a
meeting, or you cancel. Each step has a template; templates support the
same {{first_name}} / {{company}} /
{{title}} variables.
Positive Response Cadence
Anchored on a positive-sentiment response. Goal is booking a meeting. Steps fire on day-offsets after the positive response. Stops on meeting booked or cancellation.
The On/Off toggle
The big switch at the top of each cadence panel disables enrolling new prospects without affecting in-flight tasks. So if you flip Follow-up Cadence off mid-month, the people already in the sequence keep getting their scheduled tasks; only newly-messaged prospects won't enroll.
8.9 — Per-account: Meeting Links
Per-account meeting links you can copy into LinkedIn DMs. Two flavors:
- Plain link — paste-ready URL with a display name. No integration; bookings won't auto-log.
- Integrated link — connect Calendly or HubSpot via OAuth.
Bookings on the linked event type / matching meeting title auto-log
as
meeting_bookedoutreach events, attached to the right prospect by name match.
Connecting Calendly
- Click Connect Calendly on a meeting link row.
- OAuth into Calendly. Pick which event type this link should listen on.
- Save. Future bookings on that event type fire a webhook into Uptown Tracker
and create a
meeting_bookedevent for the matching prospect.
Connecting HubSpot
- Click Connect HubSpot.
- OAuth in. Type a unique substring that matches the meeting title for
this account (e.g.
Acme Corp intro call). - HubSpot fires a webhook on every meeting created; meetings whose titles contain your match-text get auto-logged on this Uptown Tracker account. One HubSpot org can route to multiple Uptown Tracker accounts via different match strings.
8.10 — Team page (admins + members)
Admins see a Team link in the top-right header. The page heading shows the organization name with a ✎ pencil next to it (admins click to rename); below that you'll find:
- Invite members and admins (admin-only) — paste their email, pick a role, get a shareable invite link to drop into Slack or email. Each Uptown Tracker account belongs to one organization at a time; invites to someone already in another org are rejected with a "they need to leave their current org first" message. Admins see all accounts; members only see what you grant them.
- Manage access (admin-only) — for each member, click Manage access to pick which accounts they can see.
- Manage roles (admin-only) — promote a member to admin or vice versa.
- Recent activity — an audit log of the last 50 events in this org (invites, members joined/left/removed, role changes, organization renames, accounts created/archived/unarchived/deleted/ transferred/merged, seat-cap changes, outreach edits and deletions).
- Billing card (admin-only, near the bottom) — add seat / remove seat / switch monthly↔annual / manage payment & invoices. See 8.11.
- Leave organization (anyone) — at the very bottom. Members can always leave; admins can leave only if at least one other admin remains, or — if they're the last person — only after transferring/deleting all accounts and cancelling any active Stripe subscription. See the FAQ entry on leaving an org to join another.
8.11 — Billing
Uptown Tracker bills $15 per seat per month or $120 per seat per year (33% off when billed annually). Each seat is one LinkedIn account being run through Uptown Tracker. The first seat you buy comes with a 7-day free trial.
Where the controls live
- Adding your first seat / paying for a trial — clicking + Add new account when you have no paid seats opens the Stripe purchase modal directly.
- Adding seats at-cap — clicking + Add new account when you're at your seat cap routes admins to the purchase modal; members get an "ask your admin" prompt.
- Routine seat management — the Team page billing card. Add seat, remove seat, switch interval, open the Stripe Customer Portal to manage card and invoices.
- From the extension — at-cap admins clicking + Add
account in the popup get sent to
app.uptown.com//dashboard/?action=add-seat, which auto-opens the purchase modal on arrival (the popup is too narrow to fit Stripe Elements inline).
Stripe retries failed payments per its standard schedule. If the retries all fail, the subscription is suspended and Uptown Tracker locks out the dashboard and extension until the card is updated via the Customer Portal. Your data is preserved through the suspension.
8.12 — Enrichment
Uptown Tracker integrates with Apollo to enrich prospect emails directly inside the Prospects tab. Connection requests you sent on Sales Navigator usually leave you without an email address; once a prospect responds (or you book a meeting via your meeting link), you get one — but the gap between "they accepted" and "I have their email" is exactly the window where enrichment helps. One click pulls their email from Apollo's database via the API; we never charge for enrichment, you pay Apollo directly.
Don't have Apollo yet? Sign up via our affiliate link
We're an Apollo agency partner. If you don't already have an Apollo account, sign up here: https://get.apollo.io/UptownCreation
Apollo offers a free tier with limited credits, plus paid tiers that unlock more email reveals per month. The integration works regardless of plan — you'll only run up against limits if you bulk-enrich at volume.
Getting your Apollo API key
- Sign in to Apollo.
- Click your profile in the upper-right → Settings.
- Scroll the left sidebar to Integrations → API.
- Click Create new key. Give it a name like "Uptown Tracker" so future-you can identify it.
- Copy the key. You'll only see it once — Apollo doesn't show it again after you close the panel.
Anyone with your API key can spend your Apollo credits. Don't paste it into Slack, screenshots, or anywhere outside Uptown's integration form. We store it encrypted at rest and never display it back — once it's saved, the only thing you'll see on the Team page is "Connected (set X by Y)".
Adding the key on the Team page
- Go to Team (admin only).
- Scroll down to the Enrichment section.
- Paste your Apollo API key into the form and click Connect Apollo.
- Status flips to "Connected" and a usage widget appears showing last-30-days API calls + matched emails + credits charged.
Using enrichment
Once connected, the Email column on every account's Prospects tab gains an Enrich ↗ button on empty cells. There are three trigger paths:
- Per-row enrichment: click Enrich ↗ on a single empty Email cell. One Apollo credit, email returns within a second or two. Admin only.
- Bulk enrichment: select multiple prospects via the row checkboxes, then click Enrich N in the bulk action bar. N is the actionable count — selected prospects missing email AND with name + company set. Anything else would no-op. Admin only.
- Auto-enrich on acceptance: per-account toggle (off by default). Click the Auto-enrich: off ▾ pill at the top of the Prospects tab and check the box. From then on, whenever a prospect's status moves into Messaged, Responded, or Meeting (i.e. they accepted your connection request), Apollo fires automatically if the email is unknown. Admin only.
What you'll see
- Match found: the email replaces the Enrich ↗ button as plain click-to-copy text.
- No match: the cell shows N/A — Apollo doesn't have this prospect in its database. Click N/A to retry (clears the attempted-flag and runs a fresh call) — useful if you've since updated their company or LinkedIn URL.
- Already had email: enrichment skips entirely (no credit charged, no overwrite) so existing emails from outreach event identity propagation or your meeting link integrations stay put.
As a free side effect: when Apollo returns a clean canonical
LinkedIn URL (the /in/<slug> vanity form), your
prospect's profile_url gets upgraded silently from the
URN-encoded form Sales Nav gives us. Improves match rates for
future enrichments and makes the LinkedIn link in the prospect row
click cleaner.
Match rates + cost
Match rates depend on the prospect's public web presence — Apollo typically returns email for ~70-85% of well-known professionals. Each successful match costs roughly 1 Apollo credit; no-match calls don't charge. Failed calls (Apollo down, bad API key, etc.) are flagged in the log but don't charge either.
The Team page usage widget shows last-30-days rollups: total API calls, emails matched, credits charged. For exact charges + remaining credits, check Apollo's own usage dashboard.
Enrichment writes only to the Email column (and the canonical LinkedIn URL when Apollo returns a cleaner one). It never touches Last touch, Status, Sentiment, Event count, or any rollup — those are activity-driven only. Same wall as Rating + Notes.
Phone enrichment isn't part of this integration. Apollo's sync response only returns the company main line (not personal mobiles), and the paid async reveal path was unreliable in our testing. If a prospect shares a phone in a reply or meeting, it shows up in their Edit info form via the timeline expansion — there's just no enrichment-driven Phone column on the table.
8.13 - Per-account: Integrations (API keys + Zapier)
Per-account credentials for plugging Uptown Tracker into outside tools. Anyone with access to the account (admins always; members only when you've granted them access) can generate, use, and revoke keys for it. Each key is scoped to one account - it can read that account's outreach data and nothing else.
What you can do with a key
The API key is a generic HTTP credential. Any tool that accepts an
Authorization: Bearer ... header can hit Uptown Tracker's
endpoints. The first-class supported path is Zapier,
but the same key works with Make.com, n8n, Pipedream, or a custom
script you write yourself.
Connecting to Zapier
- Open the account you want to connect (top-level dashboard → click the account name) and click the Integrations tab.
- Click + Generate new key. Give it a memorable name (e.g. "Zapier prod" or "Make.com automation"). You'll see the full key exactly once - copy it to your clipboard right then.
- Click Open Uptown Tracker on Zapier in the same tab. That opens the integration in Zapier and walks you through adding it to your Zapier account.
- When Zapier asks for credentials, paste the API key you just generated. Click test - Zapier verifies the key resolves to your account and shows the account name as the connection label.
- Build your zap. Pick from the trigger list below.
Available triggers
Every trigger polls every 15 minutes (Zapier's free-tier cadence; paid Zapier tiers poll faster). Each fires once per new event matching the trigger type:
- New Meeting Booked - a prospect booked a meeting. When the same prospect has a prior logged response, the trigger hydrates with that response (text + sentiment + nuance tag) and the outbound message that prompted it, so the zap knows the conversational context.
- New Connection Request Sent - you sent a CR. Fires with the prospect's identity (name, email, title, company, profile URLs). The CR note itself isn't captured.
- New Connection Accepted - a CR was accepted and you sent the first message. Fires with the prospect's identity. The message body isn't captured for this event type.
- New Response - a prospect replied. Includes the response text, AI-classified sentiment (positive / negative / neutral) plus an optional nuance tag (wants_meeting, not_right_time, etc.), and the outbound message they replied to. Has an optional sentiment filter so you can build a zap that only fires on positive replies.
- New InMail Sent - you sent an InMail. Fires with the prospect's identity.
- New Retargeting Message Sent - you sent a retargeting message. Fires with the prospect's identity.
What each event includes
Every trigger returns the same field shape so zaps stay consistent
across triggers. Fields that don't apply to a given event come back
as null.
- id, occurred_at, account_name - always populated.
- prospect_name, prospect_email, prospect_phone, company, title, profile_url, sales_nav_url - the prospect's identity. Populated on every trigger.
- outbound_message_text - on response triggers, the outbound message the prospect is replying to. On meeting-booked triggers, the outbound message that prompted the prior response, if one exists. Null on all other triggers (the extension logs the act of sending, not the message body, for CRs, first messages, InMails, and retargeting messages).
- response_text, sentiment, sentiment_detail - populated on response triggers, and on meeting-booked rows that have a known prior response. Null on all other triggers.
Common zap recipes
-
Push new meetings into HubSpot / Salesforce.
Trigger: New Meeting Booked. Action: HubSpot → Create or Update
Contact (map
prospect_name,prospect_email,company,titleto HubSpot fields, set a lifecycle stage). Add a second action: Create Engagement / Note with the response text + sentiment so the rep has context when they open the contact. -
Slack alert on positive responses.
Trigger: New Response with sentiment = positive. Action: Slack
→ Send Channel Message: "Hot reply from
prospect_nameatcompany: \"response_text\"" - Log CRs into a Google Sheet. Trigger: New Connection Request Sent. Action: Google Sheets → Create Row. Useful for clients who track outbound volume outside Uptown Tracker.
Revoking a key
On the Integrations tab, click Revoke next to any key. The key stops working immediately for every integration using it. The row stays in the list as a revoked entry for audit purposes. Generate a new key and update your integration if you need to rotate.
Each API key is scoped to a single Uptown Tracker account. A key generated for John Kratz's account can only read John Kratz's data, even if the operator who created the key also has access to other accounts. If you want to wire up multiple accounts, generate one key per account and configure separate Zapier connections.
Endpoint reference
Developer reference for the endpoints behind the triggers above. Useful if you're building a custom integration against the same Application Programming Interface (API).
Base URL
https://api.uptown.com/functions/v1/zapier-api
Also reachable at
https://svikzdeqovrtrxsqmnbv.supabase.co/functions/v1/zapier-api.
Both routes are equivalent and stable.
Authentication
Every request requires a per-account API key in the
Authorization header:
Authorization: Bearer up_<raw key>
Generate keys on the Integrations tab of any account (see
Connecting to Zapier above).
Revoked or invalid keys return 401.
Endpoints
| Method & Path | Purpose |
|---|---|
GET /auth-test |
Validates the key. Returns { ok, account_id, account_name, key_name }. Used by Zapier during connection setup. |
GET /triggers/new-meetings |
Latest meeting bookings (up to 100). Each row includes the prior response that led to the booking (text + sentiment) plus the outbound message that prompted it. |
GET /triggers/new-connection-requests |
Latest connection requests sent (up to 100). Prospect identity only; the request's note text is not captured. |
GET /triggers/new-connections-accepted |
Latest first messages sent after a connection request was accepted (up to 100). |
GET /triggers/new-responses |
Latest replies received (up to 100). Optional query param ?sentiment=positive, negative, or neutral filters by AI-classified sentiment. |
GET /triggers/new-inmails |
Latest InMails sent (up to 100). |
GET /triggers/new-retargeting-messages |
Latest retargeting messages sent (up to 100). |
All trigger endpoints return up to 100 rows ordered by
occurred_at descending. Consumers dedup by
id; there is no cursor parameter.
Response shape (trigger endpoints)
Every trigger returns a JavaScript Object Notation (JSON) array of
event objects with the same field set. Fields that don't apply to a
given event are null.
| Field | Type and description |
|---|---|
id |
String. Stable unique id for the event. Use as the dedup key. |
occurred_at |
ISO 8601 timestamp with millisecond precision and Z suffix (e.g. 2026-05-12T17:02:31.632Z). |
account_name |
String. The Uptown Tracker account name the key is scoped to. |
prospect_name |
String or null. |
prospect_email |
String or null. |
prospect_phone |
String or null. |
company |
String or null. |
title |
String or null. |
profile_url |
String or null. The prospect's profile URL. |
sales_nav_url |
String or null. |
outbound_message_text |
String or null. On new-responses, the outbound message the prospect is replying to. On new-meetings, the outbound message that prompted the prior response, if one exists for that prospect. Null on all other triggers (the extension logs the act of sending, not the message body, for CRs, first messages, InMails, and retargeting messages). |
response_text |
String or null. Populated on new-responses, and on new-meetings rows where the prospect has a prior logged response. Null on all other triggers. |
sentiment |
One of positive, negative, neutral, or null. AI-classified. Populated on the same triggers as response_text. |
sentiment_detail |
String or null. Optional nuance tag (e.g. wants_meeting, not_right_time). Populated on the same triggers as response_text. |
Errors
Errors return a JSON body of the shape
{ "error": "<code>" }, sometimes with an
additional context field. Status codes:
| Status | Error code | Meaning |
|---|---|---|
401 |
missing_bearer |
No Authorization header, or not in Bearer ... form. |
401 |
invalid_key_format |
Bearer token does not start with up_ or is too short. |
401 |
invalid_or_revoked_key |
Bearer token does not match any active key. |
404 |
unknown_trigger |
Path matches the triggers prefix but the trigger slug is not recognized. |
404 |
not_found |
Path is not a known endpoint. |
405 |
method_not_allowed |
HTTP method other than GET or POST or OPTIONS. |
500 |
internal |
Unhandled server error. Retried automatically by polling consumers like Zapier. |
8.14 - Per-account: Native HubSpot sync
On the same Integrations tab, a separate card lets you connect HubSpot natively - no Zapier in the middle. Outreach events push out to HubSpot in real time as contact upserts, with the fields you choose mapped onto whichever HubSpot contact properties you choose.
Native HubSpot vs. the Zapier path - when to use which
- Use native if HubSpot is your CRM and you want contacts to stay current with every outreach action. Setup takes about two minutes and there's no third-party hop, so latency is on the order of seconds not 15-minute polling windows.
- Use Zapier if you need to route events somewhere besides HubSpot (Salesforce, Slack, a Google Sheet, etc.) or chain actions across multiple tools per event. Native HubSpot is one path; Zapier is the swiss-army-knife alternative.
- You can use both at the same time on the same account - they're independent.
Connecting
- Open the account → Integrations tab. Find the HubSpot Integration card.
- Click Connect HubSpot. You'll be redirected to HubSpot's consent screen.
- Pick which HubSpot account to grant access to and approve the requested scopes (read + write contacts, read contact properties).
- HubSpot bounces you back to the Integrations tab with a "Connected" status pill. Default triggers and a starter field mapping are pre-filled - you can start syncing right away, or tune them first.
Triggers - which events fire a sync
Four checkboxes control which outreach events push to HubSpot. All on by default; uncheck whichever you don't want syncing:
- Connection request sent - a CR you sent.
- First message sent (New Connection) - the first message after acceptance.
- Response received - a prospect replied. Has an inline sentiment filter dropdown so you can fire only on positive responses (or negative, or neutral) if you'd rather keep HubSpot focused on engaged leads.
- Meeting booked - a meeting was scheduled.
- Email address changed - the prospect's email went from missing to known (or got corrected to a different valid one). Especially useful if you have Apollo enrichment turned on: an accepted CR triggers enrichment, and once the email lands a few seconds later, this trigger pushes the email to HubSpot without waiting for the next outreach event. Fires on real changes only, not on the "N/A" sentinel enrichment uses when it can't find one.
Each event upserts the same HubSpot contact (matched by email, then name, else created). A prospect who progresses through all four stages results in one contact updated four times, not four separate contacts.
Contact lookup
When a sync fires, we look up the matching HubSpot contact in this order:
- If we've synced this prospect before, we use the cached HubSpot contact id.
- Otherwise, search by email (if the prospect has one).
- Otherwise, search by first name + last name (if "Also match contacts by name" is on).
- If no match is found, we create a new contact.
Turn the name-match toggle off if your HubSpot has many people with identical names - the email-only path will create new contacts when no email match is found, which is safer than risking false matches.
Field mapping
Each mapping row pairs one HubSpot contact property with one source. A source is either an Uptown field (data from this outreach event) or a static value (a constant string you type once, like setting Lead Source to "LinkedIn").
Default mappings populated on first connect:
- HubSpot
firstname← Prospect First Name - HubSpot
lastname← Prospect Last Name - HubSpot
email← Prospect Email - HubSpot
phone← Prospect Phone - HubSpot
hs_linkedin_url← LinkedIn Profile URL - HubSpot
company← Company - HubSpot
jobtitle← Job Title
Available Uptown fields you can map (any of these to any HubSpot property):
- Identity: Prospect Name (full), Prospect First Name, Prospect Last Name, Prospect Email, Prospect Phone, LinkedIn Profile URL, Sales Navigator URL, Company, Job Title.
- Event metadata: Last Outreach Type ("Connection request sent" / "Messaged (new connection)" / "Response received" / "Meeting booked"), Last Outreach Date, Uptown Account Name.
- Conversation context: Outbound Message Text, Response Text, Response Sentiment, Response Sentiment Detail.
Empty values do not overwrite existing data. If you map "Response Text" to a HubSpot field, a Connection Request event leaves the field alone (it has no response text), and a later Response event populates it. The contact accumulates context as you progress through the funnel.
Want a "synced from Uptown" list in HubSpot?
We don't add contacts to HubSpot Static Lists directly. Instead, build a HubSpot Active List with a rule like "Lead Source equals LinkedIn" (mapping a static value gets you this) or "Last Outreach Type equals Response received". Active Lists rebuild membership automatically, so you don't have to worry about lists going stale.
Status pill
The pill at the top of the card tells you how syncing is going:
- Connected - integration set up, no events synced yet.
- Active - last sync was successful. Hover for the timestamp.
- Last sync failed - the most recent sync errored. Hover for the error message. Common causes: a HubSpot property you mapped was deleted, or the OAuth grant was revoked on HubSpot's side.
Disconnecting
Click Disconnect at the bottom of the connected-state card and confirm. We stop syncing immediately and clear our cache of contact ids. Existing contacts in HubSpot are not deleted - we just stop pushing updates. Reconnect any time to resume; if you reconnect to a different HubSpot account, we'll resolve contacts fresh.
Each Uptown Tracker account connects to one HubSpot portal at a time. You can't have two parallel native-HubSpot integrations on the same account, but you can have a different HubSpot connected per account across your organization.
9.Extension reference (Tracker UI)
Beyond Reply Buddy (covered in section 2), the extension exposes Tracker-specific surfaces for operators running bulk outreach: the toolbar popup, a weekly-connection streak panel, and the Sales Navigator bulk-log bar. This section is the reference for those.
9.1 — The toolbar popup
Clicking the Uptown icon in your Chrome toolbar opens the popup. From here you can:
- Switch between accounts (member: only your assigned ones; admin: all).
- See the streak panel for your current weekly connection-request count + countdown to LinkedIn's Sunday reset.
- Open the Templates drawer to copy a message body.
- Open the Meeting Links drawer to copy a meeting URL.
- Edit Reply Instructions for the current account (also editable inline from the Reply Buddy sidebar - section 2.5).
- Edit Follow-up Cadence and Positive Response Cadence for the current account.
- Click + Add account (admins only) to spin up a new account without leaving the page.
- Click Guides in the header (top-right) to open this page.
9.2 — The streak panel
Sandwiched between the account picker and the drawer stack, the streak panel shows two cells:
- Until Sunday Reset - countdown to LinkedIn's weekly connection-request quota reset (Sunday 7pm Central).
- Connections this week - how many connection requests you've logged for this account since the last reset.
The counter cell color shifts as you progress:
- 0-49 - neutral.
- 50+ - warm amber ("getting there").
- 100+ - green ("on target").
- 200+ - calm teal ("weekly cap hit"). Not celebratory: 200 is a hard ceiling LinkedIn enforces, not a stretch goal.
9.3 — The Tracker bulk-log bar (Sales Navigator)
On Sales Navigator search pages and lead lists, the extension flips into bulk-log mode and shows a Tracker bar at the top of the results area. With one or more leads selected on the page, click an action button to log:
- Connection - connection requests sent.
- Message - Message 1 sends.
- Follow-up - regular follow-up step.
- Positive Follow-up - positive response cadence step.
- InMail - InMail sends.
- Retargeting - retargeting message sends.
- Response - replies, with sentiment selector (positive / neutral / negative).
After picking an action, click Log Outreach. One event per selected lead is written to the dashboard, attributed to your active account. The bar shows a brief confirmation and clears.
On non-list pages (the inbox, a profile page, etc.), the sidebar flips back to Reply Buddy mode instead - see section 2.
9.4 — Follow-ups in the extension
The Follow-ups view in the sidebar mirrors the dashboard tab, but it's always one click away from inside any LinkedIn page. Clicking Open thread on a task opens the LinkedIn DM in a new tab and auto-flips the new tab's sidebar to the Follow-ups view, so the template + recent conversation are already visible when you arrive.
10.Benchmarks & what good looks like
Uptown Tracker's benchmark targets are based on hundreds of cohorts across our client base. They're not aspirational; they're what a clean cadence and a fitted ICP actually produce.
connections accepted ÷ requests sent
responses ÷ messages sent
positives ÷ responses
per month
meetings ÷ positives
The two levers
Every fix lives on one of two levers: targeting (who you're going after) or messaging (what you're saying). The benchmark numbers tell you which lever to pull.
Issue patterns at a glance
These are the patterns we look for during a manual audit. The future AI Analysis feature on the dashboard will surface them automatically; for now, here's the cheat sheet.
Tag 1 — Low Acceptance (Acc < 30%)
Likely cause: targeting or profile problem.
What to try: check headline + photo on your LinkedIn profile, tighten title matching, toggle Posted on LinkedIn → last 30 days, adjust seniority levels in the Connection Requests saved search.
Tag 2 — High Acceptance, Low Response (Acc ≥ 30%, Resp < 20%)
Likely cause: targeting active people, but wrong fit; or weak pattern disrupt; or message reads spammy.
What to try: read 20–30 neutral/negative responses, tag the patterns, exclude bad-fit company/title keywords, change your opener / pattern disrupt, simplify jargon.
Tag 3 — High Acc, High Resp, Low Positive (Pos < 15%)
Likely cause: problem statement isn't impactful; wrong audience priorities.
What to try: tag common no's from 20–30 negative/neutral replies, try a softer CTA to validate the problem statement.
Tag 4 — High everything except Meetings (Mtg low)
Likely cause: not enough urgency, wrong conversion channel, meeting-link problem.
What to try: rewrite problem statement for urgency, switch to a harder CTA, change channel (phone / email), audit your meeting link for broken redirects.
Tag 5 — Low Acc but downstream funnel works
Likely cause: selective audience self-filters at the request step; the funnel works for the people who do accept.
What to try: don't over-optimize acceptance — your ICP is just narrow. Test small profile tweaks; consider increasing volume to compensate.
Tag 6 — Low Acc + Low Resp + High Pos% + Low Mtg
Likely cause: sample size too small; the high positive rate is statistical noise on a tiny denominator.
What to try: fix acceptance first (Tag 1). Don't change messaging until the volume to evaluate it exists.
Tag 7 — Low Acc + High Resp + Low Pos + Low Mtg
Likely cause: few acceptors engage but the offer isn't compelling enough.
What to try: fix acceptance first (Tag 1), then rewrite the problem statement to focus on outcomes.
Tag 8 — High Acc + Low Resp + High Pos + Low Mtg
Likely cause: weak opener — message isn't getting read past the first line.
What to try: rewrite the opening line / pattern disrupt; keep the rest of the message intact; A/B test openers.
Tag 9 — High Acc, Low Resp, Low Pos, High Mtg
Likely cause: data or tracking issue. Statistically unlikely at volume.
What to try: audit your data — verify response logging is happening (check inbox management discipline), verify meeting attribution in the Meeting Links integration. If the data looks right after the audit, treat as Tag 2.
Tag 10 — High Acc, High Resp, Low Pos, High Mtg
Likely cause: the team is converting manually despite a weak positive rate. The closer is doing heroics.
What to try: don't change the conversion approach (it's working). Rewrite the problem statement so the positive rate climbs and meetings come from less heroic effort. Monitor meetings carefully so the rewrite doesn't break what's working.
Audit cadence
- Green (all benchmarks healthy) — audit every 4 weeks.
- Yellow (one or two tags showing) — audit every 2 weeks.
- Red (multiple tags, or one severe) — audit weekly.
- If a benchmark has lagged for >3 weeks since your last change, escalate — that's the signal that the change you made wasn't enough.
11.FAQ & troubleshooting
I just want Reply Buddy. Do I need Sales Navigator, lead lists, cadences?
No. Install the extension, sign in, pick an account, open a LinkedIn chat - that's all Reply Buddy needs. The Sales Navigator setup, lead lists, saved searches, and cadence configuration are for the Tracker side of Uptown (sections 3-7 of this guide) and are optional.
The blurbs Reply Buddy generates don't sound like me. How do I fix that?
Open the Edit reply instructions drawer right below the LinkedIn Response card in the Reply Buddy sidebar (section 2.5). Add specifics: tone, length, signature, default closing, words to avoid. Save. The next blurb the AI drafts will follow the new instructions immediately.
Tip: short, specific instructions beat long vague ones. "Keep responses under 40 words" + "Always sign off with 'Best, Austin'" is more effective than a paragraph of style guidance.
Reply Buddy isn't showing up on a LinkedIn page.
- Look for the navy edge tab on the right side of the screen (Uptown logo icon). Click it to open Reply Buddy.
- If the tab is missing entirely: check that you're signed in via the extension popup, then hard-refresh the LinkedIn tab (Ctrl+Shift+R). Chrome doesn't auto-refresh existing tabs when an extension reloads.
- Reply Buddy only shows a conversation when one is actually open. On the home feed with no chat bubble open, it'll show an "Open a conversation to log a response" empty state - click Message on any profile to populate it.
I'm seeing duplicate prospects in the dashboard.
Uptown auto-merges duplicates within the same client account when
the system has a clean LinkedIn URL to anchor on. If you have two
prospect rows for the same person, it usually means one was logged
with a "dirty" Sales Nav URN URL (the long
/in/ACoAAB... form) and the other with a clean
/in/<slug> URL. The merge fires automatically
the next time the system sees the clean URL for that person.
If you need to resolve manually, the dashboard's prospect view has a merge tool - or contact us and we'll merge from the admin side.
I logged something to the wrong account. How do I fix it?
Open that account's Prospects tab, find the prospect, expand the row, click the pencil on the wrong event, and edit the type or delete it. If you'd already logged it on the right account too, just delete the wrong one.
The tracker bar isn't showing on Sales Nav.
- Check that you're signed in via the popup.
- Check that you've selected an account in the popup.
- Reload the Sales Nav page.
- If still missing: open the popup, sign out and sign back in, reload the page.
I hit my seat cap and need to add an account.
If you're an admin, click + Add new account (in the dashboard or popup). You'll get a Stripe purchase modal that adds a seat and creates the account. If you're a member, ask your admin to buy a seat from the Team page billing card.
How do I cancel my subscription?
Team page → billing card → Manage payment & invoices → Stripe Customer Portal → Cancel subscription. Cancellation takes effect at the end of your current billing period. Your data is preserved.
How do I switch from monthly to annual billing?
Team page → billing card → Switch to annual. The confirm dialog spells out the savings (33% off the monthly rate). Switching mid-period prorates against your next bill.
Calendly bookings aren't auto-logging.
- Check that the Meeting Links row has a green Integrated badge.
- Check that the booking was on the event type you selected during OAuth.
- Auto-attachment is by name match. If your prospect booked under a different name (e.g. nickname, married name) you may need to log the meeting manually from the Prospects tab.
HubSpot bookings aren't auto-logging.
- Check the meeting title actually contains the substring you set during connect.
- Verify HubSpot's webhook subscription is active in the Meeting Links row (it'll show a connected indicator).
- HubSpot's webhook fires on Meeting Created, not on Meeting Updated. Edits to a meeting after creation don't re-fire.
I need to delete a prospect entirely.
Tick the prospect's checkbox in the Prospects tab and click Delete N in the floating bulk bar (works with one or many). Deletion is logged in the audit log on the Team page.
I want to invite a teammate but they already use Uptown Tracker.
Each Uptown Tracker account belongs to one organization at a time. If your teammate is already in another organization, the invite will be rejected with "they're already in another organization." They'll need to leave their current org first (see the next FAQ entry) before they can be invited to yours.
If they have an Uptown Tracker account but aren't in any organization at the moment — for example, they recently left their previous org or an admin removed them — the invite works normally. A pending invite shows on their dashboard the next time they sign in; they Accept or Decline from there.
I want to leave my organization to join a different one (or just on my own).
Each Uptown Tracker account belongs to one organization at a time, so joining a new org means leaving your current one first. The full sequence depends on whether you're an admin and what state your org is in:
If you're a member (not an admin)
Open the Team page and click Leave organization at the bottom. You're out immediately. The org continues with its remaining admins. Once you're out, you can accept any pending invite waiting for you, or click Create organization on your dashboard empty-state to start your own.
If you're an admin and there's at least one other admin
Same as above — clicking Leave organization just drops your membership. The org keeps going with the remaining admin(s).
If you're the only admin
The system protects against orphaning data and stranding members, so leaving is conditional. Step through these in order:
- Hand off your accounts. For each account in your org: archive it (Archive button on the dashboard row), open the archived per-account page, and either delete it, transfer it, or merge it into another account. Transfer is what most "company hires me" flows use — pick a recipient admin email at the new org and the account moves there fully.
- Promote or remove other members. If anyone else is in your org as a member, they need to either be promoted to admin (so an admin remains) or be removed.
- Cancel any active Stripe subscription. Team page → billing card → Manage payment & invoices → cancel. Lets the period close out cleanly.
- Click Leave organization. Once your org has no other members, no accounts, and no active subscription, leaving cleanly deletes the (now-empty) org. You become an unattached Uptown Tracker account.
- Accept the new org's invite (if applicable) from the banner on your dashboard, or click Create organization in the empty-state to start fresh on your own.
If any of those checks fail, the Leave button surfaces a specific message — "you're the only admin, promote a member first" or "this org has 3 accounts that need to be transferred or deleted first" or "cancel your subscription first" — pointing you at the exact next step.
How do I rename my organization?
Open the Team page. Admins see a small ✎ pencil next to the organization name at the top of the page — click it, type the new name, press Enter (or click outside) to save. The change shows up immediately in the Recent Activity log.
How do I delete, transfer, or merge an account's data?
All three actions are admin-only and only available on archived accounts. Archive the account first (Archive button on the main dashboard row), then open the per-account page — a Danger zone panel appears at the bottom of the Summary tab with three options:
- Delete account. Permanently removes the account, every outreach event, and every prospect. To confirm you'll be asked to type the account name. The audit log on the Team page keeps a permanent record (who, when, how many events + prospects) — but the data itself cannot be undone from the dashboard.
- Transfer data. Reassigns the account to a different organization. Type the email of an admin in the receiving organization. The recipient must already have an Uptown Tracker account and be an admin of an organization other than yours; the dashboard tells you exactly which check failed if validation rejects the email. The transferred account stays archived in the new org — the receiving admin unarchives it from their dashboard to start using it. Both organizations see the action in their activity log.
- Merge into another account. Pick an active account in your organization from the dropdown. Every outreach event and prospect from this archived account moves into the target account (the prospect-clustering rules re-cluster them under the target's identity space, so duplicates collapse automatically). When the merge completes, this archived account is deleted.
Transfer is reversible from the dashboard — your platform admin can transfer it back. Delete and Merge can only be undone via a database backup restore (Supabase Pro keeps 7 days of point-in-time recovery). If you delete or merge by mistake, contact us right away — the audit log preserves the action details, and the sooner we restore, the less other-account data we have to re-merge from the backup.
How do I export my data?
Open any account's Prospects tab. Two ways to get data out:
- Export CSV button (top-right of the Prospects toolbar) — exports every prospect currently in view, respecting your timeframe + status + sentiment + search filters. The file includes all the columns shown on screen plus identifiers (LinkedIn ID, profile URL, email).
- Select + copy individual rows — click any prospect to expand its event timeline, then highlight + copy the text you need (e.g., a single message body to paste elsewhere). For bulk copy of a larger selection, the CSV export is faster.
Still stuck? Email support@uptown.com. We respond within a business day.