# Client site tech stack console for agency account managers

> See the live technology behind every client site you manage, spot the gaps worth pitching, and send the shortlist straight to the client's Slack channel.

- Workflow type: app
- Services: BuiltWith, Google Sheets, Slack Bot
- Categories: Marketing, Operations
- Published: 2026-08-16

## What it does

- Pulls your client roster from the Google Sheet you already keep, then looks up the live technology behind every client website in one pass instead of one lookup at a time.
- Flags the gaps that matter to a retainer as coloured badges: no analytics, no tag manager or consent tool, an ageing content system, no email or marketing automation, and no conversion tracking on an ecommerce site.
- Shows when each tool first appeared on a client site and when it was last seen, so you can spot a client quietly adding something another agency sold them.
- Suggests technologies each site should adopt and shows how widely used each suggestion really is, so your account manager can tell a real pitch from a fringe tool.
- Lets the account manager tick the recommendations worth pitching and post that shortlist into the client's Slack channel, so the upsell conversation starts from evidence.

## What you'll need

- A BuiltWith account with API access for the stack and recommendation lookups
- A Google Sheet listing your clients, with a website address for each one
- A Slack workspace where each client has their own channel
- A column in the sheet naming the Slack channel for each client (or you can pick the channel by hand when sending)

## Prompt

Build me an internal console for my web agency where our account managers can see the technology behind every client site we manage. Today they re-run these lookups by hand the night before each quarterly review, and I want that ritual replaced by a screen that is always ready. There is no schedule and no trigger: a person opens this app and works in it.

Roster view (the landing page). Read our client roster from a Google Sheet using Get Values. The sheet has one row per client with the client name, their website address, the Slack channel we use with them, the retainer tier, and the account manager who owns the relationship. Let me set the spreadsheet id and range in settings and remember them. Render the roster as a table with one row per client showing client name, domain, retainer tier, owning account manager, the count of technologies detected, and the gap badges described below. Let the account manager filter the roster to just their own clients and search by client name or domain.

Stack refresh. A Refresh stack button on the roster view expands every client row into that domain's live technology profile using the BuiltWith Domain API Lookup. Important: the Domain API accepts up to 16 comma-separated domains in a single request and charges one credit per domain returned, so batch the roster into groups of 16 rather than firing one call per client. Store the returned profile per client so reopening the console does not re-spend credits, and show when the roster was last refreshed. Include a NOPII option in settings that strips personally identifiable information from the response, for agencies that would rather not pull personal data into an internal tool.

Gap badges. On each roster row, show coloured badges for the gaps that matter to our retainers, computed from the detected technology categories: no analytics, no tag manager or consent tool, an ageing content management system, no email or marketing automation, and no conversion tracking on a site that is running ecommerce. Use a clear colour scale so a red badge reads as a real gap and a neutral badge reads as informational, and let me hover a badge to see exactly which detection (or absence of one) triggered it. Ageing CMS should be judged from how long the CMS has been in place and whether the detected version or product is behind, so explain the reasoning in the tooltip rather than just asserting it.

Client detail view. Clicking a roster row opens that client's page with the full current stack grouped by category (analytics, CMS, ecommerce, advertising, hosting, javascript libraries and so on), each entry showing when it was first detected and when it was last detected. The Domain API returns these timestamps as epoch milliseconds (FirstIndexed, LastIndexed, FirstDetected, LastDetected), so format them as readable dates and add a relative hint such as added 3 months ago. Sort so the most recently added technologies float to the top, because a tool that appeared since our last review is exactly the signal an account manager needs: it usually means another agency sold the client something. Also show the company detail from the Domain API Meta block (company name, address, phone, social profiles) alongside the stack, respecting the NOPII setting.

Recommendations panel. On the client detail page, show technologies this site should consider adopting using the BuiltWith Recommendations API Lookup. The Recommendations API accepts root domains only, so normalise the sheet value before lookup: strip any protocol, path, and subdomain so shop.clientname.com is looked up as clientname.com. For each recommendation, pull adoption context from the BuiltWith Trends API so the account manager can see how widely adopted the technology actually is across the index and tell a real pitch from a fringe tool. The Trends API is free of credit charge, so this panel can refresh freely and does not need caching for cost reasons. Show each recommendation with its category, the adoption figure, and a simple read such as widely adopted or niche.

Pitch shortlist to Slack. Let the account manager tick the recommendations worth pitching for that client, optionally add a sentence of their own framing, and preview the message. Sending posts the shortlist into that client's Slack channel using the Slack Bot Send a Message action, with the channel taken from the client's row in the sheet and overridable in the UI. Format the message so it opens with the client name, lists each ticked recommendation with its adoption context and the gap it addresses, and reads as evidence rather than opinion. Nothing is ever posted automatically: sending is always a deliberate click. Record which recommendations were pitched and when, and show that history on the client detail page so the next quarterly review does not repeat a pitch the client already declined.

Persistence and per-user behaviour. Save the last fetched stack profile per client, the pitch history, any notes an account manager writes on a client, and the roster filter each user last used. The sheet stays the source of truth for which clients exist, so a client added to the sheet appears on the next roster load without any setup in the app.

## How to customize

- Change which gaps raise a badge, or add your own house rules such as flagging any site with no live chat or no accessibility tool
- Point it at a different sheet or tab, and add columns like retainer tier or account manager so the roster can be filtered by owner
- Reword the Slack shortlist message so it reads the way your team actually pitches, or send it as a direct message for internal review first

## FAQ

### Do I need a paid BuiltWith plan?

Yes. Reading the full technology profile for a client site and getting recommendations both need a paid plan. The adoption context that shows how widely used a suggested tool is comes at no extra charge, so that panel can be refreshed as often as you like.

### Will opening the console burn through my lookup allowance?

No. The roster refresh batches up to sixteen client sites into a single lookup rather than firing one request per client, and it only refreshes when you ask it to. Day to day you are reading the last saved result.

### What if a client's address in my sheet is something like shop.clientname.com?

The console trims it back to the root domain before asking for recommendations, because recommendations are only offered at the root domain level. The stack lookup itself still works on the address as written.

### Can I keep client personal contact details out of the console?

Yes. There is a setting that strips personal data from the company details panel, so you get the company name and site information without pulling contact details into your internal tool.

### Does anything get posted to Slack automatically?

No. Nothing is sent until an account manager ticks the recommendations they want to pitch and presses send. You see a preview of the message before it goes to the client channel.

Use this prompt in General Input: https://www.generalinput.com/prompts/client-site-tech-stack-console-for-agency-account-managers