To track the efficacy of a Facebook ad campaign, my users want to insert a Conversion Pixel to some (but NOT all) contribution confirmation pages. What's an effective way to do this?

3 Answers 3


You could override the Thank-you smarty template. Copy the one from templates/CRM/Contribute/Form/Contribution/ThankYou.tpl. Then you could do something like this:

{if $contributionPageID == 20}

    <script type="text/javascript">

      function doFacebookStuff(){

  • 1
    Thanks Nicholai! I upvoted this because it got me on the right track. I wanted to add that a better approach would be a .extra.tpl file (more maintainable on upgrade) or an extension (easier to share). I did the latter, see my answer. Apr 21, 2015 at 15:58

I ended up taking Nicholai's idea, but instead implemented it as an extension for better maintainability across upgrades - and for sharing. Folks can see the extension here: https://github.com/PalanteJon/civicrm-facebook-conversion-pixel

  • You may get more value from an extra tpl file, which would let you use the $amount variable to get actual conversion amount (vs. always reporting back to FB as $0).
    – Nicholai
    Apr 21, 2015 at 16:42
  • Thank you for creating the extension Jon G - in your .php code you may want to check for example if 'ga.js' exists and in that case, you need to insert the pixel image only, not the FB javascript function. If Google Analytics or DoubleClick are installed on a site the FB code isn't 'smart' enough to deal with that, you need to just use the pixel Jul 8, 2015 at 13:41
  • Thanks for creating this. How do I make sure it only applies to specific contribution pages?
    – Christia
    Oct 31, 2017 at 20:34
  • @Christia You'd have to customize the extension, or have someone else do it for you. I wrote this up very quickly for a client and shared it - I never intended to make it more generally usable. I can give a quote to make this more functional if you like! Find me on chat.civicrm.org: Username is junglebird. Oct 31, 2017 at 20:48

In Drupal, if you use an alias for the page, you could check for that alias in a preprocess_html hook and insert some FB Conversion Pixel javascript if it's the right alias.


function MYTHEME_preprocess_html(&$vars) {
  $path = drupal_get_path_alias();
    if ($path == 'special-fb-contribpage-alias') {
    drupal_add_js(drupal_get_path('theme', 'MYTHEME') . '/js/facebook-conversion-pixel.js', 'file');
  • Thanks for the tip - but I need to add this to the confirmation page, not the contribution page. I don't think there's a way to use an alias for the confirmation page? Apr 7, 2015 at 15:23
  • Ah, got it. It wouldn't be ideal, but can you wedge it into the 'thank you' header or footer for that particular page?
    – Laryn
    Apr 7, 2015 at 15:27
  • I think that Facebook gives you Javascript to insert - I don't think I can put JS into the header/footer. I hope not! But this gives me some good ideas, thank you. Apr 7, 2015 at 15:33
  • I think they also give a <noscript> option (an image), but as I said, not ideal. Curious to see what you come up with. :)
    – Laryn
    Apr 7, 2015 at 16:21
  • I'd be interested to know what your solution was/is, Jon G, thanks Jul 6, 2015 at 18:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.