En el código que te puse antes la variable para la moneda no es correcta (el resto sí). Lo he comprobado y el código completo lo tengo así (y funciona):
{$order_product_ids = []} {foreach $order.products as $prod} {$order_product_ids[] = $prod.product_id|intval} {/foreach} <script> {literal} (function wait() { if ((typeof fbq !== 'undefined')) { fbq('track','Purchase',{ {/literal} content_type: 'product', value: {$order.totals.total.amount|floatval}, currency: '{$currency.iso_code}', order_id: {$order.details.id}, num_items: {$order.products|count}, content_ids: {$order_product_ids|@json_encode nofilter} {literal} }); } else { setTimeout(wait, 10); } })(); {/literal} </script>
El usar la función "wait()" es simplemente para asegurar que han cargado las librerías de Facebook antes de enviar el tracking de pedido completado. Y aquí envía el valor del pedido, la moneda, el ID del pedido, el número de productos en el pedido y sus ids correspondientes.