Yahoo! JAPAN Ads (Conversion API)

Datafly Signal delivers conversions to Yahoo! JAPAN Ads (LINEヤフー) Display Ads server-to-server using the Conversion API. This recovers conversions that on-page measurement tags miss because of ad blockers, browser tracking prevention (ITP), or script failures, and matches them back to ad clicks using the yclid click identifier plus hashed first-party data.

The Conversion API supplements your existing Display Ads conversion measurement tag — it does not replace it. Use the same conversion’s IO and label for both so they reconcile, and send a stable transaction ID so duplicates are removed automatically.

Prerequisites

Before configuring Yahoo! JAPAN Ads in Signal you need three things from Yahoo: an Application ID, and the Conversion IO and Conversion Label from your Display Ads conversion tag.

Step 1: Create a Yahoo! Developer Network Application ID

  1. Sign in to the Yahoo! Developer Network with the account that has access to your ad account.
  2. Create a new application and copy its Application ID (Client ID). This is the credential Signal sends to authenticate every request.

Step 2: Find your Conversion IO and Conversion Label

  1. In Yahoo! JAPAN Ads (LINEヤフー for Business), open Display Ads > Tools > Conversion Measurement.
  2. Open the conversion you want to track and view its tag details.
  3. Note the two values used by the Conversion API:
    • Conversion IO (yahoo_ydn_conv_io) — the account-specific conversion identifier.
    • Conversion Label (yahoo_ydn_conv_label) — the label for this specific conversion.
⚠️

Use the IO and label from the same conversion you already measure with the on-page tag. Sending API conversions to a different label will split your reporting.

Configure in Signal

Once you have your Application ID, Conversion IO, and Conversion Label, configure the integration in Signal.

Configuration Fields

FieldRequiredDescription
app_idYesYour Yahoo! Developer Network Application ID (Client ID). Sent in the User-Agent header as Yahoo AppID: <app_id>.
yahoo_ydn_conv_ioYesThe account-specific conversion identifier from your Display Ads conversion tag.
yahoo_ydn_conv_labelYesThe conversion label that identifies which conversion this event counts toward.

Management UI Setup

Add the integration

Go to Integrations > Add Integration > Yahoo Japan Ads and choose the Default preset.

Enter your credentials

Enter your app_id, yahoo_ydn_conv_io, and yahoo_ydn_conv_label.

Select the consent category that governs advertising (typically advertising or marketing). Signal only delivers conversions for visitors whose consent allows it.

Save

Click Save. Conversions begin flowing on the next matching event.

API Endpoint

POST https://ads-cv.yahooapis.jp/v1/
User-Agent: Yahoo AppID: <app_id>
Content-Type: application/json

Each conversion is sent as a single JSON object (not an array). A successful request returns HTTP 201. Invalid or duplicate conversions are silently excluded even within a 201 response — they are not retried.

Identity Signals

Yahoo matches each server conversion to an ad click using whichever of the following Signal provides. At least one is required, and more signals improve match rates.

SignalFieldDescription
Click IDyclidThe Yahoo ad click identifier. Datafly.js captures it from the yclid URL parameter on landing and stores it first-party, so it is available when the conversion fires.
Email (hashed)hashed_emailSHA-256 of the trimmed, lower-cased email address.
Phone (hashed)hashed_phone_numberSHA-256 of the phone number in E.164 format (e.g. +819001234567, no spaces or hyphens).
IP addressipThe visitor’s IP, forwarded from the original request.
User-Agentuser_agentThe visitor’s browser User-Agent, forwarded from the original request.

All PII hashing (email, phone) is performed server-side by Signal before any data leaves your infrastructure. Raw email and phone numbers are never sent to Yahoo. Japanese domestic phone numbers should be supplied in E.164 form — the leading 0 is replaced with +81.

How to send user data

Call datafly.identify() when a user logs in, registers, or completes a purchase:

datafly.identify("user-123", {
  email: "taro.yamada@example.co.jp",
  phone: "+819001234567"
});

Signal normalises and hashes these fields automatically before delivery.

Event Mapping

The Conversion API is a conversion-only endpoint. Page views and funnel mid-steps (product views, add-to-cart, checkout started) are not accepted and are dropped by the blueprint. Only conversion events deliver.

Default preset

Signal eventYahoo conversionNotes
Order Completedconversionrevenueyahoo_ydn_conv_value, order_id → transaction ID (deduplication)
Lead Generatedconversionvalueyahoo_ydn_conv_value, lead_id → transaction ID
Signed Upconversionuser_id → transaction ID

To customise, edit the integration’s Field Mappings in the Management UI.

Example: Purchase conversion

Datafly.js call:

datafly.identify("user-123", {
  email: "taro.yamada@example.co.jp"
});
 
datafly.track("Order Completed", {
  order_id: "ORD-001",
  revenue: 12800,
  currency: "JPY"
});

Conversion API payload sent by Signal:

{
  "yahoo_ydn_conv_io": "1EALEzSJBNabcdEFGBE1",
  "yahoo_ydn_conv_label": "AB0ABCDEFGHIJKLMNOP123456",
  "event_time": 1717660800,
  "yclid": "YJAD.1717650000.1EALEzSJBNabcdEFGBE1",
  "hashed_email": "31c5543c1734d25c7206f5fd591525d0295bec6fe84ff82f946a34fe970a1e66",
  "yahoo_ydn_conv_transaction_id": "ORD-001",
  "yahoo_ydn_conv_value": 12800,
  "ip": "203.0.113.10",
  "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
  "url": "https://example.co.jp/thanks/",
  "referrer": "https://example.co.jp/checkout/"
}

event_time is a 10-digit Unix timestamp in seconds and must be within the last 90 days. Signal sets this automatically from the event timestamp.

Deduplication

If you run both the on-page conversion tag and the Conversion API for the same conversion, send a stable yahoo_ydn_conv_transaction_id (Signal maps order_id here for purchases). Yahoo removes duplicate conversions that share the same transaction ID, so the conversion is only counted once. The transaction ID has a maximum length of 64 bytes.

Testing your integration

Trigger a test conversion

Complete a real conversion flow on your site (or fire the event from Signal’s event debugger) so an Order Completed, Lead Generated, or Signed Up event is produced.

Confirm a 201 in the event debugger

In the Management UI, open the integration’s Event Debugger and confirm the delivery to Yahoo returned HTTP 201 with the expected JSON body.

Confirm in Yahoo! JAPAN Ads

Conversions reported via the API appear in your Display Ads conversion reporting. There can be a processing delay before they are visible, and only conversions matched to an ad click within the attribution window are counted.

Troubleshooting

ProblemSolution
401 responseThe Application ID is missing or the User-Agent header is malformed. Confirm app_id is set.
403 responseThe Application ID is invalid or not linked to the ad account. Recreate or relink the application.
429 responseYou exceeded the rate limit (500 requests/second per Application ID). Signal throttles automatically; sustained overage means the source volume is too high for one Application ID.
400 responseMalformed JSON or a missing required field (event_time, yahoo_ydn_conv_io, yahoo_ydn_conv_label), or no identifier present. Review the payload in the event debugger.
201 but conversions not countedThe conversion may have lacked a matchable identifier (no yclid/hashed email/phone), been outside the 90-day event_time window, or been deduplicated. Ensure yclid is captured on landing and that email/phone are passed via datafly.identify().

Rate Limits

LimitValue
Requests per second500 per Application ID
event_time age0–90 days
Transaction ID length64 bytes max

Signal applies a conservative sustained send rate below Yahoo’s ceiling. For most deployments the default settings are sufficient.