# TrackDrive Real Time Bidding Integration

> Sell your calls into a TrackDrive buyer's marketplace: set up the destination, configure the TrackDrive ping template, test it and troubleshoot.

Source: https://callgrid.com/knowledge-base/trackdrive-real-time-bidding-integration
Last updated: 2026-10-28
Topics: Integrations, Real Time Bidding

## Overview

This integration sells your calls into a TrackDrive buyer's marketplace. A CallGrid **destination** pings TrackDrive's inbound webhook ping endpoint for each call, reads the offer in the response and, if it is accepted, routes the call to TrackDrive.

In CallGrid terms, TrackDrive is a buyer and this is that destination's **Ping** (Edit Destination > Ping tab). It is not an integration webhook.

## Prerequisites

- A TrackDrive inbound webhook ping endpoint, provided by the TrackDrive buyer.
- From TrackDrive: your **subdomain**, the **webhook name**, the **traffic source ID**, and the **TrackDrive number** the ping should reference.
- A CallGrid buyer and destination for TrackDrive (Buyers > Destinations).

## Step 1: Create the destination

1. Go to **Buyers > Destinations** and click **+ New Destination**.
2. **Basic Information**: Name (for example `TrackDrive - BuyerName`), Buyer, Timezone, Business Hours.
3. **Call Settings > Phone Type**: **Phone**, with the TrackDrive number the buyer gave you. If the buyer's endpoint returns a forwarding number for each offer instead, use **Variable** and map it in Step 2.
4. **Call Settings > Advanced**: **Match Connect Duration** always applies to TrackDrive destinations, whether or not the checkbox is ticked. TrackDrive answers the call and plays a ringing tone while it connects its buyer, which otherwise inflates duration on your side. Match Connect is conservative and can under-report by up to about a second. **True Connect (Beta)** removes the discrepancy for both sides; ask your account manager before enabling it.
5. **Revenue Settings**: **Revenue Type** Variable if you will map the payout from the response, otherwise Fixed. Set **Billable Type** and **Duration** to match the TrackDrive offer's conversion rules.
6. **Save Destination**. The Ping tab is available once the destination is saved.

## Step 2: Configure the Ping

