If it is your first time deploying Permutive, we suggest getting in touch with support@permutive.com, and we will help you make sure the deployment is successful. This guide is intended to help you through verifying deployment on additional domains.

Verifying basic deployment

Permutive SDK is downloaded:

  • Open the “Elements” tab, and search for “cdn.permutive.com”. Scroll up to check this is inside <head/> element. You will be looking for:
<script async src="https://cdn.permutive.com/<PROJECT_ID>-web.js"></script>
  • Check this is downloaded asynchronously (has “async” inside the script)

Permutive main tag is in the header:

  • Open the “Elements” tab, and search for “permutive”. You should find the main tag:
  !function(n,e,o,r,i){if(!e){e=e||{},window.permutive=e,e.q=[],e.config=i||{},e.config.projectId=o,e.config.apiKey=r,e.config.environment=e.config.environment||"production";for(var t=["addon","identify","track","trigger","query","segment","segments","ready","on","once","user","consent"],c=0;c<t.length;c++){var f=t[c];e[f]=function(n){return function(){var o=Array.prototype.slice.call(arguments,0);e.q.push({functionName:n,arguments:o})}}(f)}}}(document,window.permutive,"<PROJECT_ID>","<PUBLIC_API_KEY>",{});
  permutive.addon('web', {
    page: {
      //custom parameters
  • Scroll up to check this is inside the <head/> element, and before the main Permutive tag is downloaded.
  • If not present in “Elements”, search the whole website (Option+Command+F on Mac). Ensure this is called early, and before the main script loads

Permutive events are coming through

  • Go to “Network” tab, and search for “permutive” 
  • Every time you refresh a page, or go to a new page, you will see a new “Pageview” event coming through. You should also see a steady stream on “PageviewEngagement” events coming through
  • These will be highlighted in red if any schema errors are happening
  • In the Permutive UI, check that Pageview events are coming in as expected.

Events contain expected properties (if applicable)

  • If custom properties are meant to be sent to Permutive, check these are included in permutive.addon(“web”, {}) you found on the page earlier, for example:
  permutive.addon('web', {
    page: {
      type: 'article',
      article: {
        id: '1234qwerty',
        type: 'kittens'
  • In network requests, make sure any relevant paremeters are passed through under “Pageview” event (that you found earlier). You can see everything that is passed through by expanding "parameters"

Verifying DFP targeting

DFP cache snippet is in the header

  • This is very important to ensure targeting still happens even if for some reason Permutive script does not load before the DFP calls are made
  • Search  for “_pdfps” (stands for Permutive DFP Storage). You should find this piece of code:
  • Set a breakpoint. You can do this by clicking on the number of the line where the function is called (in the case below, by clicking on number "327"). A blue arrow will appear, indicating your break point. 
  • Search for googletag.enableServices();  Set a break point on this too.
  • Reload the page. Now the page will stop loading on both your break points. Make sure the Permutive script is executed first - ie that the _pdfps breakpoint is first.
  • Remove the breakpoints by clicking on the blue arrows again

Permutive key-value pairs are attached to DFP calls (if DFP targeting is enabled)

  • Search for ads?  in the “Network” tab
  • Pick an ad request, scroll down, and find cust_params 
  • Check if “permutive=” is appended, followed by segments.
  • NB: ensure the appropriate DFP reactions are set up in the Permutive UI, as only segments with the DFP reactions enabled will be passed through to the DFP for targeting

Did this answer your question?