Integrations
Connecting call tracking data with your favorite apps and services.
Dynamic Number Insertion Priority
When several online trackers could apply to the same visitor, only one number can be shown. This is the order Dynamic Number Insertion uses to decide. Number Swap Priority 1. Campaign trackers with Search match criteria 2. Campaign trackers with Landing page match criteria 3. Campaign trackers with Referral match criteria 4. Campaign trackers with Campaign Parameter match criteria 5. Campaign trackers with Direct match criteria 6. Campaign trackers with Always Swap criteria 7. Number Pool trackers The first rule a visitor matches wins, and no further rules are considered. Why Campaigns Beat Number Pools Every campaign tracker outranks every number pool. That's deliberate, and it's the behaviour to plan around when you run both. A number pool tracks everyone, so it will match any visitor. If it were checked first it would always win and your campaign trackers would never show. Putting campaigns first means a visitor who matches a specific campaign gets that campaign's number, and everyone else falls through to the pool. The practical effect: a paid search visitor sees your paid search number, a visitor from a partner site sees the referral number, and general traffic sees a pool number. Each is attributed to the right place. Planning Around It - Specific beats general. If a campaign tracker is capturing traffic you wanted attributed to a pool, narrow the campaign's match criteria rather than changing the pool. - Always Swap is close to last. A tracker set to Always Swap outranks only number pools, so it will catch anything not matched by a more specific campaign — useful as a catch-all, but it will suppress your pool entirely if you have one. - Overlapping campaigns are resolved by this list, not by which you created first. Two campaigns that could both match are decided by criteria type, so check where each sits above. See Setting up a Campaign Tracker for how each match type is configured.
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.
Track Adwords Keyword Search Term with ValueTrack
Once installed on your website and a Number Pool tracker setup, our Dynamic Number Insertion will capture keyword search terms from a "keyword" query string parameter to save with the unique session data of the visitor. We highly recommend to configure your Adwords campaign with Adwords ValueTrack to append "?keyword={keyword}" to the url when a visitor clicks on your ad. Our platform will then store the keyword paramenter value with the visitors session data and will be attributed when to their call in our Calls by Keyword Report.
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 object type, given in the "object" key. For example, a webhook for the "call.finished" event contains all the data available on the API for the call object at that point in time. | Event | Triggers | | --- | --- | | call.received | Triggers immediately when a new call is received. The call is still in progress at this stage, so not all call data is available yet. | | call.finished | Triggers when the call is finished. | | call.recording.available | Triggers when a call recording is available for download. | | message.received | Triggers when an SMS message is received. | | message.sent | Triggers when an SMS message is sent. | | tracker.created | Triggers when a new tracker is created. | | tracker.updated | Triggers when a tracker is updated. | | usage.created | Triggers when a new billing usage record has been created. | | voicemail.received | Triggers when a new voicemail is received. | call.received Triggers immediately when a new call is received. The call is still in progress at this stage, so not all call data is available yet. { "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. { "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. { "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. { "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. { "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. { "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 tracker is updated. { "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 record has been created. { "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 voicemail is received. { "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" }
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.
Google Ads - Integration Setup
Call Tracker connects directly to your Google Ads account and uploads phone calls as conversions. This closes the loop between an ad click and the call it produced, so you can optimize campaigns on calls rather than clicks. Important Call conversions are matched back to an ad click using the Google Click ID (gclid). Only calls that arrive with a gclid are uploaded, which means you need an online tracker (Number Pool or Campaign) with our Dynamic Number Insertion script installed on your website. You do not need the Google Analytics integration for this. The two integrations are independent, and Google Ads no longer needs to import Analytics goals. Open the Google Ads Integration Go to Company Settings > Integrations > Google Ads. This is the Google Ads Conversion Tracking page. Connect Your Google Ads Account Press Connect Google Ads Account. You'll be sent to Google to sign in and authorize Call Tracker to upload conversion data to your account. Select Your Google Ads Account After authorizing, choose which Google Ads account should receive the call conversions. Accounts you manage are listed for you to select. Choose a Conversion Action Call Tracker needs a Google Ads "Import from Clicks" conversion action to upload calls to. You have two options: - Create a new "Phone Call" conversion action — recommended. We add a conversion action called Phone Call to your Google Ads account for you. - Use an existing conversion action — select one of your existing "Import from Clicks" conversion actions. Confirm It Is Enabled Back on the Google Ads page you'll see Connection Details showing the connected account and conversion action, with buttons to Disable, Enable, or Disconnect the integration. Once calls start arriving with a gclid, they appear under Recent Conversion Events on the same page, which is the quickest way to confirm the integration is working. Note that conversions can take a few hours to appear inside Google Ads itself.
Dynamic Number Insertion (DNI)
Dynamic Number Insertion (DNI) is the core engine behind effective call tracking for digital marketers for your website and landing pages. This guide will go over how to add our DNI integration script to your website. Navigate to Company Settings > Integrations > Dynamic Number Insertion To setup Dynamic Number Insertion, navigate to Company Settings > Integrations > Dynamic Number Insertion where you'll find all the details needed to setup on your website. Copy the DNI Snippet Tip If your website is powered by WordPress, we recommend using our WordPress Plugin which greatly simplifies the DNI script installation process. You can find the DNI integration snippet on your Company Settings page just below the Company DNI API key section. Add the DNI Snippet to Your Site Add this snippet to your website just above the closing tag on every page to automatically swap numbers with tracking numbers for Tracking Number Pools and Campaign tracking.
WordPress Integration Guide
Adding our Dynamic Number Insertion is made simple with our WordPress plugin. This guide will show you the steps to install and configure the plugin on your WordPress powered website. Add the Plugin and Activate The simplest way to add the plugin to your site is to use WordPress' Add Plugin screen to search the plugins in the WordPress.org repository. Once on the add Add Plugin page, search for CallTracker and click install. Alternatively, you can download the plugin from here. Once you've added the plugin, Activate it so we can configure it in the next steps. Retrieve Your Call Tracker DNI API Key You'll now need to get your Dynamic Number Insertion API Key from Dynamic Number Insertion settings. Go to your Call Tracker dashboard > Settings > Integrations > Dynamic Number Insertion, and you'll see your Company DNI API Key. Click Copy to add it to your clipboard. Add Your API Key to WordPress Now, go back to your WordPress admin and go to Settings > Call Tracker. Here you'll see a field to add your API key. Add your key and press Update Settings, the plugin will now automatically add the DNI script to every page on your site to automatically swap your number with tracking numbers..
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.