AI and no-code builders
Where to paste it in Carrd, Framer, Bolt, Lovable and Base44
These tools all produce a site you cannot edit the server for, so the question is only where the custom code goes and whether your plan allows it. Below is the documented answer for each, the plan you need, and the one platform where you should probably use its own feature instead of ours.
The one that needs saying first
If you are on Framer, it has its own Localization feature with Auto Translate, priced at 20 dollars per locale for up to 20 locales. For two or three languages that is cheaper than us and it is built into the tool you are already paying for. Use it. Our case on Framer is only for sites with many languages or a lot of content, where per-locale pricing adds up.
None of the other four has any localization feature at all, so on those the choice is a third-party script or nothing.
Where the code goes
| Platform | Where custom code goes | Plan needed |
|---|---|---|
| Carrd | Add Element, Embed, Type "Code", Style "Hidden", placement "Body End" | Pro Standard, $19 / year |
| Framer | Project Settings, Custom Code, Add Script. Choose the option that runs on every page visit | Not documented as gated. Check your plan |
| Bolt.new | Code view, edit the files and save, or ask in the chat | No gate documented |
| Lovable | Code mode, edit the HTML entry point, or ask the agent in chat | Editing code needs a paid plan. Free is read-only |
| Base44 | Code tab, edit index.html, then Publish | In-app code edits from Starter upwards |
Read from each platform's own documentation on 21 August 2026. Placement names inside Framer's Custom Code tab are not enumerated in their article, so we are not quoting specific slot names for it.
The snippet
Wherever the platform lets you put custom code, this is what goes in. Body end is the right position when you get a choice.
<script
src="https://welocale.net/widget/latest/loader.js"
data-appkey="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
</script>
Then add the same domain under Website, Settings, Allowed domains in your WeLocale account. The widget refuses to load on domains you have not listed, which is deliberate so nobody else can point your key at their site.
On WordPress there is a plugin instead of this snippet, and the WordPress walkthrough covers it. If you are comparing tools rather than installing one, start with the Weglot comparison since Weglot is the other service that works this way, or check the plans and limits if you already know what you need.
Why these platforms need a widget that handles routing
Four of these five publish a client-side routed application rather than separate HTML documents. Base44 is an explicitly client-side routed Vite app. Bolt's own SEO documentation concedes that crawlers cannot run its JavaScript. Lovable hydrates into client-side React in both its current and older generations. Framer's custom-code panel offers a "run on every page visit" option, which only makes sense because it does client-side transitions.
A widget that scans the DOM once on load will translate the first view and then go quiet as the visitor navigates. Ours watches for client-side navigation, including history pushState and replaceState, and re-scans the new view. That is not a marketing line, it is the reason this works here at all.
Carrd is the exception and the easiest case: one static document, no routing, nothing to re-scan.
Things that will trip you up
- Carrd: the embed shows nothing inside the builder. You have to publish before you can test it.
- Lovable and Base44: saving a code edit does not put it live. Click Publish afterwards.
- Bolt.new: Code view is read-only in Safari. Use the chat prompt on Safari.
- All of them: none publishes a Content Security Policy for hosted sites. A restrictive one would block any third-party script, and we have not tested every platform end to end. If it does not work on your paid plan, tell us and we will look at it rather than leave you to guess.
Free
Try it on a real page
- 10,000 translated words
- 3 languages
- 3,000 source words
- 1 website
- Widget scan (visited pages only)
- Language detection
- Support: community
- No auto-crawl
- WeLocale badge on your site
Starter
Launch your first translated site
- 120,000 translated words
- 10 languages
- 60,000 source words
- 2 websites
- Auto-crawl (depth 2)
- Customizable switcher
- Support: email (48h)
- WeLocale badge on your site
Pro
For serious global teams
- 600,000 translated words
- 20 languages
- 150,000 source words
- 5 websites
- Auto-crawl (depth 3)
- Page-specific translations
- All switcher styles
- SEO hreflang tags
- No badge
- Support: email (24h)
Scale
Large sites and agencies
- 2,000,000 translated words
- 50 languages
- 400,000 source words
- 8 websites
- Auto-crawl (depth 5, 500 pages)
- Page-specific translations
- All switcher styles
- SEO hreflang tags
- No badge
- Support: priority (4h)
Words are bought once. Nothing resets monthly, and editing a page you already translated does not spend your allowance again, so "translated words" means how much translated content you have, not how much you have ever generated.
Questions people ask
Can I add a translation widget to a Carrd site?
Yes, and Carrd is the most straightforward of these. Add Element, then Embed, set Type to Code and Style to Hidden, then choose Body End. Carrd's documentation says script tags containing JavaScript are acceptable there. It needs Pro Standard, which is 19 dollars a year. One thing to expect: the embed renders nothing inside the builder, so you have to publish the site to see it working.
Can I translate a Framer site, and should I?
You can, through Project Settings then Custom Code then Add Script, and you should choose the option that runs on every page visit because Framer does client-side page transitions. But Framer also has its own Localization feature with Auto Translate, priced at 20 dollars per locale for up to 20 locales, and for a small number of languages that is very likely the better buy. We would rather tell you that than sell you something you do not need.
How do I add a script in Bolt.new?
Two documented routes: open Code view and edit the files directly, where saving triggers a rebuild, or simply ask for it in the chat. Bolt's own documentation describes adding third-party analytics code this way. Note their Code view is read-only in Safari, so on Safari use the chat instead.
How do I add a script in Lovable or Base44?
Both are React apps where you edit the HTML entry point, and both need a paid plan for hand-editing code: Lovable's editor is read-only on the free plan, and Base44 includes in-app code edits from its Starter tier upwards. On Lovable you can also just ask the agent in chat. Both require you to click Publish afterwards, because saving the edit does not put it live.
Do these sites work with a runtime translation widget at all?
Four of the five are client-side routed applications, which means a widget that scans the page once on load is not enough. Ours watches for client-side navigation, including history pushState and replaceState, and re-scans the new view, which is why it works on React and Vue sites without an integration. Carrd is the exception: it is a single static document.
Have you tested every one of these platforms yourself?
No, and we are not going to pretend otherwise. The install paths above come from each platform's own documentation. None of them publishes a Content Security Policy for hosted sites, and a restrictive one would block any third-party script, so if you are on a paid plan and it does not work, tell us and we will look at it with you rather than leave you guessing.