Yahoo CAPI

📘

This integration is currently in beta. Contact your MetaRouter support team to get started.

What Is Yahoo?

Yahoo is a global digital media and advertising company that operates a demand-side platform (DSP) for programmatic advertising across web, mobile, native, video, and connected TV inventory. The Yahoo DSP provides advertisers with audience targeting, campaign optimization, and conversion measurement tools powered by Yahoo ConnectID. The Yahoo Conversion API (CAPI) enables advertisers to send web and app conversion events directly to the Yahoo DSP server-to-server, serving as a direct replacement for Yahoo Dot pixels while using the same rules engine and attribution configured in a Yahoo DSP seat. By transmitting events server-side, Yahoo CAPI supports privacy-conscious measurement and improves resilience against browser-based tracking limitations.


Product Type: Advertising
Integration Type: Starter Kit & ID Sync
Event Source Type: Web and Mobile App
Event Scope: Full-Funnel Events


Capabilities

  • Sends server-side conversion and engagement events directly to the Yahoo DSP via the Conversion API.
  • Supports batching of events per request.
  • Captures the Yahoo click identifier (vmcid) for post-click attribution.
  • Transmits hashed user identifiers (email, phone) and mobile advertising identifiers (idfa, gpsaid) for user matching.
  • Communicates GDPR and opt-out privacy signals alongside each event.
  • Supports full-funnel events including product, cart, checkout, and order lifecycle actions.

Considerations

  • At least one user identifier (email, phone, device ID, or IP address) or a click identifier (vmcid) is required for event matching. Sending multiple identifiers improves match rates.
  • Email values must be trimmed, lowercased, and SHA-256 hashed, with the resulting hash in lowercase.
  • Phone values must be normalized and SHA-256 hashed.
  • Mobile advertising identifiers (idfa for iOS, gpsaid for Android) are sent in their raw form and are selected based on device type.
  • The action source is determined automatically as app or web based on the presence of context.app.name, context.device.type, or context.os.name.
  • The country field is sent in Yahoo's expected two-character ISO format (e.g., US).
  • The integration supports two of Yahoo's three privacy modes, determined automatically by the presence of a TCF consent string:
    • OPTOUT (default): Applied when no TCF consent string is present on the event. Excludes the user from optimization and does not include a consent string.
    • GDPR: Applied when a TCF consent string is present at context.consent.tcf.tcString. The consent string is passed through as privacy.consent_string.
  • Product events accept only a single category despite the array format; sending more than one category returns an error.
  • The event timestamp cannot be set in the future or older than 30 days, or the event will be rejected.
  • Yahoo's batch endpoint enforces a rate limit of 200 requests per second. The integration defaults to a batch size of 100 events per request to stay well under this limit.
  • A 200 response does not guarantee that every event succeeded. Yahoo returns a COMPLETE or PARTIAL result, and partial responses include a breakdown of error types and counts that should be reviewed to confirm processing.
  • Authentication uses an OAuth 2.0 client-credentials flow with a JWT client assertion. Credentials must be provisioned with Yahoo before events can be sent.
  • It is recommended to not reuse a pixel ID that is currently in use on a site, to avoid duplicate conversion counts.

Limitations

  • The vmcid click identifier is web-only and is sourced by the sync injector; it is not available on mobile. Mobile events still deliver using other identifiers such as email and phone.
  • Individual events within a batch may fail even when the request returns a 200 status; there is no per-event identifier in the response, only aggregated error-type counts.

Identity Sync

  • Sync Available: Yes
  • Required for Starter Kit: Yes
  • Prerequisites: N/A
  • Documentation: See Additional Yahoo CAPI Sync Documentation

Sync Details

  • Captures the Yahoo click identifier (vmcid) from a URL parameter.
  • Stores the click identifier in first-party storage for a configurable lifetime.
  • Attaches the resolved click identifier to server-side events for post-click attribution.

Starter Kit Setup Guide

1. Deploy the Yahoo CAPI Sync

2. Gather Credentials

  • CLIENT_ID and CLIENT_SECRET: Request these from your Yahoo representative. Provisioning requires generating a key pair and exchanging it with Yahoo; follow Yahoo's instructions here: Request Client Credentials
  • PIXEL_ID: Create a Pixel ID in the Yahoo DSP under your Advertiser's Tracking tab. Follow Yahoo's instructions here: Create a Pixel ID

3. Add a Yahoo - CAPI Integration

  • From the integration library, add a Yahoo CAPI integration. Then, fill out the Connection Parameters:
Connection ParameterDescription
OAUTH2_REQUEST_URLAuthorization endpoint used to request the OAuth 2.0 access token. Defaults to Yahoo's production endpoint. Only change this if directed by Yahoo.
CLIENT_IDClient ID used to sign the JWT client assertion and request the access token.
CLIENT_SECRETClient secret used as the JWT signing key.
PIXEL_IDPixel identifier used in the events endpoint path.

