Home Integrations

Integrations

Connecting call tracking data with your favorite apps and services.
By API User
10 articles

Facebook Offline Events Setup Guide

The Facebook Offline Events Integration enables your offline contact events from your call tracking numbers to be synced with your Facebook Ads and Audiences. You’ll be able to leverage the events for tracking conversions from your Facebook Ads and creating custom audiences for retargeting people who have contacted your business. Important To setup Facebook Offline Events integration, you’ll need to have administrator permissions to both the Facebook Business Manager and Facebook Ad account. To configure the integration to allow the offline events uploaded to your Facebook account, you’ll need the following items which you’ll have after following the steps below. 1. Facebook App ID and App Secret 2. Facebook Business Account System User Access Token 3. Offline Events Dataset ID Create a Facebook App Go to https://developers.facebook.com/apps/ and create an App. You’ll use this app to manage an integration, select the first option on the list and continue. In the next screen, give your App a name, select that you’ll use it for your own business and then select your Business Manager account that the App will be connected to. On the app details screen, go to Basic settings to retrieve the App ID and App Secret and note these down to use later in Step 4 when setting up the integration. Create a System User to give your Facebook App Access to your Facebook Ad Account Go to your Business Settings > System Users and create a new System User with Admin permissions. Once you’ve added your System User, Generate an Access Token for your newly created System User to access Facebook with which will be used in Step 4 . Create a Offline Data Set in your Facebook Ad Account Events Manager Moving the Events Manager, create an Offline Events Set to upload your Offline Events to. Follow the flow to Add a new Offline Events Set to use with your call tracking events. Once you’ve created your Offline Events Set, copy down the ID for use in Step 4. Setup Facebook Offline Events Integration in your Company Integrations Now that you’ve configured the app and necessary pieces inside Facebook, it’s time to set up the Facebook Offline Events integration in your account.

Last updated on Apr 02, 2026

Webhooks

