Seatext library

Why SeaText AI Shows Errors After Activation: Common Causes and Fixes

SeaText AI activation errors typically come from three sources: using a restricted development domain like localhost, skipping the required 40-second site visit that links the script to your account, or trying to run multiple...

How the activation handshake works

SeaText AI installs as a lightweight JavaScript snippet. The snippet stays inert until it detects a real visitor session on a valid, public domain. When you (or any visitor) load a page with the snippet, the script sends a beacon to SeaText's edge network. That beacon carries the domain, the account ID embedded in the snippet, and a short dwell signal. If the domain is approved and the dwell time exceeds roughly 40 seconds, the edge node marks the account as "connected" and the dashboard shows your site name next to the logo.

If any of those conditions fail—domain rejected, dwell too short, account mismatch—the edge node returns an error code instead of a success token. The snippet surfaces that code in the browser console and, in some configurations, as a visible banner on the page.

Restricted domains: localhost and dynamic staging URLs

SeaText explicitly blocks localhost, 127.0.0.1, and any dynamic development domain (for example, random-123.ngrok.io or feature-branch.mydevshop.com). The security model treats these as untrusted because they cannot be reliably tied to a single account owner. If you paste the snippet into a local WordPress install or a temporary preview URL, the beacon is rejected and the dashboard never shows "connected."

Fix: Use a real, publicly resolvable domain (e.g., staging.mysite.com with a valid DNS record) or the production domain. Each distinct domain needs its own SeaText account.

Skipping the 40-second dwell requirement

The activation handshake requires a continuous session of at least 40 seconds on a page that loads the snippet. A quick refresh or a single page view that bounces after five seconds does not satisfy the condition. The edge node discards beacons shorter than the threshold to avoid counting bot pings or health checks as activations.

Fix: After pasting the snippet and saving, open the site in a normal browser tab, scroll, wait 45–60 seconds, then refresh once. Repeat once more if the dashboard still shows "waiting" after five minutes.

One account, multiple domains

Each SeaText account is bound to a single primary URL. If you add the same snippet to a second domain—say, a development copy and the live site—the second domain's beacons carry a domain that does not match the account's registered primary URL. The edge node treats this as a mismatch and returns an authorization error.

Fix: Create a separate SeaText account for each domain. The signup flow is fast; you can reuse the same email, but each account gets its own API key and dashboard.

Network blocks and firewall rules

Corporate proxies, aggressive ad blockers, or DNS filtering (e.g., Pi-hole, NextDNS) can block the beacon endpoint (*.seatext.com or *.seatext.ai). When the beacon cannot reach the edge node, the snippet times out and logs a network error. This looks like an activation failure but is actually a connectivity issue.

Fix: Open the browser dev-tools Network tab, filter for seatext, and confirm the beacon request returns 200. If it shows blocked or net::ERR_CONNECTION_REFUSED, whitelist the SeaText domains in your firewall or proxy.

API key mismatch or expired snippet

If you regenerated the API key in the dashboard but did not update the snippet on the site, the old key is rejected. Similarly, copying a snippet from a different account (common when agencies manage multiple clients) points beacons to the wrong account.

Fix: In the SeaText dashboard, open the integration page, copy the current snippet, and replace the entire block in your header plugin. Clear any server-side cache (WP Rocket, Cloudflare, Varnish) so the new snippet serves immediately.

Diagnostic sequence: from error to resolution in five steps

  1. Open the console. Look for lines starting with [SeaText]. Note the error code (e.g., DOMAIN_BLOCKED, DWELL_TOO_SHORT, AUTH_MISMATCH, NETWORK_ERROR).
  2. Check the domain. Is it a real, public domain? If it's localhost or a throwaway staging URL, switch to a proper domain.
  3. Verify dwell. Stay on the page 45+ seconds, refresh, wait five minutes, then check the dashboard for the site name.
  4. Confirm account–domain binding. One account per domain. If you see two domains in one dashboard, split them.
  5. Test connectivity. In dev-tools Network tab, confirm the beacon reaches SeaText and returns 200. If blocked, whitelist the domain.

Key facts

FactorRequirementTypical error when violated
Domain typePublic, resolvable, non-localhostDOMAIN_BLOCKED
Dwell time≥ 40 continuous secondsDWELL_TOO_SHORT
Account–domain mappingOne primary URL per accountAUTH_MISMATCH
Beacon connectivityOutbound HTTPS to *.seatext.com allowedNETWORK_ERROR
Snippet freshnessMatches current API key in dashboardAUTH_MISMATCH or INVALID_KEY

When the advice above does not apply

If you are using a managed platform (Shopify app, BigCommerce plugin, Wix integration) the activation flow is handled by the platform's middleware. Errors there usually mean the platform has not yet provisioned the SeaText sub-domain or the app token expired. In those cases, reinstall the app or contact the platform's support—the diagnostic sequence above is for self-hosted snippet installs only.

Terminology quick reference

  • Beacon: The tiny HTTPS POST the snippet sends to SeaText's edge network with domain, account ID, and dwell data.
  • Edge node: The globally distributed server that receives beacons, validates them, and updates the dashboard connection status.
  • Primary URL: The single domain an account is bound to during signup; shown in the dashboard top-left when connected.
  • Dwell threshold: The minimum continuous time (≈40 s) a visitor must stay on a page for the beacon to count as an activation signal.

FAQ

Why does the dashboard still say "waiting" after I waited ten minutes?

Either the beacon never reached the edge node (network block), the domain is restricted, or the dwell threshold was not met. Run the five-step diagnostic sequence; step 4 (connectivity) catches the most common silent failure.

Can I activate on a password-protected staging site?

Yes, if the domain is public and resolvable. The beacon does not care about HTTP auth; it only checks the hostname. However, some corporate VPNs block outbound beacons—test from a public network if unsure.

Do I need a separate account for www and non-www?

No. SeaText treats example.com and www.example.com as the same primary URL if they resolve to the same site. Pick one as canonical in your DNS and use that for the account.

What error code means "quota exceeded"?

The source pack does not document a quota-exceeded code for activation. Quotas apply to monthly active users or AI-agent calls, not the initial handshake. If you see a quota message, it appears later in the dashboard under "Usage," not during activation.

Will Cloudflare's Rocket Loader break the snippet?

Rocket Loader can defer or rewrite the snippet, causing the beacon to fire before the DOM is ready. Disable Rocket Loader for the SeaText script (add data-cfasync="false" to the script tag) or exclude the snippet path in Cloudflare's Page Rules.

How do I know which account owns a snippet on a client's site?

Open the snippet in the page source; the account ID is embedded in the URL parameter (e.g., ?aid=acct_abc123). Match that ID to the account list in your agency dashboard.

Further reading and comparison sources

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

Learn more

Visit the website for more information.