{"id":13913,"date":"2026-07-14T18:13:12","date_gmt":"2026-07-14T18:13:12","guid":{"rendered":"https:\/\/wiki.pontiac.media\/?docs=analytics-documentation\/user-defined-models"},"modified":"2026-07-15T16:50:11","modified_gmt":"2026-07-15T16:50:11","slug":"user-defined-models","status":"publish","type":"docs","link":"https:\/\/wiki.pontiac.media\/?docs=analytics-documentation\/user-defined-models","title":{"rendered":"User Defined Models"},"content":{"rendered":"\n<p>For the Targeting Model, report-generated outputs can be easily applied to a campaign, but users are not limited to the exact variables and combinations identified by the model. Users can also create their own custom JSON file using the same general structure as the model outputs.<\/p>\n\n\n\n<p>This allows users to define variables and combinations based on their own campaign learnings, business rules, historical performance, or optimization goals. For example, a user may already know that a certain geography, publisher, device type, content genre, or day of week is strategically important and can build those values into a custom model.<\/p>\n\n\n\n<p>Score Requirements<\/p>\n\n\n\n<p>Each entry must include a numeric score between -1 and 1.<\/p>\n\n\n\n<p>Supported Fields and Expected Values<\/p>\n\n\n\n<p>The required fields depend on whether the entry is a single variable, a 2-way combination, or a 3-way combination. The following fields can be used in custom Targeting Models:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Field<\/th><th>Description<\/th><th>Expected Value<\/th><\/tr><\/thead><tbody><tr><td><code>geo_zip<\/code><\/td><td>ZIP code<\/td><td>5-character, zero-padded string, such as (&#8220;04501&#8221; not &#8220;4501&#8221;)<\/td><\/tr><tr><td><code>geo_region<\/code><\/td><td>State or region<\/td><td>Region code in the format used by bid request data, such as &#8220;ny&#8221; or &#8220;tx&#8221;<\/td><\/tr><tr><td><code>device_type<\/code><\/td><td>Device type<\/td><td>IAB device type enum value as a string:<br>&#8220;1&#8221; = Mobile\/Tablet<br>&#8220;2&#8221; = Personal Computer<br>&#8220;3&#8221; = Connected TV<br>&#8220;4&#8221; = Phone<br>&#8220;5&#8221; = Tablet<br>&#8220;6&#8221; = Connected Device<br>&#8220;7&#8221; = Set Top Box<\/td><\/tr><tr><td><code>publisher_name<\/code><\/td><td>Publisher name<\/td><td>Exact publisher value as represented in bid request data<\/td><\/tr><tr><td><code>site_domain<\/code><\/td><td>Site domain<\/td><td>Exact domain value, including subdomain when applicable<\/td><\/tr><tr><td><code>app_bundle<\/code><\/td><td>App bundle or app ID<\/td><td>Exact bundle value as represented in bid request data<\/td><\/tr><tr><td><code>content_channel<\/code><\/td><td>Content channel<\/td><td>Exact content channel value as represented in bid request data<\/td><\/tr><tr><td><code>content_network<\/code><\/td><td>Content network<\/td><td>Exact content network value as represented in bid request data<\/td><\/tr><tr><td><code>content_genre<\/code><\/td><td>Content genre<\/td><td>Exact content genre value as represented in bid request data<\/td><\/tr><tr><td><code>content_livestream<\/code><\/td><td>Livestream indicator<\/td><td>Exact value used in bid request data. Either 1 for live content or 0 for non live content.<\/td><\/tr><tr><td><code>content_title<\/code><\/td><td>Content title<\/td><td>Exact content title value as represented in bid request data<\/td><\/tr><tr><td><code>content_series<\/code><\/td><td>Content series<\/td><td>Exact content series value as represented in bid request data<\/td><\/tr><tr><td><code>content_id<\/code><\/td><td>Content ID<\/td><td>Exact content ID value as represented in bid request data<\/td><\/tr><tr><td><code>exchange<\/code><\/td><td>Exchange<\/td><td>Exact exchange value as represented in bid request data: &#8220;index&#8221;,<br>&#8220;magnite&#8221;,<br>&#8220;dvplus&#8221;,<br>&#8220;msft&#8221;,<br>&#8220;freewheel&#8221;,<br>&#8220;triton&#8221;,<br>&#8220;adswiz&#8221;<\/td><\/tr><tr><td><code>day<\/code><\/td><td>Day of week<\/td><td>Three-letter day value: &#8220;sun&#8221;, &#8220;mon&#8221;, &#8220;tue&#8221;, &#8220;wed&#8221;, &#8220;thu&#8221;, &#8220;fri&#8221;, or &#8220;sat&#8221;<\/td><\/tr><tr><td><code>hour<\/code><\/td><td>Hour of day<\/td><td>Integer hour from 0 through 23, where 0 represents 12:00 AM and 23 represents 11:00 PM<\/td><\/tr><tr><td><code>ip<\/code><\/td><td>IP address<\/td><td>Exact IP value<\/td><\/tr><tr><td><code>deal_id<\/code><\/td><td>Deal ID<\/td><td>Exact deal identifier represented in bid request data. This can be found in the Bidder &gt; Inventory &gt; Deals\/Negotiated Deals tables and the ART &gt; Deals Landscape &gt; Deals table<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Values should match the format used in the underlying bid request data. <\/p>\n\n\n\n<p>For example<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"feature\": \"device_type\",\n  \"value\": \"3\",\n  \"score\": 0.80\n}<\/code><\/pre>\n\n\n\n<p>Use &#8220;3&#8221;, not &#8220;Connected TV&#8221; or &#8220;CTV&#8221;.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Single Variable<\/h4>\n\n\n\n<p>A single-variable entry must include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>feature:<\/strong>&nbsp;The name of the feature.<\/li>\n\n\n\n<li><strong>value:<\/strong>&nbsp;The specific value associated with the feature.<\/li>\n\n\n\n<li><strong>score:<\/strong>\u00a0A numeric value between -1 and 1.<\/li>\n<\/ul>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"feature\": \"geo_zip\",\n  \"value\": \"10025\",\n  \"score\": 0.95\n}<\/code><\/pre>\n\n\n\n<p>This example assigns a score of\u00a00.95\u00a0to ZIP Code\u00a010025.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2-Way Combination<\/h4>\n\n\n\n<p>A 2-way combination must include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>feature1:<\/strong>&nbsp;The name of the first feature.<\/li>\n\n\n\n<li><strong>feature2:<\/strong>&nbsp;The name of the second feature.<\/li>\n\n\n\n<li><strong>combination:<\/strong>\u00a0The exact values associated with\u00a0feature1\u00a0and\u00a0feature2, provided in the same order and separated by\u00a0\u00d7.<\/li>\n\n\n\n<li><strong>score:<\/strong>\u00a0A numeric value between -1 and 1.<\/li>\n<\/ul>\n\n\n\n<p>Example 1:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"feature1\": \"geo_zip\",\n  \"feature2\": \"device_type\",\n  \"combination\": \"10025 \u00d7 4\",\n  \"score\": 0.90\n}<\/code><\/pre>\n\n\n\n<p>This represents ZIP Code 10025 + Device Type 4 with a score of 0.90.<\/p>\n\n\n\n<p>Example 2:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"feature1\": \"content_genre\",\n  \"feature2\": \"day\",\n  \"combination\": \"news\/talk radio \u00d7 thu\",\n  \"score\": 0.75\n}<\/code><\/pre>\n\n\n\n<p>This represents Content Genre = news\/talk radio + Day = Thursday with a score of 0.75.<\/p>\n\n\n\n<p>The values in combination must match the order of the corresponding feature fields.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3-Way Combination<\/h4>\n\n\n\n<p>A 3-way combination must include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>feature1:<\/strong>&nbsp;The name of the first feature.<\/li>\n\n\n\n<li><strong>feature2:<\/strong>&nbsp;The name of the second feature.<\/li>\n\n\n\n<li><strong>feature3:<\/strong>&nbsp;The name of the third feature.<\/li>\n\n\n\n<li><strong>combination:<\/strong>\u00a0The exact values associated with\u00a0feature1,\u00a0feature2, and\u00a0feature3, provided in the same order and separated by\u00a0\u00d7.<\/li>\n\n\n\n<li><strong>score:<\/strong>\u00a0A numeric value between -1 and 1.<\/li>\n<\/ul>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"feature1\": \"geo_zip\",\n  \"feature2\": \"publisher_name\",\n  \"feature3\": \"device_type\",\n  \"combination\": \"10025 \u00d7 iheartmedia \u00d7 4\",\n  \"score\": 0.85\n}<\/code><\/pre>\n\n\n\n<p>The order of the values in\u00a0combination\u00a0must match the order of the corresponding feature fields.<\/p>\n\n\n\n<p>For example:<\/p>\n\n\n\n<p><code>feature1 = geo_zip<\/code><br><code>feature2 = publisher_name<\/code><br><code>feature3 = device_type<\/code><\/p>\n\n\n\n<p>must correspond to:<\/p>\n\n\n\n<p><code>10025 \u00d7 iheartmedia \u00d7 4<\/code><\/p>\n\n\n\n<p>Users can include one or multiple single variables, 2-way combinations, and 3-way combinations in a custom JSON file to define the optimization logic they want to apply.<\/p>\n\n\n\n<p>Model-generated metrics such as conversion rate, lift, score, and statistical significance apply only to variables and combinations produced and evaluated by the model. User-created variables or combinations should not be assumed to have the same performance unless they are separately analyzed and validated.<\/p>\n\n\n\n<p>Reach out to your Account Manager or contact us through the Pontiac Help Center for assistance creating and implementing a custom JSON model.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"author":17,"featured_media":0,"parent":12691,"menu_order":6,"comment_status":"closed","ping_status":"closed","template":"","doc_tag":[],"class_list":["post-13913","docs","type-docs","status-publish","hentry","no-post-thumbnail"],"comment_count":0,"_links":{"self":[{"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=\/wp\/v2\/docs\/13913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13913"}],"version-history":[{"count":8,"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=\/wp\/v2\/docs\/13913\/revisions"}],"predecessor-version":[{"id":13982,"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=\/wp\/v2\/docs\/13913\/revisions\/13982"}],"up":[{"embeddable":true,"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=\/wp\/v2\/docs\/12691"}],"next":[{"title":"Planning","link":"https:\/\/wiki.pontiac.media\/?docs=analytics-documentation\/planning","href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=\/wp\/v2\/docs\/13920"}],"prev":[{"title":"Analytics Model Association","link":"https:\/\/wiki.pontiac.media\/?docs=analytics-documentation\/analytics-model-association","href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=\/wp\/v2\/docs\/13549"}],"wp:attachment":[{"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13913"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/wiki.pontiac.media\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_tag&post=13913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}