FB Pixel Code + AddToCart + InitiateCheckout Snippet

<!-- Step 1. Change the pixel ID on line 11 -->
<!-- Step 2. Copy to public/custom_scripts.twig template in SPP ->

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');

fbq('init', 'PIXEL ID'); // Insert your pixel ID here.
fbq('track', 'PageView');
</script>
<!-- End Facebook Pixel Code -->

<script>
    // Add to cart event triggers when a service is selected in an order form
    var triggeredItems = [];

    document.addEventListener("spp.form.preview", () => {
        let items = JSON.parse($('#items').val());
        let contents = [];
        let contentIds = [];

        items.forEach(function(item) {
            contents.push({
                id: item.service_id,
                quantity: item.quantity
            });

            contentIds.push(item.service_id);

            if (!triggeredItems.includes(item.service_id)) {
                fbq('track', 'AddToCart', {
                    content_name: item.name,
                    content_ids: [item.service_id],
                    content_type: 'product',
                    value: (item.amount - item.discount) * item.quantity,
                    currency: '{{ config.payment_currency }}' // This is populated from your account's config
                });

                triggeredItems.push(item.service_id);
            }
        });
    });    
    
    // Initiate checkout event triggers on order form submit
    document.addEventListener("spp.form.submit", () => {
        let total = document.querySelectorAll('button[type="submit"][data-total]')[0].dataset.total;
        let items = JSON.parse($('#items').val());
        let contents = [];
        let contentIds = [];
        
        items.forEach(function(item) {
            contents.push({
                id: item.service_id,
                quantity: item.quantity
            });

            contentIds.push(item.service_id);
        });
        
        fbq('track', 'InitiateCheckout', {
            value: total,
            currency: '{{ config.payment_currency }}', // This is populated from your account's config
            content_ids: contentIds,
            contents: contents
          });
    });
</script>