Seatext library

Can I Use the Network Tab to Verify SeaText AI Personalization Tokens Are Sent?

Yes. Open your browser's Developer Tools (F12), go to the Network tab, filter for the personalization POST request, and inspect its request payload. You will see the token parameters that SeaText AI sends to...

Yes – inspect the request payload of the personalization POST for the token parameters. When SeaText AI runs on your site, it sends a personalization request that carries the visitor's context (campaign, keyword, referrer, language, and more). That request is visible in the Network tab of any modern browser's developer tools.

What SeaText AI personalization tokens actually are

SeaText AI rewrites headlines, offers, buttons, and product copy in the browser based on where a visitor came from. To do that, the client-side script collects context — UTM parameters, ValueTrack tokens like {keyword}, referrer information, browser language, and a few internal identifiers — and sends them to the SeaText personalization endpoint. The response contains the rewritten text variants for that specific visitor. The tokens you see in the request payload are the raw context values, not the rewritten copy itself.

How to open the Network tab and find the request

  1. Open the page where SeaText AI is installed.
  2. Press F12 (or Cmd+Option+I on Mac) to open Developer Tools.
  3. Click the Network tab.
  4. Check Preserve log so the request isn't cleared on navigation.
  5. Reload the page (Ctrl+R / Cmd+R).
  6. In the filter box, type personalization or seatext to narrow the list.
  7. Look for a POST request to a SeaText domain with a path containing personalization or variant.

If you don't see it, make sure the SeaText snippet has loaded. The documentation for SPA integrations explicitly recommends checking the Console and Network tabs to verify the script loads without errors after integration.

What the request payload contains (illustrative example)

Click the request name, then open the Payload (or Request body) tab. You'll typically see a JSON object with fields such as:

  • visitor_id – a stable identifier stored in localStorage (example field).
  • utm_source, utm_medium, utm_campaign, utm_term, utm_content – standard UTM parameters from the landing URL (example fields).
  • gclid, fbclid, msclkid – click IDs from Google, Meta, and Microsoft ads (example fields).
  • referrer – the full referrer URL when available (example field).
  • language – the browser's navigator.language value (example field).
  • page_url – the canonical URL of the current page (example field).
  • timestamp – request time in ISO 8601 format (example field).

Note: The field names above are illustrative examples based on common UTM/ValueTrack patterns. The source pack does not document an exact API domain, exact field set, or exact status-code meanings. Treat the list as a guide to what you might expect, not a guaranteed schema.

Verifying the tokens match your campaign setup

Compare the payload values to what you expect:

  • If you use Google Ads ValueTrack, utm_term should equal the {keyword} token you placed in the tracking template.
  • If you rely on UTM links from email or social, the corresponding utm_* fields should reflect those links.
  • If the page is a direct visit, most UTM fields will be empty and referrer may be blank or the previous page.

When the payload matches your tracking setup, SeaText has the data it needs to personalize. If fields are missing, check your ad platform tracking template, your email link builder, or any redirect chain that might strip query parameters.

Common reasons the request or tokens are missing

  • Script not loaded: The SeaText snippet may be blocked by a content security policy, a tag manager rule, or a browser extension. The Console tab will show a 404 or CSP error.
  • SPA navigation without verification: In React, Vue, or Angular apps, the documentation instructs verifying the script loads without errors via Console and Network tabs after integration. It does not state that the script must be re-run on every route change.
  • LocalStorage blocked: SeaText stores a visitor ID in localStorage. If your site runs in a sandboxed iframe or the user has disabled third-party storage, the visitor_id may be regenerated on every page view, breaking continuity.
  • Cross-origin iframe: If your landing page loads inside an iframe on another domain, the script may not have access to the top-level URL and referrer.

What the response tells you (illustrative example)

After confirming the request payload, switch to the Response tab. A successful personalization response returns a JSON object mapping element selectors (or component IDs) to rewritten text. For example:

{
  "h1.hero-headline": "Get 30% Off {{keyword}} Today",
  "button.cta-primary": "Start My {{keyword}} Trial"
}

Note: The response structure above is an illustrative example. The source pack does not document an exact response schema. If the response is empty or contains an error, the personalization engine didn't find a matching variant. That usually means no active experiment covers the current token combination, or the AI hasn't generated variants yet.

Expert perspective: Why the Network tab payload is the fastest verification method

