Tenants

Each tenant is a client workspace. Beyond content scoping, the tenant record is the canonical per-client configuration for the agency tooling — SEO platform, ads guardrails, site, social, cadence, and report branding.

ℹ️Admins only

Tenants are a system collection managed by NS Media administrators. Client users can see their own tenant's name but none of the agency configuration below. The automation identity (agency tooling) reads this configuration but cannot change it.

Core Fields

FieldRequiredDescriptionExample
NameYesThe display name of the tenant (client organization).Beside Care
SlugYesURL-friendly identifier, unique across tenants. Also used as the default for the SEO Friendly Name.besidecare
DomainsNoCustom domains associated with this tenant (reserved for future domain-based routing).besidecare.com
Enabled CollectionsNoWhich content collections this tenant can access. Defaults to all.Posts, Events, Galleries

SEO Group

Configuration for the SEO platform (seo-analytics-mcp). When a client is onboarded to SEO services, this group replaces the old per-machine config file as the source of truth.

FieldRequiredDescriptionExample
EnabledNoMaster switch: is this tenant an active SEO client? Defaults to off.On
Friendly NameNoMust match the seo-analytics-mcp property name exactly — snapshots and spend ledgers key on it. Defaults to the slug when left empty; never change it once the SEO platform is live for the client.besidecare
GSC → Site URLNoThe exact Google Search Console property identifier.sc-domain:besidecare.com
GA4 → Property IDsNoNumeric GA4 property IDs (not G-… measurement IDs). One row per property.541675253
GBP → Account / Location IDsNoGoogle Business Profile account and location identifiers.accounts/123…, locations/456…
FeaturesNoMulti-select of SEO platform capabilities enabled for this client (GSC insights, GA4 reporting, rank tracking, audits, keyword research, competitors, geo grid, GBP management, reports).GSC insights, Reports
EnrichmentNoMulti-select of paid/third-party data providers this client has opted into (DataForSEO, Ahrefs, CrUX, Bing, On-Page crawl, Business Data, Backlinks, LLM).DataForSEO, CrUX
BudgetsNoPer-provider USD spend caps (per run / per day / per month) for DataForSEO, LLM, and image generation. Leave blank to use the engine defaults.10 / 25 / 150
Brand TermsNoBranded query terms, used to split brand vs non-brand search. One row per term.beside care
ReportNoInputs for generated client reports: preset (Local or Content), services, keywords, competitors, geo center (lat/lng), and geo keywords.Preset: Local
⚠️Friendly Name is a continuity key

Snapshots, dashboards, and spend ledgers in the SEO platform are keyed on Friendly Name. It must match the seo-analytics-mcp property name exactly, and must not change once set — renaming it orphans the client's history. It defaults to the slug for convenience; verify it before enabling SEO.

Ads Group

Google Ads management configuration and spend guardrails. Everything defaults to off / 0 — the tooling can never spend or change campaigns for a tenant that has not been explicitly configured.

FieldRequiredDescriptionExample
EnabledNoIs Google Ads management on for this tenant? Defaults to off.Off
Customer IDNoThe Google Ads customer ID.123-456-7890
Cap Micros / Cap WindowNoSpend cap in micros (1 USD = 1,000,000 micros) over the cap window (monthly).500000000 / Monthly
FeaturesNoMulti-select: manage budgets, manage campaigns, apply recommendations.Manage budgets
Auto-apply guardrailsNoMax % change a recommendation may auto-apply (0 = never), plus optional absolute (micros) and aggregate (%) caps.0

Site, Social, Cadence, Branding & Webhooks

FieldRequiredDescriptionExample
SiteNoThe client site this tenant deploys: repo, branch (defaults to main), and live base URL.nsmedia-io/example-site
SocialNoSocial identities: Facebook page ID, Instagram user ID, LinkedIn org URN, GBP location IDs.(platform IDs)
CadenceNoAgency operating cadence: strategy (weekly / biweekly / monthly), review (monthly / quarterly), timezone, and an enabled switch. Defaults: weekly, monthly, America/New_York, off.Weekly / Monthly
BrandingNoBranding used in agency-generated reports: agency name, client name, logo, primary and secondary colors (hex).#1F4D5C / #E8B04B
WebhooksNoDeploy-hook configuration for site rebuilds (URL, auth header, custom headers). Visible to admins only.(deploy hook URL)
ℹ️Who can read what

The six agency-config groups (SEO, Ads, Site, Social, Cadence, Branding) are readable by admins and the automation identity, and editable by admins only. The Webhooks group (deploy-hook secrets) stays admin-eyes-only. Anonymous API callers cannot read tenants at all.

Onboarding a Client to the SEO Platform

  1. Open the tenant

    Go to Tenants in the admin sidebar and open the client’s tenant record.

  2. Set the Friendly Name

    In the SEO group, confirm the Friendly Name matches the seo-analytics-mcp property name exactly.

  3. Fill in Google identifiers

    Enter the GSC site URL (sc-domain:… or https://…/) and the numeric GA4 property ID. Add GBP IDs if the client has a Business Profile.

  4. Pick features and enrichment

    Select the platform capabilities and paid data providers this client has opted into. Leave budgets blank for engine defaults.

  5. Add brand terms and report inputs

    Brand terms split brand vs non-brand search. The Report block (preset, services, keywords, competitors, geo) drives generated client reports.

  6. Fill Site, Cadence and Branding

    Set the site repo and base URL, the operating cadence, and the report branding (client name + colors).

  7. Flip Enabled on and save

    Turn on the SEO group’s Enabled switch. The agency tooling picks the tenant up on its next config sync.

Frequently Asked Questions

Do existing tenants need any of this filled in?

No. Every field is optional with safe defaults (everything off, no budgets). A tenant with an empty SEO group is simply not an SEO client.

Why can't I see the SEO or Ads groups?

They are visible to NS Media admins and the automation identity only. Client users never see agency configuration.

What happens if I change the Friendly Name after launch?

The SEO platform treats it as a brand-new property: historical snapshots and spend ledgers stay under the old name. Treat it as immutable once the client is live.

Can the automation identity change this configuration?

No. It reads the configuration to run the tooling, but updates are restricted to human admins — both at the collection level and per-field.