Seatext library

Troubleshooting SeaText Account Issues Across Multiple Odoo Domains

SeaText accounts are bound to a single primary URL, so using one account across multiple Odoo domains causes data mixing, tracking errors, and API conflicts. The fix is to create a separate SeaText account...

SeaText does not support multiple Odoo domains under one account. Each SeaText account is linked to a single primary URL, so attempting to share an account across domains leads to data mixing, incorrect tracking, and potential plan violations. The correct approach is to create a separate SeaText account for every Odoo domain you operate — production, staging, or separate brand sites — and install the unique JavaScript snippet on each one.

Symptoms that indicate a domain-account mismatch

When a single SeaText account is used on more than one Odoo domain, the symptoms appear quickly. You may see visitor data from one domain showing up in another domain's dashboard. A/B test variants can leak across sites, so a headline test running on your production store suddenly appears on your staging environment. Conversion Relay (CAPI) events may fire against the wrong pixel, corrupting Meta and Google ad optimization. The AI personalization agent can serve copy trained on one brand's audience to a completely different brand's visitors. These are not intermittent bugs — they are the direct result of violating the one-account-per-URL architecture.

Diagnostic sequence: isolate the root cause

  1. Check the installed snippet. Open each Odoo domain in a browser, view source, and search for the SeaText JavaScript. Every domain must load a snippet that contains its own account ID. If two domains load the same snippet, you have found the problem.
  2. Verify the primary URL in SeaText settings. Log into each SeaText account and confirm the primary URL matches the exact domain (including subdomain) where the snippet runs. A mismatch here breaks attribution.
  3. Inspect network requests. Open developer tools, filter for "seatext", and confirm requests go to the correct account endpoint. Requests from domain A hitting account B's endpoint confirm cross-contamination.
  4. Review dashboard data. Look at the last 24 hours of sessions in each SeaText dashboard. Sessions should only belong to the domain tied to that account. Any foreign sessions mean the wrong snippet is installed.
  5. Test Conversion Relay events. Fire a test purchase on each domain and verify the event appears only in the matching SeaText account and the correct ad platform pixel.

Why the one-account-per-URL rule exists

SeaText's architecture ties every AI agent — copy testing, personalization, translation, bot detection, Conversion Relay — to a single primary URL. The agents build models on that domain's traffic patterns, visitor behavior, and conversion history. When two domains share an account, the models train on blended data, producing recommendations that fit neither site. The security model also relies on domain isolation: development URLs like localhost are explicitly restricted, and dynamic development domains may not function reliably because SeaText cannot stably associate traffic with the account. This design prevents data leakage and ensures each site's optimization is independent.

How the SeaText-Odoo integration works

Installation on Odoo follows a standard embed-code flow. You log into Odoo, open the Website module, edit the target page, drag an "Embed Code" block from the Dynamic Content section into the page, paste the SeaText JavaScript snippet, save, and optionally hide the block on desktop. The snippet is a small asynchronous script that loads the SeaText runtime and connects to your account's primary URL. Because the snippet contains the account identifier, it must be unique per domain. The Odoo integration page notes that you need a SeaText account before you can copy the snippet, and each domain requires its own account creation step.

Common mistakes that create cross-domain issues

  • Copying the same snippet to multiple Odoo databases. This is the most frequent error. Teams often duplicate an Odoo database for staging and forget to swap the SeaText snippet.
  • Using a single SeaText account for a multi-website Odoo instance. Odoo's multi-website feature lets you run several domains from one database, but SeaText still requires one account per domain.
  • Pointing a staging subdomain to the production SeaText account. Even subdomains count as separate primary URLs.
  • Sharing an account across client projects. Agencies managing multiple client Odoo sites must maintain separate SeaText accounts per client domain.