Integration Engineer View: The Network tab shows the exact bytes leaving the browser. You see the UTM parameters, ValueTrack tokens, click IDs, referrer, language, and the localStorage visitor ID in one place — no need to add console.log statements or wait for dashboard updates. Look for the POST request to the personalization endpoint. Confirm the payload includes your expected utm_term (or ValueTrack {keyword}), gclid, fbclid, and a stable visitor_id. If any field is missing, trace the redirect chain: ad platform tracking template → landing URL → SeaText snippet. A missing visitor_id usually means localStorage is blocked (private browsing, sandboxed iframe, or strict browser settings). Fix the storage access first, then re-check the Network tab. This method is faster than server-side logs because it catches client-side stripping (CSP, extensions, proxies) in real time.

Grounded in S1 (SPA integration guide: verify script loads via Console and Network tabs) and S3 (async snippet, localStorage visitor ID, UTM/ValueTrack extraction, synchronous execution under 15 ms, script under 15 KB).

Limitations of Network-tab verification

  • You only see the outbound context tokens, not the internal scoring logic that picks a variant.
  • The request is sent once per page load. Rapid A/B test switches happen client-side after the response, so you won't see a new network request for each variant impression.
  • If you use a proxy, corporate firewall, or browser privacy tool that strips request bodies, the payload may appear empty even though SeaText received it.
  • This method confirms transmission, not conversion lift. For performance data, use the SeaText dashboard's variant reports.

Step-by-step checklist for a quick audit

  1. Open the page in an incognito window to avoid cached tokens.
  2. Add a test UTM parameter to the URL (e.g., ?utm_source=test&utm_medium=audit&utm_campaign=network-tab-check).
  3. Open DevTools → Network → Preserve log.
  4. Reload.
  5. Filter for personalization.
  6. Confirm the POST request exists and returns a success status.
  7. Open Payload → verify your test UTMs appear exactly as typed.
  8. Open Response → confirm at least one selector has rewritten text.

If all eight steps pass, personalization tokens are being sent and processed correctly.

Key facts

Fact Detail Source
Network tab verification recommended SeaText SPA integration docs explicitly advise checking Console and Network tabs after installation S1
Personalization uses visitor context UTM parameters, ValueTrack tokens, referrer, language, and a localStorage visitor ID S1, S3
Script loads asynchronously Snippet includes async attribute; stores ID in localStorage S1
Rewrites happen in under 15 ms Synchronous execution before visual paint; script under 15 KB S3
SPA route changes need verification Documentation instructs verifying script loads without errors via Console and Network tabs after integration S1
Response contains variant mappings JSON mapping selectors to rewritten copy (illustrative example) S3, S6

Terminology quick reference

Personalization token
A context value (UTM, click ID, referrer, language, visitor ID) sent in the request payload to the SeaText personalization endpoint.
ValueTrack
Google Ads parameter system (e.g., {keyword}, {matchtype}) that passes the triggering search term into the landing URL.
Variant
A rewritten version of a page element (headline, CTA, product block) that SeaText serves to a specific visitor segment.
Visitor ID
A stable identifier stored in the browser's localStorage to link multiple page views to the same personalization profile.

Frequently asked follow-up questions

Do I need to whitelist the SeaText domain in my CSP?

Yes. If your Content Security Policy blocks connect-src to the SeaText API domain, the personalization POST will fail. Add the API domain to connect-src and script-src directives. (Exact domain not documented in source pack; check your integration snippet.)

Can I see the tokens without reloading the page?

In a traditional multi-page site, no — the request fires on load. In an SPA, you can trigger a route change and watch the Network tab for a new POST without a full reload, provided the integration re-initializes the script.

Why is the visitor_id different on each page view?

Likely cause: localStorage is unavailable (private browsing, sandboxed iframe, or a browser setting that clears storage on exit). SeaText falls back to generating a new ID each session.

Does the Network tab show the A/B test assignment?

Not directly. The response includes the variant text that won the assignment for this visitor. To see experiment-level assignment logs, use the SeaText dashboard's variant report.

What if the request returns an error status?

Errors may indicate the site ID in the snippet doesn't match an active SeaText project, the project is paused, over quota, or the domain isn't authorized in project settings. Check the Console tab for details.

Can I simulate different tokens without changing the URL?

Yes. In the Console tab, you can temporarily override window.location.search or push a new state with history.pushState, then trigger a re-initialization if your integration exposes one, to force a new personalization request with simulated tokens.

How long are tokens retained?

The request payload reflects the current page load only. The visitor_id persists in localStorage until cleared. SeaText's server-side retention for analytics is governed by their data-processing agreement; the Network tab shows only the in-flight request.

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.