I’m new here and learning everyday some new incredible capabilities of Airtable.
I work for a not-for-profit organization and we often use Kobotools to collect data from our beneficiaries. Kobotools is an ODK based survey platform (kobotoolbox.org).
In Kobotools there is a built in REST service and I was trying to connect a an airtable table to Kobo, in order to create a new record with the results of the surveys. But I’ve no expirence with API and I’m really struggling to understand if it is possible to do that and if yes, how I can realize that.
Any help is greatly appreciated :slightly_smiling_face:
You need to open an account in Make: https://www.make.com/en . The first to scenarios are free, so you can try this solution with a couple of forms.
In Make, you start from scratch with a blank scenario. First element you add is a Custom Webhook:
Click on Add on the Pop-up window and copy the webhook address:
Now go to Kobotoolbox and open up the form you want to link. Navigate to SETTINGS:
Then click to REST SERVICE on the left menu and on REGISTER A NEW SERVICE:
On the pop-up that open give the Service a Name and paste the link of the Make Webhook:
then click on Create
Open the survey in kobotoolbox and answer it, leaving no empty field. That is very important, so that the webhook can determine the data structure of the survey and you can associate it with your airtable base.
Now Make receive the data of the survey that are answered!
It’s time to connect airtable to make. Go back to the Make Scenario maker, click on add another module and search for airtable:
then click on Airtable and then Click on Create a Record.
You need now to connect make to your airtable base via the API token (more info on how to get it if you don’t know how here). In Make, on the airtable module click on add, give it a name and copy paste the API key form airtable. Then click on SAVE.
If all it is good now you can chose the base and the table you want to link in the menu of the module and the record list will appear:
Now in order to map the kobotoolbox answer to the airtable base you need to run the scenario once:
Open up your kobotoolbox form again and send through another test form with all the answers.
Now go back to make and open up the airtable module, when you click on a record field a list with the fields of the kobotoolbox form answer will appear, chose the variable that need to be associated, to each field:
Once you are done save all and activate your scenario :
Make a test in order to see if all is working correctly :winking_face:
Let me know if you are able to set it up and if you have any other question, I’m glad to help.
Cool that you could set up the scenario, but not so cool that is not working properly…
In our case I’ll check again the step 14. and look if the association are still there. If not associate all the field again and don’t forget to hit save on the airtable module pop-up. I’ve many time forget to hit save when creating a scenario and all the association were gone.
Another reason could be if you have modified your kobotoolbox form since you have created the scenario. In this case you need to open the webhook module click on the violet button “Redetermine data structure” and then send an answered form. So the webhook will update all the usable field form your form and you can update the mapping of the fields in the airtable module.
Last but not least: are the answer of your form in single choice or multiple choice answer? If yes please be sure that all the possible answer are already existing in airtable, otherwise the airtble will give you an empty field. If this is the case, another solution is to turn on the Smart Link option in the Airtable module, which gives Make the authorization to create new answer choices in single or multiple choice answers.
I hope one of this three suggestion will solve your problem… otherwise don’t hesitate to contact me again.
Hi Claudio - I used your wonderfull screenshots and explanations to make my first connections from Kobo to Make!
I wanted to ask about an error that I am receiving. From one survey in Kobo, three different records are made, which are linked. For example, we are registering a farmer (creating a farmer record), and then creating a garden linked to that farmer (creating a garden record), and then creating species records that are linked to the garden. The Farmers are being registered in a separate base, and then referenced in a different base. When I try to make the second record that is linked to the first, I get this error “You are not permitted to perform this operation because the table “People - Gardens” (tblOgQnKHegAIlPZx) has been configured to limit who can perform this operation” - I think this is because “People-Gardens” table is synced from another base.
Can I add or delete records in the destination table created by a sync? Sync is a one-way process so you can notadd, edit or delete records in the synced destination table.
Do you I’ve tried to unsync the table and see if you can perform the operation? Or, if you have access, try to add the record directly in the original table in the other base and not in the synced table.
Let me know if these idea were helpful or not :winking_face:
Currently I’m making one record in Base 1, and then a record in Base 2 that has a field that links to the record that is being synced in another table in Base 2 with the records from Base 1. So it’s not adding a new record to the synced table, but rather trying to reference it, like if you were to paste the value directly into airtable and it would automatically link to the record of the same Name.
Not sure if it’s going to work - but I have noticed with the mapping, I can map the second module for creating the second record in airtable to fields from the first one - what is best practice for this?
Yes with mapping you can try to add the reference in the table in the Base 2, using the same data from the Kobo form that you use to name the record in the Base 1. It should work, the important bit is that the Data that you use to name your record in Base 1 (the first field) is the same that you use to in the linked field in the Table in Base 2.
Otherwise you can also try to enable the option the Smart Link option in the Airtable module in Make, in order to gain the writing rights. -not sure it would work with a synced Table, but worth to try.