Yelp Ads

Datafly Signal delivers conversion events to Yelp Ads through the Yelp Conversions API (CAPI) — a server-to-server endpoint that matches your conversions against Yelp ad engagement so you can measure cost-per-acquisition and return on ad spend without a browser pixel.

Signal sends purchase, lead, and custom events to Yelp from your own server. Match keys (email, phone, name) are normalised and SHA-256 hashed before they leave your infrastructure, so raw customer data is never transmitted.

Prerequisites

  • A Yelp Ads account. Yelp generally provides Conversions API attribution reporting to advertisers with 10 or more locations — confirm eligibility with your Yelp account representative.
  • A Yelp developer app created in the Yelp developer portal. Note its API key.
  • Conversions API access activated for that app. Send your app’s client ID to your Yelp Sales or Customer Success representative and ask them to enable CAPI.
  • A running Datafly Signal deployment with a pipeline collecting events via Datafly.js.

Configuration

FieldRequiredDescription
API KeyYesThe API key from your Yelp developer app, once CAPI is activated. Sent as Authorization: Bearer <api_key>.
Test ModeNoWhen enabled, Yelp validates payloads without recording conversions. Use it while verifying, then disable for live traffic.

Configure in Signal

  1. In your Signal management UI, open Integrations and add Yelp Ads.
  2. Paste your API Key.
  3. Leave Test Mode on while you validate, then turn it off.
  4. Attach the integration to a pipeline and select the Default preset.
  5. Save. Signal begins delivering mapped conversion events to Yelp.

API Endpoint

Signal posts to the Yelp Conversions API bulk endpoint:

POST https://api.yelp.com/v3/conversion/events
Authorization: Bearer <api_key>
Content-Type: application/json

Events are batched (up to 1,000 per request) and wrapped in an events array with a top-level test_event flag.

Identity Signals

Yelp matches conversions to ad engagement using hashed customer identifiers. Signal hashes these with SHA-256 after normalising them, so personal data never leaves your servers in the clear:

Signal sourceYelp fieldTreatment
emailuser_data.em[]Lowercased, trimmed, SHA-256
phoneuser_data.ph[]E.164 digits, SHA-256
first_nameuser_data.fnLowercased, trimmed, SHA-256
last_nameuser_data.lnLowercased, trimmed, SHA-256
anonymous_iduser_data.external_id[]SHA-256
Client IPuser_data.client_ip_addressSent as-is (not hashed)
User agentuser_data.client_user_agentSent as-is (not hashed)

The more match keys you supply, the higher your match rate. Email and phone are the strongest signals.

Event Mapping

The Default preset maps these Signal events to Yelp conversion types:

Signal eventYelp event_nameNotes
pagecustom_page_viewPage view as a custom event
Order CompletedpurchaseRequires value; sends currency, order_id
Lead GeneratedleadOptional value / currency
Signed UpleadSign-up treated as a lead

All other events are dropped (the blueprint default is drop). action_source is set to website. Delivery is gated on the visitor’s canonical marketing consent — events from users who have not granted marketing consent are not sent.

Example

A Order Completed event emitted by Datafly.js:

datafly.track('Order Completed', {
  order_id: 'ORD-1001',
  revenue: 79.99,
  currency: 'USD',
  product_ids: ['SKU-A', 'SKU-B'],
}, {
  traits: { email: 'jane@example.com', phone: '+12035551234' },
});

Resulting payload to Yelp (hashes abbreviated):

{
  "events": [
    {
      "event_id": "a1b2c3d4-...",
      "event_time": 1717660800,
      "event_name": "purchase",
      "action_source": "website",
      "user_data": {
        "em": ["5e8...e1f"],
        "ph": ["9a2...4c7"],
        "client_ip_address": "203.0.113.5",
        "client_user_agent": "Mozilla/5.0 ..."
      },
      "custom_data": {
        "order_id": "ORD-1001",
        "value": 79.99,
        "currency": "USD",
        "content_ids": ["SKU-A", "SKU-B"]
      }
    }
  ],
  "test_event": false
}

Testing

  1. Enable Test Mode in the integration settings.
  2. Trigger a test conversion (e.g. complete a test order on your site).
  3. Yelp validates the payload without recording it. A 200 OK response confirms the payload shape and authentication are correct.
  4. Once validated, disable Test Mode so live conversions are recorded for attribution.
  5. Attribution reporting appears in your Yelp Ads dashboard (allow time for Yelp to process and match conversions).

Troubleshooting

SymptomLikely causeFix
401 UnauthorizedInvalid or revoked API keyRe-copy the key from your Yelp developer app.
403 ForbiddenApp not activated for CAPIAsk your Yelp rep to enable the Conversions API on your app.
400 Bad RequestMissing required field (event_time, event_name, action_source, or value on a purchase), or no usable match keyCheck the event has at least one identity signal and a valid value/currency.
Conversions accepted but no attributionAccount below Yelp’s location threshold, or currency outside USD/CADConfirm eligibility with your Yelp rep; Yelp currently accepts only USD and CAD.
Events not sentVisitor did not grant marketing consent, or event not in the mappingVerify consent is captured and the event matches a mapped Signal event.

Reference