
The Ultimate 2025 MakeShop Conversion Tracking Blueprint
Updated: June 29, 2025 at 06:04 AM
Introduction: Why Your MakeShop Tracking Is Failing
Let me paint the picture — you’re running ads across Google, Meta, TikTok, Pinterest, and even Microsoft Ads. Your campaigns look good on paper. Sales are happening in your MakeShop admin panel. But when you open GA4? Zero. Meta says you’ve got 11 conversions. TikTok? Still nothing.
This isn’t just frustrating — it’s dangerous. You’re optimizing on fake numbers, scaling campaigns on broken data, and wasting precious budget.
I’ve seen this again and again with MakeShop clients. The store is working. The ads are working. But the tracking setup? It’s stuck in 2018.
This guide is not theory. It’s the exact process I use to rebuild tracking for real MakeShop stores. Using Google Tag Manager, server-side tagging, and a clean dataLayer, we can finally track every click, every conversion, and every dollar of ROAS — the way it should be.
Section 1: What’s Broken by Default in MakeShop
Here’s what I find in 90% of MakeShop stores I audit:
- No native support for Google Tag Manager (GTM), GA4, or Enhanced Ecommerce.
- dataLayer is missing or poorly structured — events like purchase, add_to_cart, or view_item are either absent or misfired.
- event_id and user_data are not implemented — breaking server-side deduplication.
- Meta Pixel often installed twice or inline, causing double-firing and inflated results.
- TikTok, Pinterest, and Microsoft Ads tracking not set up at all.
- No Consent Mode v2 setup — leads to lost signals from EU/CCPA/iOS devices.
- No server-side tagging — meaning 30–50% of user data is lost to browser blockers.
- Product-level data often missing: no item_id, price, currency, or user identifiers.
- Checkout pages lack transaction_id, value, and key parameters for ad platforms.
Example of broken or missing dataLayer:
<!-- Common issues in MakeShop -->
<!-- No transaction_id, ecommerce object, or user_data -->
<script>
// Broken: nothing is pushed to dataLayer
// Makes event triggers and conversion tracking impossible
</script>
What should be there instead:
<script>
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "MKSHP-001",
value: 75.00,
currency: "USD",
items: [
{
item_id: "SKU123",
item_name: "Canvas Hoodie",
price: 75.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]",
phone_number: "+15559876543",
client_ip_address: "192.0.2.1",
user_agent: navigator.userAgent
},
event_id: "mkshp-purchase-001"
});
</script>
Without proper dataLayer structure, your entire analytics stack is blind — and ad platforms can’t optimize, retarget, or report properly.
Here’s what I find in 90% of MakeShop stores I audit:
- No support for Google Tag Manager (GTM), GA4, or Enhanced Ecommerce.
- dataLayer is either missing or poorly structured.
- Key events like add_to_cart or purchase don’t fire — or they fire incorrectly.
- Meta Pixel is embedded multiple times, causing double-firing and inflated events.
- TikTok, Pinterest, Microsoft Ads tags are entirely missing.
- No Consent Mode v2 support — means data loss from EU/CCPA/iOS visitors.
- No server-side tagging to recover lost browser signals.
- Missing product data: no item_id, no value, no currency, no user info.
Example of broken or missing dataLayer:
<!-- This is often missing -->
<!-- No transaction_id, no ecommerce object, no value -->
<script>
// Nothing is pushed here
</script>
Section 2: Your 2025 MakeShop Tracking Stack (What You Actually Need)
To track accurately and scale profitably across every platform in 2025, your MakeShop stack must go far beyond basic pixel drops. You need a clean, consent-aware, server-supported architecture that fires reliable events every step of the funnel.
My ideal MakeShop stack includes:
- GTM Web + GTM Server Container on a custom domain like track.yoursite.com
- Google Analytics 4 (GA4) with Enhanced Ecommerce and custom dataLayer for every step
- Google Ads with Enhanced Conversions + Server-Side tagging via GTM Server
- Meta Pixel + Conversions API (CAPI) with deduplicated event_id
- TikTok Pixel + Events API with full ecommerce context and hashed user data
- Pinterest Tag + Conversion API with server backup for AddToCart and Purchase
- Microsoft UET + Offline Conversion Import for end-to-end attribution
- Reddit Pixel + LinkedIn Insight Tag for niche and B2B retargeting
- Consent Mode v2 + CMP Integration to ensure compliance and data recovery
- Full-funnel dataLayer coverage: view_item, add_to_cart, begin_checkout, purchase, form_submit, scroll_depth, and more
Sample Full-Funnel dataLayer — Add to Cart:
<script>
dataLayer.push({
event: "add_to_cart",
ecommerce: {
currency: "USD",
value: 59.00,
items: [
{
item_id: "MAKE2025TEE",
item_name: "MakeShop T-Shirt",
price: 59.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]",
phone_number: "+15551234567"
},
event_id: "cart-makeshop-2025-tee"
});
</script>
Sample dataLayer — Purchase with full user and transaction metadata:
<script>
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "MKSHP-ORDER-2045",
value: 120.00,
currency: "USD",
coupon: "WELCOME20",
shipping: 10.00,
tax: 5.00,
items: [
{
item_id: "MAKEBAG2025",
item_name: "Canvas Tote Bag",
price: 105.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]",
phone_number: "+15559876543",
client_ip_address: "203.0.113.25",
user_agent: navigator.userAgent
},
event_id: "purchase-mkshp-2045"
});
</script>
Your stack isn’t just about tags — it’s about signal architecture. Each layer helps platforms learn faster, optimize smarter, and scale cheaper.
To build a full-funnel, multi-platform attribution system:
- GTM Web + GTM Server
- GA4 with Enhanced Ecommerce
- Google Ads + Enhanced Conversions
- Meta Pixel + CAPI
- TikTok Pixel + Events API
- Pinterest Tag + Conversion API
- Microsoft UET + Offline Conversion Import
- Reddit Pixel + LinkedIn Insight Tag
- Consent Mode v2 + CMP integration
- Custom dataLayer on every ecommerce event
Standard Purchase dataLayer:
<script>
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "M-2025-001",
value: 89.00,
currency: "USD",
items: [
{
item_id: "MUG2025",
item_name: "MakeShop Mug",
price: 89.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]"
},
event_id: "purchase-makeshop-001"
});
</script>
Section 3: GA4 Tracking Setup
Google Analytics 4 is the foundation of your measurement strategy — but only if it’s fed clean, structured data. MakeShop doesn’t send GA4-compatible events by default, so everything has to be custom-implemented via Google Tag Manager.
Here’s my process for deploying GA4 properly:
- Install GA4 using GTM — avoid hardcoding GA4 snippets directly into the theme.
- Push structured events to the dataLayer like view_item, add_to_cart, begin_checkout, and purchase.
- Use GA4 tag templates in GTM that fire based on custom triggers linked to your dataLayer events.
- Activate Enhanced Measurement and Enhanced Ecommerce inside the GA4 Admin.
- Debug in real-time using GA4 DebugView and Tag Assistant.
Recommended Parameters for GA4 Ecommerce Events:
- transaction_id (critical for purchase attribution)
- value and currency
- items array with item_id, item_name, price, quantity
- Optional: coupon, affiliation, shipping, tax
Example 1 — add_to_cart event:
<script>
dataLayer.push({
event: "add_to_cart",
ecommerce: {
currency: "USD",
value: 35.00,
items: [
{
item_id: "BOTTLE35",
item_name: "Stainless Bottle",
price: 35.00,
quantity: 1
}
]
},
event_id: "ga4-cart-bottle-35"
});
</script>
Example 2 — purchase event:
<script>
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "GA4-2025-INV-999",
value: 200.00,
currency: "USD",
coupon: "SUMMER2025",
shipping: 10.00,
tax: 15.00,
items: [
{
item_id: "GA4TOTE",
item_name: "Canvas Tote Bag",
price: 175.00,
quantity: 1
}
]
},
event_id: "ga4-purchase-999"
});
</script>
Tips for MakeShop-specific implementations:
- Create event triggers using thank you page URL conditions or dataLayer events.
- Always validate the structure of items — GA4 silently drops events with malformed arrays.
- Ensure currency and value are always present — these are required for monetization reports.
A properly structured GA4 setup turns your MakeShop traffic into actionable data you can scale.
Steps I follow:
- Install GA4 via GTM only (no hardcoded script).
- Push custom events via dataLayer.push().
- Use triggers for view_item, add_to_cart, begin_checkout, purchase.
- Enable Enhanced Ecommerce in GA4 Admin.
- Verify all values with DebugView.
add_to_cart Example:
<script>
dataLayer.push({
event: "add_to_cart",
ecommerce: {
currency: "USD",
value: 35.00,
items: [
{
item_id: "BOTTLE35",
item_name: "Stainless Bottle",
price: 35.00,
quantity: 1
}
]
},
event_id: "cart-35-bottle"
});
</script>
Section 4: Google Ads Setup
Google Ads needs more than just a tag — it needs accurate, privacy-compliant, and deduplicated conversions. Without Enhanced Conversions and server-side support, you’re sending Google partial data and getting half-optimized results.
How I implement Google Ads tracking for MakeShop clients:
- Set up Google Ads Conversion Tracking tag in GTM Web using the purchase dataLayer event as the trigger.
- Enable Enhanced Conversions by passing user data (email or phone) from the dataLayer.
- Mirror all browser-side events server-side using GTM Server container to overcome ad blockers.
- Use consistent event_id across web and server for deduplication.
- Link GA4 and Google Ads for better audience sharing and attribution modeling.
Recommended parameters to send:
- transaction_id
- value
- currency
- items (each with item_id, item_name, price, quantity)
- user_data (email, phone, etc.)
- event_id for deduplication
Google Ads Enhanced Conversion + Server Event Example:
<script>
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "GOOG2025-999",
value: 300.00,
currency: "USD",
items: [
{
item_id: "BACKPACKPRO",
item_name: "Pro Backpack",
price: 300.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]",
phone_number: "+12223334444",
client_ip_address: "198.51.100.5",
user_agent: navigator.userAgent
},
event_id: "google-ec-purchase-999"
});
</script>
Best Practices:
- Use hashed user data (SHA256) for Enhanced Conversions.
- Send the same event_id to Google Ads via both GTM Web and Server.
- Always test in Google Ads conversion diagnostics panel to ensure signal strength.
The stronger your Google Ads signals, the smarter Smart Bidding becomes. Good tracking turns ROAS from a guess into a system.
- Trigger purchase tag from purchase event.
- Send email or phone for Enhanced Conversions.
- Mirror the event via GTM Server.
- Use event_id to deduplicate browser/server data.
Enhanced Conversion Sample:
<script>
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "GOOG2025-999",
value: 300.00,
currency: "USD",
items: [{ item_id: "BACKPACKPRO", item_name: "Pro Backpack", price: 300.00, quantity: 1 }]
},
user_data: {
email: "[email protected]"
},
event_id: "google-ec-purchase-999"
});
</script>
Section 5: Meta Ads (Pixel + CAPI)
Meta tracking is one of the most sensitive and important parts of your tracking stack. Inaccurate or incomplete Meta tracking can cost thousands in misattributed conversions or misfired lookalike audiences.
Here’s how I configure Meta Ads tracking for MakeShop stores:
- Install Meta Pixel in GTM Web Container — fire browser events like PageView, ViewContent, AddToCart, and Purchase.
- Set up Meta Conversions API (CAPI) using GTM Server Container — this helps recover conversions lost to ad blockers, iOS restrictions, and privacy policies.
- Use a shared event_id across both browser and server events to deduplicate properly.
- Send hashed user_data (email, phone, IP) for high match rates and better signal quality.
- Enable Advanced Matching within Meta Events Manager to boost data capture.
Recommended Parameters:
- transaction_id
- value
- currency
- items (with item_id, item_name, price, quantity)
- event_id (for deduplication)
- user_data (hashed email, phone, IP, user_agent)
Meta Pixel + CAPI dataLayer.push() Example:
<script>
dataLayer.push({
event: "Purchase",
ecommerce: {
transaction_id: "META2025-AB",
value: 215.00,
currency: "USD",
items: [
{
item_id: "JACKET215",
item_name: "Windproof Jacket",
price: 215.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]",
phone_number: "+12345678901",
client_ip_address: "203.0.113.1",
user_agent: navigator.userAgent
},
event_id: "meta-purchase-ab"
});
</script>
Best Practices:
- Use server-side setup to prevent browser blockers from destroying your attribution.
- Verify all parameters and hashes in Meta Events Manager.
- Maintain clean dataLayer code and consistent naming across your stack.
In 2025, Meta expects clean server signals and rich user data. When you get this right, your ROAS, audience matching, and retargeting all improve dramatically.
- Pixel events fire in GTM browser.
- CAPI events fired via GTM Server.
- Both use same event_id.
- Send hashed email, phone_number.
Meta Friendly Format:
<script>
dataLayer.push({
event: "Purchase",
ecommerce: {
transaction_id: "META2025-AB",
value: 215.00,
currency: "USD",
items: [{ item_id: "JACKET215", item_name: "Windproof Jacket", price: 215.00, quantity: 1 }]
},
user_data: {
email: "[email protected]",
phone_number: "+12345678901"
},
event_id: "meta-purchase-ab"
});
</script>
Section 6: TikTok Ads Integration
TikTok is no longer just for dancing teens — it’s now a powerful performance channel. But if you’re not feeding it accurate event data, you’re throwing money away. TikTok’s algorithm relies heavily on conversion signals to optimize and scale your campaigns.
Here’s how I implement TikTok tracking for MakeShop clients:
- Install the TikTok Pixel via GTM on all pages.
- Fire key events: ViewContent, AddToCart, InitiateCheckout, CompletePayment.
- Use a clean dataLayer.push() for each action.
- Enable TikTok Events API via GTM Server container.
- Use event_id and user_data (email, phone) for deduplication.
- Validate events using TikTok Pixel Helper and Event Testing Tool.
Key Matching Parameters:
- transaction_id
- value
- currency
- items with item_id, item_name, price, quantity
- user_data with hashed email or phone
- event_id for linking browser + server events
TikTok AddToCart Event Example:
<script>
dataLayer.push({
event: "AddToCart",
ecommerce: {
value: 39.00,
currency: "USD",
items: [
{
item_id: "TTCAP39",
item_name: "TikTok Cap",
price: 39.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]"
},
event_id: "tt-cart-2025-001"
});
</script>
TikTok CompletePayment Event Example (for Purchase):
<script>
dataLayer.push({
event: "CompletePayment",
ecommerce: {
transaction_id: "TT-7788",
value: 145.00,
currency: "USD",
items: [
{
item_id: "TTBAG2",
item_name: "Canvas Shoulder Bag",
price: 145.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]",
phone_number: "+15550987654"
},
event_id: "tiktok-complete-7788"
});
</script>
Pro Tips:
- Use event_id consistently across both browser and server versions of the event.
- Always test in TikTok Events Manager before scaling campaigns.
- Make sure currency and value formats match TikTok’s requirements.
- TikTok performs best when matched events are above 80% match rate — user data is critical.
With the right setup, TikTok can drive ROAS similar to Meta. But without accurate tracking, you’re giving the algorithm nothing to work with.
- Trigger browser and server events.
- Use CompletePayment, AddToCart, etc.
- Include email for identity match.
TikTok Payment Example:
<script>
dataLayer.push({
event: "CompletePayment",
ecommerce: {
transaction_id: "TT-7788",
value: 145.00,
currency: "USD",
items: [{ item_id: "TTBAG2", item_name: "Canvas Shoulder Bag", price: 145.00, quantity: 1 }]
},
user_data: {
email: "[email protected]"
},
event_id: "tiktok-complete-7788"
});
</script>
Section 7: Pinterest Ads Tracking
Pinterest is a powerful discovery platform for MakeShop stores with visual products, but most tracking setups are incomplete. If Pinterest doesn’t receive correct purchase data, it can’t optimize your campaigns or retarget your most valuable users.
How I set up Pinterest Ads tracking properly:
- Add the Pinterest base tag via GTM across all pages.
- Fire specific events such as AddToCart, Checkout, and Purchase using custom triggers.
- Push clean ecommerce values — especially value, currency, and transaction_id — to ensure Pinterest can track ROAS.
- Enable Pinterest Conversion API via GTM Server to back up browser events with server events.
- Deduplicate browser and server events using a shared event_id.
Recommended Parameters:
- order_id (transaction_id)
- value (purchase total)
- currency
- line_items with item_id, name, price, quantity
- user_data with email or phone for match quality
Pinterest dataLayer.push() example — Purchase event:
<script>
dataLayer.push({
event: "Purchase",
ecommerce: {
transaction_id: "PIN-8844",
value: 55.00,
currency: "USD",
items: [
{
item_id: "PINMUG",
item_name: "Pinterest Mug",
price: 55.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]",
phone_number: "+12223334444"
},
event_id: "pin-purchase-8844"
});
</script>
Pro Tips:
- Use Pinterest Tag Helper to test event accuracy.
- Always confirm product values match your MakeShop order total.
- For server-side setup, use the Pinterest tag endpoint within your GTM Server container.
Strong Pinterest tracking means better retargeting, better optimization, and stronger ROAS — especially for fashion, beauty, and lifestyle brands.
- Fire AddToCart, Checkout, Purchase events.
- Use event_id and product data.
- Add server backup via Pinterest API.
Pinterest Event Push:
<script>
dataLayer.push({
event: "Purchase",
ecommerce: {
transaction_id: "PIN-8844",
value: 55.00,
currency: "USD",
items: [{ item_id: "PINMUG", item_name: "Pinterest Mug", price: 55.00, quantity: 1 }]
},
event_id: "pin-conv-8844"
});
</script>
Section 8: Microsoft Ads (UET + Offline Conversions)
Microsoft Ads (Bing Ads) remain a surprisingly underutilized source of low-cost traffic — but they need proper attribution support to perform at their best. Their tracking system combines Universal Event Tracking (UET) with the option for offline conversion uploads, making it especially powerful for longer customer journeys.
Here’s how I implement Microsoft Ads tracking for MakeShop stores:
- Add UET Tag via GTM: Install the base tag on all pages using a GTM tag template.
- Trigger a Purchase event using the custom dataLayer.push() with key ecommerce values.
- Send hashed email or phone number using SHA256 to support advanced match types.
- Enable Offline Conversion Import: Upload any missed conversions by sending time, event_id, and hashed user identifiers to Microsoft’s offline API.
Best Practices:
- Always include transaction_id, value, currency, and product-level item_id.
- Match the event_id between browser and offline to allow deduplication.
- Use custom dimensions to segment based on buyer intent or cart size.
Example Microsoft dataLayer.push() with Offline Conversion Support:
<script>
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "BING-2025-88",
value: 110.00,
currency: "USD",
items: [
{
item_id: "BINGCAP",
item_name: "Microsoft Cap",
price: 110.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]",
phone_number: "+15551234567"
},
event_id: "bing-2025-88",
cart_meta: {
cart_size: 1,
shipping_method: "standard",
customer_type: "first_time"
}
});
</script>
Tips for Uploading Offline Conversions:
- Export CSVs from your CRM or order system.
- Use Microsoft’s Conversion Import Template.
- Match transaction_id, event_id, timestamp, and user hash to ensure high match rates.
With both UET and offline conversions enabled, Microsoft Ads can optimize just as well as Meta or Google — but with much lower competition.
- Fire UET purchase event with value.
- Send hashed identity.
- Upload offline conversions for missed web events.
Microsoft dataLayer Sample:
<script>
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "BING-2025-88",
value: 110.00,
currency: "USD",
items: [{ item_id: "BINGCAP", item_name: "Microsoft Cap", price: 110.00, quantity: 1 }]
},
user_data: {
email: "[email protected]"
},
event_id: "bing-2025-88"
});
</script>
Section 9: Reddit and LinkedIn Ads
While Reddit and LinkedIn may not be the first platforms you think of for conversion tracking, they’re essential for many niche or B2B MakeShop stores. Both platforms offer pixel tracking — but they lack server-side APIs, which makes browser events and accurate event firing absolutely critical.
Reddit Setup:
- Add Reddit Pixel via GTM.
- Fire PageView, ViewContent, and RedditPurchase events.
- Include transaction_id, value, currency, and item details.
Example dataLayer for Reddit Purchase:
<script>
dataLayer.push({
event: "RedditPurchase",
ecommerce: {
transaction_id: "RED-2055",
value: 44.00,
currency: "USD",
items: [
{
item_id: "REDDITTEE",
item_name: "Reddit T-Shirt",
price: 44.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]"
},
event_id: "reddit-event-2055"
});
</script>
LinkedIn Insight Tag Setup:
- Use GTM to deploy LinkedIn Insight Tag.
- Fire LinkedInConversion on purchase or lead submission.
- Push custom conversion_name and value.
Example dataLayer for LinkedIn Purchase:
<script>
dataLayer.push({
event: "LinkedInConversion",
conversion_name: "MakeShop Purchase",
value: 88.00,
currency: "USD",
user_data: {
email: "[email protected]"
},
event_id: "linkedin-88"
});
</script>
Pro tip: Even though Reddit and LinkedIn don’t support server-side yet, you can still ensure high match quality by sending full product and user data in each dataLayer push.
Reddit:
<script>
dataLayer.push({
event: "RedditPurchase",
ecommerce: {
transaction_id: "RED-2055",
value: 44.00,
currency: "USD",
items: [{ item_id: "REDDITTEE", item_name: "Reddit T-Shirt", price: 44.00, quantity: 1 }]
},
event_id: "reddit-event-2055"
});
</script>
LinkedIn:
<script>
dataLayer.push({
event: "LinkedInConversion",
conversion_name: "MakeShop Purchase",
value: 88.00,
currency: "USD",
event_id: "linkedin-88"
});
</script>
Section 10: Debug and QA
Never trust your setup until it’s been battle-tested. Debugging is where most tracking setups fail — either due to missed triggers, misfiring tags, or malformed dataLayer pushes.
Here’s my full QA process before any campaign goes live:
- Open your browser’s console and run:
console.log(window.dataLayer);
This helps you confirm if your events are pushing as expected.
- Use GA4 DebugView to check event names, parameters, values, currency, and transaction_id. If an event doesn’t show up here, GA4 won’t record it.
- Check Meta Events Manager:
- Verify server and browser events show up together.
- Look for event_id matches (deduplication).
- Check match quality (aim for above 7/10).
- Validate with TikTok Pixel Helper and Pinterest Tag Helper:
- Ensure that product-level values (like item_id, price) are passed.
- Confirm purchase events are not double-firing.
- Open Tag Assistant or use Preview Mode in GTM:
- Test each funnel step: view product, add to cart, checkout, purchase.
- Watch for tag triggers, variables, and parameter values.
- Check GTM Server logs:
- Look for any failed network calls (4xx/5xx)
- Validate that payloads are complete and event names are correct
Example QA Validation — Purchase Event:
My rule: if DebugView and Tag Assistant don’t agree — the event isn’t ready. Only ship when every event has been verified across platforms and tools.
Always validate:
- console.log(window.dataLayer)
- GA4 DebugView
- Meta Events Manager (Match quality + deduplication)
- TikTok Pixel Helper
- Pinterest Tag Helper
- GTM Server logs
“If it’s not in the DebugView — it didn’t happen.”
Section 11: Advanced Attribution Features
Once your basic ecommerce events are set up, it’s time to go beyond standard tracking and unlock deeper insights that platforms actually reward with better optimization.
Here’s what I layer into every advanced MakeShop tracking setup:
- Consent Mode v2 (with CMP integration): Enables tag behavior to adapt based on user consent for analytics and ad storage. This helps you stay compliant with GDPR, LGPD, and CCPA — while still preserving usable data.
- Micro-conversions: I track deeper behavioral events like:
- scroll_depth (for content engagement)
- video_play (for high-intent behavior)
- click_outbound (external links clicked)
- button_click (add-to-wishlist, review buttons, etc.)
- Lead form tracking: I set up tracking for newsletter signups, contact form submissions, and popup captures — all pushed via dataLayer with user data (where applicable).
Example — Form Submission Push:
<script>
dataLayer.push({
event: "form_submit",
form_type: "lead_capture",
user_data: {
email: "[email protected]",
name: "John Doe",
phone_number: "+12223334444"
},
event_id: "form-lead-2025-001"
});
</script>
- Custom funnel tracking: I define and push events for:
- Quiz completions
- Size guide views
- Discount reveal interactions
- CRM syncing via Webhook or GTM Server: Capture events like:
- Post-purchase upsells
- Customer onboarding milestones
- Subscription status changes
- Audience segmentation via dataLayer: I use custom values such as:
user_type: “repeat_buyer”
promotion_code_used: true
cart_value_tier: “high”
The more accurate signals you feed into your ad platforms, the better they perform. Advanced attribution isn’t just about tracking — it’s about creating smart growth loops.
Add next-level features:
- Consent Mode v2: Auto-adjusts tags based on consent
- Scroll/Click/Form tracking
- CRM + GTM Server Webhook sync
Lead Form Push:
<script>
dataLayer.push({
event: "form_submit",
form_type: "lead_capture",
user_data: {
email: "[email protected]"
},
event_id: "form-lead-001"
});
</script>
Section 12: Server-Side Tagging Strategy
Client-side tracking is no longer enough — in 2025, server-side tagging is essential if you want to maintain attribution integrity across platforms.
Here’s how I implement server-side tagging for MakeShop clients:
- Step 1: Set up GTM Server container on a custom subdomain like track.yourdomain.com.
- Step 2: Route browser-side dataLayer events from GTM Web to GTM Server.
- Step 3: Use event forwarding in GTM Server to send conversions to GA4, Google Ads Enhanced Conversions, Meta Conversions API, TikTok Events API, and more.
- Step 4: Use consistent event_ids across browser and server for accurate deduplication.
Benefits:
- Protects against browser restrictions and ad blockers
- Improves match rates and signal reliability
- Increases attribution visibility for iOS and privacy-restricted traffic
- Works with Consent Mode v2 to respect user consent while preserving data integrity
Sample dataLayer.push() for server-triggered purchase:
<script>
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "SS-9876",
value: 210.00,
currency: "USD",
items: [
{
item_id: "SSRUG",
item_name: "Server-Side Rug",
price: 210.00,
quantity: 1
}
]
},
user_data: {
email: "[email protected]",
phone_number: "+15550123456",
client_ip_address: "192.0.2.1",
user_agent: navigator.userAgent
},
event_id: "ss-purchase-9876"
});
</script>
Server-side tracking future-proofs your attribution strategy — it’s not optional anymore, it’s a growth essential.
Call to Action: Want Me to Fix Your MakeShop Tracking?
Still seeing zero conversions in GA4? Inflated ROAS in Meta? TikTok and Pinterest events missing entirely?
You’re not alone — and it’s not your ad strategy. It’s your tracking.
MakeShop’s default setup wasn’t built for today’s privacy-first, multi-channel world. Most stores are flying blind — with broken events, blocked cookies, and incomplete data. That’s where I come in.
I work with MakeShop businesses to rebuild their tracking from the ground up using:
- Google Tag Manager (Web + Server)
- Custom-coded dataLayer for precise events
- Server-side tagging for resilient tracking
- Multi-platform integrations: GA4, Google Ads, Meta, TikTok, Pinterest, Microsoft, and more
You’ll go from misfiring tags and blind decisions… to clean, validated data that shows you exactly what’s working — and what’s not.
I’ll audit your setup, diagnose every gap, and rebuild your funnel tracking the right way.
Let’s make your data trustworthy again.
Message me now for a personalized MakeShop tracking audit that actually fixes the problems.