Case Study

Agency Guide: Scaling 20+ Sites with SiteLocaleAI

Published September 19, 2026

Agency Guide: Scaling 20+ Sites with SiteLocaleAI

Agency Guide: Scaling 20+ Sites with SiteLocaleAI

Managing a portfolio of twenty‑plus client websites can feel like juggling flaming swords. Each site needs its own language model key, price‑localization rules, and SEO‑ready translations. SiteLocaleAI’s self‑hosted JavaScript library, combined with volume‑licensing options, gives agencies a single, framework‑agnostic solution that scales without blowing up the budget.

1. Choose the Right License

Plan Monthly Cost per Site Recommended For
Indie $5 Solo developers
Starter $49 Small agencies (≤5 sites)
Growth $99 Mid‑size agencies (6‑20 sites)
Enterprise $249 Large agencies (20+ sites)

For an agency handling 20+ sites, the Enterprise plan unlocks bulk API‑key management, priority support, and a discounted per‑site rate. Contact sales for a custom volume‑license agreement if you exceed 50 sites.

2. Centralised Configuration

Create a single site-locale.config.json at the root of your agency’s repository:

{
  "defaultLocale": "en",
  "locales": ["en", "es", "fr", "de", "ja"],
  "priceRounding": {
    "USD": 0.99,
    "EUR": 0.95,
    "JPY": 0
  },
  "clients": {
    "acme-corp": {
      "domain": "acme.example.com",
      "llmKey": "sk-xxxxxxxxxxxxxxxx",
      "currency": "USD"
    },
    "global-shop": {
      "domain": "shop.example.org",
      "llmKey": "sk-yyyyyyyyyyyyyyyy",
      "currency": "EUR"
    }
    // …add as many as you need
  }
}

The file is framework‑agnostic – you can import it from a React app, a Vue component, or a plain HTML page. The clients object lets you store each site’s LLM API key and currency in one place, simplifying onboarding for new customers.

3. Drop‑in Library Integration

Add the library to any site with a single script tag:

<script type="module">
  import { initLocale } from "https://cdn.sitelocaleai.com/v1/locale.js";

  // Load the central config (served from your agency server)
  const config = await fetch("/site-locale.config.json").then(r => r.json());

  // Determine which client we are serving based on hostname
  const host = location.hostname;
  const client = Object.values(config.clients).find(c => host.includes(c.domain));

  if (client) {
    initLocale({
      apiKey: client.llmKey,
      defaultLocale: config.defaultLocale,
      locales: config.locales,
      priceRounding: config.priceRounding,
      currency: client.currency
    });
  }
</script>

Because the library runs entirely in the browser, you never have to ship a Node.js server for each client. The same snippet works on WordPress, Shopify, or any static site generator.

4. SEO‑Friendly Pre‑Rendering with the CLI

Search engines still prefer fully rendered HTML. SiteLocaleAI ships a CLI that crawls your site, translates every page, and writes static HTML files ready for indexing.

# Install the CLI globally (once per agency workstation)
npm i -g @sitelocaleai/cli

# Run a bulk pre‑render for all clients
sitelocale-cli render \
  --config ./site-locale.config.json \
  --output ./pre-rendered \
  --concurrency 5

The --concurrency flag lets you balance speed against API‑rate limits. The CLI respects the priceRounding rules, so a product priced at $19.99 in USD becomes €19.95 in Europe, preserving psychological pricing.

For detailed options, see the official docs: https://sitelocaleai.com/docs/cli.

5. WordPress Plugin for Non‑Tech Clients

Many of your clients may prefer a no‑code solution. The SiteLocaleAI WordPress plugin mirrors the JavaScript library but requires no Node.js on the server.

  1. Upload the plugin zip via the WordPress admin → Plugins → Add New.
  2. Activate and navigate to Settings → SiteLocaleAI.
  3. Paste the client‑specific LLM key and select the supported locales.
  4. Enable “SEO Pre‑Render” – the plugin will generate static HTML on each publish event.

The plugin automatically pulls the global priceRounding rules from the same JSON file if you host it on a public URL.

6. Automating New Client Onboarding

When a new client signs up, you only need to:

# 1. Add their entry to the central config
jq '.clients += {"new-client":{"domain":"new.example.com","llmKey":"sk-zzzzzzzz","currency":"JPY"}}' site-locale.config.json > tmp && mv tmp site-locale.config.json

# 2. Deploy the updated config to your CDN (e.g., Cloudflare Workers)
wrangler publish ./site-locale.config.json

Because the library fetches the config at runtime, the new site instantly gains translation, price localisation, and SEO pre‑rendering without any code change.

7. Monitoring & Cost Control

With volume licensing, you receive a usage dashboard that aggregates token consumption across all client sites. Set alerts for:

  • Token spikes (possible mis‑configuration)
  • API‑rate‑limit warnings
  • Budget thresholds per client

These dashboards are accessible from your Enterprise portal and can be exported as CSV for accounting.

8. Best Practices Checklist

  • ✅ Store LLM keys in a secrets manager (e.g., Vault) and inject them into the JSON at build time.
  • ✅ Keep priceRounding values consistent with local market research.
  • ✅ Run the CLI nightly to capture fresh content and keep search‑engine indexes up‑to‑date.
  • ✅ Test each locale with the built‑in preview (initLocale({preview:true})) before publishing.
  • ✅ Review the SEO audit report generated by the CLI for missing meta tags.

Ready to boost your clients’ global reach? Sign up for an Enterprise license at SiteLocaleAI and start scaling multilingual sites today.