Facebook Ads Enhanced Conversion Tracking Strategy in OpenCart

Standard

Enhanced Conversions enable you to send first-party customer data (like email and phone) to Facebook, improving match rates and attribution accuracy. This is especially critical for OpenCart stores where conversions may happen post-login or via redirects.


๐Ÿงฐ Prerequisites

  • OpenCart (v3.x/4.x)
  • Facebook Pixel and CAPI access
  • GTM Web + Server Containers
  • Consent mechanism (GDPR/CCPA compliant)
  • SHA-256 hashing support

๐Ÿงฑ Step 1: Add Facebook Pixel with Enhanced Conversion Signals

  1. GTM Web > New Tag > Custom HTML
  2. Trigger: All Pages
<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', 'YOUR_PIXEL_ID', {
    em: '{{user_email}}',
    ph: '{{user_phone}}'
  });
  fbq('track', 'PageView');
</script>

๐Ÿ“ฅ Step 2: Collect Email & Phone in Data Layer

Edit catalog/view/theme/YOUR_THEME/template/checkout/success.twig:

<script>
  dataLayer = dataLayer || [];
  dataLayer.push({
    event: 'purchase',
    event_id: 'fb_{{ order_id }}',
    transaction_id: '{{ order_id }}',
    value: {{ order_total }},
    currency: '{{ currency }}',
    user_email: '{{ email | lower | sha256 }}',
    user_phone: '{{ phone | regex_replace('/\D/', '') | sha256 }}'
  });
</script>

๐ŸŒ Step 3: Trigger Server Event from Web GTM

GTM Web > New Custom HTML tag

  • Trigger: purchase
<script>
fetch('https://gtm.yourdomain.com/event', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    event_name: 'Purchase',
    event_id: '{{DL - event_id}}',
    transaction_id: '{{DL - transaction_id}}',
    value: '{{DL - value}}',
    currency: '{{DL - currency}}',
    email: '{{DL - user_email}}',
    phone: '{{DL - user_phone}}'
  })
});
</script>

๐Ÿ“ก Step 4: Send Enhanced Conversions via CAPI

In GTM Server:

  1. Trigger: event_name = Purchase
  2. Tag: HTTP Request
POST https://graph.facebook.com/v18.0/YOUR_PIXEL_ID/events?access_token=ACCESS_TOKEN
{
  "data": [{
    "event_name": "Purchase",
    "event_time": {{timestamp}},
    "event_id": "{{event_id}}",
    "action_source": "website",
    "user_data": {
      "em": "{{email}}",
      "ph": "{{phone}}"
    },
    "custom_data": {
      "currency": "{{currency}}",
      "value": {{value}},
      "transaction_id": "{{transaction_id}}"
    }
  }]
}

๐Ÿ” Step 5: Deduplication

  • Keep event_id consistent between browser and server events.
  • Facebook deduplicates events using this ID.

๐Ÿ” Step 6: Consent Logic

Use a consent_granted variable to delay dataLayer push and tag triggers. Ensure only compliant users are tracked.


๐Ÿงช Step 7: QA & Debugging

Tool Purpose
GTM Preview Mode Inspect variables and tag firing
Facebook Events Manager Check Enhanced Conversions match quality
Chrome Dev Tools Validate network request payloads

๐ŸŽฏ Strategic Notes

  • Improved match rates = better ROAS
  • Helps fill attribution gaps from iOS/blocked environments
  • Consent-friendly and future-ready

Leave a Reply

Your email address will not be published. Required fields are marked *