# Mautic Abandoned Cart Recovery Setup ## Overview Use your existing Mautic instance for abandoned cart recovery instead of paying for Klaviyo. **Mautic URL:** https://mautic.nodecrew.me ## How It Works ``` 1. User adds item to cart ↓ 2. Storefront sends event to Mautic (via API or tracking pixel) ↓ 3. Mautic creates/updates contact with cart data ↓ 4. Campaign waits 1 hour ↓ 5. If no purchase → Send abandoned cart email ↓ 6. User clicks email → Cart restored → Convert! ``` ## Step 1: Set Up Mautic Tracking ### Option A: Mautic Tracking Pixel (JavaScript) Add to your Next.js storefront: ```typescript // lib/mautic.ts export function trackAddToCart(product: any, quantity: number) { if (typeof window !== 'undefined' && (window as any).mt) { (window as any).mt('send', 'pageview', { page_title: `Added to Cart: ${product.name}`, page_url: window.location.href, product_name: product.name, product_sku: product.variants[0]?.sku, product_price: product.variants[0]?.channelListings[0]?.price?.amount, quantity: quantity, event: 'add_to_cart' }); } } export function trackCheckoutStarted(checkout: any) { if (typeof window !== 'undefined' && (window as any).mt) { (window as any).mt('send', 'pageview', { page_title: 'Checkout Started', page_url: window.location.href, checkout_value: checkout.totalPrice?.amount, checkout_id: checkout.id, event: 'checkout_started' }); } } export function trackOrderCompleted(order: any) { if (typeof window !== 'undefined' && (window as any).mt) { (window as any).mt('send', 'pageview', { page_title: 'Order Completed', page_url: window.location.href, order_total: order.total.gross.amount, order_id: order.id, event: 'purchase_completed' }); } } ``` ```typescript // pages/_app.tsx or layout.tsx import Script from 'next/script'; export default function RootLayout({ children }) { return ( {/* Mautic Tracking */}