Use webhooks to be notified about events that happen in Call Tracker. Call Tracker can send webhooks that notify your application anytime an event happens. This is especially useful for building custom reporting solutions that need to receive data on call or message activity. Setting Up Webhooks You can register new Webhooks in the company settings to send data to your endpoint. For each webhook, you can subscribe to All Events or select specific events to send to your endpoint. See a list of all events and example event data below. To set up a webhook target endpoint, you need to define a route on your server for receiving the events, configure webhook settings so Call Tracker knows where to POST events to, verify your endpoint is valid, and acknowledge your endpoint is receiving events successfully. Important Webhook target endpoints must accept JSON data and respond with a 200 response code. If we do not receive a 200 response, we will retry up to 5 times over a 24 hour period on an exponential back off schedule. If the webhook retry process is unsuccessful, your webhook endpoint will be deactivated. Events Below are all Events that can trigger webhooks to send data to your application. The structure of the event data follows our API for each of the different object type that is provided in the "object" key. For example, a webhook for the "call.finished" event will contain all data that is available on the API for the call object at that given point in time. See example data for each event below. | Event | | | --- | --- | | call.received | Triggers immediately when a new call is received. Note, the call is in progress at this stage and thus all call data is not available. View example data ``` { "type": "call.received", "object": "call" "data": { "source_referrer": "https://www.google.com/", "landing_page": "https://calltracker.io/", "caller_zip": "", "tracker_id": 1570, "tracking_number": "+12702822733", "caller_state": "", "caller_country": "US", "status": "ringing", "company_name": "Example Company", "caller_city": "", "visitor_ip": "24.0.64.93", "source_keyword": "(not provided)", "company_id": 1000, "caller_number": "+18558871739", "source_channel": "organic", "caller_name": "", "timestamp": "2019-03-09T09:09:51.733192Z", "tracker_name": "Number Pool", "id": 59179, "call_duration": 0, "pages_visited": [ "https://calltracker.io/" ], "recording": null, "recording_duration": 0, "gclid": "", "is_first_time": true }, "timestamp": "2019-03-09T09:09:52.010", "webhook": { "id": 21, "target": "https://example.com/webhook/receiver/" }, } | call.finished | Triggers when the call is finished. [View example data](#callFinished) ``` { "type": "call.finished", "object": "call", "data": { "caller_number": "+18558871739", "source_referrer": "https://www.google.com/", "timestamp": "2019-03-09T04:09:51.733192-05:00", "gclid": "", "company_id": 1000, "caller_state": "", "landing_page": "https://calltracker.io/", "recording_duration": 186, "source_channel": "organic", "caller_zip": "", "call_duration": 219, "company_name": "Example Company", "pages_visited": [ "https://calltracker.io/" ], "caller_city": "", "status": "answered", "tracker_id": 1570, "tracking_number": "+12702822733", "recording": null, "caller_country": "US", "caller_name": "", "source_keyword": "(not provided)", "id": 59179, "tracker_name": "Number Pool", "visitor_ip": "24.0.64.93", "is_first_time": true }, "timestamp": "2019-03-09T09:13:31.745", "webhook": { "target": "https://example.com/webhook/receiver/", "id": 21 } } ``` | | call.recording.available | Triggers when a call recording is available for download. [View example data](#callRecording) ``` { "type": "call.recording.available", "object": "call", "data": { "caller_number": "+18558871739", "source_referrer": "https://www.google.com/", "timestamp": "2019-03-09T09:09:51.733192Z", "gclid": "", "company_id": 1000, "caller_state": "", "landing_page": "https://calltracker.io/", "recording_duration": 186, "source_channel": "organic", "caller_zip": "", "call_duration": 219, "company_name": "Example Company", "pages_visited": [ "https://calltracker.io/" ], "caller_city": "", "status": "answered", "tracker_id": 1570, "tracking_number": "+12702822733", "recording": "https://d2k1yc19c4o170.cloudfront.net/call_recordings/CAa0d99df2ede69656e55cd40e2ca05.mp3", "caller_country": "US", "caller_name": "", "source_keyword": "(not provided)", "id": 59179, "tracker_name": "Number Pool", "visitor_ip": "24.0.64.93" }, "timestamp": "2019-03-09T09:14:06.146", "webhook": { "target": "https://example.com/webhook/receiver/", "id": 21 } } ``` | | message.received | Triggers when an SMS message is received. [View example data](#messageReceived) ``` { "type": "message.received", "object": "message" "data": { "tracker_name": "Example Tracker", "tracker_id": 1081, "direction": "incoming", "company_id": 1000, "body": "Hello! This is an message example", "to_number": "+18556000724", "from_number": "+18558871739", "id": 139, "company_name": "Example Company", "timestamp": "2019-03-09T07:30:00.942Z" }, "timestamp": "2019-03-09T07:30:01.084", "webhook": { "id": 21, "target": "https://example.com/webhook/receiver/" }, } ``` | | message.sent | Triggers when an SMS message is sent. [View example data](#messageSent) ``` { "type": "message.sent", "object": "message", "data": { "from_number": "+18556000724", "direction": "outgoing", "tracker_name": "Billing", "id": 140, "to_number": "+18558871739", "timestamp": "2019-03-10T05:07:02.890Z", "body": "Thanks for your message!", "tracker_id": 1081, "company_id": 1000, "company_name": "Call Tracker" }, "timestamp": "2019-03-10T05:07:02.918", "webhook": { "target": "https://example.com/webhook/receiver/", "id": 21 } } ``` | | tracker.created | Triggers when a new tracker is created. [View example data](#trackerCreated) ``` { "type": "tracker.created", "object": "tracker" "data": { "campaign_search_from": "", "company_id": 1000, "recording_message": "This call may be recorded for quality assurance.", "tracker_type": "offline", "campaign_landing_page": "", "number_type": "tollfree", "phone_numbers": [ { "number": "+18558871739", "status": true } ], "campaign_campaign_parameters": "", "campaign_referral": "", "number_pool_size": null, "name": "Startup Lister", "id": 1013, "swap_target": "", "whisper_enabled": true, "destination": "+12703152766", "whisper_message": "Call from Startup Lister.", "campaign_search_for": "", "campaign_source": "", "recording_enabled": true, "status": true, "company_name": "Call Tracker" }, "timestamp": "2019-03-06T09:29:16.093", "webhook": { "id": 21, "target": "https://example.com/webhook/receiver/" }, } ``` | | tracker.updated | Triggers when a new tracker is updated. [View example data](#trackerUpdated) ``` { "type": "tracker.updated", "object": "tracker" "data": { "campaign_search_from": "", "company_id": 1000, "recording_message": "This call may be recorded for quality assurance.", "tracker_type": "offline", "campaign_landing_page": "", "number_type": "tollfree", "phone_numbers": [ { "number": "+18558871739", "status": true } ], "campaign_campaign_parameters": "", "campaign_referral": "", "number_pool_size": null, "name": "Startup Lister", "id": 1013, "swap_target": "", "whisper_enabled": true, "destination": "+12703152766", "whisper_message": "Call from Startup Lister.", "campaign_search_for": "", "campaign_source": "", "recording_enabled": true, "status": true, "company_name": "Call Tracker" }, "timestamp": "2019-03-06T09:29:16.093", "webhook": { "id": 21, "target": "https://example.com/webhook/receiver/" }, } ``` | | usage.created | Triggers when a new billing usage has been created. [View example data](#usageCreated) ``` { "type": "usage.created", "object": "usage", "data": { "tollfree_numbers": 3, "local_numbers": 10, "tollfree_minutes": 234, "timestamp": "2019-03-10T05:13:57.573179Z", "id": 32, "company_id": 1000, "local_minutes": 203, "start_date": "2019-02-10", "sms_messages": 18, "company_name": "Example Company", "end_date": "2019-03-10" }, "timestamp": "2019-03-10T05:13:57.594", "webhook": { "target": "https://example.com/webhook/receiver/", "id": 19 } } ``` | | voicemail.received | Triggers when a new billing usage has been created. [View example data](#voicemailReceived) ``` { "data": { "call_id": 1000, "recording_duration": 14, "tracker_id": 1000, "tracking_number": "+18886787987", "recording": https://example.com/recording/example.wav", "caller_number": "+18128787987", "tracker_name": "Example Call Flow", "id": 3, "company_id": 1111, "transcription": "Hi, this is an example voicemail transcription. Thanks." }, "webhook": { "target": "https://example.com/webhook/receiver/", "id": 42 }, "timestamp": "2019-05-18T08:09:59.492", "type": "voicemail.received", "object": "voicemail" } ``` |

Last updated on Apr 02, 2026

Zapier Integration Setup

In this article, we'll go over how to setup Zapier integration and how to push your call data into 1000s of other applications via Zapier. Our Zapier integration is available to all users and the data that is available to you in Zapier will be the same that is available in the Call Tracker application. Important Zapier integration is currently in Beta and Invite only on the Zapier platform. You must use this link to access the Call Tracker App on Zapier. Access Call Tracker Zapier App Login to your Zapier Account & Make a Zap Login to your Zapier account and follow the Make A Zap button just as you would with any other Zapier integration. If you dont have a Zapier account, you can create a free one here. Setup a Trigger using the Call Tracker Zapier App Next, choose Call Tracker as the Trigger App because you'll be pulling data out of Call Tracker to push it into another application. Once, you've found Call Tracker, select and press the continue button. Choose a Call Tracker Trigger On this screen, you'll be prompted to choose what type of Trigger you'd like to setup. We have 5 triggers available to choose from: - New Completed Company Call - Triggers when a new call is created for a selected company. - New Company Usage - Triggers when a new usage is created for a selected company. - New Completed Call - Triggers when a new call is completed for any company in your account. - New Usage - Triggers when a new usage is added to your account for any company. - New Company - Triggers when a new company is created. If you're just getting started, we recommend using the New Completed Call trigger as it will be used most often. Connect Your Call Tracker Account Next, you'll be prompted to connect your Call Tracker Account to Zapier, press the Connect New Account button to get started. Your Call Tracker API Key can be found here. You're all set! Keep following the Zapier Zap setup prompts and choose the application you want to push the data to and you're all set to go.

Last updated on Apr 02, 2026

jQuery Issues and Troubleshooting

Important - We have now removed jQuery as a dependency to our DNI integration javascript. This article and information are now deprecated and will be removed in the future. This article is intended as a starting point for troubleshooting issues with javascript conflicts that can occur with Call Tracker's DNI integration script for your website. Tip Our DNI script uses includes jQuery by default. If you already have jQuery included for your site, you can add ?no-jquery=true as a query string on the end of your code snippet to remove it from the DNI script. Background Many websites use jQuery and have it already included in their website code but not all. Our DNI javascript uses jQuery and includes it as a measure to make it simple to install our DNI snippet. Sometimes if two different versions of jQuery are included on the same site, it can cause conflicts and break things. Removing jQuery from the DNI Snippet If you're experience a javascript conflict issue with our DNI script, it's most likely due to a jQuery conflict with the jQuery on your site and the jQuery in the DNI script. You can remove jQuery from the DNI script by adding ?no-jquery=true to the end of the code snippet. Your new code snippet on your site will look like this: After adding the query string to your code snippet, jQuery will no longer be included in the integrate snippet. This will most likely fix any javascript conflicts on your website. If it doesn't and you're still having issues, don't hesitate to reach out to our team for help.

Last updated on Apr 02, 2026

Google Analytics - Integration Overview

In this article we'll go over how to setup Google Analytics integration and how to view the call data in your Google Analytics dashboard. Get your Google Analytics Measurement ID and Protocol API Secret Find your Measurement ID Inside your Google Analytics account, navigate to Admin > Data Streams where you'll find your "Web Stream" used on your website, view your stream details to see your Measurement ID. Create a Measurement Protocol API Secret Inside the same Data Stream detail view, you'll also see Measurement Protocol API Secrets, create a new API Secret to be used for your phone call events. Add your Tracking ID to your Company Settings With your Measurement ID and Measurement Protocol API Secret handy, navigate to Company Settings > Integrations > Google Analytics and add these to the settings to enable phone call events to be sent to your Google Analytics data stream. Viewing Phone Call Events in Google Analytics To view Phone Call Events in Google Analytics, go to Reports > Engagement > Events in the sidebar where you'll see an event name phone_call. Data Sent to Google Analytics We send the following data points to Google Analytics with each phone_call event. - call_id - the id of the incoming call. - tracker - the name of the tracker. - tracking_number - the tracking number called. - first_time_caller - 'yes' if the caller is a first time caller, 'no' if it's a repeat caller. - value - the value associated to the call, requires using the default call value from tracker settings. - medium - the source channel (medium) for the call, only available for campaign and number pool trackers. - gclid - the google click ID of the call if available.

Last updated on Apr 02, 2026