DestinationsDid the Convert deliveries actually count?

Did the Convert deliveries actually count?

convert_experiments destinations only. Convert's track endpoint returns HTTP 200 for payloads it silently discards and offers no per-request status, so a destination delivering nothing looks exactly like a healthy one — a clean run of 200s either way. The only evidence is whether the number in Convert's own report moved. This endpoint folds the delivery log and asks Convert's report for the same window.

The evidence is asymmetric. Convert counts a goal from every source — its own pixel goals, the client-side adapter, and this destination — and other sources can only ADD. So a matching number is reported as consistent, never as "verified": your contribution can only be isolated when the goal is used by this destination alone. A shortfall is the real signal, because nothing else can subtract.

The comparison uses distinct visitors sent, not deliveries: Convert counts one conversion per visitor per goal, so comparing raw delivery counts would show a permanent phantom shortfall for any account whose customers convert more than once.

Both sides are scoped to ONE experience. Convert's report is per experience and goal, so the sent side counts only deliveries that named the same experience. expected is therefore usually smaller than sent.distinct_visitors, which stays the window total across every experience — sent.for_experience is what was compared, and sent.by_experience shows the full split. Without a query parameter the experience with the most delivered visitors is chosen; pass experience_id to compare a different one.

Requires a stored reporting credential (PUT /client/v1/destinations/credentials/convert_experiments with credential_name: reporting). Without one this returns 409.

curl -X GET "https://mythic-analytics.gulp.workers.dev/client/v1/destinations/example_string/verification?days=7&experience_id=example_string" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "success": true,
  "data": {
    "action_id": "123e4567-e89b-12d3-a456-426614174000",
    "window": {
      "days": 42,
      "start": "2024-12-25T10:00:00Z",
      "end": "2024-12-25T10:00:00Z"
    },
    "convert": {
      "account_id": "example_string",
      "project_id": "example_string",
      "goal_id": "example_string",
      "experience_id": "example_string"
    },
    "sent": {
      "success": 42,
      "failed": 42,
      "distinct_visitors": 42,
      "for_experience": {
        "success": 42,
        "distinct_visitors": 42
      },
      "by_experience": {},
      "skipped": {
        "no_visitor_id": 123,
        "no_experiments": 42
      },
      "truncated": true
    },
    "counted": 10,
    "by_variation": {},
    "experiment": {
      "status": "example_string",
      "name": "John Doe"
    },
    "expected": 42,
    "verdict": "consistent",
    "headline": "example_string",
    "caveats": [
      "example_string"
    ]
  }
}
GET
/client/v1/destinations/{id}/verification
GET
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

Client key as bearer token. Use an agency key (Bearer ak_...) for read-write access or a location secret key (Bearer sk_...) for read-only access. Scoped keys (mcp_) are accepted too and need destinations:read or destinations:write. See Using an mcp_ key over HTTP.

Client key as bearer token. Use an agency key (Bearer ak_...) for read-write access or a location secret key (Bearer sk_...) for read-only access. Scoped keys (mcp_) are accepted too and need destinations:read or destinations:write. See Using an mcp_ key over HTTP.
query
daysinteger

Window to check, in days. Default 7. Values outside 1-90 are clamped to that range rather than rejected, so the window in the response is the authority on what was actually compared.

Min: 1 • Max: 90
query
experience_idstring

Convert experience to check. Numeric; a non-numeric value is a 400. Defaults to the delivered experience with the most distinct visitors; pass this when the deliveries span several. An id that is numeric but does not exist in the project returns report_unavailable — Convert cannot report on it — NOT nothing_sent_for_experience. sent.by_experience in any response lists the ids actually delivered to.

Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. Client key as bearer token. Use an agency key (Bearer ak_...) for read-write access or a location secret key (Bearer sk_...) for read-only access. Scoped keys (mcp_) are accepted too and need destinations:read or destinations:write. See Using an mcp_ key over HTTP.

Path Parameters

Query Parameters

daysinteger

Window to check, in days. Default 7. Values outside 1-90 are clamped to that range rather than rejected, so the window in the response is the authority on what was actually compared.

experience_idstring

Convert experience to check. Numeric; a non-numeric value is a 400. Defaults to the delivered experience with the most distinct visitors; pass this when the deliveries span several.

An id that is numeric but does not exist in the project returns report_unavailable — Convert cannot report on it — NOT nothing_sent_for_experience. sent.by_experience in any response lists the ids actually delivered to.

Responses

successboolean
dataobject