{
  "exportFormatVersion": 2,
  "exportTime": "2026-10-07 17:40:00",
  "containerVersion": {
    "accountId": "0",
    "containerId": "0",
    "containerVersionId": "0",
    "name": "AI Source Standard v1.0",
    "description": "CC BY 4.0, Broadcastwell. Portable recipe. Merge into an existing unpublished web workspace and verify before publication. No network or cookie tag.",
    "container": {
      "accountId": "0",
      "containerId": "0",
      "name": "AI Source Standard v1.0 recipe",
      "publicId": "GTM-XXXXXX",
      "usageContext": [
        "WEB"
      ]
    },
    "variable": [
      {
        "accountId": "0",
        "containerId": "0",
        "variableId": "1",
        "name": "AI Source v1 classification",
        "type": "jsm",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "javascript",
            "value": "function() {\n  var hosts = {'chatgpt.com':'chatgpt','chat.openai.com':'chatgpt','claude.ai':'claude','perplexity.ai':'perplexity','gemini.google.com':'gemini','copilot.microsoft.com':'copilot'};\n  var refClass = 'unclassified', paramClass = 'unclassified';\n  try {\n    var r = new URL(document.referrer);\n    if ((r.protocol === 'https:' || r.protocol === 'http:') && !r.username && !r.password) {\n      var h = r.hostname.toLowerCase().replace(/\\.$/, '');\n      for (var d in hosts) if (Object.prototype.hasOwnProperty.call(hosts,d) && (h === d || h.slice(-(d.length+1)) === '.'+d)) refClass=hosts[d];\n    }\n  } catch(e) {}\n  try {\n    var p = new URL(location.href);\n    var a = p.searchParams.getAll('utm_source');\n    if (a.length === 1 && a[0] === 'chatgpt.com') paramClass='chatgpt';\n  } catch(e) {}\n  if (refClass !== 'unclassified' && paramClass !== 'unclassified' && refClass !== paramClass) return 'conflict:conflicting_labels';\n  if (refClass !== 'unclassified') return 'referrer:'+refClass;\n  if (paramClass !== 'unclassified') return 'parameter:'+paramClass;\n  return 'none:unclassified';\n}"
          }
        ]
      },
      {
        "accountId": "0",
        "containerId": "0",
        "variableId": "2",
        "name": "AI Source v1 utm_source",
        "type": "u",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "component",
            "value": "QUERY"
          },
          {
            "type": "TEMPLATE",
            "key": "queryKey",
            "value": "utm_source"
          }
        ]
      },
      {
        "accountId": "0",
        "containerId": "0",
        "variableId": "3",
        "name": "AI Source v1 utm_medium",
        "type": "u",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "component",
            "value": "QUERY"
          },
          {
            "type": "TEMPLATE",
            "key": "queryKey",
            "value": "utm_medium"
          }
        ]
      }
    ],
    "trigger": [
      {
        "accountId": "0",
        "containerId": "0",
        "triggerId": "1",
        "name": "AI Source v1 DOM Ready",
        "type": "DOM_READY"
      }
    ],
    "tag": [
      {
        "accountId": "0",
        "containerId": "0",
        "tagId": "1",
        "name": "AI Source v1 hidden technical field",
        "type": "html",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "html",
            "value": "<script>(function(){var nodes=document.querySelectorAll('input[name=\"ai_referrer_class\"]');for(var i=0;i<nodes.length;i+=1){nodes[i].value='{{AI Source v1 classification}}';}})();</script>"
          },
          {
            "type": "BOOLEAN",
            "key": "supportDocumentWrite",
            "value": "false"
          }
        ],
        "firingTriggerId": [
          "1"
        ],
        "tagFiringOption": "ONCE_PER_EVENT"
      }
    ]
  }
}