4. Configure Event Mapping

  • MetaRouter provides all of the event mappings that Yahoo CAPI integrations typically require. You may add custom events, parameters, or mappings in accordance with Yahoo's API documentation.

5. Deploy to Pipeline

  • In the Pipelines tab, add your Yahoo CAPI integration.
  • Select the correct integration revision.
  • Click Add Integration to finalize deployment.

Event Mappings

Global

Global mappings will be applied to all events. If your parameter names do not match the Expected Inputs provided, you will need to overwrite the Inputs provided with your own.

Output KeyDescriptionExpected Input
eventTs RequiredInteger: Event timestamp in seconds.Expression – converts timestamp to seconds
actionSource RequiredString: Source of the event (app or web), derived from app, device, or OS context.Expression – returns 'app' when app/device/OS context is present, else 'web'
eventName RequiredString: Normalized event name for track events, or the event type.Expression – lowercases and replaces spaces with underscores in input.event, or returns input.type
userData RequiredObject: User identifiers for matching. Includes hashed email/phone, idfa/gpsaid by device type, IP address, and user agent.Expression – builds from traits.email, traits.phone, context.device.advertisingId, context.ip, context.userAgent
actionSourceUrlString: URL where the event occurred.context.page.url
countryString: Two-character ISO country code (e.g., US) derived from location context.Expression – converts context.location.country to ISO
privacyObject: Consent state. Sets GDPR with TCF consent string when available, otherwise OPTOUT.Expression – builds from context.consent.tcf.tcString
clickData.vmcidString: Yahoo click identifier captured by the sync.context.providers.yahooCAPI.vmcid

Event Specific

Page

Output KeyDescriptionExpected Input
actionSourceUrlString: URL where the page event occurred.properties.url

Product List Viewed

Output KeyDescriptionExpected Input
eventData.priceFloat: Total value calculated from product properties.Expression – TOTAL_VALUE(input.properties.products)

Product Clicked

Output KeyDescriptionExpected Input
eventData.priceFloat: Total value calculated from product properties.Expression – TOTAL_VALUE(input.properties)
eventData.productsArray: Product details including a single subcategory; only one category is accepted.Expression – maps properties.category to subCategory

Product Viewed

Output KeyDescriptionExpected Input
eventData.priceFloat: Total value calculated from product properties.Expression – TOTAL_VALUE(input.properties)
eventData.productsArray: Product details including a single subcategory; only one category is accepted.Expression – maps properties.category to subCategory

Product Added

Output KeyDescriptionExpected Input
eventData.priceFloat: Total value calculated from product properties.Expression – TOTAL_VALUE(input.properties)
eventData.productsArray: Product details including a single subcategory; only one category is accepted.Expression – maps properties.category to subCategory

Product Removed

Output KeyDescriptionExpected Input
eventData.priceFloat: Total value calculated from product properties.Expression – TOTAL_VALUE(input.properties)
eventData.productsArray: Product details including a single subcategory; only one category is accepted.Expression – maps properties.category to subCategory

Cart Viewed

Output KeyDescriptionExpected Input
eventData.priceFloat: Total cart value calculated from product properties.Expression – TOTAL_VALUE(input.properties.products)

Checkout Started

Output KeyDescriptionExpected Input
eventData.priceFloat: Checkout value.properties.value

Order Completed

Output KeyDescriptionExpected Input
eventData.priceFloat: Final order total.properties.total

Product Added To Wishlist

Output KeyDescriptionExpected Input
eventData.priceFloat: Total value calculated from product properties.Expression – TOTAL_VALUE(input.properties)
eventData.productsArray: Product details including a single subcategory; only one category is accepted.Expression – maps properties.category to subCategory

Order Updated

Output KeyDescriptionExpected Input
eventData.priceFloat: Updated order total.properties.total

Order Refunded

Output KeyDescriptionExpected Input
eventData.priceFloat: Refunded order total.properties.total

Order Canceled

Output KeyDescriptionExpected Input
eventData.priceFloat: Canceled order total.properties.total

Required & Recommended Identifiers

These identifiers must be mapped to Yahoo in order for successful user matching to occur. Without these IDs, any events sent to Yahoo may not be accurately reflected in reporting.

AttributeExampleSync Injector Required?
vmcid Recommendedfoo-123Yes
email Recommendedb4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514No
phone Recommendede1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2No
idfa RecommendedAEBE52E7-03EE-455A-B3C4-E57283966239No
gpsaid Recommended38400000-8cf0-11bd-b23e-10b96e40000dNo

Integration Validation

  • Review the API response for each request. A 200 status alone does not confirm success: Yahoo returns either COMPLETE, meaning all events were ingested, or PARTIAL, meaning some events were rejected. For PARTIAL responses, review the breakdown of error types and counts to identify what failed.
  • Because responses report only aggregated error-type counts and no per-event identifier, individual events within a batch can fail without being individually traceable in the response. Use the error-type breakdown to diagnose systemic issues.
  • Coordinate with your Yahoo representative to confirm that events are being received and processed correctly on Yahoo's backend.

Additional Yahoo Documentation