# CallGrid Knowledge Base, full text
---
---
> 55 articles. Index with one link per article: https://callgrid.com/knowledge-base/llms.txt
---
---
## CallGrid MCP: Connect to ChatGPT
> Ask ChatGPT about your CallGrid account in plain English. Connect the CallGrid app once, then pull campaigns, buyers, numbers and more.
Source: https://callgrid.com/knowledge-base/callgrid-mcp-connect-to-chatgpt
Last updated: 2026-08-28
Topics: Integrations
### Overview
The CallGrid MCP server lets ChatGPT read your CallGrid account directly, so you can ask questions like "list my live campaigns" or "summarize last week's performance" and get answers without opening the dashboard.
MCP (Model Context Protocol) is the open standard that connects AI assistants to outside tools. CallGrid runs a hosted MCP server, so there is nothing to install. You add it once as a connector and you are done.
#### Connection details
Name: CallGrid
Description: CallGrid MCP Server
Server URL: [https://mcp.callgrid.com/mcp](https://mcp.callgrid.com/mcp)
Authentication: None required
---
### Setup
#### Step 1: Turn on developer mode

####
1. In ChatGPT, open **Settings**.
2. Go to **Apps and Connectors**, then **Advanced Settings**.
3. Turn on **Developer mode**.
> Developer mode is what lets you add a custom MCP connector. You only need to do this once.
#### Step 2: Create the CallGrid app

1. Back in **Apps and Connectors**, click **Create** (create a new app or connector).
2. Fill in the fields:
- **Name:** CallGrid
- **Description:** CallGrid MCP Server
- **MCP Server URL:** [https://mcp.callgrid.com/mcp](https://mcp.callgrid.com/mcp)
- **Authentication:** Select OAuth
3. Save to create the app.
#### Step 3: Authorize your account
When you first use CallGrid in a chat, ChatGPT prompts you to connect and authorize access to your CallGrid organization. Approve it once.
If you manage more than one CallGrid organization, tell ChatGPT which one to use (for example, "use my Acme org"). It will use that organization for the rest of the conversation.
#### Step 4: Turn it on in the chat
This is the step people miss. Before chatting with CallGrid:
1. Click the **+** icon in the message box.
2. Go to **More**.
3. Select **CallGrid**.
Now your prompts can reach your CallGrid data. See the examples below.
---
### What you can do with it
The MCP gives ChatGPT live read access to your account. Here are prompts that map to what it can pull today.
**Account and structure**
- "Which CallGrid organization am I connected to?"
- "List my active campaigns."
- "What traffic sources feed my insurance campaign?"
- "Show me my buyers and their current status."
- "Who are my publishers and vendors?"
- "What routing destinations are set up?"
**Numbers and tags**
- "How many tracking numbers do I have, and which campaigns use them?"
- "What tags are configured on my account?"
**Performance and diagnostics**
- "Give me a performance summary for last week."
- "Why are my bids getting rejected? Show the bid stats."
- "How are my pings performing?"
- "What changed on my account recently?" (version history)
- "List the webhooks on my campaigns so I can check one is firing."
You can stack follow ups: ask for a summary, then "break that down by buyer," then "which had the lowest connect rate." No report builder, just questions.
---
### Advanced prompts: reports, scorecards, and optimization plans
ChatGPT does not just fetch numbers. It can pull your data and then reason over it, so you can ask for finished work product: HTML reports, charts, scorecards, and full optimization plans with revenue estimates. Paste any of these, swap in your own specifics, and go.
**Build an optimization report with charts**
> Make an HTML report with graphs on my top performing campaign, plus a list of improvements I could make. Propose specific setting changes, and include charts that estimate what each change could improve if I made it, with the goal of more revenue.
**Diagnose bid rejections and quantify the loss**
> Pull my bid stats for the last 7 days, group the top rejection reasons, and give me a prioritized fix list with an estimate of the calls and revenue I am losing to each.
**Score my buyers and flag the laggards**
> Rank my buyers by conversion rate and revenue per call. Flag the underperformers, and draft talking points I can use to renegotiate the bottom three.
**Compare traffic sources and tell me where to spend**
> Compare my traffic sources by billable rate and revenue per call in a chart, then tell me which vendors to scale and which to cut.
**Map the ping to call funnel**
> Show me the funnel from pings to bids to accepted calls, point to the biggest drop off, and chart it.
**Run a webhook health check**
> Check the webhooks on all my campaigns. List any that look misconfigured or are missing a postback for converted events, and tell me exactly what to add.
> **A note on estimates:** when the assistant projects revenue lift, those are estimates built from your own data, not guarantees. Treat them as a prioritized starting point, then validate with a small test before you roll a change out.
---
### What it can and cannot do
Today the CallGrid MCP is read only. It surfaces and analyzes your data. It does not place calls, create or edit campaigns, move numbers, or change any settings. Asking it to "pause campaign X" will not change anything in your account.
That makes it safe to hand to anyone on your team who needs answers but should not be editing the account. Write actions may come later. For now, think of it as instant reporting and a second set of eyes on account health.
---
### Troubleshooting
- **CallGrid does not respond to account questions.** Confirm you added it to the chat: **+** icon, then **More**, then **CallGrid**. Without that, the prompt cannot reach your data.
- **You cannot find where to add the connector.** It lives under Settings, Apps and Connectors. If you do not see the option to create one, recheck that Developer mode is on in Advanced Settings.
- **ChatGPT asks which organization to use.** Expected when your login has access to more than one org. Name the one you want.
- **The app looks generic in the menu.** Upload the CallGrid icon during setup (Step 2).
---
## CallGrid MCP: Connect to Claude (Desktop)
> Ask Claude about your CallGrid account in plain English. Connect once, then pull campaigns, buyers, numbers, and performance stats .
Source: https://callgrid.com/knowledge-base/callgrid-mcp-connect-to-claude-desktop
Last updated: 2026-06-23
Topics: Integrations
### Overview
The CallGrid MCP server lets Claude read your CallGrid account directly, so you can ask questions like "which campaigns are live right now?" or "why are my bids getting rejected?" and get answers without logging into the dashboard.
MCP (Model Context Protocol) is the open standard that connects AI assistants to outside tools. CallGrid runs a hosted MCP server, so there is nothing to install and no code to write. You add one URL and you are done.
This guide covers Claude on the desktop app. For the ChatGPT version, see [CallGrid MCP: Connect to ChatGPT](https://claude.ai/cowork/KB-299-CallGrid-MCP-ChatGPT-Integration.md).
#### Connection details
Name: CallGrid
Description: CallGrid MCP Server
Server URL: [https://mcp.callgrid.com/mcp](https://mcp.callgrid.com/mcp)
OAuth setup: None required
---
### Setup
Setup takes about 30 seconds.
#### Step 1: Open Connectors
In the Claude desktop app, open your settings and go to **Connectors**.

#### Step 2: Add the custom connector

####
1. Click **Add custom connector**.
2. Fill in the fields:
- **Name:** CallGrid
- **Description** (optional): CallGrid MCP Server
- **Remote MCP server URL:** [https://mcp.callgrid.com/mcp](https://mcp.callgrid.com/mcp)
3. Leave the OAuth fields blank. CallGrid does not need any OAuth client ID or secret.
4. Click **Add**.
Claude pulls in the CallGrid icon automatically, so the connector looks correct in your list right away.
#### Step 3: Authorize your account
The first time you ask CallGrid something, Claude prompts you to connect and authorize access to your CallGrid organization. Approve it once and you stay connected for future chats.
If you manage more than one CallGrid organization, tell Claude which one to use (for example, "use my Acme org"). Claude will use that organization for the rest of the conversation.

#### Step 4: Start asking
Make sure the CallGrid connector is enabled for your conversation, then ask away. See the examples below.
---
### What you can do with it
The MCP gives Claude live read access to your account. Here are prompts that map to what it can pull today.
**Account and structure**
- "Which CallGrid organization am I connected to?"
- "List my active campaigns."
- "What traffic sources feed my insurance campaign?"
- "Show me my buyers and their current status."
- "Who are my publishers and vendors?"
- "What routing destinations are set up?"
**Numbers and tags**
- "How many tracking numbers do I have, and which campaigns use them?"
- "What tags are configured on my account?"
**Performance and diagnostics**
- "Give me a performance summary for last week."
- "Why are my bids getting rejected? Show the bid stats."
- "How are my pings performing?"
- "What changed on my account recently?" (version history)
- "List the webhooks on my campaigns so I can check one is firing."
Because Claude understands context, you can stack follow ups: ask for a summary, then "now break that down by buyer," then "which of those had the lowest connect rate." No report builder, just questions.
---
### Advanced prompts: reports, scorecards, and optimization plans
Claude does not just fetch numbers. It can pull your data and then reason over it, so you can ask for finished work product: HTML reports, charts, scorecards, and full optimization plans with revenue estimates. Paste any of these, swap in your own specifics, and go.
**Build an optimization report with charts**
> Make an HTML report with graphs on my top performing campaign, plus a list of improvements I could make. Propose specific setting changes, and include charts that estimate what each change could improve if I made it, with the goal of more revenue.
**Diagnose bid rejections and quantify the loss**
> Pull my bid stats for the last 7 days, group the top rejection reasons, and give me a prioritized fix list with an estimate of the calls and revenue I am losing to each.
**Score my buyers and flag the laggards**
> Rank my buyers by conversion rate and revenue per call. Flag the underperformers, and draft talking points I can use to renegotiate the bottom three.
**Compare traffic sources and tell me where to spend**
> Compare my traffic sources by billable rate and revenue per call in a chart, then tell me which vendors to scale and which to cut.
**Map the ping to call funnel**
> Show me the funnel from pings to bids to accepted calls, point to the biggest drop off, and chart it.
**Run a webhook health check**
> Check the webhooks on all my campaigns. List any that look misconfigured or are missing a postback for converted events, and tell me exactly what to add.
> **A note on estimates:** when the assistant projects revenue lift, those are estimates built from your own data, not guarantees. Treat them as a prioritized starting point, then validate with a small test before you roll a change out.
---
### What it can and cannot do
Today the CallGrid MCP is read only. It surfaces and analyzes your data. It does not place calls, create or edit campaigns, move numbers, or change any settings. Asking it to "pause campaign X" will not change anything in your account.
That makes it safe to hand to anyone on your team who needs answers but should not be editing the account. Write actions may come later. For now, think of it as instant reporting and a second set of eyes on account health.
---
### Troubleshooting
- **The connector was added but Claude says it has no CallGrid tools.** Open the conversation's connector controls and confirm CallGrid is turned on for that chat.
- **Claude asks which organization to use.** That is expected when your login has access to more than one org. Name the one you want.
- **You get an authorization prompt every time.** Approve the connection once and let it complete. If it keeps prompting, remove the connector and add it again with the exact URL above.
- **Numbers look stale.** Ask Claude to pull fresh data ("re-check the latest"), since it answers from the most recent pull in the conversation.
---
## Roku Ads Manager Conversions API Integration
> Roku Ads Manager streamlines the ad buying experience from campaign creation to optimization to billing.
Source: https://callgrid.com/knowledge-base/roku-ads-manager-conversions-api-integration
Last updated: 2026-06-17
Topics: Integrations
Roku Ads Manager is a self-service connected TV (CTV) advertising platform that streamlines the ad buying experience from campaign creation to optimization to billing. With CallGrid's Roku Ads Manager integration, you send your call conversion data back to Roku Ads Manager so you can measure the calls your Roku ads drive and optimize your CTV campaigns against real phone-call outcomes.
CallGrid sends conversions to Roku through a server-to-server webhook (Roku's Conversions API). Once configured, the webhook fires automatically on the call event you choose, so Roku Ads Manager can attribute phone-call conversions back to your CTV ad campaigns. CallGrid hashes the caller's phone number before sending it, so no caller number is transmitted in the clear, and it sends the event timestamp using a built-in tag, so there is nothing to format yourself.
This article is for admin users.
### Prerequisites
Before setting up your webhook, you will need:
- Admin access in your CallGrid account
- Organization or Account Admin access in Roku Ads Manager
- Your Roku **Event Group ID**
- Your Roku **CAPI API key** (bearer token)
#### Where to find your Roku Event Group ID
1. Sign in to Roku Ads Manager at [https://ads.roku.com](https://ads.roku.com)
2. Go to the **Events** page at [https://ads.roku.com/pixels](https://ads.roku.com/pixels)
3. Find the Event Group you want to use, or create a new one
4. Copy the **Event Group ID** and save it somewhere secure for the CallGrid setup below
#### Where to generate your Roku CAPI API key
1. On the **Events** page, select **CAPI**
2. Click **Generate an API key** (this requires Organization or Account Admin access in Roku)
3. Copy the API key and save it somewhere secure for the CallGrid setup below
> **Note:** Roku API keys do not expire. If you believe a key has been compromised, revoke it and generate a new one from the same CAPI settings page, then update the key in your CallGrid webhook.
### Setup Process
#### 1. Create the webhook
1. In CallGrid, navigate to **Integrations** → **Webhooks**
2. Click **+ New Webhook**
[Screenshot: Integrations > Webhooks (Manage Webhooks) list with the + New Webhook button]
3. **Name**: give the webhook a descriptive name (for example, Roku CAPI - Converted)
4. **Event**: choose when the webhook fires. Pick the event that matches the moment you want to count as a Roku conversion:**Note:** The full list of valid events is Call Inbound, Call Initiated, Call Ended, Call Error, Call Answered, Call Billable, Call Paid, Call Converted, Insights Completed, Transcription Completed, Recording Completed, and Bid Received. Choose the one that matches your conversion definition.

- **Call Inbound** to fire on every inbound call
- **Call Answered** to fire when the destination answers
- **Call Billable** to fire when the call meets your billable criteria
1. Select **Roku Advertising** from the template dropdown (listed under the **Conversion Pixel** category)
2. Enter the two template fields:
- **API Key**: paste the Roku CAPI API key you generated
- **event_group_id**: paste the Event Group ID you copied from Roku
3. Click **Save Webhook**

That is the full required setup. The Roku template builds the request to Roku's Conversions API for you, maps the call data automatically, and sends the API key as a bearer token, so there is no manual JSON or header configuration to manage.
#### 2. Filter by vendor or source (optional)
If you only want this webhook to fire for specific vendors or traffic sources, add a tag filter so Roku only receives the conversions you care about:
1. Open the webhook and go to **Tag Routing**
2. Click **Add Filter**
3. Set the tag to **SourceName**, the operator to **Equals**, and select the source or sources that should fire the conversion
4. Save

You can filter on any system tag (for example SourceName, BuyerName, CampaignName, or InboundState) and combine conditions with **Add Or Rule** or **Add And Rule**.
#### 3. Add the webhook to your campaign
The webhook only runs on campaigns it is attached to. Add it to the campaign you use to track your Roku calls:
1. Navigate to **Campaigns** and open the campaign you use for Roku traffic
2. Click **Add Webhook**
3. Select the Roku webhook you created from the dropdown
4. Click **Save**

Repeat for any other campaigns that should report conversions to Roku.
### Testing Your Integration
1. Open the webhook and fill in test values for the detected variables
2. Click **Run Webhook** to fire a test conversion
3. Confirm the response returns a success status
4. Check your Roku Ads Manager dashboard to confirm the conversion appears
After you fire a test conversion, it can take some time for the event to show up in Roku Ads Manager. This is expected. For a true end-to-end check, place a live test call into a campaign that has the webhook attached and confirm the conversion lands in Roku.
### What CallGrid sends to Roku
In Template Mode you only enter the API Key and event_group_id. CallGrid builds the rest of the request for you and POSTs it to Roku's Conversions API endpoint (https://events.ads.rokuapi.net/v1/events), with the API key passed in the request header. You do not need a JavaScript node to format the timestamp, and you do not need to configure phone hashing, both are handled automatically. For reference, the conversion event maps as follows:

### Best Practices
- Match the **Event** to your actual conversion definition. Use Call Billable or Call Converted when you only want qualified calls counted, and Call Inbound when you want every call reported.
- Use a tag filter on **SourceName** if only some of your traffic should report to Roku, so you do not inflate your CTV conversion counts with unrelated sources.
- Confirm the webhook is attached to every campaign that carries Roku traffic. A webhook with no campaign attached never fires.
- Keep your Event Group ID and API key current. If you rotate the Roku key, update it in the webhook.
- Test with a live call before scaling spend on the campaign.
### Troubleshooting
- **No conversions in Roku**: confirm the webhook is attached to the campaign, the correct **Event** is selected, and the campaign is receiving calls that meet that event's criteria.
- **Authentication or 401 errors**: verify the API key is pasted correctly with no extra spaces, and that the key has not been revoked in Roku.
- **Wrong Event Group**: confirm the Event Group ID matches the group you are viewing in the Roku dashboard.
- **Conversions firing too often or too rarely**: revisit your Event choice and any tag filters. Call Inbound fires on every call, while Call Billable and Call Converted fire only on qualifying calls.
- **Delay in reporting**: conversions can take time to appear in Roku Ads Manager after firing. Allow time before assuming a delivery failure.
### Getting Help
If you have questions or need additional help with your Roku Ads Manager integration, reach out to our support team via live chat in your dashboard or email [support@callgrid.com](mailto:support@callgrid.com).
---
## Advanced Guide: Ringba to CallGrid RTB with Confirmation Step
> You should only follow this guide if your buyer has explicitly told you that a confirmation step is required.
Source: https://callgrid.com/knowledge-base/advanced-guide-ringba-to-callgrid-rtb-with-confirmation-step
Last updated: 2026-03-03
Topics: Integrations
**Hey! This is an advanced guide for setting up a Ringba to CallGrid RTB integration.**
> **Warning:** **⚠️ IMPORTANT:** You should _only_ follow this guide if your buyer has explicitly told you that a confirmation step is required. If your buyer hasn't asked for a confirmation step, you should not follow this guide.
#### Step 1: Follow the Standard Setup
First, you need to start by following the original guide linked here: [**https://callgrid.com/knowledge-base/posting-bids-from-ringba-to-callgrid-using-rtb**](https://callgrid.com/knowledge-base/posting-bids-from-ringba-to-callgrid-using-rtb)
Set up your RingTree Target exactly as described in that guide. Once the standard mapping is complete, proceed to the steps below to configure the differences.
#### Step 2: Understanding the Difference
To set up this confirmation, we are changing how CallGrid interacts with Ringba. Instead of acting as a "ping-only" setup, CallGrid will now act as a "ping/post" specifically for this Grid ID.
#### Step 3: Enable the Confirmation Step & Parse the Bid ID
After you run the initial test request (using the +15551234567 test phone number) from the normal guide, you need to enable the confirmation features:

1. Scroll down to the bottom of the page and toggle **ON** the **Confirmation Request** step.
2. Toggle **ON** the **Bid ID Required** setting.
3. Click the **Bid ID Parsing** drop-down and select id.
#### Step 4: Map the Dynamic SIP Address
Next, we need to temporarily hardcode an example bid ID to run a test and map the SIP address.

1. In the **URL** field under the Confirmation Request section, enter the test URL containing an example bid ID (e.g., https://bid.callgrid.com/api/bid/confirmation/cmbidlwefnn09342t3nklnelkr).
2. Click the **Run Request** button.
3. Once the response loads, click the **Dynamic Number/SIP Parsing** drop-down and select dynamicSipAddress.
#### Step 5: Replace with the Ringba Macro
Now that the mapping is complete, we need to swap out the hardcoded test ID with a dynamic macro so Ringba passes the correct ID on every live call.

1. Change the URL by replacing the example bid ID with the Ringba [bid-id] macro.
2. Your final URL should look like this: https://bid.callgrid.com/api/bid/confirmation/[bid-id]_._
Once that's done, you can go ahead and save your RingTree Target. You should be all set!
---
## ClickFlare Integration Guide
> The ClickFlare integration enables you to send conversion data from CallGrid to ClickFlare for accurate attribution tracking.
Source: https://callgrid.com/knowledge-base/clickflare-integration-guide
Last updated: 2025-12-30
Topics: Integrations, Conversion Optimization
_The ClickFlare integration enables you to send conversion data from CallGrid to ClickFlare for accurate attribution tracking. When a qualifying call event occurs in CallGrid, a postback is automatically sent to ClickFlare, closing the attribution loop and enabling accurate campaign optimization._
---
### Prerequisites
Before setting up this integration, ensure you have:
- An active ClickFlare account
- Your ClickFlare tracking domain (e.g., mylandingpage.com)
- The click ID parameter name used in your ClickFlare campaigns (typically "clickid")
- Understanding of which conversion events you want to track
---
### Configuration Steps
#### Step 1: Capture the ClickFlare Click ID
Before CallGrid can send conversions back to ClickFlare, you need to capture the ClickFlare click ID when visitors arrive at your landing page.
**Landing Page Setup:**
Ensure your CallGrid DNI (Dynamic Number Insertion) script is configured to capture the ClickFlare click ID parameter by ensuring the parameter is added as a Tag on your Tags page.
> **Note:** **Pro Tip: **Use the “Media Buying” tags template on the Integrations->Tags page to speed run your tag setup and automatically track the most commonly used tracking parameters.
**Important:** The parameter name must match what you configure in the ClickFlare template (default is "clickid").
---
#### Step 2: Configure CallGrid Webhook
##### Option A: Using Template Mode (Recommended)

1. Navigate to **Webhooks** in the left navigation
2. Click **+ New Webhook**
3. Enable **Template Mode** (toggle on)
4. Under "Filter by Template Type," select **Conversion Pixel**
5. Select **ClickFlare** from the template dropdown
**Configure Template Variables:**
1. Enter a **Name** for your webhook (e.g., "ClickFlare Conversions")
2. Select the **Event** that should trigger the conversion (e.g., "Call Ended" or "Call Paid")
3. Click **Save Webhook**
---
##### Option B: Manual Configuration (Advanced)
If you need more control over the webhook configuration:
1. Navigate to **Webhooks** in the left navigation
2. Click **+ New Webhook**
3. Disable **Template Mode** (toggle off)
4. Configure the following:

**Replace:**
- YOUR_CLICKFLARE_DOMAIN with your ClickFlare tracking domain
- YOUR_EVENT_NAME with your custom conversion event name
---
### Testing Your Integration
#### Step 1: Use the Webhook Testing Tool

After saving your webhook, CallGrid provides a testing interface:
1. Fill in test values for each variable:
- **tag:clickid** - Enter a test click ID from ClickFlare
- **tag:CallPayout** - Enter a test payout amount (e.g., 25.00)
- **tag:CallId** - Enter a unique test ID
- **tag:InboundNumber** - Enter a test phone number
2. Click **Run Webhook** to send a test postback
3. Check ClickFlare to verify the conversion was recorded
#### Step 2: Live Traffic Validation
1. Generate a test click through your ClickFlare campaign
2. Place a test call to your tracking number
3. Verify the conversion appears in ClickFlare with correct attribution
---
### Event Selection Guide
Choose the appropriate CallGrid event based on your conversion criteria:
**Call Inbound**
Track calls the moment the inbound call is received
**Call Paid**
Track only calls that met payout criteria
**Call Answered**
Track when caller connects to a buyer
> **Note:** **Pro Tip:** For most performance marketing use cases, "Call Paid" is recommended as it only fires when a call meets your defined conversion criteria.
---
### Adding Filters
To send conversions only for specific sources or campaigns:

1. Click **Add Filter** at the bottom of the webhook configuration
2. Select a filter condition (e.g., "Source Name Equals")
3. Choose the specific source from the dropdown
4. Click **Save Webhook**
This ensures ClickFlare only receives conversion data for the relevant traffic.
---
### Troubleshooting
#### Click ID Not Capturing
**Symptom:** Click IDs not appearing in CallGrid call records
**Solutions:**
1. Verify your the clickid parameter is a Tag on your Tags page.
2. Ensure the parameter name matches exactly (case-sensitive)
3. Check that ClickFlare is passing the click ID in the landing page URL
#### Conversions Not Appearing in ClickFlare
**Symptom:** Webhook fires but conversions don't show in ClickFlare
**Solutions:**
1. Verify your ClickFlare domain is correct
2. Ensure the click ID value matches a valid click in ClickFlare
3. Check that the conversion event name matches your ClickFlare configuration
4. Review CallGrid webhook logs for error responses
#### Duplicate Conversions
**Symptom:** Same conversion appearing multiple times in ClickFlare
**Solutions:**
1. Ensure the txid parameter is mapped to [[tag:CallId]]
2. ClickFlare uses the transaction ID to deduplicate conversions
#### Revenue Not Matching
**Symptom:** Payout values differ between platforms
**Solutions:**
1. Verify [[tag:CallPayout]] is correctly mapped to the payout parameter
2. Check that revenue is calculated at the time the webhook fires
3. Ensure currency formats match between platforms
---
### Best Practices
1. **Always use transaction IDs** - Include the txid parameter to prevent duplicate conversion tracking
2. **Test before going live** - Use CallGrid's webhook testing tool before routing live traffic
3. **Match domains** - Ensure your CallGrid webhook domain matches your ClickFlare tracking domain
4. **Filter by source** - Add source filters if you're only using ClickFlare for specific traffic sources
5. **Monitor regularly** - Compare conversion counts between CallGrid and ClickFlare weekly to catch discrepancies early
---
## CallGrid Bid API - Advanced RTB Integration Guide
> The CallGrid Bid API allows custom platforms and developers to send real-time bid requests to CallGrid campaigns.
Source: https://callgrid.com/knowledge-base/bid-api
Last updated: 2026-10-08
Topics: Integrations, Support
> **Note:** **⚠️ ADVANCED GUIDE**: This article is intended for developers integrating with CallGrid from custom platforms or building their own RTB integrations. If you're using Ringba, Retreaver, or another supported platform, please see the platform-specific articles instead:
- [Posting Bids from Ringba to CallGrid using RTB](https://callgrid.com/posts/posting-bids-from-ringba-to-callgrid-using-rtb)
- [Posting Bids from Retreaver to CallGrid using RTB](https://callgrid.com/posts/posting-bids-from-retreaver-to-callgrid-using-rtb)
---
### Overview
The CallGrid Bid API allows custom platforms and developers to send real-time bid requests to CallGrid campaigns. This guide provides the technical specifications for integrating directly with the CallGrid RTB (Real-Time Bidding) system.
**Key Features:**
- RESTful JSON API
- Real-time bid responses (< 10 ms response times without pings)
- Flexible acceptance criteria
- Support for geographic targeting
- Detailed response codes for handling various scenarios
---
### API Endpoint
#### Base URL
POST or GET https://bid.callgrid.com/api/bid/{Grid-ID}
**Parameters:**
- {Grid-ID}: The unique Grid identifier provided by your CallGrid buyer
**Example:**
[https://bid.callgrid.com/api/bid/cm97s8hmv000ijt06r4djmije](https://bid.callgrid.com/api/bid/cm97s8hmv000ijt06r4djmije)
* Note that you must use the correct Grid ID provided by your buyer.
---
### Request Format
You can use either GET or POST when sending to the CallGrid Bid API.
If sending through GET simply send the required parameters as URL parameters.
If sending through POST simply send the required data as post data via json or www/url-encoded.
#### HTTP Headers
Headers for POST request
```http
Content-Type: application/json
Accept: application/json
```
#### Required Request Parameters
**CallerId** (Required) - The caller's phone number (10-digit format recommended)
- Example: "3035551234"
**InboundStateCode** (Optional) - Two-letter state code of the incoming call
- Example: "CO"
#### Request Body Structure
Data for post request
```json
{
"CallerId": "+15551234567",
"InboundStateCode": "CO"
}
```
Note: you can also send this data as URL parameters if sending via the GET method ie:
```
?CallerId=15551234567&InboundStateCode=CA
```
Note: If you cannot send the call over SIP you can pass the "pstn" flag to get a dynamic phone number to which you can send the call. Set { "pstn": true } in the post data or &pstn=true in the url parameters if using GET to request a dynamic phone number instead of a dynamic sip address. When sending a call over ptsn the caller ID must match the one specified in the bid, or the call will be rejected.
#### Optional Request Parameters
You can include additional custom parameters based on your buyer's requirements:
```json
{
"CallerId": "+15551234567",
"InboundStateCode": "CO",
"InboundZipCode": "80301",
"age": 38,
"CallQualityScore": "95",
"CampaignType": "insurance",
"PublisherId": "pub123"
"pstn": false, // set to true if you cannot send via SIP
}
```
Note: To push a Tag through with the bid the Tag must exist in the receiving party's CallGrid account.
#### Complete Request Example
Example with curl using POST:
```bash
curl -X POST https://bid.callgrid.com/api/bid/cm97s8hmv000ijt06r4djmije \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"CallerId": "+15551234567",
"InboundStateCode": "CO"
}'
```
Example with curl using GET:
```bash
curl "https://bid.callgrid.com/api/bid/cm97s8hmv000ijt06r4djmije?CallerId=+15551234567&InboundStateCode=CO"
```
---
### Response Format
#### Success Response Structure
When a bid is accepted, CallGrid returns a JSON response with the following structure:
```json
{
"id":"cmbidlwefyn02316t3nkxnelxz",
"code":"1000",
"message": "Success",
"dynamicBid":"1.00",
"dynamicDuration":"10",
"expirationSeconds":"100",
"payOnDuplicates":false,
"dynamicSipAddress":"sip:cmbidlwefyn02316t3nkxnelxz@somewhere.sip.callgrid.com"
}
```
```json
{
"id":"cmbidlwefyn02316t3nkxnelxz",
"code":"1000",
"message": "Success",
"dynamicBid":"1.00",
"dynamicDuration":"10",
"expirationSeconds":"100",
"payOnDuplicates":false,
"dynamicPhoneNumber":"+1234567890"
}
```
#### Response Fields
**id** (string) - The bid id. You will need to capture this if sending a Confirmation request.
**code** (integer) - Response status code (see Response Codes below)
**message** (string) - Human-readable message describing the response
**dynamicBid** (float) - The bid amount offered for the call in USD
**dynamicDuration** (string) - Phone number where the call should be routed
**expirationSeconds** (string) - The number of seconds until the bid expires. You must send the call within this time limit.
**payOnDuplicates** (boolean) - If this call will pay on a duplicate or not.
**dynamicSipAddress** (string) - The SIP address where the call should be routed.
**dynamicPhoneNumber** (string) - The Phone Number where the call should be routed. *If using pstn=true.
**confirmationRequired **(boolean) - If a confirmation step is required.
---
### Response Codes
Your CallGrid buyer will respond with one of these codes:
- **1000**: Bid success - Bid received and created
- **4000 and above**: Bid rejected - see the [API Error Codes](https://callgrid.com/posts/call-bidding-error-codes-explained) article for more details.
- **5001**: Bid Rate Limits
---
### Confirmation Step (Usually not Required)
**Note:** Most CallGrid pings do **NOT** require a Confirmation Step. However, certain Grid IDs can be configured for your buyer to require a confirmation step.
If the response indicates a confirmation step is required (confirmationRequired: true), then you must send a Confirmation request or you will not receive a dynamicSipAddress or dynamicPhoneNumber. You may send additional tags through with the confirmation step. Your buyer might require you to post the CallerId or additional tags on the confirmation step.
#### Confirmation Step URL
POST or GET https://bid.callgrid.com/api/bid/confirmation/{Bid-ID}
**Parameters:**
- {Bid-ID}: The unique Bid "id" returned from the "id" of the Bid Request above.
**Example:**
[https://bid.callgrid.com/api/bid/confirmation/cm42x8hbv109ixtz64jdqmzof](https://bid.callgrid.com/api/bid/confirmation/cm42x8hbv109ixtz64jdqmzof)
* Note that you must use the correct Bid "id" field returned from the original bid request.
#### Confirmation Step Parameters
To send through additional tag data on the confirmation step you can pass the parameters through a GET URL or a POST Body same as described above in the [Request Format](#request-format) section. If you already sent certain parameters through on the initial request, you do not need to include them on the confirmation step. CallerId is not required **but should be specified if it was not sent in the original request.**
#### Confirmation Step Response
The response codes and data sent on the confirmation reply are the same as the initial request step.
See the [Response Format](#response-format) section above to see the response shape. A successful confirmation step will include a dynamicSipAddress or dynamicPhoneNumber and a code: 1000.
---
### Implementation Guide
#### Step 1: Obtain Grid ID
Before integrating, obtain the Grid ID from your CallGrid buyer:
1. Contact your CallGrid buyer/partner
2. Request their Grid ID for RTB integration
3. Confirm which parameters they expect in bid requests
4. Verify their acceptance criteria (minimum bid amounts, geographic restrictions, etc.)
#### Step 2: Test Bid URL in browser or with curl.
1. Construct your bid URL using the Grid ID provided by buyer
2. Test the URL using your browser or CURL using the GET request method.
#### Step 3: Implementation.
1. Check for code 1000 and map the dynamicSipAddress, dynamicBid, and dynamicDuration to the correct variables in your application.
---
### Best Practices
#### Request Optimization
**Send Complete Data:**
- Always include CallerId (required)
- Include InboundStateCode or InboundZipCode when available
- Add custom parameters your buyer expects
---
#### Testing Checklist
✓ Verify Grid ID is correct and active
✓ Confirm request includes required CallerId parameter
✓ Test with valid phone numbers (10-digit format)
✓ Verify timeout handling (10 second limit)
✓ Test response code handling (1000, 2000, 3000, 4000, 5000)
✓ Log all bid requests and responses for debugging
---
### Additional Resources
**API Reference:**
- [CallGrid Bid API Response Codes](https://callgrid.com/posts/call-bidding-error-codes-explained)
- [CallGrid API Reference](https://api.callgrid.com/api/documentation)
**Platform-Specific Guides:**
- [Posting Bids from CallGrid to CallGrid](https://callgrid.com/posts/posting-bids-from-callgrid-to-callgrid-using-rtb)
- [Posting Bids from Ringba to CallGrid](https://callgrid.com/posts/posting-bids-from-ringba-to-callgrid-using-rtb)
- [Posting Bids from Retreaver to CallGrid](https://callgrid.com/posts/posting-bids-from-retreaver-to-callgrid-using-rtb)
- [Receiving Bids in CallGrid](https://callgrid.com/posts/posting-bids-from-callgrid-to-callgrid-using-rtb)
**Support:**
- Email: [support@callgrid.com](mailto:support@callgrid.com)
- Documentation: [callgrid.com/knowledge-base](https://callgrid.com/knowledge-base)
---
### Support
For technical assistance with the CallGrid Bid API:
1. Review this documentation and test your integration
2. Contact your CallGrid buyer to verify Grid ID and requirements
3. Reach out to CallGrid support with your integration details and logs
**Need Help?**
- Technical questions: [support@callgrid.com](mailto:support@callgrid.com)
- Integration assistance: Include your Grid ID and sample requests
- Bug reports: Provide full request/response logs and error messages.
---
## Call Recording Best Practices
> Call recording laws vary by state. Some states require only your consent, while others require everyone's consent (all-party consent).
Source: https://callgrid.com/knowledge-base/call-recording-best-practices
Last updated: 2025-09-30
Topics: Product
###
> **Note:** **⚠️ Important Legal Disclaimer**
>
> **This article provides general information only and is not legal advice.** You are solely responsible for complying with all call recording laws. We strongly recommend consulting with a qualified attorney before enabling call recording.
###
### Overview
Call recording laws vary by state. Some states require **only your consent** (one-party consent), while others require **everyone's consent** (all-party consent). When recording calls, always follow the strictest law that applies.
**Best Practice:** Always inform all parties that you're recording, regardless of location.
---
### Which States Require All-Party Consent?
These **11 states** require you to get consent from **everyone** on the call:
- California
- Delaware
- Florida
- Illinois
- Maryland
- Massachusetts
- Montana
- Nevada
- New Hampshire
- Pennsylvania
- Washington
**Special Note:** California law applies to ANY call involving a California resident, even if you're located elsewhere.
**All other states** (38 states + DC) only require one-party consent.
---
### Interstate Calls: Follow the Strictest Law
**Rule:** When calling between states, follow the most restrictive law.
**Examples:**
- You're in Texas → calling Florida = Get all-party consent (Florida requires it)
- You're in New York → calling California = Get all-party consent (California requires it)
- Conference call with anyone in an all-party state = Get everyone's consent
---
### How to Get Consent
#### Option 1: Automated Message (Recommended)
Play this before connecting:
"This call is being recorded for quality and training purposes.
By continuing, you consent to being recorded."
#### Option 2: Agent Disclosure
Your agent says at the start:
"Hi [Name], before we begin, I want to let you know this call
is being recorded for quality and training purposes."
**For all-party consent states, add:**
"Do you consent to being recorded?"
[Wait for "yes" or "okay"]
#### Option 3: Written Notice
Include in your terms of service or agreements:
"Phone calls with [Company] may be recorded for quality
assurance and training purposes."
---
### TCPA Rules for Marketing Calls
If you're making **marketing or sales calls**, additional rules apply:
✅ **Get written consent** before making automated marketing calls
✅ **Check the Do Not Call Registry** before calling
✅ **Honor opt-out requests within 10 business days**
✅ **Only call between 8 AM - 9 PM** (recipient's time zone)
✅ **Keep your own Do Not Call list** for 5 years
---
### Best Practices
#### DO:
- Inform all parties at the beginning of every call
- Use consistent disclosure language
- Document your procedures
- Store recordings securely
- Delete recordings when no longer needed (60-90 days typical)
- Train your team on proper disclosure
#### DON'T:
- Record without telling anyone
- Assume one-party consent for interstate calls
- Keep recordings indefinitely
- Share recordings without authorization
- Record sensitive information (credit cards, SSN) unless necessary
---
### Enabling Call Recording in CallGrid
#### Before You Start:
1. ✅ Consult your attorney
2. ✅ Determine where your customers are located
3. ✅ Create your disclosure script
4. ✅ Set up your retention policy
#### How to Enable:
1. Go to **Campaigns** → Select your campaign
2. Click **Settings** → **Call Recording**
3. Read the legal notice
4. Check **"Enable Call Recording"**
5. Save
---
### Data Security & Retention
**Security:**
- All recordings are encrypted
- Only authorized users have access
- Audit logs track who views recordings
**Retention:**
- Set automatic deletion (30, 60, 90, 180 days, or 1 year)
- Recordings auto-delete after retention period
- Can place legal hold if needed
**Downloading:**
- Download individual recordings or bulk export
- Available in MP3 or WAV format
- API access available
---
### Common Questions
**Q: Can I record without telling anyone?**
A: No. Never record without disclosure, even in one-party states.
**Q: What if I don't know where the caller is located?**
A: Treat it as an all-party consent call and ask for consent.
**Q: What happens if I violate call recording laws?**
A: Penalties include fines ($2,500-$10,000+ per violation), criminal charges, and civil lawsuits.
**Q: Can I use recordings for training?**
A: Yes, if you disclosed this purpose when obtaining consent.
**Q: How long should I keep recordings?**
A: Most businesses: 60-90 days. Regulated industries may need longer (consult your attorney).
**Q: What if someone asks me to stop recording?**
A: Stop immediately. Either continue without recording or offer alternative contact methods.
**Q: Do I need consent for the call AND for recording?**
A: For marketing calls: yes. TCPA consent is for the call itself; recording consent is separate.
---
### Sample Disclosure Scripts
**Simple Disclosure:**
"This call is being recorded for quality and training purposes."
**With Opt-Out:**
"This call may be recorded. If you prefer not to be recorded, please let me know now."
**For All-Party States:**
"I need to let you know we record our calls for quality purposes. Do you consent to being recorded?"
**Automated IVR:**
"Thank you for calling [Company]. This call may be recorded for quality and training. Press 1 to continue."
---
### Need Help?
**CallGrid Support:**
- Email: [support@callgrid.com](mailto:support@callgrid.com)
**For Legal Questions:** CallGrid cannot provide legal advice. Please consult your attorney.
---
### Key Takeaways
1. **Always disclose** you're recording at the start of the call
2. **Know your states** - 11 require all-party consent
3. **Secure your recordings** - encrypt and limit access
4. **Delete promptly** - don't keep recordings longer than needed
5. **Get legal advice** - laws are complex and penalties are serious
---
**Remember:** When in doubt, ask for everyone's consent. It's the safest approach and builds trust with your customers.
---
## Posting Bids from CallGrid to CallGrid using RTB
> This guide will walk you through setting up your CallGrid campaign to send bid requests to another CallGrid customer.
Source: https://callgrid.com/knowledge-base/posting-bids-from-callgrid-to-callgrid-using-rtb
Last updated: 2025-12-30
Topics: Product, Real Time Bidding
This guide will walk you through setting up your CallGrid campaign to send bid requests to another CallGrid customer.
---
### Setup Instructions
#### Step 1: Navigate to Your Campaign
1. Log into your CallGrid account
2. Navigate to the **Campaigns** page
3. Click on any **Live Call Bidding Campaign**
4. Go to the **Sources** tab
#### Step 2: Get Your Posting Instructions

1. Click the **Code Icon** (or **Posting Instructions** button) next to the Source
2. This will open the posting instructions modal
#### Step 3: Configure for CallGrid

1. Select **"CallGrid"** from the platform dropdown
2. The system will automatically configure the required parameters:
- **CallerId** (required)
- **State** (optional)
- **Zipcode** (optional)
3. Select any additional custom tags you wish to send to the buyer
#### Step 4: Get Your Grid ID
1. Your **Grid-ID** is displayed in the posting instructions
- Example format: cm97s8hmv000ijt06r4djmije
2. Click the **copy button** next to the Grid-ID
#### Step 5: Share with Your CallGrid Buyer
1. Send the copied Grid-ID to the CallGrid customer you want to send bids to
2. Share this link with them: **Receiving Bids from CallGrid in CallGrid using RTB**
3. They will use your Grid-ID to configure their CallGrid destination to receive your bid requests
---
### How It Works
Once configured:
1. When calls arrive at your CallGrid campaign, the system automatically sends bid requests to the buyer's CallGrid account
2. The buyer evaluates the call and responds with a bid
3. If accepted, the call is routed to their destination
4. Both parties can track call performance in their respective CallGrid dashboards
---
### What Gets Sent
The following information is automatically sent with each bid request:
- **CallerId**: The caller's phone number
- **InboundStateCode**: The state of the incoming call (if available)
- **Additional Tags**: Any custom tags you selected in the posting instructions
---
### Response Codes
Your CallGrid buyer will respond with one of these codes:
- **1000**: Bid accepted - Call will be routed to buyer
- **4000 and above**: Bid rejected - see the [API Error Codes](https://callgrid.com/posts/call-bidding-error-codes-explained) article for more details.
- **5001**: Bid Rate Limits
---
### Next Steps
**For Conversion Tracking:**
If you want to postback conversions to the buyer's CallGrid account based on a Payable event, see the related article: **Posting Conversions to CallGrid from CallGrid**
**For Testing:**
After the buyer configures their CallGrid destination with your Grid-ID:
1. Send a test call through your campaign
2. Monitor your CallGrid logs to verify bid requests are being sent
3. Confirm with the buyer that they're receiving the requests
4. Verify calls are routing correctly when bids are accepted
---
### Troubleshooting
**Buyer Not Receiving Bid Requests:**
- Verify you sent them the correct Grid-ID
- Confirm they've configured their CallGrid destination with your Grid-ID
- Check that your campaign is live and routing calls
**All Bids Being Declined:**
- Contact your buyer to understand their acceptance criteria
- Verify the call types you're sending match their buying preferences
- Check that required parameters (CallerId, State) are being sent correctly
---
## Getting Started with CallGrid
> Welcome to CallGrid! This guide will walk you through your first steps to get your account up and running quickly.
Source: https://callgrid.com/knowledge-base/getting-started-with-callgrid
Last updated: 2025-12-30
Topics: Product
Welcome to CallGrid! This guide will walk you through your first steps to get your account up and running quickly.
### Step 1: Accept Your Account Invitation
When you receive your CallGrid invitation email:
1. **Click the invitation link** in your email
2. **Choose "Sign in with Google"** (recommended)
- This makes future logins faster and more secure
- No passwords to remember
- Same Google account you use for business
3. **Authorize CallGrid** to access your Google account
4. You'll be automatically logged into your new CallGrid dashboard
#### Alternative Login Methods
If you prefer not to use Google:
- Select "Email Magic Link" option
- Enter your email address
- Check your inbox for a secure login link
- Click the link to access your account
---
### Step 2: Choose Your Theme
Your dashboard appearance matters for daily use. Let's personalize it:

1. **Click your profile icon** (top right corner)
2. **Select "Profile"** from the dropdown
3. **Choose a theme preset:**
- **Light Mode**: Clean, bright interface for daytime use
- **Dark Mode**: Easy on the eyes for extended use
- **Custom**: You have full control
4. **Customize colors** to match your brand (optional)
5. **Click "Save"** to apply changes
---
### Step 3: Invite Your Team
Get your team set up early to avoid delays later:

#### Adding Team Members
1. **Navigate to Profile → Users**
2. **Click "Invite User"**
3. **Enter their email address**
4. **Select appropriate role:**
- **Admin**: Full access (billing, settings, users)
- **Member**: Read-only reports (great for clients)
5. **Click "Send Invitation"**
The team member will receive an invitation email and can use the same Google authentication process you used.
---
### Step 4: Set Up Billing & Auto-Recharge
CallGrid operates on a prepaid system. Set up automatic funding to prevent service interruptions:
#### Add Your Payment Method

1. **Click your organization icon (Bottom Left) → Organization Settings**
2. **Go to Manage → "Plan & Billing" section**
3. **Click "Add a default payment method"**
4. **Enter your credit card details:**
- Card number
- Expiration date (MM/YY)
- CVC security code
- Billing address
5. **Click "Add Card"**
#### Configure Auto-Recharge (Critical!)
Auto-recharge prevents your campaigns from stopping unexpectedly:
1. **In the Billing section, find "Auto Recharge"**
2. **Toggle it "ON"**
3. **Set your thresholds:**
- **Minimum Balance**: $25 (when to trigger recharge)
- **Recharge Amount**: $100-500 (how much to add)
4. **Save settings**
> **Note:** **Pro Tip:** Set minimum balance at 2-3x your daily spend for safety.
---
### Step 5: Purchase Phone Numbers
**Phone numbers are the foundation of call tracking.** Buy these first since you'll need to reference them when creating destinations.
#### Option A: Buy Individual Numbers (Simpler)
1. **Navigate to "Numbers"** in the main menu
2. **Click "Buy Numbers"**
3. **Choose number type:**
- **Local Numbers**: Specific area codes for geographic targeting
- **Toll-Free Numbers**: National reach with professional appearance
4. **Select area code** (for local numbers)
5. **Choose how many numbers**: Start with 1-5 for testing
6. **Click "Purchase Numbers"**
#### Option B: Create Number Pool (Recommended for Dynamic Tracking)
1. **Navigate to "Number Pools"**
2. **Click "+ New Pool"**
3. **Pool Configuration:**
- **Pool Name**: "Test Pool - Local 813" (use your area code)
- **Pool Type**: "Local Numbers" or "Toll-Free Numbers"
- **Area Code**: Your target area code (e.g., 813 for Tampa)
- **Maximum Numbers**: 25 (good starting size for testing)
4. **AFK Timeout Settings:**
- **AFK Timeout**: 3 minutes (how long to hold numbers for visitors)
5. **Click "Create Pool"**
6. **Purchase numbers for the pool:**
- The system will prompt you to buy numbers
- Start with 10-25 numbers for testing
#### Number Selection Guide
**Local Numbers Best For:**
- Geographic targeting
- Building local trust
- Cost-effective for regional campaigns
**Toll-Free Numbers Best For:**
- National campaigns
- Professional appearance
- No geographic limitations
---
### Step 6: Create Your First Buyer
**Buyers are the entities that purchase calls from you.** Set up at least one buyer before creating destinations.
#### Create a Buyer

1. **Navigate to "Buyers"** in the main menu
2. **Click "+ New Buyer"**
3. **Fill in buyer details:**
- **Name**: "Test Buyer" or your actual buyer company name
- **Email**: Primary contact email for this buyer
- **Phone**: Contact phone number for the buyer
4. **Click "Save Buyer"**
> **Note:** **Pro Tip:** Even if you're routing calls to yourself initially, create a buyer entity for proper tracking and future scalability.
---
### Step 7: Create Your First Destination
**Destinations are where calls actually get routed.** Each destination is linked to a buyer.
#### Create a Static Destination

1. **Navigate to "Destinations"** in the main menu
2. **Click "+ New Destination"**
3. **Configure basic information:**
- **Name**: "Test Destination - [Buyer Name]"
- **Buyer**: Select the buyer you just created
- **Timezone**: Select the buyer's timezone
- **Sub ID**: Leave blank for now
4. **Business Hours Configuration:**
- **Toggle "Always Open" ON** for testing
- Or set specific hours for production use
5. **Phone Settings:**
- **Phone Type**: Select "Static Number"
- **Static Number**: Enter the actual phone number where calls should route
- Example: +1-555-123-4567
6. **Revenue Settings:**
- **Revenue Type**: "Fixed"
- **Amount**: $10.00 (or your actual rate per qualified call)
7. **Conversion Settings:**
- **Conversion Type**: "Duration"
- **Connect Duration**: 90 seconds (industry standard)
- **Maximum Duration**: 1800 seconds (30 minutes safety cap)
8. **Capacity Settings:**
- **Daily Calls Cap**: 50 (adjust based on actual capacity)
- **Concurrent Calls Cap**: 5
- **Daily Connection Cap**: 25 (qualified calls)
9. **Dial Settings:**
- **Dial Attempts**: 3 (how many times to retry)
- **Dial Timeout**: 15 seconds (how long to wait per attempt)
10. **Click "Save Destination"**
---
### Step 8: Create Your First Vendor
**Vendors represent your traffic sources.** This could be you (for internal media buying) or external publishers.
#### Create a Vendor

1. **Navigate to "Vendors"** in the main menu
2. **Click "+ New Vendor"**
3. **Fill in vendor details:**
- **Name**: "Internal Media" or your actual vendor name
- **Email**: Your email or vendor contact email
- **Phone**: Contact number (optional)
4. **Click "Save Vendor"**
---
### Step 9: Create Your Traffic Source
**Sources represent where your calls come from** (Google Ads, Facebook, website traffic, etc.).
#### Create a Source

1. **Navigate to "Sources"** in the main menu
2. **Click "+ New Source"**
3. **Source Configuration:**
- **Name**: example "Website Traffic" or "Google Ads - Insurance"
- **Vendor**: Select the vendor you created
- **Sub ID**: Optional identifier for this traffic source
4. **Click "Save Source"**
---
### Step 10: Create Your First Campaign
Now that you have all the entities set up, create your campaign.
#### Choose Your Campaign Type
**For your first campaign, choose "Non-Real-Time Call Bidding"** - it's simpler and perfect for learning the platform.
#### Create the Campaign

1. **Navigate to "Campaigns"**
2. **Click "+ New Campaign"**
3. **Campaign Setup:**
- **Campaign Name**: "Test Campaign - [Your Business]"
- **Real-Time Call Bidding**: Select "No"
- **Call Recording**: Toggle "ON" (highly recommended)
- **SHAKEN/STIR**: Toggle "ON" for spam filtering
4. **Revenue Settings:**
- **Revenue Type**: "Fixed"
- **Amount**: $10.00 (should match your destination rate)
5. **Payout Settings:**
- **Payout Type**: "Fixed"
- **Amount**: $8.00 (what you pay per qualified call)
6. **Conversion Settings:**
- **Conversion Type**: "Duration"
- **Connect Duration**: 90 seconds
- **Maximum Duration**: 1800 seconds (30 minutes)
7. **Click "Save Campaign"**
---
Step 11: Connect Sources and Destinations to Campaign
#### Add Your Source
1. **In your campaign, click the "Sources" tab**
2. **Click "Add Source"**
3. **Select your source** from the dropdown
4. **Phone Number Assignment:**
- **Choose individual number** OR
- **Choose number pool** (if you created one)
5. **Number Pool Settings** (if using a pool):
- **Select the pool** you created
- Verify AFK timeout settings
6. **Click "Add Source"**
#### Add Your Destination
1. **Click the "Destinations" tab**
2. **Click "Add Destination"**
3. **Select your destination** and click "Add"
4. **Set routing method:**
- For one destination: "Weights" set to 100%
- Multiple destinations: Distribute weights as needed
---
### Step 12: Install Tracking Code
Get your tracking script to enable call attribution on your website.
### Get Your Tracking Script
1. In your campaign, go to the **Sources** tab
2. Find your source in the list
3. Click the **SDK Instructions** button (the <> code icon) next to your source
4. The SDK Integration Instructions modal will appear
5. Select **Normal** for standard implementation (or **Event Based** for advanced use cases)
6. Copy the JavaScript code provided

### Script Tag Implementation
This is the normal way to initialize the CallGrid SDK. It will load the SDK and initialize it when the page loads.
```html
```
**Note:** Each source has a unique campaignSourceId. The organizationId stays the same across your account.
### Install the Script
Add the script to your landing page, ideally before the closing