Google Analytics 4 (GA4) is the new standard for measurement in Google Analytics, to read more on Google Analytics itself please visit their knowledge base:

If you are looking for the Universal Analytics guide, this can be found here:

But note that as of July 1, 2023, Universal Analytics will no longer process data.

To highlight the differences and similarities between the integrations:


  • Integration no longer requires an oAuth flow.
    • You will no longer need to enter credentials and authorise an app.
    • Authentication is now done using a combination of your Data Stream ID and API Token.
  • More filters available to pick and choose which calls you wish to sync.
  • All call data fields now sync with every event, custom definitions can be defined to turn these into reportable metrics.
  • Turning the event into a conversion is now an optional toggle in the configuration settings in Google Analytics.


  • The integration will sync events, it will use a customer's Google Analytics Client ID where available and a hash of the call SID where it could not be found.
  • Customers will still be able to create and name the event to their choosing.
  • Custom Definitions are still available but the process for this is now different (detailed in this guide).

This integration uses the Google Measurement Protocol endpoints, more information on these can be found here:

Integration breakdown

This integration runs on a schedule, every 10 minutes calls will be collected from the FoneDynamics API and compiled into a list according to any filters of the client's choosing.

Each call is then looped over and attempted to push to the relevant Google API endpoint using the customer's API secret and measurement ID provided in the configuration steps.

Calls should appear in real-time reports within a few minutes however syncing custom definitions and into other reports can take up to 24 hours as per standard Google time-frames.

Custom Definitions within Google Analytics can only be configured provided an event with a relevant definition has been synced prior.

Integration Configuration

To start we need to create a data stream and API key. To start, login to your Google Analytics 4 property and click on Admin in the bottom left:

Next, click on 'Data Streams'.

If you don't have a data stream setup, please create one, more information on doing this is below:

Click on the relevant data stream you will be associating to the events:

You will then need to make a note of the Measurement ID (NOT stream ID). Once noted, click on 'Measurement Protocol API Secrets' to create and API key:

Click on 'Create' and enter a nickname for your API key, in this case we have used 'PhoneCalls'. Once created there will be a secret value, make a note as this is your API key.

Configuration from this step forward is now done in the platform, more specifically, under the 'integration' section of the platform:

Navigate to the integrations section and click on 'Create/Add New Integration' and search for the GA4 integration which looks like the below:

Click on 'Use integration' and then you will be given a screen whereby you must connect your FoneDynamics account to the integrations hub. If you have done this before for the current project you will be able to select an existing connection, if it's your first time you will need to add a new connection:

Your account API credentials can be found under the home page, for more information see this guide:

Once your details have been added you can click 'next' you will then be asked to enter the following information

  • PropertySID - This is per property, you can find this on the home page.
  • Tracking All Calls or a Subset - All calls will push every call you receive as an event, a subset allows you to filter the calls.
  • Your GA4 Data Stream API Key - This is the API key created earlier in this guide.
  • Your Measurement ID - This is the Measurement ID from earlier in this guide.
  • Your default event name - You can tag the event with any name you wish.

Example of a completed settings page to track all calls:

If you optionally selected to track a subset of calls in the step above, you will then be taken to an additional settings page, if you selected all calls you can ignore this step:

Explanation of options as below:

  • Disposition - Dispositions include: Answered, IVR, Busy, Failed, NoAnswer
  • Source - The source of a call, either a manual tag on a number/s or generated via dynamic tracking.
  • Medium- The Medium of a call, either a manual tag on a number/s or generated via dynamic tracking.
  • Campaign- The Campaign of a call, either a manual tag on a number/s or generated via dynamic tracking. 
  • Content- The Content of a call, either a manual tag on a number/s or generated via dynamic tracking. 
  • Endpoint Numbers - The endpoint number of a call, must be in +E164 format, multiple numbers are allowed but must be separated with a comma and include no spaces.
  • Dialled Numbers - The number/s that were dialled for a call, must be in +E164 format with each number separated with a comma, no spaces allowed.
  • IVR Options - The IVR option keys that were inputted by the caller, multiple entries are allowed separated by a semicolon (;), a comma denotes an IVR option entered in sequence for multi-level IVRs.

If multiple filters are entered then they will all be applied, for instance IVR option 1 on number +611300555555, calls for the same number which have no IVR option or different IVR options would be discarded.

Example of multiple filters being applied:

Clicking next will complete the setup of the integration, settings can be changed at any time by clicking on 'settings':

(OPTIONAL) Custom Definitions

Custom definitions can be defined with the Google Analytics environment, note that you can only create custom definitions if events (calls) with the relevant values and fields have been synced prior.

For instance, if you would like to create a custom dimension for IVR entries, unless you have synced a call with IVR data can you see this as a configurable option.

To setup custom definitions, open the sidebar, click on Admin and then click on 'Custom Definitions':

Click on 'Create custom dimensions':

You can name the dimension anything and describe the event as you wish however the scope should remain as an 'Event'. Once completed you then need to select an existing event parameter, if you have synced calls for more than 24 hours it should show all the event parameters available to you:

Once you have added a custom dimension, any new events will automatically use this event parameter and you can then use it to report on:

(Optional) Converting events into conversions

Conversions are the universal analytics equivalent to goals. We can choose to mark conversions for all calls or a subset of calls by defining an audience. To setup a conversion, open up the admin panel and click on 'conversions'.

Next, click on 'New Conversion Event':

enter the name to be the same as the event name you specified in the integration setup, this will then mark all events as a conversion.

In order to track a specific audience you can create a new audience by going into the admin panel and clicking on 'Audiences':

Click on 'New Audience':

Under 'Start from scratch' click on 'Create a custom audience':

From here we are given a screen whereby we can customise the conditions that match our audience. First select the event and then you add specific parameters of that event:

Any custom definitions you have created appear under 'custom' and standard event parameters are shown under 'other':

Using the 'To' field as an example, we can choose to create an audience which has called a specific phone number:

You can also add more numbers using OR or AND statements, or by usign the condition/sequencing options:

We now need to add members of this audience who match the criteria into a new event for tracking, to do this, create a new audience trigger:

This new event can be named whatever you wish:

After saving the audience trigger and the audience you should be able to view this:

With the new event now created you can follow the previous steps if you wish to make this new event into a conversion, just replace the name of the event with the newly created event name.