![Destination Ping tab with the TrackDrive template selected](https://callgrid.com/api/media/file/kb-TrackDrive-template.png)

![TrackDrive ping request body and test variables](https://callgrid.com/api/media/file/kb-TrackDrive-request-1.png)

1. Open the destination and go to the **Ping** tab. Turn on **Ping Integration**.
2. Turn on **Ping Template** and select **TrackDrive**.
3. Fill in **Subdomain**, **Webhook Name**, the TrackDrive number and **Traffic Source ID**.

The template sends this request:

| Setting | Value |
| --- | --- |
| Method | POST |
| URL | `https://<subdomain>.trackdrive.com/api/v1/inbound_webhooks/ping/<webhook name>` |
| Content Type | JSON |

```json
{
  "trackdrive_number": "YOUR_TRACKDRIVE_NUMBER",
  "traffic_source_id": "YOUR_TRAFFIC_SOURCE_ID",
  "caller_id": "[[tag:CallerId]]",
  "state": "[[tag:VisitorStateCode|tag:InboundStateCode]]",
  "zip": "[[tag:VisitorZipCode|tag:InboundZipCode]]"
}
```

State and zip use the publisher's value when it is present and fall back to the inbound value. Add any other fields the buyer's filters need. Tag names are case sensitive.

1. Set **Timeout** to what TrackDrive can meet. The source override **Webhook Timeout** can shorten it per source.
2. Turn on **Use Static IP for requests** only if TrackDrive allow-lists IPs. Requests then come from `3.232.249.88` and `54.160.65.103`. They apply to the Ping, its confirmation request and webhooks with the option on, not to SIP.

### Acceptance and mapping set by the template

![](https://callgrid.com/api/media/file/TrackDriveAP.png)

| Setting | Path | Meaning |
| --- | --- | --- |
| Acceptance Parsing (JSON) | `buyers.0.offer_conversion_payout` Greater Than `0` | Accept when the first offer pays |
| Variable Revenue/Bid | `buyers.0.offer_conversion_payout` | Payout of the first offer |
| Variable Duration | `buyers.0.current_conversion_duration` | Seconds the call must last to convert |
| Value Extraction | `buyers.0.id` to PingResponseId, `status` to PingResponseCode | For reconciliation with TrackDrive |

**Check the field names against your response.** TrackDrive lets each endpoint choose which buyer fields it returns, so your buyer's response may use different names, for example `bid_price` for the payout. Run Ping (Step 3) and, if the names differ, change the Acceptance Parsing and Field Mapping paths to match.

- To accept only higher offers, raise the value, for example Greater Than `20`. Operators available: Equals, Not Equal To, Greater Than, Less Than.
- If the response can hold several offers, enable **Bid Ordering** so the array is sorted by payout before values are extracted.
- If you set Phone Type to Variable, map **Variable Phone/SIP** to the forwarding number field, for example `buyers.0.forwarding_number`.
- Use **Adjust Revenue** or **Adjust Duration** only for unit conversions (cents to dollars, minutes to seconds).

## Step 3: Test

![Ping Testing panel with Run Ping](https://callgrid.com/api/media/file/kb-8x8-testing.png)

1. In the Ping tab, fill **Test Variables** (for example `CallerId` = a test number).
2. Click **Run Ping**.
3. Read the raw response. Confirm it contains an offer, acceptance passes, and the payout (and number, if mapped) populate.
4. Click **Save Ping**.
5. Add the destination to a campaign's routing and place a live test call. Check Reports > Pings for Accepted, Ping Won and Won Call.

## Step 4: Run it

- The destination competes according to the campaign's routing method. On **Revenue** or **Dynamic RPC** routing, the mapped payout drives selection; on **Priority** it does not.
- Set **Max Pings Per Minute** if TrackDrive rate limits you; buyer-level ping caps also apply.
- Set **Min Revenue Amount** on the destination to reject offers below your floor, as an alternative to an acceptance threshold.

## SIP note

If TrackDrive returns a SIP address instead of a number, confirm the buyer is not on Twilio. CallGrid cannot send to a buyer's SIP endpoint when both sides are on Twilio; that buyer must receive calls on a DID.

## Troubleshooting

| Symptom | Check |
| --- | --- |
| Every ping rejected | Run Ping and read the raw response; check subdomain, webhook name and traffic source ID; check the acceptance path matches the response field names |
| Pings time out | Reports > Pings Timeout column; raise the Ping Timeout or ask TrackDrive about latency |
| Pings fail with API errors | Reports > Pings API Failed. A 429 from TrackDrive is counted as API Failed, not as a separate rate limit bucket |
| Accepted but call not connected | Phone Type number, or the Variable Phone/SIP path if you use one; destination caps or concurrency reached |
| Payout shows 0 | The payout field has a different name in your response; update Variable Revenue/Bid |
| Duration disputes with TrackDrive | Compare on Connect Duration (Match Connect Duration applies automatically); ask your account manager about True Connect (Beta) |
| Offers below your floor winning | Add Min Revenue Amount or raise the acceptance threshold |

## Do it with AI

**Ask Griddy, Claude or ChatGPT.** Try: "Show the ping results for my TrackDrive destination today, including timeouts and API failures." Claude and ChatGPT need the CallGrid connector turned on (setup guides for [Claude](https://callgrid.com/knowledge-base/callgrid-mcp-connect-to-claude-desktop) and [ChatGPT](https://callgrid.com/knowledge-base/callgrid-mcp-connect-to-chatgpt)).

The connector is read only. It looks things up and reads your data. You make the changes in CallGrid.