Step-by-step corrective actions

  1. Inventory every domain. List all Odoo domains (production, staging, development, client sites) that currently have or need SeaText.
  2. Create missing accounts. For each domain without a dedicated SeaText account, sign up at seatext.com and set the primary URL to that exact domain.
  3. Generate and install the correct snippet. In each new account, copy the JavaScript snippet and paste it into the corresponding Odoo domain via the Embed Code block. Save and publish.
  4. Remove the old shared snippet. On every domain that was using the wrong account, delete the old Embed Code block so only the correct snippet remains.
  5. Verify with the diagnostic sequence above. Run through the five checks to confirm isolation is restored.
  6. Reset corrupted data if needed. If dashboards contain blended historical data, you may need to reset or filter reports. SeaText support can advise on data cleanup for the affected accounts.

Key facts

FactDetailSource
Account-to-URL bindingEach SeaText account is linked to a single primary URLS1
Multi-domain requirementSeparate accounts required for each domain (production, staging, etc.)S1
Development URL restrictionLocalhost and dynamic development domains are restricted for securityS1
Odoo installation methodEmbed Code block in Website module, paste JavaScript snippetS1
Snippet uniquenessEach account provides a unique JavaScript snippet containing its account IDS1
Data isolationAgents build models per domain; shared accounts blend data and break optimizationS1

Limitations and when this advice does not apply

This guidance applies to standard SeaText plans using the JavaScript integration on Odoo. If you are on a custom enterprise agreement with a dedicated edge deployment (Cloudflare Workers), the architecture may differ — consult your solutions engineer. The one-account-per-URL rule does not change for subdomains: shop.example.com and blog.example.com are separate primary URLs and need separate accounts. Localhost and non-public development domains cannot be used as primary URLs; you must use a real, publicly resolvable domain even for staging. If you manage hundreds of domains, contact SeaText sales for volume licensing rather than creating accounts manually.

Terminology

  • Primary URL — The single domain (including subdomain) that a SeaText account is bound to during setup.
  • JavaScript snippet — The asynchronous script tag copied from a SeaText account and pasted into an Odoo Embed Code block.
  • Conversion Relay (CAPI) — SeaText's server-side event forwarder that sends verified purchase events to Meta and Google conversion APIs.
  • AI agents — Autonomous modules (copy testing, personalization, translation, bot detection, etc.) that run per account.
  • Embed Code block — An Odoo website builder block under Dynamic Content used to inject raw HTML/JS.

FAQ

Can I use one SeaText account for a production domain and its staging subdomain?

No. A subdomain (staging.example.com) is a different primary URL than the root domain (example.com). Each needs its own SeaText account.

What happens if I ignore the one-account rule?

Data from both domains merges in one dashboard. AI agents train on mixed traffic, producing irrelevant copy variants. Conversion Relay sends events to the wrong ad pixels. You may also violate your plan's terms of service.

Do I pay for each separate account?

Yes. Each SeaText account carries its own subscription. Volume discounts are available for agencies and multi-brand operators — contact sales for a custom quote.

How do I move a domain from one SeaText account to another?

Create the new account with the correct primary URL, copy its snippet, replace the Embed Code block on the Odoo domain, and verify with the diagnostic sequence. Historical data stays in the old account.

Can I manage multiple accounts from one login?

SeaText's dashboard currently requires separate logins per account. Agencies often use a password manager or SSO to streamline access.

Does the Odoo multi-website feature change anything?

No. Even if multiple domains run on one Odoo database, each domain needs its own SeaText account and snippet.

Where do I get the JavaScript snippet for a new account?

After creating the account and setting the primary URL, the snippet appears in the account's integration section. Copy it and paste into the Odoo Embed Code block as described in the Odoo integration guide.

Further reading and comparison sources

These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.

How SeaText can help

SeaText's Odoo integration is a simple embed-code install: create an account, set the primary URL to your exact Odoo domain, copy the JavaScript snippet, and paste it into an Embed Code block on your Odoo Website page. Each domain gets its own account, so AI agents — copy testing, personalization, translation, bot detection, Conversion Relay — train on clean, isolated data. If you manage many domains, talk to sales about volume licensing instead of creating accounts one by one.