Framer Integration
Framer supports custom code injection on all paid plans, which is all SEOJuice needs.
Installation
- Open your Framer project and click Site Settings (gear icon)
- Go to the General tab and scroll to Custom Code
- In the End of
<body>tag section, paste the SEOJuice script:
<script type="text/javascript" src="https://cdn.seojuice.io/suggestions.v1.js" defer></script><noscript><img src="https://smart.seojuice.io/pixel" width="1" height="1" alt="" style="display:none"></noscript>- Click Save and Publish your site
- Add your website in the SEOJuice dashboard
SEOJuice will begin crawling your site within minutes.
Framer-Specific Considerations
Client-Side Navigation
Framer uses client-side routing for page transitions. SEOJuice detects navigation changes automatically via history.pushState and re-applies optimizations on each page transition.
CMS Collection Pages
The script loads on every page, so SEOJuice works on Framer CMS blog posts and dynamic pages the same as static ones.
Custom Domain
Make sure you’ve added your custom domain (not the .framer.app subdomain) in the SEOJuice dashboard. If you’re testing before connecting a domain, you can add the .framer.app URL and switch it later.
Page-Level Custom Code
Framer also allows adding custom code to individual pages via Page Settings → Custom Code. Use the site-wide method above instead — it applies to all pages automatically.
What SEOJuice Can Optimize on Framer
| Feature | Works? | Notes |
|---|---|---|
| Internal links | Yes | Injected via JavaScript |
| Meta descriptions | Yes | For pages missing them |
| Image alt text | Yes | AI-generated alternatives |
| Accessibility fixes | Yes | ARIA labels, focus management, skip nav |
| Structured data | Yes | JSON-LD injected at runtime |
| Open Graph tags | Yes | For social sharing |
Verify Your Integration
- Visit your published Framer site (not the editor preview)
- Open browser DevTools (F12)
- Go to the Network tab, reload, and filter for
seojuice - You should see
suggestions.v1.jsloading with a 200 status
For troubleshooting, see Integration Verification.