# Yahoo Ads Conversion Export Integration v2

In Yahoo Ads, a conversion refers to a specific action taken by a user on a website after clicking on an ad. This action is typically pre-defined by the advertiser and can include things like making a purchase, filling out a form, subscribing to a newsletter, or downloading an app. The conversion tracking feature in Yahoo Ads allows advertisers to track and measure the effectiveness of their ad campaigns by counting the number of times users complete the desired action after clicking on an ad. This data can then be used to optimize the ad campaign and improve its overall performance.

For more details, see [Yahoo! JAPAN Ads Help](https://ads-help.yahoo-net.jp/s/?language=en_US)

## What can you do with this Integration?

- This TD export integration allows you to directly write job results from Treasure Data to new [Yahoo! Ads Conversion API](https://conversion-api.yahooapis.jp/v1), which is effective since June 30, 2025.
- Simplified authentication using Tracking Tag Access Token instead of Application ID.


## Prerequisites

- Get Yahoo! JAPAN ID. You can obtain **[one here](https://account.edit.yahoo.co.jp/registration?.src=developer&.done=https%3A%2F%2Fdeveloper.yahoo.co.jp%2Fstart%2F).**
- Obtain a **Tracking Tag Access Token** from Yahoo! Ads for conversion tracking.


## Requirements and Limitations

- This integration supports Yahoo Display Ads only; it does not support Yahoo Search Ads.
- Validate that the event payload matches Yahoo CAPI's rules.
- Do not exceed the API rate limit of 500 requests per second.
- Specific PII (Personally Identifiable Information) fields are hashed using SHA-256 by the integration; you can provide these fields as raw values or as pre-hashed SHA-256 values.
- Skip invalid records that do not pass local validation.
- Retry when you encounter common HTTP errors (429, 500, and similar status codes).
- Log the number of processed, failed, and succeeded records.


## Static IP Address of Treasure Data Integration

If your security policy requires IP whitelisting, you must add Treasure Data's IP addresses to your allowlist to ensure a successful connection.

Please find the complete list of static IP addresses, organized by region, at the following [document](/apis/endpoints/ip-addresses-integrations-result-workers)

## Use the Treasure Console to Create a Connection

In Treasure Data, you must create and configure the data connection before running your query. As part of the data connection, you provide authentication to access the integration.

### Create a New Authentication

1. Open **Treasure Console**.
2. Navigate to **Integrations Hub** > **Catalog**.
3. Search for Yahoo and select **Yahoo! Ads Conversion API V2.**
4. Select **Create Authentication**.
5. Type the credentials to authenticate:


| Parameter | Description |
|  --- | --- |
| Tracking Tag Access Token | Required. Access token obtained from the tracking tag management view in the Campaign Management Tool. |


1. Select **Continue**.
2. Type a name for your connection.
3. Select **Done**.


### Define your Query

1. Navigate to **Data Workbench > Queries**.
2. Select **New Query**.
3. Run the query to validate the result set.



```

SELECT 
  event_type,
  event_snippet_id,
  event_time,
  test_flag,
  transaction_id,
  hashed_phone_number,
  hashed_email,
  ly_su,
  ly_c,
  ly_r,
  ifa,
  line_uid,
  url,
  referrer_url,
  user_agent,
  ip
FROM (
  VALUES (
        'page_view',
        '12345678-abcd-4bcd-1234-123456789012',
        1700000000,
        FALSE,
        '123',
        '4e6a6c5c6f8a086ce4babac3247364cc93a8a995a1968105d9b408f7e6b72e51',
        '31c5543c1734d25c7206f5fd591525d0295bec6fe84ff82f946a34fe970a1e66',
        '1700000000.12345678-abcd-4bcd-1234-123456789012',
        '1700000000.12345678-abcd-4bcd-1234-123456789012',
        '1700000000.FF',
        'ABCDEF00-ABCD-4DEF-1234-1234567890AB',
        'Ua1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p',
        'https://www.yahoo.co.jp/?yj_r=FF&_ly_c=92aafe74-eae4-4130-975c-842a6f82df40&_ly_r=FF',
        'https://www.yahoo.co.jp',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/500.00 (KHTML, like Gecko) Chrome/50.0.0000.000 Safari/500.0',
        '203.0.113.10'
        )
  ) tbl (
    event_type,
    event_snippet_id,
    event_time,
    test_flag,
    transaction_id,
    hashed_phone_number,
    hashed_email,
    ly_su,
    ly_c,
    ly_r,
    ifa,
    line_uid,
    url,
    referrer_url,
    user_agent,
    ip
  )
```

1. You need to define the column mapping in the query. The columns in the query represent data to be sent to Yahoo! Ads Conversion.


At least one of the columns below needs to exist

- hashed_email
- hashed_phone_number
- ly_su
- ly_c
- ly_r
- ifa
- line_uid


| Column | Data type | Required | Value (example) | Description |
|  --- | --- | --- | --- | --- |
| event_type | string | Yes | See [Event Types](https://ads-developers.yahoo.co.jp/en/conversion-api/post/30590575.html) for list of accepted values. | Type of conversion event. For example, page_view, purchase, lead, complete_registration, etc. |
| event_snippet_id | string | No | 12345678-abcd-4bcd-1234-123456789012 | Snippet ID |
| event_time | long | Yes | 1600000000 | Date and time conversions occurred. Use 10-digit Unix Time between current time and 90 days before requests. No sign |
| test_flag | boolean | No | false | Flag indicating whether it is a test. true: Exclude from tracking as a test. false: Include in tracking. |
| transaction_id | string | No | order1234 | A unique ID for duplicate detection in conversion tracking. Any string up to 64 characters. |
| hashed_email | string | Conditional | * Hashed value **31c5543c1734d25c7206f5fd591525d0295bec6fe84ff82f946a34fe970a1e66**
* Raw email **example@example.com**

 | Hashed email address using SHA-256. Use lower case alphanumeric characters. Can be one of two formats:* SHA-256 hashed value (hex).
* Raw email address.

 |
| hashed_phone_number | string | Conditional | * Hashed value
**4e6a6c5c6f8a086ce4babac3247364cc93a8a995a1968105d9b408f7e6b72e51**
* Raw phone number (**0281234567** or +**84281234567**)

 | Hashed phone number without hyphen using SHA-256. Use lower case alphanumeric characters. Can be one of two formats:* The hashing 256 format.
* The raw phone number with or without a country code.

 |
| ly_su | string | Conditional | 1700000000.12345678-abcd-4bcd-1234-123456789012 | Site user ID (unique identifier within the website's domain). The value will be the cookie "_ly_su" `<timestamp>.<suid>`. |
| ly_c | string | Conditional | 1700000000.12345678-abcd-4bcd-1234-123456789012 | Click ID (identifier for users who clicked the ad). The value will be from the cookie or the "_ly_c" query parameter of the website URL. Since the URL parameter doesn't contain timestamp information, add the timestamp as follows: `<timestamp>.<clickid>`. |
| ly_r | string | Conditional | 1700000000.FF | An ID that complements the accuracy of event tracking on the website's domain. The value will be the cookie "_ly_r" `<timestamp>.<random string>`. |
| ifa | string | Conditional | ABCDEF00-ABCD-4DEF-1234-1234567890AB | Advertising identifier. Enter either IDFA or AAID. Use uppercase for IDFA and lowercase for AAID. |
| line_uid | string | Conditional | ABCDEF00-ABCD-4DEF-1234-1234567890AB | LINE user ID that identifies the user who generated the event. |
| url | string | No | https://www.yahoo.co.jp/?yj_r=FF&_ly_c=92aafe74-eae4-4130-975c-842a6f82df40&_ly_r=FF | URL of the browser when the event was generated. Pattern: ^http(s)?://.+ |
| referrer_url | string | No | https://www.yahoo.co.jp | URL of the referrer when the event was generated. Pattern: ^http(s)?://.+ |
| user_agent | string | No | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/500.00 (KHTML, like Gecko) Chrome/50.0.0000.000 Safari/500.0 | User agent of the browser when the event was generated. |
| ip | string | No | 203.0.113.10 or 2001:0db8:85a3:0000:0000:8a2e:1370:7334 | IP address of the end user who generated the event. You can specify either IPv4 or IPv6 addresses in this field. Use dotted decimal notation for IPv4 and follow the RFC 4291 format for IPv6. |


### Specify the Result Export Target

1. Select **Export Results**.


![](/assets/image2021-9-7_15-10-56.ee7ed43caab64adefafcc22595462fd8068c974c4f47b5959a7babd7d99972b8.4713a25f.png)

1. You can select an existing authentication or create a new authentication for the external service to be used for output. Choose one of the following:


**Use Existing Integration**

![](/assets/image2021-9-7_15-28-30.d271866c7c3cea4dab234b61bea815a69b186746c80435855b4b86d1f77cc30e.4713a25f.png)

**Create a New Integration**

1. Enter the name of this integration.
2. **(Optional)** Check **Share with others** if you want to share this integration with other users.
3. Enter a value for your **Tracking Tag Access Token** for Yahoo authentication.


![](/assets/image2023-7-22_9-47-2.f14b9e8545cf929b9ed1c926c26a35f4a8b808d4a035c3df350500cdccdaeb4b.4713a25f.png)
4. Click **Next** to open the **Export Results** configuration

**Export Results Configuration**

![](/assets/yahoo_capi_v2_export.8820ab90123b7c1346a496fa1f008b312d70905798968faf30d950e239e19457.e3f599cc.png)

| Field | Description |
|  --- | --- |
| Tracking Tag ID | Required. Tag ID obtained from the tracking tag management view in the Campaign Management Tool. |
| Channel ID | Optional. LINE channel ID. Required only when entering line_uid. |
| Skip Invalid Records | When this flag is enabled, invalid records are skipped, and the processing flow continues. **Default: true** |
| Stop On Batch Failure | When this flag is enabled, the entire export stops when a batch fails. **Default: false** |


### (Optional) Schedule Query Export Jobs

You can use Scheduled Jobs with Result Export to periodically write the output result to a target destination that you specify.

Treasure Data's scheduler feature supports periodic query execution to achieve high availability.

When two specifications provide conflicting schedule specifications, the specification requesting to execute more often is followed while the other schedule specification is ignored.

For example, if the cron schedule is `'0 0 1 * 1'`, then the 'day of month' specification and 'day of week' are discordant because the former specification requires it to run every first day of each month at midnight (00:00), while the latter specification requires it to run every Monday at midnight (00:00). The latter specification is followed.

#### Scheduling your Job Using Treasure Console

1. Navigate to **Data Workbench > Queries**
2. Create a new query or select an existing query.
3. Next to **Schedule**, select None.
![](/assets/image2021-1-15_17-28-51.f1b242f6ecc7666a0097fdf37edd1682786ec11ef80eff68c66f091bc405c371.0f87d8d4.png)
4. In the drop-down, select one of the following schedule options:
![](/assets/image2021-1-15_17-29-47.45289a1c99256f125f4d887e501e204ed61f02223fde0927af5f425a89ace0c0.0f87d8d4.png)
| Drop-down Value | Description |
|  --- | --- |
| Custom cron... | Review [Custom cron... details](#custom-cron-details). |
| @daily (midnight) | Run once a day at midnight (00:00 am) in the specified time zone. |
| @hourly (:00) | Run every hour at 00 minutes. |
| None | No schedule. |


#### Custom cron... Details

![](/assets/image2021-1-15_17-30-23.0f94a8aa5f75ea03e3fec0c25b0640cd59ee48d1804a83701e5f2372deae466c.0f87d8d4.png)

| **Cron Value** | **Description** |
|  --- | --- |
| `0 * * * *` | Run once an hour. |
| `0 0 * * *` | Run once a day at midnight. |
| `0 0 1 * *` | Run once a month at midnight on the morning of the first day of the month. |
| "" | Create a job that has no scheduled run time. |



```
 *    *    *    *    *
 -    -    -    -    -
 |    |    |    |    |
 |    |    |    |    +----- day of week (0 - 6) (Sunday=0)
 |    |    |    +---------- month (1 - 12)
 |    |    +--------------- day of month (1 - 31)
 |    +-------------------- hour (0 - 23)
 +------------------------- min (0 - 59)
```

The following named entries can be used:

- Day of Week: sun, mon, tue, wed, thu, fri, sat.
- Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.


A single space is required between each field. The values for each field can be composed of:

div
| Field Value  | Example  | Example Description  |
|  --- | --- | --- |
| A single value, within the limits displayed above for each field. |  |  |
| A wildcard `'*'` to indicate no restriction based on the field. | `'0 0 1 * *'` | Configures the schedule to run at midnight (00:00) on the first day of each month. |
| A range `'2-5'`, indicating the range of accepted values for the field. | `'0 0 1-10 * *'` | Configures the schedule to run at midnight (00:00) on the first 10 days of each month. |
| A list of comma-separated values `'2,3,4,5'`, indicating the list of accepted values for the field. | `'0 0 1,11,21 * *'` | Configures the schedule to run at midnight (00:00) every 1st, 11th, and 21st day of each month. |
| A periodicity indicator `'*/5'` to express how often based on the field's valid range of values a schedule is allowed to run. | `'30 */2 1 * *'` | Configures the schedule to run on the 1st of every month, every 2 hours starting at 00:30. `'0 0 */5 * *'` configures the schedule to run at midnight (00:00) every 5 days starting on the 5th of each month. |
| A comma-separated list of any of the above except the `'*'` wildcard is also supported `'2,*/5,8-10'`. | `'0 0 5,*/10,25 * *'` | Configures the schedule to run at midnight (00:00) every 5th, 10th, 20th, and 25th day of each month. |


1. (Optional) You can delay the start time of a query by enabling the Delay execution.


### Execute the Query

Save the query with a name and run, or just run the query. Upon successful completion of the query, the query result is automatically exported to the specified destination.

Scheduled jobs that continuously fail due to configuration errors may be disabled on the system side after several notifications.

(Optional) You can delay the start time of a query by enabling the Delay execution.

## Activate a Segment in Audience Studio

You can also send segment data to the target platform by creating an activation in the Audience Studio.

1. Navigate to **Audience Studio**.
2. Select a parent segment.
3. Open the target segment, right-mouse click, and then select **Create Activation.**
4. In the **Details** panel, enter an Activation name and configure the activation according to the previous section on Configuration Parameters.
5. Customize the activation output in the **Output Mapping** panel.


![](/assets/ouput.b2c7f1d909c4f98ed10f5300df858a4b19f71a3b0834df952f5fb24018a5ea78.8ebdf569.png)

- Attribute Columns
  - Select **Export All Columns** to export all columns without making any changes.
  - Select **+ Add Columns** to add specific columns for the export. The Output Column Name pre-populates with the same Source column name. You can update the Output Column Name. Continue to select **+ Add Columns**to add new columns for your activation output.
- String Builder
  - **+ Add string** to create strings for export. Select from the following values:
    - String: Choose any value; use text to create a custom value.
    - Timestamp: The date and time of the export.
    - Segment Id: The segment ID number.
    - Segment Name: The segment name.
    - Audience Id: The parent segment number.


1. Set a **Schedule**.


![](/assets/snippet-output-connector-on-audience-studio-2024-08-28.a99525173709da1eb537f839019fa7876ffae95045154c8f2941b030022f792c.8ebdf569.png)

- Select the values to define your schedule and optionally include email notifications.


1. Select **Create**.


If you need to create an activation for a batch journey, review [Creating a Batch Journey Activation](/products/customer-data-platform/journey-orchestration/batch/creating-a-batch-journey-activation).

## (Optional) Configure Export Results in Workflow

Within Treasure Workflow, you can specify the use of this integration to export data.

Learn more at [Using Workflows to Export Data with the TD Toolbelt](https://docs.treasuredata.com/smart/project-product-documentation/exporting-data-with-parameters).


```yaml
_export:
  td:
  database: td.database

+yahoo_capi_export_v2_task:
  td>: export_yahoo_capi_v2.sql
  database: ${td.database}
  result_connection: {your_connection_name}
  result_settings:
     tag_id: your_tracking_tag_id
     channel_id: your_channel_id
     skip_invalid_records: true
     stop_on_batch_failure: false
```

## (Optional) Export Integration Using the CLI

You can also use CLI (Toolbelt) for Result Export to Yahoo! Ads Conversion.

You need to specify the information for export to your Yahoo Conversion as `--result` option of `td query` command. About `td query` command, you can refer to [this article](https://docs.treasuredata.com/smart/project-product-documentation/td-toolbelt-job-and-query-command-reference).

The format of the option is JSON and the general structure is as follows.

### Parameters

| Name | Data Type | Description | Value | Default Value | Required |
|  --- | --- | --- | --- | --- | --- |
| type | string | Describe the name of the service as the destination of export. | yahoo_conversion_v2 | N/A | Yes |
| tag_access_token | string | Tracking Tag Access Token for Yahoo authentication | N/A | N/A | Yes |
| tag_id | string | Tag ID obtained from the tracking tag management view in the Campaign Management Tool. | N/A | N/A | Yes |
| channel_id | string | LINE channel ID. Required only when entering line_uid. | N/A | N/A | No |
| skip_invalid_records | boolean | When this flag is enabled, invalid records are skipped, and the processing flow continues. | true/false | true | No |
| stop_on_batch_failure | boolean | When this flag is enabled, the entire export stops when a batch fails. | true/false | false | No |