Ask a Houston industrial group how many websites it runs and you get a shrug and a number between three and nine. Ask why, and the answer is never about marketing. It is about which entity signs the contract, which one carries the insurance, and which one the lawyer said had to stay separate.
One kind of domain portfolio shows up over and over on the east side of this county and along the corridors west of it. A fabrication company with its own site. A field services company with a different name, a different phone number and a different site, because the crews go onto customer property and the liability sits somewhere else. An equipment rental arm, incorporated separately because the assets are financed. Often a sales entity for international business, because export contracting is easier through a company set up for it.
Nobody chose that as a content strategy. It is an org chart with DNS records attached, and it produces a reporting problem no single-site tool was designed for: the entities have to stay distinct, because they really are distinct businesses, and one person has to see across all of them, because there is exactly one person doing this work.
The domain list is an org chart, not a content plan
The distinction changes what good reporting looks like. If five domains exist because someone read that microsites rank well, the advice is to consolidate. If five exist because there are five corporations, consolidation is not on the table. The structure was built for reasons — indemnity, bonding capacity, financing, a joint venture holding a slice of one entity — and those reasons outrank any argument about domain authority.
So the working assumption has to be: the portfolio is fixed. What can change is how it is read.
Separate because the business is separate
Different entity, different customers, different contracts. The site serves a company that exists.
- Fabrication, field services, rental, export sales
- Distinct insurance, bonding and tax treatment
- Consolidation would create a legal problem
Separate because of an old decision
A domain bought for a campaign, a brand from an acquisition nobody retired, a site a former partner built.
- No entity behind it, or an entity that is dormant
- Usually competing with a live site
- These are the ones worth merging
Telling the two apart is the first hour of work, and it is bookkeeping rather than search expertise: pull the entity list from whoever handles the filings, set the domains beside it, find the rows with no partner. Those orphans are where consolidation belongs. Everything else stays, and stays labeled.
The person with the login sits in operations
In a group this size there is no marketing department. The login belongs to a project coordinator, an estimator, an office manager who inherited it, or the owner's daughter who is good with computers and also runs payroll. Their title has nothing to do with search and their calendar is not their own.
That fact governs how the tooling has to behave. An estimator's week is interrupt-driven by design: a bid due Thursday, a change order Tuesday morning, a crew short a certification, a quote wanted on equipment currently sitting on another job. Search work is important and never urgent, so it is the first thing displaced and the last thing resumed.
Then there is turnaround season. When a refinery or chemical plant takes a unit down, the contractors serving it stop doing anything else, and everything unconnected to that outage goes untouched for a month. Not deprioritized — untouched.
Stream: one written feed, and the assistant inside it
The answer to the three-week problem is that the work must leave a written trail on its own, without anyone remembering to write it. In the My SEO area of the Semalt panel that trail is called Stream, and it runs chronologically per project: AI answers, automatic reports, newly placed backlinks with the donor's domain rating and traffic, to-dos and campaign news, in the order things happened.
The design decision worth noticing is that it is one stream rather than five screens, and that entries are records, not notifications that expire.
- Events arrive whether or not anyone is present. Background workers keep the data synchronized, so the feed accumulates during the weeks nobody logs in. Nothing has to be triggered by a person for the record to exist.
- Questions and answers stay in the record. An answer you got in March is still readable in June, next to the campaign events that surrounded it. This is the part that ordinary chat tools throw away.
- Reading order is chronological, not by importance. Which sounds like a weakness and is the opposite. Importance is judged later; sequence is a fact, and sequence is what lets you reconstruct an absence.
It also makes the work visible to someone else: an owner or a controller can read the feed without a walkthrough, which matters when whoever holds the login leaves.
The chat inside Stream is not a general-purpose model with your domain name pasted into the prompt. It is wired to the project's real data, and the wiring explains both the quality of the answers and their limits.
Per question, a router model decides which data blocks are relevant and loads them — Search Console, SERP, campaign or custom — between zero and three of them. A question about last month's click trend pulls Search Console. A question about who else ranks for a term pulls SERP. A question about what the panel costs pulls nothing, because no project data is needed.
Answers stream token by token, and up to twenty messages of history are retained — enough to hold a real line of questioning: ask about a drop, ask which pages, ask whether the same thing hit the sister site, without restating context each time. Keyword and URL lists are accepted in bulk, which for an equipment catalog spread across two domains is the difference between a paste and an afternoon.
Filters, to-do states and full-text search
A feed that only accumulates becomes an archive nobody opens. What makes it usable after an absence is the ability to cut it four ways and search it.
| Filter | Shows | Used for | Typical question it answers |
|---|---|---|---|
| All | Everything, chronological | Catching up after an absence | What happened during the outage |
| Links | Backlink placements with donor data | Verifying what was built | Which donors, at what domain rating |
| Files | Generated reports and exports | Retrieving a document | Where is April's report to the owner |
| To-do | Open and closed action items | Resuming work | What was I in the middle of |
To-dos carry three states, and the third is the useful one. Active is live work. Dismissed was considered and rejected. Deferred is legitimate but not now — the honest state for most search work during a turnaround, and the one a done/not-done checklist cannot express.
Full-text search over every message closes the loop. Six weeks later, nobody remembers whether the discussion about the rental site's duplicate specification pages happened in the feed, in an email or in a hallway. Searching for the model number settles it in seconds.
One account, several entities, and tags that match the org chart
Multi-tenancy sounds like an enterprise word until you have four corporations and one coordinator. It means three things: Google accounts can be linked into groups, so properties verified under different Gmail addresses — as they always are here — appear in one workspace; individual sites can be shared with specific email addresses; and that sharing can be revoked.
Revocation is the underrated half. Portfolios like this accumulate access the way a job site accumulates extension cords: the designer who built the rental site in 2019, an intern from two summers ago, a joint venture partner who asked for one entity and was handed the login. Per-site sharing means that partner sees one property, and when the venture ends, so does the access.
Who owns it
One tag per legal entity, named from the filings rather than the truck.
- Keeps reporting aligned with the books
- Survives rebrands, because the entity does not change
- Makes "which company earned this" answerable
What it sells
One tag per service line — fabrication, turnaround support, rentals, export — applied across entity boundaries.
- Shows demand for a capability whoever invoices it
- Catches two entities competing for the same term
- Answers the question an owner actually asks
Site tags act as a global filter, so one selection reshapes every dashboard at once. The temptation is a hierarchy — entity, then division, then service, then region — and it is a mistake. Deep structures require the person filtering to remember the tree, and that person last opened this in June. A site tagged with its entity and two service lines is reachable from either direction; a site four levels down is reachable only by someone who remembers the path.
Reporting: distinct entities, one reader
Reporting in a group has two audiences with incompatible needs. The owner wants one page across everything, because he thinks of it as one business he happens to have incorporated four times. The controller wants the entities apart, because costs are booked to entities. Both are right, and tags let one data set answer both.
| Output | Ceiling | What it is | Goes to |
|---|---|---|---|
| CSV | 10,000 rows | Working data to sort and pivot | The bookkeeper, the controller |
| JSON | 10,000 rows | Working data for another system | Whoever maintains the site |
| 250 rows | A branded document, rendered server-side | Owner, bank, JV partner | |
| On-screen tables | 50–200 rows a page | Sortable, filterable working view | Nobody but you |
Choosing wrongly is the most common way a reporting routine becomes a chore. The PDF carries your logo and colors, which is why it is the one that leaves the building.
The configurable report builder reconciles the two audiences. One configuration filtered by entity tag produces four documents that keep the companies distinct; the same configuration with the filter cleared produces the group view. Nothing is maintained twice.
- Time series and metric cards carry the shape of a trend, which is what a non-specialist reader retains from a report.
- Sortable, filterable tables at 50 to 200 rows a page are for the person doing the work, not the person receiving the document.
- Sparklines put direction next to a number, so a table of keywords stops being a snapshot and starts showing movement.
- Country and device heatmaps matter more here than in most markets, because a real share of serious inquiry to an export entity or a freight forwarder begins abroad.
Two tiers, applied unevenly across a group
Campaign automation is priced per domain, which for a holding structure is the right shape. A group rarely wants equal investment on every entity: fabrication competes for national specification searches, field services inside a fifty-mile radius, and the export company against whoever a procurement office abroad finds first. Three jobs, three budgets.
AutoSEO — the tier for entities nobody has time for
Priced per domain, which for a group means it can be applied to the two entities that sell and skipped on the holding company.
- Candidates arrive rather than being hunted. Keyword discovery and prioritization run on their own, and each candidate is approved, rejected or deferred individually — the same three states as the to-do list, reviewable between calls.
- Link building continues during a turnaround. Placements are made automatically and land in the feed with donor detail, so the record exists even when nobody read it that month.
- On-site suggestions and live chat alongside the full Search Console and SERP view sets.
FullSEO — for the entity that carries the revenue
Most groups do not buy this for every domain. They buy it for one and let the rest run on the lower tier.
- Manual keyword selection with automatic fallback, so a list built by someone who knows the trade does not stall when it runs thin.
- Manual placement against domain rating targets, rather than accepting whatever the automation finds first.
- Human review before on-site changes ship, which matters when the copy describes certifications and safety standards nobody may paraphrase.
- Specialists, developers and writers working alongside the automation.
Common questions
We have four companies. Do we need four subscriptions?
Subscriptions are priced per domain, so it depends on which domains you want campaigns running on, not on how many entities exist. The workspace holds all of them either way, so analytics, the feed and reporting cover the whole portfolio while paid campaigns run only where you chose.
Our sites were set up by four different people with four different Google accounts. Is that a problem?
It is the normal starting condition and what account linking is for. Google accounts can be grouped so properties verified under different addresses appear together, and one OAuth consent flow covers Gmail, Search Console and Analytics rather than three authorizations.
A joint venture partner wants to see the numbers for one of our sites. Can we do that safely?
Yes. Sharing works per site to a specific email address, so the partner sees that property and nothing else, and access can be revoked later without disturbing the rest of the account. That is a different arrangement from handing over the login, which cannot be undone cleanly.
Nobody will touch this for a month during our next outage. Does the campaign stop?
No. Background workers keep syncing, campaigns keep running, and everything lands in the feed in order. What waits is the human part — approving candidates, acting on to-dos, deciding what to publish. Those queue rather than expire, which is why the deferred state exists.
How should we tag sites if two entities sell the same service?
Tag both with the service line and each with its own entity. That is exactly the case flat tagging handles well: filtering by service line shows that two of your own companies are competing for the same queries — a conversation the owner needs to have, and one a nested structure hides in separate branches.
A week in practice, and where the automation stops
A realistic week looks less like a routine than like a series of gaps. Monday, twenty minutes before the bid meeting: feed filtered to All, read what accumulated over the weekend, mark two items deferred. Wednesday, waiting on a callback: Links filter, check the three placements on the fabrication site, note the donor ratings. Thursday, after a customer asks why a competitor keeps showing up: ask the assistant, get an answer built from the SERP block, follow up twice in the same conversation. Friday: PDF for the owner filtered by entity tag, full CSV for the controller. Well under two hours. Then the plant calls, and none of it happens again for three weeks — and the feed holds.
What the automation does not do is worth stating plainly. It will not tell you which entity deserves the budget — that is a question about margin and backlog, and none of that lives in Search Console. It will not diagnose why something moved; it shows that it moved, and someone who knows whether a customer was acquired or a plant shut down supplies the cause. It will not set the goal. And it will not have the conversation with the owner, the partner or the bank, where the numbers are the easy part.
Those four things — prioritization, cause-finding, goal-setting and client communication — remain human work, which is why the login sitting with an operations person is an advantage rather than a compromise. An estimator knows what a job is worth. No panel does. If you want the rest of it in one place instead of four spreadsheets, open a workspace and link the first domain, then add the others once the first one is behaving. The campaign tiers and the underlying analytics views are documented in full for whoever has to justify the line item, and how we set this up for multi-entity groups here is described across our service pages and in the case notes on the blog.