Google Tag Manager (GTM) allows you to manage all your marketing and analytics tags from a single platform. This guide covers how to install GTM on your Carrd site and configure it for optimal tracking.
Prerequisites
Before installing GTM on Carrd, you need:
- A Carrd Pro account (Pro Lite, Pro Standard, or Pro Plus)
- A Google Tag Manager account - Create one free
- A GTM container for your website
- Published Carrd site (GTM only works on published sites)
Note: GTM is not available on free Carrd accounts because it requires custom code via embed elements.
Why Use GTM on Carrd?
Benefits of GTM
- Centralized tag management: Manage all tags (GA4, Meta Pixel, etc.) in one place
- No code deployments: Add/edit/remove tags without republishing your Carrd site
- Performance optimization: Load tags asynchronously and conditionally
- Version control: Roll back changes if something breaks
- Team collaboration: Multiple team members can manage tags
- Advanced tracking: Complex event tracking without custom code in Carrd
When to Use GTM vs. Direct Installation
Use GTM if:
- You need to manage multiple marketing tags (GA4, Meta Pixel, LinkedIn, etc.)
- You want to add/remove tags frequently
- You need advanced tracking (custom events, triggers, variables)
- You work with a marketing team that needs tag access
Use direct installation if:
- You only need one or two simple tags
- You rarely change tracking configuration
- You want minimal complexity
Step 1: Create a GTM Container
- Go to Google Tag Manager
- Click Create Account
- Fill in account details:
- Account Name: Your name or company
- Country: Your location
- Set up container:
- Container Name: Your Carrd site name or domain
- Target Platform: Select Web
- Click Create
- Accept the Terms of Service
Step 2: Get Your GTM Container Code
After creating your container, you'll see installation instructions with two code snippets:
Head Code
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>
<!-- End Google Tag Manager -->
Body Code
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
Copy both code snippets - you'll need them for Carrd.
Step 3: Add GTM to Your Carrd Site
Install Head Code (JavaScript)
- Open your Carrd site in the editor
- Click the + (Controls) button
- Select General > Embed
- Place the embed at the top of your page (very first element)
- Click on the embed element
- Select Code as the embed type
- Paste the GTM head code (the
<script>tag) - (Optional) Add this CSS to hide the embed:
display: none;
- Click Done
Install Body Code (Noscript Fallback)
- Add another Embed element immediately after the first
- Click on this second embed
- Select Code as the embed type
- Paste the GTM body code (the
<noscript>tag) - Add this CSS to ensure it's hidden:
display: none;
- Click Done
- Click Publish to publish your site
Single Embed Method (Alternative)
You can also combine both snippets into one embed:
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>
<!-- End Google Tag Manager -->
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
Replace GTM-XXXXXXX with your actual container ID.
Step 4: Verify GTM Installation
Using GTM Preview Mode
- Go to Google Tag Manager
- Select your container
- Click Preview in the top right
- Enter your published Carrd site URL
- Click Connect
- A new tab will open showing your site with GTM debug panel
- Verify "Container Loaded" message appears
Using Browser Developer Tools
- Open your published Carrd site
- Press F12 to open Developer Tools
- Go to Console tab
- Type:
google_tag_manager - Press Enter
- You should see an object with your GTM container ID
Using Google Tag Assistant
- Install Google Tag Assistant
- Visit your published Carrd site
- Click the Tag Assistant icon
- Verify Google Tag Manager is detected
- Check that container ID is correct
Step 5: Configure Tags in GTM
Now that GTM is installed, configure your tags.
Add Google Analytics 4
- In GTM, click Tags > New
- Click Tag Configuration
- Select Google Analytics: GA4 Configuration
- Enter your GA4 Measurement ID (
G-XXXXXXXXXX) - Click Triggering
- Select All Pages
- Name the tag "GA4 - Configuration"
- Click Save
Add Meta Pixel
- Click Tags > New
- Click Tag Configuration
- Select Custom HTML
- Paste your Meta Pixel base code
- Click Triggering
- Select All Pages
- Name the tag "Meta Pixel - Base Code"
- Click Save
Add Conversion Tracking
- Click Tags > New
- Click Tag Configuration
- Select Google Analytics: GA4 Event
- Set Configuration Tag to your GA4 Configuration tag
- Set Event Name to
generate_lead - Click Triggering
- Click + to create new trigger
- Select Form Submission
- Configure trigger settings
- Name the tag "GA4 - Form Submission"
- Click Save
Step 6: Publish GTM Container
- Click Submit in GTM
- Add Version Name (e.g., "Initial Carrd Setup")
- Add Version Description (optional)
- Click Publish
Your tags are now live on your Carrd site!
Carrd-Specific GTM Configuration
Built-in Variables
Enable these built-in variables for Carrd tracking:
- Go to Variables in GTM
- Click Configure in the Built-In Variables section
- Enable:
- Click Element
- Click Text
- Click URL
- Form Element
- Form Text
- Page URL
- Page Hostname
- Referrer
Custom Variables
Create useful custom variables for Carrd:
Page Type Variable
- Go to Variables > New
- Click Variable Configuration
- Select Constant
- Set value to
landing_pageorportfolioorlink_in_bio - Name it "Page Type"
- Click Save
UTM Parameters
Create variables for each UTM parameter:
- Variables > New
- Variable Configuration > URL
- Component Type: Query
- Query Key:
utm_source - Name: "UTM Source"
- Repeat for
utm_medium,utm_campaign,utm_content,utm_term
Triggers for Carrd
Form Submission Trigger
- Triggers > New
- Trigger Configuration > Form Submission
- This trigger fires on: All Forms
- Name: "All Form Submissions"
- Save
Note: Test thoroughly - Carrd forms redirect quickly, may need sendBeacon in tags.
Outbound Link Click Trigger
- Triggers > New
- Trigger Configuration > Click - All Elements
- This trigger fires on: Some Clicks
- Add condition: Click URL does not contain
\{\{Page Hostname\}\} - Add condition: Click URL starts with
http - Name: "Outbound Links"
- Save
Scroll Depth Trigger
- Triggers > New
- Trigger Configuration > Scroll Depth
- Vertical Scroll Depths: 25, 50, 75, 100
- Name: "Scroll Depth"
- Save
Perfect for Carrd's one-page layout!
Button Click Trigger
- Triggers > New
- Trigger Configuration > Click - All Elements
- This trigger fires on: Some Clicks
- Add condition: Click Classes contains
button - Name: "Button Clicks"
- Save
Data Layer for Carrd
Carrd doesn't have native data layer support, but you can push custom data:
Push Custom Events
Add an embed to push custom events:
<script>
window.dataLayer = window.dataLayer || [];
// Push custom data on page load
dataLayer.push({
'event': 'carrdPageLoad',
'pageType': 'landing_page',
'siteVersion': 'v1.0'
});
</script>
Push Form Submission Data
<script>
document.addEventListener('DOMContentLoaded', function() {
var forms = document.querySelectorAll('form');
forms.forEach(function(form) {
form.addEventListener('submit', function() {
dataLayer.push({
'event': 'formSubmit',
'formId': form.getAttribute('id') || 'contact_form'
});
});
});
});
</script>
Then create a Custom Event trigger in GTM:
- Event name:
formSubmit
Best Practices for Carrd + GTM
1. Performance Optimization
Carrd sites are fast - keep them fast with GTM:
- Async loading: GTM loads asynchronously by default
- Conditional tags: Only load tags when needed
- Tag sequencing: Load critical tags first
- Minimize custom HTML: Use built-in tag templates when possible
2. Tag Organization
Keep your GTM container organized:
- Naming convention: Use "Tool - Action" format (e.g., "GA4 - Page View")
- Folders: Group related tags in folders
- Comments: Add notes to complex tags
- Version descriptions: Document what changed in each version
3. Testing Workflow
Always test before publishing:
- Make changes in GTM
- Click Preview
- Test on published Carrd site
- Verify tags fire correctly
- Check for JavaScript errors
- Submit and publish
4. Form Tracking Considerations
Carrd forms redirect quickly. Use these strategies:
Option 1: Event Callback
In your form submission tag (Custom HTML):
<script>
gtag('event', 'form_submit', {
'event_callback': function() {
// Form can redirect now
},
'event_timeout': 2000
});
</script>
Option 2: SendBeacon
<script>
navigator.sendBeacon('https://www.google-analytics.com/collect', 'payload');
</script>
Option 3: Add Delay
In form submission tag, add slight delay:
<script>
setTimeout(function() {
// Allow time for tag to fire
}, 500);
</script>
Common Use Cases
Landing Page Tracking
Tags to add:
- GA4 Configuration (all pages)
- GA4 Event - Form Submit (form submission trigger)
- GA4 Event - Button Click (button click trigger)
- GA4 Event - Scroll Depth (scroll trigger)
- Meta Pixel - Base Code (all pages)
- Meta Pixel - Lead Event (form submission trigger)
Link-in-Bio Page
Tags to add:
- GA4 Configuration (all pages)
- GA4 Event - Link Click (outbound link trigger)
- GA4 Event - Scroll Depth (scroll trigger)
- Social pixel of choice (Instagram, TikTok, etc.)
Portfolio Site
Tags to add:
- GA4 Configuration (all pages)
- GA4 Event - Project Click (custom trigger)
- GA4 Event - Resume Download (file download trigger)
- GA4 Event - Contact Form (form submission trigger)
- LinkedIn Insight Tag (if relevant)
Troubleshooting
GTM Not Loading
Problem: GTM container doesn't load on Carrd site.
Solutions:
- Verify Carrd Pro: GTM requires a Pro plan
- Check site is published: GTM doesn't work in Carrd preview
- Verify container ID: Ensure
GTM-XXXXXXXis correct - Check embed placement: GTM embed should be first element on page
- Look for JavaScript errors: Open browser console (F12)
- Clear cache: Hard reload (Ctrl+Shift+R)
Tags Not Firing
Problem: GTM loads but tags don't fire.
Solutions:
- Check triggers: Verify trigger conditions are met
- Use Preview mode: Debug with GTM preview
- Check tag type: Ensure correct tag template is used
- Verify IDs: Double-check measurement IDs, pixel IDs, etc.
- Test in incognito: Rule out browser extensions blocking tags
- Check firing order: Some tags depend on others
Form Tracking Not Working
Problem: Form submission tags don't fire on Carrd.
Solutions:
- Use sendBeacon: Carrd forms redirect quickly
- Add event callback: Delay form redirect
- Test timing: Add small delay before redirect
- Check trigger: Form submission trigger may need adjustment
- Use dataLayer push: Manually push form event to dataLayer
Duplicate Events
Problem: Events fire multiple times.
Solutions:
- Remove duplicate tags: Check for tags with same trigger
- Remove direct installation: If using GTM, remove direct GA4/Pixel code
- Check trigger conditions: Ensure triggers aren't overlapping
- Version control: Roll back to previous GTM version
Security and Privacy
Cookie Consent
Implement consent before loading tags:
- Create Consent Initialization tag (Custom HTML):
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'analytics_storage': 'denied',
'ad_storage': 'denied'
});
</script>
Trigger: Consent Initialization - All Pages
- Create Consent Update tag for after user accepts:
<script>
gtag('consent', 'update', {
'analytics_storage': 'granted',
'ad_storage': 'granted'
});
</script>
Trigger: Custom event when user accepts cookies
Data Privacy
- PII protection: Never send email, phone, or names to analytics
- IP anonymization: Enable in GA4 settings
- Data retention: Configure appropriate retention periods
- Privacy policy: Update to reflect GTM and all tags
Advanced Configuration
Custom JavaScript Variables
Create variables for complex logic:
function() {
// Example: Detect mobile device
return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent) ? 'mobile' : 'desktop';
}
Enhanced Ecommerce (Limited on Carrd)
Carrd doesn't have native ecommerce, but you can track external purchases:
<script>
// Track click to external purchase link
document.querySelectorAll('a[href*="gumroad.com"]').forEach(function(link) {
link.addEventListener('click', function() {
dataLayer.push({
'event': 'purchaseIntent',
'productUrl': this.href
});
});
});
</script>
Next Steps
- Configure GA4 Events via GTM
- Set Up Meta Pixel via GTM
- Troubleshoot Tracking Issues
- Optimize Performance