Connect to Podio App Items

The Podio App Items connector is used to connect to Podio Application Items to read and write new items.


Data Sync connects to Podio via the Podio OAuth 2.0 protocol, this requires an API Key combination of Client ID and Client Secret. Out of the box Data Sync has internal copies of our Keys it is recommend that for production use you generate your own keys this is because each key has it's own API limits.

Within your Podio account settings under API Keys create a new application and keep note of the Client ID and Client Secret.

Create Podio API Key

Contact Podio Support and mention Simego Data Sync Studio to increase your API limits on your Key.

It's recommended to use the Data Sync connection library with Podio since these keys need refreshing from time to time and it's much easier to setup this authentication once and re-use it.

To create your initial Connection locate the Podio Items connector and enter the connection details as follows

  1. Your API Client ID and Client Secret
  2. Your credentials, click onto the ... to sign into Podio and authorise the application to connect. Set the Authentication Mode to either Client or App depending on how you are authenticating.
  3. Select an existing Podio application to connect to
  4. Press Connect & Create Library Connection to connect to this app and create a library connection you can reuse. You only need to save the connection once per site as you can access the workspaces within that site from the connection library.

Podio Connection

Granting Access to Podio

When you click onto the ellipsis in the credentials field it will open a browser window and redirect you to login to Podio.

Sign in to Podio

Sign in to your Podio workspace and grant access to your Application key. In this example the application name was configured to be Data Sync.

Grant Access

Once you are connected navigate back to Data Sync and then select the app you wish to connect to. Click Connect & Create Library Connection to save the connection to the connection library. You only need to do this once per site as you can access the other workspaces from the connection library window.

Select App and Connect

Demonstration Video

Connection Library

You can connect to your Podio Apps directly from the Connection Library.

Podio Connection Library

Right click on an App in the Connection Library and connect it to either your Source (A) or Target (B).

You can also use Drag and Drop to simply Drag an App from the Connection Library onto the Data source.

Podio Connection Library



The Podio App to connect to.


A View from the App to use to return the App data, typically this will be All Items however you may want to return a filtered view in certain scenarios.


If you are exporting Podio data to Mongo DB you can return a reduced list of columns and have the remainder returned as a JSON Blob column by setting RawJsonMode to True

JsonRawMode Podio

Make sure to refresh your connection window by clicking on the refresh button once you have changed the RawJsonMode field.


The Silent property indicates whether data changes should be reported to the activity stream.


The number of items to return from Podio in each web request, the smaller this number the more API calls are used. The larger the number the more likely you are to get errors. The default is 250.


Specifies how DateTime values should be handled. If you use Local Timezone DateTime values then you should choose Local rather than UTC.

Choosing local causes data sync to convert Podio UTC values into your local timezone. When updating Podio local will cause your DateTime values to be converted into UTC.

Podio external_id column

The Podio external_id column is used to store an identifier from an external system. It is important that if you plan to synchronise your data back to your source system you use this field to store your source system unique record identifier.

Only this field can be used with incremental sync mode so again it's important to use this field where possible.

Podio Relationships

To set a Podio related column value you need to obtain the item_id of the item you wish to relate, this can be dove via a Lookup function. The Data Type of the Column in the schema map must be System.Int32.

If you need to set multiple items then the schema map data type must be System.Int32[] which is an array of item_id. The Lookup functions cannot return an array of items so you will need to use Dynamic Columns to lookup each item_id individually.


You can lookup values in other Apps either via the standard lookup or via the LOOKUPA/B calculated column function.

For example looking up the item_id in the app Simego Ltd/Test/Categories where the external_id = CategoryID.

LOOKUPB("item_id", "Simego Ltd/Test/Categories", WHEN("external_id", CategoryID))

Podio Calculated Column Lookup

Project Automation

From Project Automation you can interact with the Podio API directly via our Helper Methods.

The 'Podio' object

The Podio object provides methods which can be used to call Podio API's from Project Automation.

Call Podio API

The following methods can be used to call a Podio API. These requests have the OAuth token added to the request so that they are authenticated. The Body is the Json message to send for the API call.

dynamic JsonRequest(Uri uri, string method, string body)
dynamic JsonRequest(HttpWebRequest request, string body)

Add a Message to the Workspace Activity Stream

void AddStatusMessage(int spaceID, string message)

For example

DataSourceB.Podio.AddStatusMessage(DataSourceB.AppSpaceID, "Hello from DataSync!");


The UpdateSourceRow method can be used to update columns on the current Podio Item in Project Automation item events.

These methods are a convenience wrapper around the Podio<itemid> HTTP PUT API call.

bool UpdateSourceRow(Dictionary<string, dynamic> fields, object identity);
bool UpdateSourceRow(string json, object identity);

An example using the UpdateSourceRow method in Project Automation AfterUpdateItem event to set a Podio column called Synchronised to equal 1.

public override void AfterUpdateItem(object sender, DataCompareItemInvariant item, object identity)
    var fields = new Dictionary<string, object>
            "fields", new Dictionary<string, object>
				            { "synchronised", 1 }
    DataSourceB.UpdateSourceRow(fields, identity);