Squarespace tracking

Squarespace Conversion Tracking: GA4, Google Ads & Meta CAPI

This is for Squarespace site and store owners who advertise on Google or Meta and want conversions they can trust. Squarespace keeps code locked down: tracking has to go through Code Injection, the order confirmation area and a few built-in integrations, each with its own limits. I set those up properly, so orders and leads reach every ad platform once, with the right value.

Squarespace · Ecommerce & lead gen
  • GTM installed through Code Injection, with duplicate pixels removed
  • Commerce purchases sent with order ID and total from the order confirmation page
  • Form block and Scheduling leads tracked as conversions
  • Server-side Meta CAPI and Google Ads enhanced conversions
Quick answer

Proper Squarespace tracking means installing GTM in the site-wide Code Injection header, which needs a paid plan that includes it, firing purchases from the order confirmation injection with Squarespace's order placeholders, tracking form blocks by their success message, and avoiding overlap with Squarespace's built-in Google and Meta integrations. Server-side GTM adds a Conversions API copy.

Tracking flow

How tracking works on Squarespace

The events I set up on Squarespace, and where each one is sent.

Why it breaks

Why Squarespace tracking goes wrong

Code Injection isn't on every plan

Site-wide Code Injection is only available on paid plans that include it. On a trial or a plan without it, GTM and pixels simply can't be added, and people paste code into code blocks that only run on one page.

Built-in integrations double up

Squarespace can connect GA4 and the Meta Pixel natively. If the same IDs are also added through Code Injection or GTM, page views and purchases are sent twice.

Checkout is off limits

You can't add scripts to the Squarespace checkout itself. The only reliable place for purchase data in the browser is the order confirmation (or order status) injection, which needs its own code.

Forms show a message, not a page

A form block usually swaps in a post-submit message on the same page. A thank-you page trigger never fires, and a click trigger counts failed submissions.

Embedded scheduling runs in an iframe

Squarespace Scheduling and other booking tools are often embedded as iframes, so GTM on the page can't see when a booking is completed without extra work.

What I set up

My Squarespace tracking setup

Install & clean-up

  • GTM in the site-wide header and footer Code Injection
  • Audit of built-in integrations, Code Injection and code blocks
  • One sender per event, with duplicates switched off
  • GA4 key events that match your goals
  • Hostname rules so preview and internal traffic stay out

Commerce tracking

  • view_item and add_to_cart events from product pages
  • purchase with order ID, total and currency from the order confirmation injection
  • Google Ads purchase conversion with enhanced conversions
  • Meta Pixel purchase with a shared event ID for CAPI

Lead tracking

  • Form block submissions tracked on the success message
  • Optional redirect to a thank-you page where it makes sense
  • Scheduling or booking confirmations tracked as a separate conversion
  • Click tracking for phone, email and WhatsApp links
  • Hidden fields that keep gclid and UTMs with the submission

Server-side & consent

  • Server-side GTM on Stape or Google Cloud with a tracking subdomain
  • Meta Conversions API for purchases and leads, deduplicated
  • Cookie banner connected to Consent Mode v2
  • Test orders and submissions checked on the live domain
Event map

Events I track on Squarespace

EventWhen it firesSent to
view_item / ViewContentProduct page viewedGA4, Meta Pixel
add_to_cart / AddToCartAdd to cart button clickedGA4, Meta Pixel + CAPI
begin_checkout / InitiateCheckoutCheckout button clicked from the cartGA4, Meta Pixel
purchase / PurchaseOrder confirmation or order status page loadsGA4, Google Ads, Meta Pixel + CAPI
generate_lead / LeadForm block shows its post-submit messageGA4, Google Ads, Meta Pixel + CAPI
book_appointmentBooking confirmed in the scheduling toolGA4, Google Ads, Meta
contact_clickClick on a tel:, mailto: or WhatsApp linkGA4, Google Ads
Process

How the setup works

  1. 01

    Audit

    I check your plan, the built-in integrations, Code Injection and any code blocks, and compare platform numbers with your Squarespace orders and form entries.

  2. 02

    Plan

    We agree on the conversions that matter and decide which events stay with Squarespace's integrations and which move to GTM.

  3. 03

    Build

    I install GTM, add the order confirmation purchase code, set up form and booking tracking, and add server-side GTM for Meta CAPI.

  4. 04

    Test with real orders

    I place a test order and submit each form on the live site, and confirm every conversion arrives once with the right value.

  5. 05

    Hand over

    You get an event map and a note on what to check when you change templates, forms or checkout settings.

Tracking Squarespace Commerce purchases

Squarespace gives you a separate injection area for the page shown after an order, and it supports placeholders such as {orderId} and {orderGrandTotal}. I use that area to push a purchase event to the dataLayer with the order ID, total and currency, and GTM sends it on to GA4, Google Ads and Meta. Newer stores show an order status page instead of the older confirmation page, so I check which one your site uses before writing the code.

The order ID matters. It lets GA4 ignore repeat loads of the page and lets Meta match the browser purchase to the server copy, so the same order isn't counted twice.

Native integrations or GTM?

Squarespace's built-in GA4 and Meta connections are quick and fine for basic reporting. They give you little control over event names, values for leads or server-side delivery. If you need Google Ads conversions, enhanced conversions or a proper Conversions API setup, GTM with a server container is the better base.

Whichever route you choose, it should be one route per platform. Most of the broken Squarespace setups I see have the same pixel running from an integration and from Code Injection at the same time.

FAQ

Squarespace tracking FAQ

How do I add Google Tag Manager to Squarespace?

Paste the GTM head snippet into the site-wide header Code Injection and the noscript snippet into the footer, then save. Code Injection is only available on paid plans that include it, so check your plan first.

How do I track Squarespace purchases in Google Ads?

Add a purchase event to the order confirmation injection using Squarespace's order placeholders for the order ID and total, then fire the Google Ads conversion from GTM on that event. Turn on enhanced conversions for better match rates.

Why do I see duplicate purchases from Squarespace?

Usually the Meta Pixel or GA4 is connected through Squarespace's built-in integration and also installed in Code Injection or GTM. Remove one of them and keep a single sender per platform.

Can Squarespace send Meta Conversions API events?

Squarespace's Meta integration covers the basics, with limited control. For full control over parameters and matching I use server-side GTM on a subdomain of your domain, with a shared event ID so Meta deduplicates against the Pixel.

How do I track Squarespace form submissions?

Track the post-submit message rather than the button click, or set the form to redirect to a thank-you page. I usually prefer the success message method because thank-you pages get revisited and bookmarked.

Guides

Read next

Want your Squarespace tracking fixed?

Get a free audit of your tracking and ad account. Usually replies within 1–2 hours.