The first thing that we need to do is go to the ipgeolocation web site and get an api key. You can get an free api key which will give you up to 1000 calls per day (non-commercial). Once you login and create your account, you can find the key on their dashboard (as shown in the image below).
Now, we can start creating our flow that will trigger on the creation of a new visitor records. The visitor records are created from the web site when a new page is rendered. We will launch Microsoft flow and navigate to a solution that we want to use the flow, and create a new flow.
The first step in the new flow will be to use a When a record is created trigger using the Common Data Service (Current Environment Connector), and be able to retrieve the IP address of the created record.
Although the API key can be hard coded in the HTTP request, I used the initialize variable to store the Api Key so that I can use it in the Http Request. You can also store it in a CDS environmental variable and retrieve it later or elsewhere.
Next we make a call to the IPGeolocation API using the GET method. You can view the documentation of ipgeolocation at https://ipgeolocation.io/documentation/ip-geolocation-api.html.
Notice that we pass the API key variable that we previously initialized and the IP address that we got from the Create record trigger from CDS. We also append the names of the fields that we want to retrieve or we can leave it empty and that will retrieve all fields.
Next we will parse the results that we retrieved from the api using a Parse JSON action. We can use a Generate from Sample (which you can copy from the documentation web page) to create the schema. We pass the Body of the HTTP GET response to the Parse JSON action.
Finally, we call the Update a record action of the Common Data Service Current Environment connector to update the Country back to the entity record that was recently created.
We can now run the process by navigating to a new page on our web site, which will trigger the creation of the record and then trigger the flow. When we look at the Output of the Parse JSON action, we can see that the results are showing the Country for the IP address.
Simple enough. You can now use similar logic in your own web apps (whether using SQL as your backend, CDS or another data system).