Skip to main content

Overview

Scope3’s Conversion API follows the IAB Tech Lab ECAPI v1.0 specification for server-to-server conversion measurement. This enables you to:
  • Send purchase, sign-up, and other conversion events
  • Attribute conversions back to ad impressions and clicks
  • Optimize campaigns based on actual outcomes
Privacy-First Design: This is a “proxy CAPI” - we only accept pre-resolved identity tokens (e.g., LiveRamp RampIDs, ID5 IDs). Raw PII (emails, phone numbers, addresses) is NOT accepted.

Prerequisites

Before sending conversion events, you’ll need two things:

1. Get Your Dataset ID

Use the customer_dataset_get_id MCP tool to retrieve your dataset ID:
// Call tool: customer_dataset_get_id
// No parameters required

// Response:
{
  "datasetId": "ds_abc123xyz",
  "customerId": 12345
}
Each customer has one dataset ID used for grouping conversion data. The tool will create a new dataset if none exists.

2. Get Your API Key

  1. Visit agentic.scope3.com/api-keys
  2. Sign up or log into your Scope3 account
  3. Generate a new API key (starts with scope3_)
See Authentication for detailed setup instructions.

Endpoints

POST https://ping.scope3.com/agentic/v1/events
Content-Type: application/json
Authorization: Bearer scope3_<your_api_key>

Request Format

Minimal Example (Purchase with Click ID)

{
  "data_set_id": "ds_abc123xyz",
  "event_type": "purchase",
  "timestamp": 1706500000,
  "value": 99.99,
  "currency": "USD",
  "user_data": {
    "click_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV"
  }
}

Full Example (with Identity Tokens)

{
  "data_set_id": "ds_abc123xyz",
  "event_type": "purchase",
  "timestamp": 1706500000,
  "id": "order_12345",
  "source": "website",
  "value": 149.99,
  "currency": "USD",
  "user_data": {
    "click_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
    "external_id": "user_abc123",
    "uids": [
      {
        "id": "XY1234567890AB",
        "source": "liveramp.com",
        "atype": 3
      },
      {
        "id": "ID5-ABCDEF123456",
        "source": "id5-sync.com",
        "atype": 1
      }
    ]
  },
  "properties": {
    "transaction_id": "txn_12345",
    "items": [
      {
        "id": "SKU-001",
        "name": "Product Name",
        "price": 49.99,
        "quantity": 3
      }
    ]
  }
}

Required Fields

FieldTypeDescription
data_set_idstringYour dataset ID (from customer_dataset_get_id tool)
event_typestringEvent type (see supported types below)
timestampintegerUnix epoch timestamp in seconds

Optional Fields

FieldTypeDescription
idstringUnique event identifier (for deduplication)
sourcestringEvent source (e.g., “website”, “app”, “pos”)
valuenumberMonetary value of the conversion
currencystringISO 4217 currency code (e.g., “USD”, “EUR”)
user_dataobjectUser identification data (see below)
propertiesobjectAdditional event properties

Supported Event Types

Event TypeDescription
purchaseUser completes a purchase
add_to_cartUser adds item to cart
begin_checkoutUser begins checkout
add_payment_infoUser adds payment info
Event TypeDescription
leadLead generated
sign_upUser signs up
complete_registrationUser completes registration
subscribeUser subscribes
Event TypeDescription
page_viewUser views a page
view_contentUser views content
See IAB ECAPI spec for the complete list of supported event types.

Attribution Methods

Scope3 supports two attribution methods depending on your use case:
MethodUse CaseHow It Works
Click AttributionOnline conversions (same session/device)Pass the clkid from the landing page URL
Offline AttributionCross-device or offline conversionsPass pre-resolved identity tokens (UIDs)

Click Attribution (Online)

When a user clicks an ad served through Scope3, we append a unique clkid parameter to the landing page URL:
https://your-site.com/landing?clkid=01ARZ3NDEKTSV4RRFFQ69G5FAV&axem=...
To enable click attribution:
  1. Capture the clkid from the URL when the user lands
  2. Store it (cookie, session, or database)
  3. Include it as user_data.click_id when sending conversion events
{
  "data_set_id": "ds_abc123xyz",
  "event_type": "purchase",
  "timestamp": 1706500000,
  "value": 99.99,
  "currency": "USD",
  "user_data": {
    "click_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV"
  }
}
Click attribution is the simplest and most accurate method when the user converts in the same browser session.

Offline Attribution (Cross-Device / Offline)

For conversions that happen on a different device or offline, use pre-resolved identity tokens. These allow Scope3 to match the conversion back to ad exposure even without a click ID. Use cases:
  • User sees ad on mobile, purchases on desktop
  • User sees ad online, purchases in physical store
  • CRM/offline sales data upload
{
  "data_set_id": "ds_abc123xyz",
  "event_type": "purchase",
  "timestamp": 1706500000,
  "value": 149.99,
  "currency": "USD",
  "user_data": {
    "external_id": "user_abc123",
    "uids": [
      {
        "id": "XY1234567890AB",
        "source": "liveramp.com",
        "atype": 3
      },
      {
        "id": "ID5-ABCDEF123456",
        "source": "id5-sync.com",
        "atype": 1
      }
    ]
  }
}

Supported Identity Providers

ProviderSourceatypeDescription
LiveRampliveramp.com3RampID (person-based)
ID5id5-sync.com1ID5 ID (device-based)
atype values:
atypeMeaning
1Device ID
3Person ID
Identity tokens must be resolved upstream via your identity partner. We do NOT accept raw PII (emails, phone numbers, addresses) for resolution.

Response Format

Success (200 OK)

{
  "status": "success"
}

Error Responses

StatusErrorDescription
400Invalid JSON payloadMalformed JSON
400Validation errorMissing required fields
401UnauthorizedInvalid or missing API key
403Access denied to datasetAPI key doesn’t have access to this dataset
415Content-Type must be application/jsonWrong content type

Code Examples

curl -X POST https://ping.scope3.com/agentic/v1/events \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer scope3_<your_api_key>" \
  -d '{
    "data_set_id": "ds_abc123xyz",
    "event_type": "purchase",
    "timestamp": 1706500000,
    "value": 99.99,
    "currency": "USD",
    "user_data": {
      "click_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV"
    }
  }'

Best Practices

Store the clkid parameter immediately when users land from ads. Use cookies, session storage, or your database to persist it until conversion.
Never expose your API key in client-side code. Always send conversion events from your backend server.
Include a unique id field for each event to help with deduplication. This prevents duplicate conversions from being counted.
Send the actual event time, not the time you’re sending the request. This ensures accurate attribution windows.
Use the staging endpoint (ping.staging.scope3.com) to validate your integration before sending events to production.

Next Steps