For Squarespace 7.0 (with Developer Mode) and Squarespace 7.1
This guide is created to help developer teams and semi-technical implementers configure their Squarespace site so search engines like Google and Bing can properly discover and index event and place URLs that come dynamically from ITI modules.
? Why This Is Needed
When embedding ITI widgets on your Squarespace website, all content (URLs of events or places) is loaded dynamically via JavaScript from an external API. Because of this:
Search engines might not see or index these links unless they are exposed in a dedicated, crawlable page.
Squarespace automatically adds canonical tags to all pages, which may unintentionally suppress indexing for widget-powered pages if content appears similar across them.
We need to:
Create a dedicated, crawlable page that lists all the dynamic links.
Control canonical tag behavior to prevent search engines from thinking different URLs are “duplicate.”
? What You Will Be Doing (High-Level Summary)
Task | Why It’s Important |
---|---|
Create a new page that lists event/place URLs from the API | So Google/Bing can crawl and index them |
Add a JavaScript pre-rendering script | Helps search engines “see” the dynamic content |
Modify canonical tag behavior (7.0 only) | Avoids search engines skipping similar pages |
Submit URLs in Google Search Console/Bing Webmaster Tools | Ensures they’re reviewed for indexing |
? Step 1: Determine Your Squarespace Version
Your ability to control canonical tags depends on whether you're on version 7.0 or 7.1.
✅ How to Check:
Open your website in a browser.
Right-click > “View Page Source.”
Look for a line containing
?v=7.0
or?v=7.1
.
If 7.0 → You can use Developer Mode to customize templates.
If 7.1 → Canonical tags cannot be changed, but there is a manual workaround.
?️ Step 2: Create a Dedicated Indexing Page (Required for ALL versions)
This page will list all event and place URLs from the API so they are visible to search engine crawlers.
✅ Why this is necessary:
Content inside widgets is dynamic (JavaScript), so Google may not index it unless the URLs are explicitly shown on a crawlable page.
? Steps:
Go to Pages > click + to create a new blank page.
Name it something like
Widget Index Page
(slug:imgoing-page-xml
)Add a Code Block to the page.
Paste this code inside the block (replace
[HubName]
with the one provided by your SaaS team):
<div> <h2>Events</h2> <div id="eventsContainer"></div> <h2>Places</h2> <div id="placesContainer"></div> </div> <script type="text/javascript"> fetch('https://imgoing-prod-api.xyz/api/visitors/[HubName]/ig-links-for-seo') .then(response => response.json()) .then(data => { const eventsContainer = document.getElementById('eventsContainer'); const placesContainer = document.getElementById('placesContainer'); if (data.eventUrls?.length) { data.eventUrls.forEach(url => { const a = document.createElement('a'); a.href = url; a.textContent = url; eventsContainer.appendChild(a); eventsContainer.appendChild(document.createElement('br')); }); } else { eventsContainer.innerHTML = '<p>No event URLs found.</p>'; } if (data.placeUrls?.length) { data.placeUrls.forEach(url => { const a = document.createElement('a'); a.href = url; a.textContent = url; placesContainer.appendChild(a); placesContainer.appendChild(document.createElement('br')); }); } else { placesContainer.innerHTML = '<p>No place URLs found.</p>'; } }) .catch(err => console.error('Error loading API data:', err)); </script>
? This page must remain published and accessible to search engines. Do not password-protect or hide it from the sitemap.
? Step 3: Add the Pre-Rendering Script
To make sure Google/Bing can “see” JavaScript-loaded content, add the official pre-rendering helper script.
Steps:
Go to Settings > Advanced > Code Injection
Paste this in the Header field:
<script src="https://next.imgoingcalendar.com/imgoing-prerender.js?hubName=[HubName]"></script>
Replace [HubName]
with the correct value provided by your SaaS team.
⚙️ Step 4: Configure Canonical Tags (Only for 7.0 with Developer Mode)
Why:
If you embed the same widget on multiple pages (e.g., homepage, /events
, /calendar
), Google may treat these as duplicate pages and index only one. We fix this by removing the canonical tag only from pages that are meant to stand alone.
? Instructions for Squarespace 7.0
Requires Developer Mode enabled and Git access to site templates.
Enable Developer Mode:
Go to Settings > Advanced > Developer Mode and enable it.Export site code via Git.
Open the file that includes your
<head>
(typicallysite.header
).Replace this line:
<link rel="canonical" href="{{ canonicalUrl }}">
with:
{% assign excluded_slugs = "daily-events-calendar,restaurants,things-to-do,parks,museums" | split: "," %} {% unless excluded_slugs contains page.slug %} <link rel="canonical" href="{{ canonicalUrl }}"> {% endunless %}
? Important:
Add slugs for pages where the full widget is embedded.
If your setup does not have a single parent page for places, include the slug of every individual category page (
/parks
,/restaurants
, etc.) where a widget is placed.You do not need to exclude pages like the homepage unless the main parent widget is embedded on another page.
? Testing (7.0)
Open each excluded page in a browser.
Right-click > “View Page Source”.
Confirm that no
<link rel="canonical">
appears for excluded slugs.Confirm that other pages still show canonical tags.
? Squarespace 7.1 Limitations (No Canonical Control)
Squarespace 7.1 does not support Developer Mode, so canonical tags cannot be removed or edited.
What happens:
Squarespace automatically assigns canonical tags to all pages.
If widgets are embedded across multiple similar-looking pages, some may be skipped by Google due to perceived duplication.
✅ Manual Workaround:
Ensure each widget-hosting page has distinct content around the widget (titles, descriptions).
Use Google Search Console’s URL Inspection Tool to manually request indexing of key pages.
Submit URLs via Bing Webmaster Tools.
?️ Step 5: Verify Page Is in Your Sitemap
Go to
https://yourdomain.com/sitemap.xml
Make sure
imgoing-page-xml
or your custom widget page is listed.If not, update and save the page to trigger re-indexing.
? Step 6: Manually Request Indexing (Optional but Recommended)
Google Search Console
Go to Google Search Console
Use the URL Inspection Tool
Paste the full page URL (e.g.,
https://yourdomain.com/imgoing-page-xml
)Click Request Indexing
Bing Webmaster Tools
Go to Bing Webmaster Tools
Use the Submit URL feature
? Manual submission can help pages get crawled faster but does not guarantee indexing.
✅ Summary Table
Step | Description | Required For |
---|---|---|
Create index page for events/places | Makes dynamic URLs crawlable | 7.0 + 7.1 |
Add pre-render script | Helps bots see JS-rendered content | 7.0 + 7.1 |
Modify canonical tags | Prevents duplicate suppression | 7.0 only |
Manual indexing via GSC/BWT | Recommended for key pages | 7.0 + 7.1 |
Unique slugs per widget container | Needed when no parent page exists | 7.0 only |
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article