{"componentChunkName":"component---src-templates-integrations-template-jsx","path":"/integrations/openai/event/","result":{"data":{"currPageMetadata":{"title":"Event","path":"/integrations/openai/event/","hideFromNav":null,"sourceCode":null,"metadataParent":{"title":"OpenAI","path":"/integrations/openai/","sourceCode":null,"hasVersionPicker":null,"metadataChildren":[{"title":"Event","path":"/integrations/openai/event/","order":1,"label":null}],"metadataParent":{"title":"Integrations","path":"/integrations/","metadataChildren":[{"title":null,"path":"/integrations/verizon-media/","order":null,"label":null},{"title":"24i","path":"/integrations/24i/","order":null,"label":null},{"title":"Aarki","path":"/integrations/aarki/","order":null,"label":null},{"title":"ABTasty","path":"/integrations/abtasty/","order":null,"label":null},{"title":"Actable","path":"/integrations/actable/","order":null,"label":null},{"title":"AdChemix","path":"/integrations/adchemix/","order":null,"label":null},{"title":"Adikteev","path":"/integrations/adikteev/","order":null,"label":null},{"title":"Adjust","path":"/integrations/adjust/","order":null,"label":null},{"title":"AdMedia","path":"/integrations/admedia/","order":null,"label":null},{"title":"Adobe Audience Manager","path":"/integrations/adobe-audience-manager/","order":null,"label":null},{"title":"Adobe Campaign Manager","path":"/integrations/adobe-campaign-manager/","order":null,"label":null},{"title":"Adobe Experience Platform","path":"/integrations/adobe-experience-platform/","order":null,"label":null},{"title":"Adobe Marketing Cloud","path":"/integrations/adobe/","order":null,"label":null},{"title":"Adobe Target","path":"/integrations/adobe-target/","order":null,"label":null},{"title":"AdPredictive","path":"/integrations/adpredictive/","order":null,"label":null},{"title":"AgilOne","path":"/integrations/agilone/","order":null,"label":null},{"title":"Airship","path":"/integrations/airship/","order":null,"label":null},{"title":"Algolia","path":"/integrations/algolia/","order":null,"label":null},{"title":"Amazon Advertising","path":"/integrations/amazon-advertising/","order":null,"label":null},{"title":"Amazon Kinesis","path":"/integrations/amazon-kinesis/","order":null,"label":null},{"title":"Amazon Kinesis Firehose","path":"/integrations/amazon-kinesis-firehose/","order":null,"label":null},{"title":"Amazon Redshift","path":"/integrations/amazon-redshift/","order":null,"label":null},{"title":"Amazon S3","path":"/integrations/amazons3/","order":null,"label":null},{"title":"Amazon SNS","path":"/integrations/amazonsns/","order":null,"label":null},{"title":"Amazon SQS","path":"/integrations/amazonsqs/","order":null,"label":null},{"title":"Amobee","path":"/integrations/amobee/","order":null,"label":null},{"title":"Amplitude","path":"/integrations/amplitude/","order":null,"label":null},{"title":"Ampush","path":"/integrations/ampush/","order":null,"label":null},{"title":"Analytics","path":"/integrations/analytics/","order":null,"label":null},{"title":"Anodot","path":"/integrations/anodot/","order":null,"label":null},{"title":"Antavo","path":"/integrations/antavo/","order":null,"label":null},{"title":"AppLovin","path":"/integrations/applovin/","order":null,"label":null},{"title":"AppsFlyer","path":"/integrations/appsflyer/","order":null,"label":null},{"title":"Apptentive","path":"/integrations/apptentive/","order":null,"label":null},{"title":"Apptimize","path":"/integrations/apptimize/","order":null,"label":null},{"title":"Apteligent","path":"/integrations/apteligent/","order":null,"label":null},{"title":"Attentive","path":"/integrations/attentive/","order":null,"label":null},{"title":"Awin","path":"/integrations/awin/","order":null,"label":null},{"title":"Batch","path":"/integrations/batch/","order":null,"label":null},{"title":"Bidease","path":"/integrations/bidease/","order":null,"label":null},{"title":"Bing Ads","path":"/integrations/bing/","order":null,"label":null},{"title":"Bluecore","path":"/integrations/bluecore/","order":null,"label":null},{"title":"Bluedot","path":"/integrations/bluedot/","order":null,"label":null},{"title":"Blueshift","path":"/integrations/blueshift/","order":null,"label":null},{"title":"Branch","path":"/integrations/branch-metrics/","order":null,"label":null},{"title":"Branch S2S Event","path":"/integrations/branch-metrics-server/","order":null,"label":null},{"title":"Braze","path":"/integrations/braze/","order":null,"label":null},{"title":"Bugsnag","path":"/integrations/bugsnag/","order":null,"label":null},{"title":"Button","path":"/integrations/button/","order":null,"label":null},{"title":"Cadent","path":"/integrations/cadent/","order":null,"label":null},{"title":"Census","path":"/integrations/census/","order":null,"label":null},{"title":"CleverTap","path":"/integrations/clevertap/","order":null,"label":null},{"title":"comScore","path":"/integrations/comscore/","order":null,"label":null},{"title":"Conversant","path":"/integrations/conversant/","order":null,"label":null},{"title":"Cordial","path":"/integrations/cordial/","order":null,"label":null},{"title":"Cortex","path":"/integrations/cortex/","order":null,"label":null},{"title":"Criteo","path":"/integrations/criteo/","order":null,"label":null},{"title":"Crossing Minds","path":"/integrations/crossing-minds/","order":null,"label":null},{"title":"Custom Feed","path":"/integrations/custom-feed/","order":null,"label":null},{"title":"Customer.io","path":"/integrations/customerio/","order":null,"label":null},{"title":"CustomerGlu","path":"/integrations/customerglu/","order":null,"label":null},{"title":"Databricks","path":"/integrations/databricks/","order":null,"label":null},{"title":"Datadog","path":"/integrations/datadog/","order":null,"label":null},{"title":"Didomi","path":"/integrations/didomi/","order":null,"label":null},{"title":"Dynamic Yield","path":"/integrations/dynamic-yield/","order":null,"label":null},{"title":"Eagle Eye","path":"/integrations/eagleeye/","order":null,"label":null},{"title":"Edge226","path":"/integrations/edge226/","order":null,"label":null},{"title":"Emarsys","path":"/integrations/emarsys/","order":null,"label":null},{"title":"Epsilon","path":"/integrations/epsilon/","order":null,"label":null},{"title":"Everflow","path":"/integrations/everflow/","order":null,"label":null},{"title":"Facebook","path":"/integrations/facebook/","order":null,"label":null},{"title":"Facebook Offline Conversions","path":"/integrations/facebook-offline-conversions/","order":null,"label":null},{"title":"Flurry","path":"/integrations/flurry/","order":null,"label":null},{"title":"Flybits","path":"/integrations/flybits/","order":null,"label":null},{"title":"ForeSee","path":"/integrations/foresee/","order":null,"label":null},{"title":"Foursquare","path":"/integrations/foursquare/","order":null,"label":null},{"title":"FreeWheel Data Suite","path":"/integrations/freewheel/","order":null,"label":null},{"title":"Friendbuy","path":"/integrations/friendbuy/","order":null,"label":null},{"title":"Google Ad Manager","path":"/integrations/google-ad-manager/","order":null,"label":null},{"title":"Google Ads","path":"/integrations/google-ads/","order":null,"label":null},{"title":"Google Analytics","path":"/integrations/google-analytics/","order":null,"label":null},{"title":"Google Analytics 4","path":"/integrations/google-analytics-4/","order":null,"label":null},{"title":"Google Analytics for Firebase","path":"/integrations/firebase/","order":null,"label":null},{"title":"Google BigQuery","path":"/integrations/google-bigquery/","order":null,"label":null},{"title":"Google Cloud Storage","path":"/integrations/google-cloud-storage/","order":null,"label":null},{"title":"Google Enhanced Conversions","path":"/integrations/google-enhanced-conversions/","order":null,"label":null},{"title":"Google Marketing Platform","path":"/integrations/google-marketing-platform/","order":null,"label":null},{"title":"Google Marketing Platform Offline Conversions","path":"/integrations/google-marketing-platform-offline/","order":null,"label":null},{"title":"Google Pub/Sub","path":"/integrations/google-pubsub/","order":null,"label":null},{"title":"Google Tag Manager","path":"/integrations/google-tag-manager/","order":null,"label":null},{"title":"Heap","path":"/integrations/heap/","order":null,"label":null},{"title":"Herow","path":"/integrations/herow/","order":null,"label":null},{"title":"Hightouch","path":"/integrations/hightouch/","order":null,"label":null},{"title":"Hyperlocology","path":"/integrations/hyperlocology/","order":null,"label":null},{"title":"Ibotta","path":"/integrations/ibotta/","order":null,"label":null},{"title":"ID5","path":"/integrations/id5/","order":null,"label":null},{"title":"Impact","path":"/integrations/impact/","order":null,"label":null},{"title":"InMarket","path":"/integrations/inmarket/","order":null,"label":null},{"title":"InMobi","path":"/integrations/inmobi/","order":null,"label":null},{"title":"Insider","path":"/integrations/insider/","order":null,"label":null},{"title":"Inspectlet","path":"/integrations/inspectlet/","order":null,"label":null},{"title":"Intercom","path":"/integrations/intercom/","order":null,"label":null},{"title":"iPost","path":"/integrations/ipost/","order":null,"label":null},{"title":"ironSource","path":"/integrations/ironsource/","order":null,"label":null},{"title":"Iterable","path":"/integrations/iterable/","order":null,"label":null},{"title":"Jampp","path":"/integrations/jampp/","order":null,"label":null},{"title":"Kafka","path":"/integrations/kafka/","order":null,"label":null},{"title":"Kayzen","path":"/integrations/kayzen/","order":null,"label":null},{"title":"Kissmetrics","path":"/integrations/kissmetrics/","order":null,"label":null},{"title":"Klaviyo","path":"/integrations/klaviyo/","order":null,"label":null},{"title":"Kochava","path":"/integrations/kochava/","order":null,"label":null},{"title":"Kubit","path":"/integrations/kubit/","order":null,"label":null},{"title":"LaunchDarkly","path":"/integrations/launchdarkly/","order":null,"label":null},{"title":"Leanplum","path":"/integrations/leanplum/","order":null,"label":null},{"title":"LifeStreet","path":"/integrations/lifestreet/","order":null,"label":null},{"title":"Liftoff","path":"/integrations/liftoff/","order":null,"label":null},{"title":"LinkedIn","path":"/integrations/linkedin/","order":null,"label":null},{"title":"LiveLike","path":"/integrations/livelike/","order":null,"label":null},{"title":"Liveramp","path":"/integrations/liveramp/","order":null,"label":null},{"title":"Localytics","path":"/integrations/localytics/","order":null,"label":null},{"title":"MadHive","path":"/integrations/madhive/","order":null,"label":null},{"title":"mAdme Technologies","path":"/integrations/madme/","order":null,"label":null},{"title":"Mailchimp","path":"/integrations/mailchimp/","order":null,"label":null},{"title":"Marigold","path":"/integrations/marigold/","order":null,"label":null},{"title":"Mautic","path":"/integrations/mautic/","order":null,"label":null},{"title":"MediaMath","path":"/integrations/mediamath/","order":null,"label":null},{"title":"Mediasmart","path":"/integrations/mediasmart/","order":null,"label":null},{"title":"Microsoft Ads","path":"/integrations/microsoft/","order":null,"label":null},{"title":"Microsoft Azure Blob Storage","path":"/integrations/azure-blob-storage/","order":null,"label":null},{"title":"Microsoft Azure Event Hubs","path":"/integrations/microsoft-azure-event-hubs/","order":null,"label":null},{"title":"Mintegral","path":"/integrations/mintegral/","order":null,"label":null},{"title":"Mixpanel","path":"/integrations/mixpanel/","order":null,"label":null},{"title":"MoEngage","path":"/integrations/moengage/","order":null,"label":null},{"title":"Moloco","path":"/integrations/moloco/","order":null,"label":null},{"title":"Monetate","path":"/integrations/monetate/","order":null,"label":null},{"title":"Movable Ink","path":"/integrations/movableink/","order":null,"label":null},{"title":"Movable Ink - V2","path":"/integrations/movableink-v2/","order":null,"label":null},{"title":"Multiplied","path":"/integrations/multiplied/","order":null,"label":null},{"title":"myTarget","path":"/integrations/mytarget/","order":null,"label":null},{"title":"Nami ML","path":"/integrations/nami-ml/","order":null,"label":null},{"title":"Nanigans","path":"/integrations/nanigans/","order":null,"label":null},{"title":"Narrative","path":"/integrations/narrative/","order":null,"label":null},{"title":"NCR Aloha","path":"/integrations/ncr-aloha/","order":null,"label":null},{"title":"Neura","path":"/integrations/neura/","order":null,"label":null},{"title":"OneTrust","path":"/integrations/onetrust/","order":null,"label":null},{"title":"OpenAI","path":"/integrations/openai/","order":null,"label":null},{"title":"Optimizely","path":"/integrations/optimizely/","order":null,"label":null},{"title":"Oracle BlueKai","path":"/integrations/oracle-bluekai/","order":null,"label":null},{"title":"Oracle Responsys","path":"/integrations/oracle-responsys/","order":null,"label":null},{"title":"Paytronix","path":"/integrations/paytronix/","order":null,"label":null},{"title":"Persona.ly","path":"/integrations/persona/","order":null,"label":null},{"title":"Personify XP","path":"/integrations/personify-xp/","order":null,"label":null},{"title":"PieEye","path":"/integrations/pieeye/","order":null,"label":null},{"title":"Pilgrim","path":"/integrations/pilgrim/","order":null,"label":null},{"title":"Pinterest","path":"/integrations/pinterest/","order":null,"label":null},{"title":"Plarin","path":"/integrations/plarin/","order":null,"label":null},{"title":"Postie","path":"/integrations/postie/","order":null,"label":null},{"title":"Primer","path":"/integrations/primer/","order":null,"label":null},{"title":"Punchh","path":"/integrations/punchh/","order":null,"label":null},{"title":"Pushwoosh","path":"/integrations/pushwoosh/","order":null,"label":null},{"title":"Qualtrics","path":"/integrations/qualtrics/","order":null,"label":null},{"title":"Quantcast","path":"/integrations/quantcast/","order":null,"label":null},{"title":"Radar","path":"/integrations/radar/","order":null,"label":null},{"title":"Rakuten","path":"/integrations/rakuten/","order":null,"label":null},{"title":"Reddit","path":"/integrations/reddit/","order":null,"label":null},{"title":"Regal","path":"/integrations/regal/","order":null,"label":null},{"title":"Remerge","path":"/integrations/remerge/","order":null,"label":null},{"title":"Retina AI","path":"/integrations/retina-ai/","order":null,"label":null},{"title":"Reveal Mobile","path":"/integrations/reveal-mobile/","order":null,"label":null},{"title":"RevenueCat","path":"/integrations/revenuecat/","order":null,"label":null},{"title":"Rokt","path":"/integrations/rokt/","order":null,"label":null},{"title":"RTB House","path":"/integrations/rtb-house/","order":null,"label":null},{"title":"Sailthru","path":"/integrations/sailthru/","order":null,"label":null},{"title":"Salesforce Email","path":"/integrations/salesforce-email/","order":null,"label":null},{"title":"Salesforce Mobile Push","path":"/integrations/salesforce-mobile-push/","order":null,"label":null},{"title":"Salesforce Sales and Service Cloud","path":"/integrations/salesforce-sales-cloud/","order":null,"label":null},{"title":"Samba TV","path":"/integrations/samba-tv/","order":null,"label":null},{"title":"Scalarr","path":"/integrations/scalarr/","order":null,"label":null},{"title":"SendGrid","path":"/integrations/sendgrid/","order":null,"label":null},{"title":"SessionM","path":"/integrations/sessionm/","order":null,"label":null},{"title":"SFTP","path":"/integrations/sftp/","order":null,"label":null},{"title":"ShareThis","path":"/integrations/sharethis/","order":null,"label":null},{"title":"Shopify","path":"/integrations/shopify/","order":null,"label":null},{"title":"SimpleReach","path":"/integrations/simplereach/","order":null,"label":null},{"title":"Singular","path":"/integrations/singular/","order":null,"label":null},{"title":"Singular-DEPRECATED","path":"/integrations/singular-deprecated/","order":null,"label":null},{"title":"Skyhook","path":"/integrations/skyhook/","order":null,"label":null},{"title":"Slack","path":"/integrations/slack/","order":null,"label":null},{"title":"Smadex","path":"/integrations/smadex/","order":null,"label":null},{"title":"SmarterHQ","path":"/integrations/smarterhq/","order":null,"label":null},{"title":"Snapchat","path":"/integrations/snapchat/","order":null,"label":null},{"title":"Snapchat Conversions","path":"/integrations/snapchat-conversions/","order":null,"label":null},{"title":"Snowflake","path":"/integrations/snowflake/","order":null,"label":null},{"title":"Snowplow","path":"/integrations/snowplow/","order":null,"label":null},{"title":"Split","path":"/integrations/split/","order":null,"label":null},{"title":"Splunk MINT","path":"/integrations/splunk-mint/","order":null,"label":null},{"title":"Spotify","path":"/integrations/spotify/","order":null,"label":null},{"title":"Sprig","path":"/integrations/sprig/","order":null,"label":null},{"title":"StartApp","path":"/integrations/startapp/","order":null,"label":null},{"title":"Statsig","path":"/integrations/statsig/","order":null,"label":null},{"title":"Stormly","path":"/integrations/stormly/","order":null,"label":null},{"title":"Swrve","path":"/integrations/swrve/","order":null,"label":null},{"title":"Talon.One","path":"/integrations/talon-one/","order":null,"label":null},{"title":"Tapad","path":"/integrations/tapad/","order":null,"label":null},{"title":"Tapjoy","path":"/integrations/tapjoy/","order":null,"label":null},{"title":"Taplytics","path":"/integrations/taplytics/","order":null,"label":null},{"title":"Taptica","path":"/integrations/taptica/","order":null,"label":null},{"title":"Teak","path":"/integrations/teak/","order":null,"label":null},{"title":"The Trade Desk","path":"/integrations/the-trade-desk/","order":null,"label":null},{"title":"Ticketure","path":"/integrations/ticketure/","order":null,"label":null},{"title":"TikTok Event","path":"/integrations/tiktok/","order":null,"label":null},{"title":"Treasure Data","path":"/integrations/treasure-data/","order":null,"label":null},{"title":"Triton Digital","path":"/integrations/triton-digital/","order":null,"label":null},{"title":"TUNE","path":"/integrations/tune/","order":null,"label":null},{"title":"Twitter","path":"/integrations/twitter/","order":null,"label":null},{"title":"Valid","path":"/integrations/valid/","order":null,"label":null},{"title":"Vibe","path":"/integrations/vibe/","order":null,"label":null},{"title":"Vkontakte","path":"/integrations/vkontakte/","order":null,"label":null},{"title":"Voucherify","path":"/integrations/voucherify/","order":null,"label":null},{"title":"Vungle","path":"/integrations/vungle/","order":null,"label":null},{"title":"Webhook","path":"/integrations/webhook/","order":null,"label":null},{"title":"Webtrends","path":"/integrations/webtrends/","order":null,"label":null},{"title":"White Label Loyalty","path":"/integrations/whitelabelloyalty/","order":null,"label":null},{"title":"Wootric","path":"/integrations/wootric/","order":null,"label":null},{"title":"X","path":"/integrations/x/","order":null,"label":null},{"title":"Xandr","path":"/integrations/xandr/","order":null,"label":null},{"title":"Yahoo (formerly Verizon Media)","path":"/integrations/yahoo/","order":null,"label":null},{"title":"Yotpo","path":"/integrations/yotpo/","order":null,"label":null},{"title":"YouAppi","path":"/integrations/youappi/","order":null,"label":null},{"title":"Z2A Digital","path":"/integrations/z2adigital/","order":null,"label":null},{"title":"Zendesk","path":"/integrations/zendesk/","order":null,"label":null}],"metadataParent":null},"partnerId":186}},"markdownRemark":{"html":"<p>The <a href=\"https://developers.openai.com/ads/conversions-api\">OpenAI Conversions API</a> lets advertisers send conversion events from their servers to <a href=\"https://openai.com/\">OpenAI</a> to measure campaign performance and optimize campaigns for conversions. The mParticle event integration forwards your app, web, and server-to-server events to the OpenAI Conversions API, so you can send conversions to OpenAI without building and maintaining your own server-side integration.</p>\n<h2 id=\"prerequisites\" style=\"position:relative;\"><a href=\"#prerequisites\" aria-label=\"prerequisites permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Prerequisites</h2>\n<p>To set up the OpenAI event integration, you need:</p>\n<ul>\n<li>An OpenAI Ads Manager account.</li>\n<li>An OpenAI <strong>Pixel ID</strong>, from the conversions tab of OpenAI Ads Manager.</li>\n<li>An OpenAI <strong>Conversion Key</strong>. To generate one, click the key icon in the top-right corner of OpenAI Ads Manager.</li>\n</ul>\n<h2 id=\"setup\" style=\"position:relative;\"><a href=\"#setup\" aria-label=\"setup permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Setup</h2>\n<h3 id=\"1-create-an-openai-output-configuration\" style=\"position:relative;\"><a href=\"#1-create-an-openai-output-configuration\" aria-label=\"1 create an openai output configuration permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>1. Create an OpenAI output configuration</h3>\n<ol>\n<li>In mParticle, navigate to <strong>Setup > Outputs</strong>.</li>\n<li>Click <strong>Add Output</strong> and select <strong>OpenAI</strong>.</li>\n<li>Enter a descriptive <strong>Configuration Name</strong>.</li>\n<li>Enter your <strong>Pixel ID</strong>: the pixel ID from the conversions tab of OpenAI Ads Manager.</li>\n<li>Enter your <strong>Conversion Key</strong>: the key you generated from the key icon in OpenAI Ads Manager.</li>\n<li>Click <strong>Save</strong>.</li>\n</ol>\n<h3 id=\"2-connect-a-data-input-to-openai\" style=\"position:relative;\"><a href=\"#2-connect-a-data-input-to-openai\" aria-label=\"2 connect a data input to openai permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>2. Connect a data input to OpenAI</h3>\n<p>A connection links one platform input (such as your iOS app, Android app, or web property) to this output configuration. Each connection is independent and can be configured with its own <a href=\"#connection-settings\">Connection Settings</a>, so you can use a different action source, external identity type, or consent mapping per input.</p>\n<p>To connect an input:</p>\n<ol>\n<li>In mParticle, navigate to <strong>Connections</strong> and select the input you want to connect to.</li>\n<li>Click <strong>Connect Output</strong> and find <strong>OpenAI</strong> in the output list.</li>\n<li>Select an <strong>Action Source</strong>: where the conversions on this connection occur. If you select <strong>Web</strong>, every event must include a source URL. See <a href=\"#source-url\">Source URL</a>. For iOS, Android, and tvOS connections, select <strong>Mobile App</strong>.</li>\n<li>(Optional) Enable <strong>Forward Location Attributes</strong> to send country, city, and postal code for conversion matching.</li>\n<li>(Optional) Enable <strong>Forward Device Info</strong> to send the IP address and user agent for conversion matching.</li>\n<li>(Optional) Enable <strong>Enrich with IP Address</strong> to fill in a missing IP address with the user’s most recently seen IP address. Requires <strong>Forward Device Info</strong>. See <a href=\"#enrich-with-ip-address\">Enrich with IP Address</a>.</li>\n<li>(Optional) Enable <strong>Validate Only</strong> while you are testing the connection. OpenAI validates events without saving them. Disable this setting before you go live.</li>\n<li>(Optional) Select an <strong>External Identity Type</strong>: the mParticle identity to send to OpenAI as the external ID. Defaults to Customer ID. Select <strong>None</strong> to send no external ID.</li>\n<li>(Optional) Select a <strong>User Data Consent Mapping</strong>: the consent purpose used to set OpenAI’s <code class=\"language-text\">opt_out</code> flag. See <a href=\"#consent\">Consent</a>.</li>\n<li>(Optional) Disable <strong>Send Custom Event Attributes</strong> to send standard event data only. See <a href=\"#custom-attributes\">Custom attributes</a>.</li>\n<li>Click <strong>Add Connection</strong>.</li>\n</ol>\n<p>Repeat for each platform input you want to forward to OpenAI.</p>\n<h2 id=\"supported-platforms\" style=\"position:relative;\"><a href=\"#supported-platforms\" aria-label=\"supported platforms permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Supported platforms</h2>\n<ul>\n<li>iOS</li>\n<li>Android</li>\n<li>tvOS</li>\n<li>Web</li>\n<li>Custom Feed (server-to-server)</li>\n</ul>\n<h2 id=\"supported-identities\" style=\"position:relative;\"><a href=\"#supported-identities\" aria-label=\"supported identities permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Supported identities</h2>\n<p>OpenAI uses identities and other user data to match conversions to people who saw or interacted with an ad. mParticle sends these fields in the <code class=\"language-text\">user</code> object of each event. All fields are optional: mParticle forwards events to OpenAI even when no identity is present. OpenAI can also attribute conversions using the OpenAI attribution identifier (<code class=\"language-text\">oppref</code>) alone. See <a href=\"#custom-flags\">Custom flags</a>.</p>\n<table>\n<thead>\n<tr>\n<th>OpenAI field</th>\n<th>mParticle source</th>\n<th>When it’s sent</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">phone_numbers_sha256</code></td>\n<td>Mobile Number, Phone Number 2, and Phone Number 3 identities, and the <code class=\"language-text\">$Mobile</code> user attribute</td>\n<td>Automatically when present. Up to three unique phone numbers are sent.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">emails_sha256</code></td>\n<td>Email identity</td>\n<td>Automatically when present.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">external_ids_sha256</code></td>\n<td>The identity selected in the <strong>External Identity Type</strong> connection setting (Customer ID by default)</td>\n<td>When the selected identity is present. Not sent when <strong>External Identity Type</strong> is set to None.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">first_names_sha256</code></td>\n<td><code class=\"language-text\">$FirstName</code> user attribute</td>\n<td>Automatically when present.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">last_names_sha256</code></td>\n<td><code class=\"language-text\">$LastName</code> user attribute</td>\n<td>Automatically when present.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">postal_codes</code></td>\n<td><code class=\"language-text\">$Zip</code> user attribute</td>\n<td>Requires <strong>Forward Location Attributes</strong>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">cities</code></td>\n<td><code class=\"language-text\">$City</code> user attribute</td>\n<td>Requires <strong>Forward Location Attributes</strong>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">countries</code></td>\n<td><code class=\"language-text\">$Country</code> user attribute</td>\n<td>Requires <strong>Forward Location Attributes</strong>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">android_advertising_id</code></td>\n<td>Google Advertising ID (GAID)</td>\n<td>Automatically when present.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">obref</code></td>\n<td><code class=\"language-text\">OpenAI.Obref</code> custom flag</td>\n<td>When the custom flag is set. See <a href=\"#custom-flags\">Custom flags</a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">ip_address</code></td>\n<td>IP address collected by mParticle</td>\n<td>Requires <strong>Forward Device Info</strong>. See also <a href=\"#enrich-with-ip-address\">Enrich with IP Address</a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">user_agent</code></td>\n<td>User agent collected by mParticle</td>\n<td>Requires <strong>Forward Device Info</strong>.</td>\n</tr>\n</tbody>\n</table>\n<p>mParticle normalizes and hashes phone numbers, emails, external IDs, and names before sending them. See <a href=\"#data-processing-notes\">Data processing notes</a>.</p>\n<aside>OpenAI doesn't accept iOS advertising IDs (IDFA), so mParticle doesn't send iOS device IDs. For iOS connections, OpenAI matches conversions using email, phone number, external ID, and the other fields above.</aside>\n<h2 id=\"supported-event-types\" style=\"position:relative;\"><a href=\"#supported-event-types\" aria-label=\"supported event types permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Supported event types</h2>\n<p>mParticle forwards the following event types to OpenAI:</p>\n<ul>\n<li>Commerce Event</li>\n<li>Screen View</li>\n<li>Application State Transition (iOS, Android, and tvOS only)</li>\n<li>Custom Event (only when mapped with a <a href=\"#custom-mappings\">custom mapping</a>)</li>\n</ul>\n<h3 id=\"native-event-mappings\" style=\"position:relative;\"><a href=\"#native-event-mappings\" aria-label=\"native event mappings permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Native event mappings</h3>\n<p>mParticle maps the following events to OpenAI event types automatically. You don’t need to configure anything for these events.</p>\n<table>\n<thead>\n<tr>\n<th>mParticle event</th>\n<th>OpenAI event type</th>\n<th>OpenAI <code class=\"language-text\">data.type</code></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Commerce Event: View Detail</td>\n<td><code class=\"language-text\">contents_viewed</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>Commerce Event: Add to Cart</td>\n<td><code class=\"language-text\">items_added</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>Commerce Event: Checkout</td>\n<td><code class=\"language-text\">checkout_started</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>Commerce Event: Purchase</td>\n<td><code class=\"language-text\">order_created</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>Screen View</td>\n<td><code class=\"language-text\">page_viewed</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>Application State Transition: Install</td>\n<td><code class=\"language-text\">app_installed</code></td>\n<td><code class=\"language-text\">customer_action</code></td>\n</tr>\n<tr>\n<td>Application State Transition: Initialized, Upgrade, or Foreground</td>\n<td><code class=\"language-text\">app_opened</code></td>\n<td><code class=\"language-text\">customer_action</code></td>\n</tr>\n</tbody>\n</table>\n<p>Notes on native mappings:</p>\n<ul>\n<li>Other commerce event actions (for example, Remove from Cart, Refund, Add to Wishlist, and promotion or impression events) are not forwarded.</li>\n<li>Application state transitions are forwarded only from iOS, Android, and tvOS inputs. Background and exit transitions are not forwarded. OpenAI only accepts <code class=\"language-text\">app_installed</code> and <code class=\"language-text\">app_opened</code> from mobile apps, so mParticle always sends these events with <code class=\"language-text\">action_source</code> set to <code class=\"language-text\">mobile_app</code>, regardless of the <strong>Action Source</strong> connection setting.</li>\n</ul>\n<h3 id=\"custom-mappings\" style=\"position:relative;\"><a href=\"#custom-mappings\" aria-label=\"custom mappings permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Custom mappings</h3>\n<p>Use custom mappings to send mParticle custom events to OpenAI. Custom events are forwarded only when you map them; unmapped custom events aren’t sent. In your OpenAI connection, open the <strong>Custom Mappings</strong> tab, select an OpenAI event, and map an mParticle event to it. For more information, see <a href=\"/guides/data-platform/setup/connections/#custom-mappings\">Custom Mappings</a>.</p>\n<p>Map an event to one of OpenAI’s standard events when one fits. To send an event that doesn’t match a standard event, map it to <strong>Custom</strong>.</p>\n<table>\n<thead>\n<tr>\n<th>OpenAI event (Custom Mappings tab)</th>\n<th>OpenAI event type</th>\n<th>OpenAI <code class=\"language-text\">data.type</code></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Appointment Scheduled</td>\n<td><code class=\"language-text\">appointment_scheduled</code></td>\n<td><code class=\"language-text\">customer_action</code></td>\n</tr>\n<tr>\n<td>Lead Created</td>\n<td><code class=\"language-text\">lead_created</code></td>\n<td><code class=\"language-text\">customer_action</code></td>\n</tr>\n<tr>\n<td>Registration Completed</td>\n<td><code class=\"language-text\">registration_completed</code></td>\n<td><code class=\"language-text\">customer_action</code></td>\n</tr>\n<tr>\n<td>Subscription Created</td>\n<td><code class=\"language-text\">subscription_created</code></td>\n<td><code class=\"language-text\">plan_enrollment</code></td>\n</tr>\n<tr>\n<td>Trial Started</td>\n<td><code class=\"language-text\">trial_started</code></td>\n<td><code class=\"language-text\">plan_enrollment</code></td>\n</tr>\n<tr>\n<td>Page Viewed</td>\n<td><code class=\"language-text\">page_viewed</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>Checkout Started</td>\n<td><code class=\"language-text\">checkout_started</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>Contents Viewed</td>\n<td><code class=\"language-text\">contents_viewed</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>Items Added</td>\n<td><code class=\"language-text\">items_added</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>Order Created</td>\n<td><code class=\"language-text\">order_created</code></td>\n<td><code class=\"language-text\">contents</code></td>\n</tr>\n<tr>\n<td>App Installed</td>\n<td><code class=\"language-text\">app_installed</code></td>\n<td><code class=\"language-text\">customer_action</code></td>\n</tr>\n<tr>\n<td>App Opened</td>\n<td><code class=\"language-text\">app_opened</code></td>\n<td><code class=\"language-text\">customer_action</code></td>\n</tr>\n<tr>\n<td>Custom</td>\n<td><code class=\"language-text\">custom</code></td>\n<td><code class=\"language-text\">custom</code></td>\n</tr>\n</tbody>\n</table>\n<p>Each mapped event has these optional mapping parameters:</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>OpenAI field</th>\n<th>Available on</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Source URL</td>\n<td><code class=\"language-text\">source_url</code></td>\n<td>All events</td>\n<td>The page URL where the conversion occurred. Required by OpenAI when the action source is <code class=\"language-text\">web</code>.</td>\n</tr>\n<tr>\n<td>OpenAI Attribution ID</td>\n<td><code class=\"language-text\">oppref</code></td>\n<td>All events</td>\n<td>The OpenAI attribution identifier, forwarded without modification.</td>\n</tr>\n<tr>\n<td>Custom Event Name</td>\n<td><code class=\"language-text\">custom_event_name</code></td>\n<td>Custom</td>\n<td>The name OpenAI records for the custom event. If you don’t map it, mParticle uses the mParticle event name. See <a href=\"#custom-event-names\">Custom event names</a>.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"custom-event-names\" style=\"position:relative;\"><a href=\"#custom-event-names\" aria-label=\"custom event names permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Custom event names</h4>\n<p>OpenAI requires every <code class=\"language-text\">custom</code> event to have a <code class=\"language-text\">custom_event_name</code> of 1 to 64 lowercase letters, digits, underscores, or hyphens that starts and ends with a letter or digit, and that isn’t one of OpenAI’s standard event names. mParticle normalizes the name before sending it:</p>\n<ol>\n<li>Converts the name to lowercase.</li>\n<li>Replaces each run of unsupported characters (including spaces) with a single underscore.</li>\n<li>Removes leading and trailing underscores and hyphens.</li>\n<li>Truncates the name to 64 characters, then removes any underscores or hyphens left at the end.</li>\n</ol>\n<p>For example, <code class=\"language-text\">Add Payment Method!</code> is sent as <code class=\"language-text\">add_payment_method</code>: the spaces become underscores and the <code class=\"language-text\">!</code> is removed.</p>\n<p>If nothing valid remains after normalization, or if the result matches a standard OpenAI event name (for example, <code class=\"language-text\">lead_created</code>), mParticle doesn’t forward the event and reports it as unable to forward.</p>\n<h4 id=\"custom-attributes\" style=\"position:relative;\"><a href=\"#custom-attributes\" aria-label=\"custom attributes permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Custom attributes</h4>\n<p>When the <strong>Send Custom Event Attributes</strong> connection setting is enabled (the default), mParticle sends all of the custom attributes on events mapped to <strong>Custom</strong> (<code class=\"language-text\">data.type</code> of <code class=\"language-text\">custom</code>) to OpenAI. Each attribute is added to the event’s <code class=\"language-text\">data</code> object as a key-value pair, using the attribute name as the key. Custom attributes aren’t sent for any other OpenAI event type.</p>\n<p>mParticle skips two kinds of attributes:</p>\n<ul>\n<li>Attributes named <code class=\"language-text\">type</code>, <code class=\"language-text\">amount</code>, <code class=\"language-text\">currency</code>, <code class=\"language-text\">contents</code>, or <code class=\"language-text\">plan_id</code>, because these names are reserved for OpenAI’s own <code class=\"language-text\">data</code> fields.</li>\n<li>Attributes you select for the <strong>Source URL</strong>, <strong>OpenAI Attribution ID</strong>, or <strong>Custom Event Name</strong> parameters on the <strong>Custom Mappings</strong> tab. mParticle sends these values in the event’s <code class=\"language-text\">source_url</code>, <code class=\"language-text\">oppref</code>, and <code class=\"language-text\">custom_event_name</code> fields instead, so they aren’t repeated in <code class=\"language-text\">data</code>.</li>\n</ul>\n<p>To send standard event data only, disable the <strong>Send Custom Event Attributes</strong> connection setting. To exclude specific attributes while sending the rest, use <a href=\"/guides/data-platform/data-filter/\">platform filters or feed filters</a>.</p>\n<h2 id=\"event-data-mapping\" style=\"position:relative;\"><a href=\"#event-data-mapping\" aria-label=\"event data mapping permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Event data mapping</h2>\n<h3 id=\"event-fields\" style=\"position:relative;\"><a href=\"#event-fields\" aria-label=\"event fields permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Event fields</h3>\n<table>\n<thead>\n<tr>\n<th>OpenAI field</th>\n<th>mParticle source</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td><code class=\"language-text\">OpenAI.EventId</code> custom flag, then the source message ID, then the mParticle event ID</td>\n<td>See <a href=\"#deduplication\">Deduplication</a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">type</code></td>\n<td>Native mapping or custom mapping</td>\n<td>See <a href=\"#supported-event-types\">Supported event types</a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">timestamp_ms</code></td>\n<td>Event timestamp</td>\n<td>See <a href=\"#data-processing-notes\">Data processing notes</a> for the accepted time window.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">custom_event_name</code></td>\n<td>Custom Event Name mapping parameter, or the mParticle event name</td>\n<td><code class=\"language-text\">custom</code> events only. See <a href=\"#custom-event-names\">Custom event names</a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">action_source</code></td>\n<td><strong>Action Source</strong> connection setting</td>\n<td>Always <code class=\"language-text\">mobile_app</code> for <code class=\"language-text\">app_installed</code> and <code class=\"language-text\">app_opened</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">source_url</code></td>\n<td>See <a href=\"#source-url\">Source URL</a></td>\n<td></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">oppref</code></td>\n<td><code class=\"language-text\">OpenAI.Oppref</code> custom flag, then the OpenAI Attribution ID mapping parameter</td>\n<td></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">opt_out</code></td>\n<td><strong>User Data Consent Mapping</strong> connection setting</td>\n<td>See <a href=\"#consent\">Consent</a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">user</code></td>\n<td>User identities, user attributes, and device info</td>\n<td>See <a href=\"#supported-identities\">Supported identities</a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">data</code></td>\n<td>Event data</td>\n<td>See <a href=\"#commerce-data\">Commerce data</a> and <a href=\"#custom-attributes\">Custom attributes</a>.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"commerce-data\" style=\"position:relative;\"><a href=\"#commerce-data\" aria-label=\"commerce data permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Commerce data</h3>\n<p>For native commerce event mappings, mParticle sends the following fields in the <code class=\"language-text\">data</code> object:</p>\n<table>\n<thead>\n<tr>\n<th>OpenAI field</th>\n<th>mParticle source</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">data.amount</code></td>\n<td>Product action total amount</td>\n<td>If the total amount is missing or zero, mParticle uses the sum of each product’s price × quantity. Sent as an integer in the currency’s minor unit.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">data.currency</code></td>\n<td>Currency code</td>\n<td>Sent only when <code class=\"language-text\">data.amount</code> is sent.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">data.contents[].id</code></td>\n<td>Product ID (SKU)</td>\n<td></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">data.contents[].name</code></td>\n<td>Product name</td>\n<td></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">data.contents[].content_type</code></td>\n<td><code class=\"language-text\">product</code></td>\n<td>Always set to <code class=\"language-text\">product</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">data.contents[].quantity</code></td>\n<td>Product quantity</td>\n<td>Rounded to a whole number. Not sent if zero or less.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">data.contents[].amount</code></td>\n<td>Product price</td>\n<td>Unit price as an integer in the currency’s minor unit.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">data.contents[].currency</code></td>\n<td>Currency code</td>\n<td>Sent only when <code class=\"language-text\">data.contents[].amount</code> is sent.</td>\n</tr>\n</tbody>\n</table>\n<p>OpenAI requires monetary values as integers in the currency’s minor unit. mParticle converts decimal amounts using the ISO 4217 minor unit for the currency, rounding half away from zero. For example:</p>\n<ul>\n<li><code class=\"language-text\">42.00</code> USD is sent as <code class=\"language-text\">4200</code>.</li>\n<li><code class=\"language-text\">8900</code> JPY is sent as <code class=\"language-text\">8900</code>.</li>\n<li><code class=\"language-text\">1.234</code> KWD is sent as <code class=\"language-text\">1234</code>.</li>\n</ul>\n<p>If the currency code is missing or isn’t a valid ISO 4217 currency, mParticle doesn’t send <code class=\"language-text\">amount</code> or <code class=\"language-text\">currency</code> but still forwards the event and its products.</p>\n<h2 id=\"custom-flags\" style=\"position:relative;\"><a href=\"#custom-flags\" aria-label=\"custom flags permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Custom flags</h2>\n<p><a href=\"/developers/apis/json-reference/#custom_flags\">Custom flags</a> let you set OpenAI-specific values on individual events. A custom flag takes precedence over the matching custom mapping parameter.</p>\n<table>\n<thead>\n<tr>\n<th>Custom flag</th>\n<th>OpenAI field</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">OpenAI.SourceUrl</code></td>\n<td><code class=\"language-text\">source_url</code></td>\n<td>Conditional</td>\n<td>The page URL where the conversion occurred. Must be an absolute <code class=\"language-text\">http</code> or <code class=\"language-text\">https</code> URL. Required for events with an action source of <code class=\"language-text\">web</code>, unless you provide the URL with the <strong>Source URL</strong> custom mapping parameter instead. Without a source URL, mParticle doesn’t forward web events. See <a href=\"#source-url\">Source URL</a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">OpenAI.Oppref</code></td>\n<td><code class=\"language-text\">oppref</code></td>\n<td>No</td>\n<td>The OpenAI attribution identifier, forwarded without modification.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">OpenAI.Obref</code></td>\n<td><code class=\"language-text\">user.obref</code></td>\n<td>No</td>\n<td>The browser reference that the OpenAI pixel stores in the <code class=\"language-text\">__obref</code> cookie. Set this flag to the cookie’s value. mParticle forwards it as-is, so don’t hash it. Only set this flag for users who have given consent.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">OpenAI.EventId</code></td>\n<td><code class=\"language-text\">id</code></td>\n<td>No</td>\n<td>Overrides the event ID that OpenAI uses for deduplication. If you don’t set it, mParticle uses the event’s own ID. See <a href=\"#deduplication\">Deduplication</a>.</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"source-url\" style=\"position:relative;\"><a href=\"#source-url\" aria-label=\"source url permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Source URL</h2>\n<p>OpenAI requires <code class=\"language-text\">source_url</code> for every event with an action source of <code class=\"language-text\">web</code>. mParticle uses the first valid absolute <code class=\"language-text\">http</code> or <code class=\"language-text\">https</code> URL from:</p>\n<ol>\n<li>The <code class=\"language-text\">OpenAI.SourceUrl</code> custom flag.</li>\n<li>The <strong>Source URL</strong> custom mapping parameter.</li>\n<li>The page URL on the event, if one is set.</li>\n</ol>\n<p>If the action source is <code class=\"language-text\">web</code> and none of these provide a valid URL, mParticle doesn’t forward the event and reports it as unable to forward.</p>\n<h2 id=\"consent\" style=\"position:relative;\"><a href=\"#consent\" aria-label=\"consent permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Consent</h2>\n<p>Use the <strong>User Data Consent Mapping</strong> connection setting to select one mParticle consent purpose that controls OpenAI’s <code class=\"language-text\">opt_out</code> flag on each event. For more information on consent in mParticle, see <a href=\"/guides/oversight/privacy/data-privacy-controls/\">Data Privacy Controls</a>.</p>\n<table>\n<thead>\n<tr>\n<th>Consent state for the mapped purpose</th>\n<th><code class=\"language-text\">opt_out</code> value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>GDPR purpose not consented</td>\n<td><code class=\"language-text\">true</code></td>\n</tr>\n<tr>\n<td>CCPA data sale opt-out consented (the user opted out)</td>\n<td><code class=\"language-text\">true</code></td>\n</tr>\n<tr>\n<td>GDPR purpose consented, or CCPA data sale opt-out not consented</td>\n<td><code class=\"language-text\">false</code></td>\n</tr>\n<tr>\n<td>No consent state for the purpose, or no purpose mapped</td>\n<td>Not sent</td>\n</tr>\n</tbody>\n</table>\n<p>Setting <code class=\"language-text\">opt_out</code> to <code class=\"language-text\">true</code> opts the event out of future user-level personalization in OpenAI. OpenAI doesn’t currently use Conversions API data for user-level personalization.</p>\n<aside>mParticle forwards events to OpenAI regardless of consent state. The consent mapping only sets the <code>opt_out</code> field. To stop sending events for users who haven't consented, use a <a href=\"/guides/oversight/privacy/data-privacy-controls/#connections-and-forwarding-rules\">consent-based forwarding rule</a>.</aside>\n<h2 id=\"enrich-with-ip-address\" style=\"position:relative;\"><a href=\"#enrich-with-ip-address\" aria-label=\"enrich with ip address permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Enrich with IP Address</h2>\n<p>When <strong>Enrich with IP Address</strong> and <strong>Forward Device Info</strong> are both enabled, mParticle fills in a missing IP address with the user’s most recently seen IP address.</p>\n<h2 id=\"deduplication\" style=\"position:relative;\"><a href=\"#deduplication\" aria-label=\"deduplication permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Deduplication</h2>\n<p>OpenAI deduplicates events that share the same Pixel ID, event type, and <code class=\"language-text\">id</code>, and keeps the first event it receives. mParticle sets <code class=\"language-text\">id</code> to the first available value from:</p>\n<ol>\n<li>The <code class=\"language-text\">OpenAI.EventId</code> custom flag.</li>\n<li>The source message ID of the event.</li>\n<li>The mParticle event ID.</li>\n</ol>\n<p>The same ID is reused when mParticle retries a request. If you also send the same conversions from the OpenAI pixel, set <code class=\"language-text\">OpenAI.EventId</code> to the pixel event’s <code class=\"language-text\">event_id</code>, and send both events to the same Pixel ID with the same event type. For custom events, also use the same custom event name on both sides.</p>\n<h2 id=\"data-processing-notes\" style=\"position:relative;\"><a href=\"#data-processing-notes\" aria-label=\"data processing notes permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Data processing notes</h2>\n<ul>\n<li><strong>Event age:</strong> OpenAI only accepts events with a timestamp within the last 7 days, and no more than 10 minutes in the future. To allow for queueing and retries, mParticle doesn’t forward events older than 7 days minus 1 hour, or more than 9 minutes in the future. These events are reported as unable to forward. This affects replays and late-arriving data.</li>\n<li><strong>Validation before sending:</strong> OpenAI rejects an entire request if any event in it is invalid. To prevent one bad event from failing others, mParticle validates each event before sending it and doesn’t forward events that fail validation (for example, a web event without a source URL, or a custom event without a valid custom event name).</li>\n<li><strong>Delivery:</strong> Events are forwarded server-to-server in near real time, in requests of up to 1,000 events.</li>\n<li>\n<p><strong>PII hashing:</strong> mParticle normalizes and hashes identities with SHA-256 before forwarding them. Values that are already SHA-256 hashes are sent as-is.</p>\n<ul>\n<li><strong>Email:</strong> trimmed and lowercased.</li>\n<li><strong>Phone number:</strong> spaces, parentheses, periods, hyphens, and the leading <code class=\"language-text\">+</code> and zeros are removed, keeping the country calling code. Only results of 8 to 15 digits are sent. mParticle doesn’t add a country calling code, so phone numbers must include one to match in OpenAI.</li>\n<li><strong>External ID (including MPID):</strong> trimmed. Case is preserved.</li>\n<li><strong>First and last name:</strong> lowercased, with all whitespace and ASCII punctuation removed.</li>\n</ul>\n</li>\n<li><strong>User attributes:</strong> country must be a two-letter ISO 3166-1 code, city must be 128 characters or fewer, and postal code must be up to 32 letters, numbers, spaces, or hyphens. Values in other formats aren’t sent.</li>\n<li><strong>IP address:</strong> only valid IPv4 or IPv6 addresses are sent.</li>\n<li><strong>Validate Only:</strong> while <strong>Validate Only</strong> is enabled, OpenAI validates events but doesn’t save them. Events sent during this time won’t count as conversions.</li>\n</ul>\n<h2 id=\"configuration-settings\" style=\"position:relative;\"><a href=\"#configuration-settings\" aria-label=\"configuration settings permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Configuration settings</h2>\n<table>\n<thead>\n<tr>\n<th>Setting Name</th>\n<th>Data Type</th>\n<th>Required</th>\n<th>Default Value</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Pixel ID</td>\n<td><code class=\"language-text\">string</code></td>\n<td>Yes</td>\n<td></td>\n<td>The Pixel ID from the conversions tab of OpenAI Ads Manager. Sent as the <code class=\"language-text\">pid</code> query parameter on every request.</td>\n</tr>\n<tr>\n<td>Conversion Key</td>\n<td><code class=\"language-text\">string</code></td>\n<td>Yes</td>\n<td></td>\n<td>The conversion key you generate from the key icon in the top-right corner of OpenAI Ads Manager. Sent as a bearer token on every request. This value is stored encrypted.</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"connection-settings\" style=\"position:relative;\"><a href=\"#connection-settings\" aria-label=\"connection settings permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Connection settings</h2>\n<table>\n<thead>\n<tr>\n<th>Setting Name</th>\n<th>Data Type</th>\n<th>Required</th>\n<th>Default Value</th>\n<th>Platform</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Action Source</td>\n<td><code class=\"language-text\">enum</code></td>\n<td>Yes</td>\n<td>Web</td>\n<td>All</td>\n<td>Where conversions on this connection occur. One of Web, Mobile App, Offline, Physical Store, Phone Call, Email, or Other. If you select Web, every event must include a source URL. <code class=\"language-text\">app_installed</code> and <code class=\"language-text\">app_opened</code> events always use Mobile App.</td>\n</tr>\n<tr>\n<td>Forward Location Attributes</td>\n<td><code class=\"language-text\">boolean</code></td>\n<td>No</td>\n<td>False</td>\n<td>All</td>\n<td>If enabled, mParticle forwards the <code class=\"language-text\">$Country</code>, <code class=\"language-text\">$City</code>, and <code class=\"language-text\">$Zip</code> user attributes for conversion matching. First name, last name, and phone number are sent regardless of this setting.</td>\n</tr>\n<tr>\n<td>Forward Device Info</td>\n<td><code class=\"language-text\">boolean</code></td>\n<td>No</td>\n<td>False</td>\n<td>All</td>\n<td>If enabled, mParticle forwards the IP address and user agent for conversion matching. Must be enabled to use <strong>Enrich with IP Address</strong>.</td>\n</tr>\n<tr>\n<td>Enrich with IP Address</td>\n<td><code class=\"language-text\">boolean</code></td>\n<td>No</td>\n<td>False</td>\n<td>All</td>\n<td>If enabled, mParticle fills in a missing IP address with the user’s most recently seen IP address. Requires <strong>Forward Device Info</strong>. See <a href=\"#enrich-with-ip-address\">Enrich with IP Address</a>.</td>\n</tr>\n<tr>\n<td>Validate Only</td>\n<td><code class=\"language-text\">boolean</code></td>\n<td>No</td>\n<td>False</td>\n<td>All</td>\n<td>If enabled, OpenAI validates events without saving them. Enable only during setup and testing.</td>\n</tr>\n<tr>\n<td>External Identity Type</td>\n<td><code class=\"language-text\">enum</code></td>\n<td>No</td>\n<td>Customer ID</td>\n<td>All</td>\n<td>The mParticle identity to send to OpenAI as the external ID (<code class=\"language-text\">external_ids_sha256</code>). One of None, Customer ID, MPID, or Other through Other 10. Select None to send no external ID. Events are still forwarded when the selected identity is missing.</td>\n</tr>\n<tr>\n<td>User Data Consent Mapping</td>\n<td>Custom mapping</td>\n<td>No</td>\n<td></td>\n<td>All</td>\n<td>The mParticle consent purpose used to set the event-level <code class=\"language-text\">opt_out</code> flag. Only one purpose can be selected.</td>\n</tr>\n<tr>\n<td>Send Custom Event Attributes</td>\n<td><code class=\"language-text\">boolean</code></td>\n<td>No</td>\n<td>True</td>\n<td>All</td>\n<td>Sends all custom event attributes to OpenAI as custom fields. Disable to send standard event data only. Use platform or feed filters to exclude specific attributes.</td>\n</tr>\n</tbody>\n</table>","frontmatter":{"title":"Event","seoTitle":null,"seoDescription":null},"parent":{"__typename":"File","modifiedTime":"October 28, 2026"}}},"pageContext":{"slug":"/integrations/openai/event/"}},"staticQueryHashes":["159144251"]}