This article details how to setup OpenAI Ads (ChatGPT) campaigns with Singular's Attribution and Conversions API for mobile app campaigns, PC/Console installs, and Web campaigns.
Overview
Singular's web-to-app attribution solutions empower marketers to run web campaigns that drive app installs across Mobile, PC, and Console platforms. Singular's OpenAI Ads integration supports the web-to-app flows described in our Web to App Guide here .
Add ChatGPT Ads Partner Configuration in Singular
- Go to Singular > Attribution > Partner Configuration
- Click " Add a Partner ", and type and choose " OpenAI Ads (ChatGPT) "
- In the dialog, choose your App and App/Website (platform) to configure. Mobile, Web, PC, and Console apps are supported with this integration
-
Paste in the "
Pixel ID
" and "
Conversions API Key
" from your
OpenAI Ads Manager
.
Use the same Pixel ID and Conversions API Key for every platform you configure, rather than a separate one per platform. See Do I need a separate Pixel ID for web and mobile app? below.
-
Optionally configure any additional events to send OpenAI and map them to an "OpenAI Event Name"
- Click " Save " to finish.
Event attributes required for the "OpenAI Ads (ChatGPT)" integration
To enable the OpenAI Ads (ChatGPT) integration, please implement and send the following case-sensitive event attributes.
Mobile
Send the following event attributes:
-
ehash: The SHA-256 hash of the user's email address after trimming leading and trailing whitespace and converting it to lowercase. -
external_id_hash(optional): The SHA-256 hash of a stable, pseudonymous customer identifier from your system.-
If possible, send both
ehashandexternal_id_hashto improve matching. Ifehashis not available, sendexternal_id_hashat a minimum.
-
If possible, send both
Web
Send the following event attributes:
-
page_url(required): The full URL of the page where the event occurred (for example,https://shop.example.com/checkout/confirmation). -
ehash: The SHA-256 hash of the user's email address after trimming leading and trailing whitespace and converting it to lowercase. -
external_id_hash(optional): The SHA-256 hash of a stable, pseudonymous customer identifier from your system.-
page_urlis required. For user fields, if possible, send bothehashandexternal_id_hashto improve matching. Ifehashis not available, sendexternal_id_hashat a minimum.
-
Create Singular Link for "ChatGPT Ads"
- Go to Singular > Attribution > Manage Links
- Select your mobile app from the list of apps on the left
- Select "Create Link" -> Link Type "Partner" -> Source Name "OpenAI Ads (ChatGPT)"
- Continue through the step-by-step link creation.
- Set the redirect destination. This is where the user is sent when they do not have the app installed. The default is your app's store URL. To send those users to your website instead, choose the Web URL option and enter the destination. Web campaigns that convert on your site use this option.
- (Optional) Add any additional parameters or macros you need in the Additional Parameters section. Add them here rather than editing the generated link afterwards.
- Click "Generate"
- Copy the "Click-through Tracking Link" for the next step
The generated link already carries the campaign parameters and the OpenAI Ads dynamic macros. Every parameter is forwarded to the redirect destination, where the Singular Web SDK reads it to attribute the web conversion. A generated link looks like this:
https://yourapp.sng.link/XXXXX/YYYY?_dl=yourapp%3A%2F%2Fmy_default_deeplink&_smtype=3&wpcl={oppref}&wpscid={ad_group_id}&pcid={campaign_id}&_forward_params=1&pscid={ad_group_id}&pcrid={ad_id}&wpcrid={ad_id}&cl={oppref}&wpsrc=ChatGPT%20Web%20CAPI&wpcid={campaign_id}
Do not edit the generated query string. The link carries wpsrc=ChatGPT%20Web%20CAPI, which sets the Source that the OpenAI Ads postback is attached to. If that value is changed, removed, or re-encoded, Singular will not send conversion data to OpenAI and no error is raised. _forward_params=1 must also stay in place, because it is what forwards the parameters to the redirect destination. If you need extra parameters, add them in the Additional Parameters section of the link setup.
Set up your OpenAI Ads (ChatGPT Ads) Campaign
- In OpenAI Ads Manager, create a campaign and continue to the Ad Group step.
-
Enter the Singular Link created above in the "Default Ad Destination URL":
- Leave the macros in the link as they are. OpenAI Ads replaces
{campaign_id},{ad_group_id},{ad_id}and{oppref}at click time, so the campaign breakdown reaches Singular without any manual substitution.
FAQ
Once an attribution is tracked, ChatGPT attributions are reported as follows:
- Source = "ChatGPT"
- Tracker Source Name = "ChatGPT"
- Navigate to the OpenAI Conversions page.
-
Select "
Create
", and choose "Data Source":
-
Once done, copy the new Pixel ID:
No. Use one OpenAI Pixel ID per advertiser, brand, or integration-partner destination, not per platform. For Singular, use the same Pixel ID and Conversions API Key for web, iOS, and Android measurement.
Singular sets the platform on each event automatically: action_source: "web" for web events, and action_source: "mobile_app" for iOS and Android events. There is nothing to configure for this.
OpenAI does not currently support native mobile data sources, so there is no app-type data source to create. Create a web data source and use its Pixel ID for every platform you measure.
Multiple Pixel IDs are intended for a different purpose: when the same website measures conversions for more than one advertiser, brand, or integration partner. Platform is not a reason to create a second Pixel ID.
- Navigate to the OpenAI Conversions page.
-
Select "
Conversion keys
", and choose "Create new key":
-
Copy your new key to Singular's Partner Configuration:
| Parameter | Details |
|---|---|
| event_name |
|
action_source |
|
| hashed email |
|
| hashed external user ID |
|
| IP address |
|
| user agent |
|
| For Deduplication of Events (Optional) | |
| event_id |
|
Each campaign dimension appears twice. The app-side parameter attributes the app install, and the web-side parameter is what the Singular Web SDK reads to attribute a conversion that happens on your website. One link serves both outcomes.
| Dimension | App-side | Web-side | OpenAI Ads macro |
|---|---|---|---|
| Campaign | pcid |
wpcid |
{campaign_id} |
| Ad group | pscid |
wpscid |
{ad_group_id} |
| Ad / creative | pcrid |
wpcrid |
{ad_id} |
| Click ID | cl |
wpcl |
{oppref} |
The link also carries these control parameters:
-
wpsrc=ChatGPT%20Web%20CAPIsets the Source for Singular Web Attribution and is required for the OpenAI Ads postback to fire. Do not change it. -
_forward_params=1forwards the link parameters to the store and web redirect destinations. -
_dlholds the deep link destination that the link opens when the app is installed. -
_smtype=3is applied when probabilistic attribution is enabled on the tracking link. If probabilistic attribution is turned off for the link, this parameter is not added.
The tracking link captures campaign, ad group, and ad IDs, not names. Singular takes the names from the OpenAI Ads Data Connector and matches them to the IDs captured on the link, so your reports show readable names against the clicks and installs.
This is why names are not placed on the link. IDs are stable join keys, so a campaign that is renamed still reports correctly against historical clicks.
| Dimension | ID captured on the link | Name supplied by the Data Connector |
|---|---|---|
| Campaign | adn_campaign_id |
adn_campaign_name |
| Ad group | adn_sub_campaign_id |
adn_sub_campaign_name |
| Ad / creative | adn_creative_id |
adn_creative_name |
Campaign names and cost both come from the Data Connector, so set it up alongside this integration. See OpenAI Ads (ChatGPT) Data Connector.