SurroundR 3.0 — the big one 🎉

We've been quiet for a couple of weeks. This is why.
This release touches almost every screen you look at: the extension popup, the panel on LinkedIn profiles, the DM window, and the login page. Plus five new enrichment providers, per-user trials, and a long list of "finally, that's fixed."
Grab a coffee. ☕
✨ Extension 3.0 — a new look, top to bottom
The popup got out of its own box
The toolbar popup is now a single, clean view that fills the whole window instead of squeezing itself into a frame inside a frame. Fewer clicks, less scrolling, no more nesting dolls.

The LinkedIn panel: no more modal pop-ups
The panel that appears on LinkedIn profiles has been rebuilt around one principle: stop interrupting you.
Picking a role is now inline. No modal. Choose the contact's position right there in the panel.
Unlinking is inline too. Instead of a pop-up asking "are you sure?", you get a small confirmation band you can dismiss just as fast.
Additional properties are collapsed by default and stay how you left them after a refresh.
Disabled buttons now tell you why they're disabled. Revolutionary, we know.
The enrich button got friendlier wording and now shows you where each value came from.
The company card lost the Address row (nobody was using it) and gained proper linking with clear error messages when something goes wrong.
![Injection panel with inline role picker]](https://6a1714c75adc5315ee1ec33c.featurebase-attachments.com/c/changelog/6a9fb61d90bbfb02b8965450/01a08027-fe07-7b33-88b4-51c82b0e1ed9/b64u-aW1hZ2UucG5n.png?X-Amz-Expires=3600&X-Amz-Date=20261009T150000Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=DO801TYC4FCVNNEKURKM%2F20261009%2Ffra1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=d0a73c7d00d297a731ef1ef08cfe15c620c7ae7c566292fee76b20910f002331)

DM Window 3.0
SurroundR now lives inside your LinkedIn conversations properly.
Contact controls sit right in the message header — link/add the contact, or change lifecycle and lead status without leaving the chat.
The footer action row was rebranded and cleaned up (sync, open in HubSpot, chirp, templates).

A brand-new login page
Returning users get a "Welcome back" screen with one obvious button, and first-time users get their own clearly marked door to getting started. The right-hand panel now actually explains what SurroundR does, instead of showing a pretty picture.

🐤 Chirpy is better behaved
Chirpy has learned some manners:
You can tell Chirpy to pipe down. Click the X on an onboarding balloon and you get three options: close this one, snooze until tomorrow, or stop onboarding pop-ups entirely. (Weekend snoozes politely resolve to Monday.)
Your walkthrough progress syncs across devices. Finish a step on your laptop, and your desktop knows about it.
No more duplicate balloons showing up on two machines at once.
New extension version? Chirpy tells you — and you apply it in one click instead of restarting Chrome and hoping.
The "trial has ended" wall is gone. It used to be a 700px dialog that hijacked the page. It's now a small Chirpy balloon. Same message, far less shouting.

🔥 Trials and streaks now belong to you
Trials used to sit on the account. If you joined a team whose trial had already run out, you hit the wall before you'd clicked anything. Not exactly a warm welcome.
Now every user gets their own trial: 3 days on activation, plus up to 4 more earned through your First-5 streak (7 days max). Your teammate's streak no longer secretly extends — or ends — yours.
Streaks themselves got a tune-up:
Week 1 now counts from your first login, not from some abstract calendar
First-5 daily rewards actually land
Weekend days are counted correctly
The streak card refreshes right after you enrich, instead of making you wonder
![Streak / gamification card]](https://6a1714c75adc5315ee1ec33c.featurebase-attachments.com/c/changelog/6a9fb61d90bbfb02b8965450/01a08033-f90d-7c62-b4b1-194c9a9949a4/b64u-aW1hZ2UucG5n.png?X-Amz-Expires=3600&X-Amz-Date=20261009T150000Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=DO801TYC4FCVNNEKURKM%2F20261009%2Ffra1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=e187ee9f4598dfbdec5dc77e06fcdc862cfdc3dec6f9593afdf7092520476a91)
🔌 Bring your own enrichment keys
Five new providers you can plug in with your own API key:
Apollo · BetterContact · Dropcontact · Snov · RocketReach
Also on the enrichment side:
Low-balance warnings now arrive once per provider per billing cycle instead of every five minutes
The "Find mobile numbers" setting is finally respected
Raw vendor error codes no longer leak into the UI — you get a message in plain English
Enriching can't spin forever anymore; there's a hard timeout
Running out of provider credits is reported as exactly that

🗂️ Field mapping, upgraded
Choose how each field syncs: overwrite the HubSpot value, or only fill it if it's empty. Per mapping.
Contact avatar sync moved into the field mapping table, where you'd expect to find it.
Company mapping got serious: LinkedIn Handle now maps to HubSpot's standard property out of the box, and we store the LinkedIn company ID and Sales Navigator URL properly, so company matching stops guessing.
The confusing "Default/Custom Mapping" column is gone, and there's a refresh button when you've just changed something in HubSpot.

🖼️ LinkedIn photos on your HubSpot contacts
Contact records no longer look like a witness protection programme. SurroundR can now push LinkedIn profile photos onto HubSpot contacts, with an admin setting to control whether existing photos get overwritten.
👥 Team & account controls
Role management for team members — assign and change roles directly from the team screen.
LinkedIn message autosync can be switched off account-wide, or per individual contact, for the conversations you'd rather keep to yourself.
Billing page now shows the real numbers. Mono and Stereo prices and credit amounts had drifted away from what Stripe actually charges. They match now. (Yes, we're a bit embarrassed.)
Connecting HubSpot no longer asks for consent every single time. Once is enough.
Portal users without super-admin rights can now connect without hitting a wall.

🐛 Bugs, squashed
A selection of things that used to be annoying and no longer are:
LinkedIn's own Message button and messaging dock stopped working when SurroundR was active. Fixed.
The SurroundR bubble on LinkedIn would stall, flash, or vanish when you reopened it. Fixed.
SurroundR didn't show up in LinkedIn message bubbles at all in some layouts. Fixed.
Associated contacts fell off the panel after a refresh. They stay put now.
Unlinking and re-linking a contact or company didn't stick. It does now.
Contacts with accented names (Müller, François, Løvström) weren't being matched in HubSpot. Now they are.
Personal email addresses (gmail, hotmail, …) could sneak into bulk Sales Navigator exports. Blocked.
Invalid company domains derived from LinkedIn profile URLs no longer get written to HubSpot.
Job title now comes through from HubSpot properly.
The "reload the extension" banner only appears when a reload is genuinely required, instead of whenever it felt like it.
Hidden additional properties stay hidden after a page refresh.
The streak counter updates after bulk Sales Navigator enrichment.
Company info injected on LinkedIn company pages now lands in the right place.
The sequence unenroll button was removed — it always failed, so it was more of a decoration than a feature.
Various panel styling fixes: buttons matching the design, text no longer overflowing in narrow layouts, headers behaving when collapsed.
Under the hood
We also did a pile of work you'll never see but will definitely feel: faster HubSpot field loading, more resilient CRM syncing when HubSpot returns odd errors, better error reporting, and a security update to the underlying framework. You're welcome. 🛠️
Spotted something that isn't behaving? Let us know — we read everything.