Podio Tutorial: Navigation Menu

Scott CostelloPodio, Tutorial 42 Comments

In this tutorial I’m going to expand on the Jump Link trick I showed you in a previous post. I discovered this trick because I was looking for a way to more easily find fields on a Podio App form that had a lot of fields. That trick lead me to create a navigation menu that consisted of Jump Links. ย Each one of those links would bring me to a section header (Create those here).

Here is an example of what I’m talking about…

Create Your First Jump Link

In this video I show you how to create your first jump link. If you had any trouble following my previous post that explained how to do this, here is a video.

Below is the calculation field formula you can use for creating your first Jump Link. One difference from the video above is that I created a variable to hold the url value. I found that when creating the full menu, it was easier to handle the different parts.

var text = 'Lead Data'; 
var url = 'https://podio.com/my-test-company-y1mdn92ih7/reiflow-crm-v3/apps/properties/items/';

detail.link(url + @Unique Id + '#lead-data')  

The Full Navigation Menu

Now that we have a single Jump Link created, the next step is to create the other Jump Links that we want for our Navigation Menu. This is basically an exercise in cutting and pasting. Though I do show you exactly where to find the Field Id (in the App’s Developer section).

Here is the Calculation field code that I used to create the Navigation Menu.

var detail = 'Details'; 
var workup = 'Workup'; 
var offer = 'Offers'; 
var contract = 'Contracts';
var deal = 'Deals'; 
var url = 'https://podio.com/my-test-company-y1mdn92ih7/reiflow-crm-v3/apps/properties/items/';

detail.link(url + @Unique Id + '#field')  
+ ' | ' + workup.link(url + @Unique Id + '#field-2') 
+ ' | ' + offer.link(url + @Unique Id + '#field-3')  
+ ' | ' + contract.link(url + @Unique Id + '#field-4') 
+ ' | ' + deal.link(url + @Unique Id + '#field-5'); 

There is nothing really tricky about this code. I couple of the things you might be wondering about are…

+ concatenates to strings together
Signifies the start/end of a string.
var declares a variable where we will store the link text
variable.link(stuff) .link() is the variable property that allows us to make it a link
| This is just a Pipe character that I use to separate the links. You could use any character you like.
@Unique Id The Podio token that gives us the Items Unique ID
#field-id This is the fields external id
; signifies the end of a code statement.

Final Thoughts

This was one of my favorite tricks that I’ve discovered so far with Podio. It’s simple but brings big improvements to in app navigation. One minor issue is that jump links only work if you are currently viewing the app. If you bookmark an url that contains the jump code at the end (http://…#field-id) it will not work for some reason. What you’ll get is a blank app page. I think this is just a bug in Podio, so maybe it will be fixed in the future.

Hopefully you have found this tip helpful. If you have any questions, please leave a comment below. I will answer them all.

Scott Costello
Follow me

Comments 42

  1. Is there a way to incorporate a return link into the section headers so that it can bring us back to the top of the page? Kind of like a home button?

    1. Post

      You can use the same logic within the section headers. Only tricky part will be formatting it to get the “home” link in the spot you want. The “Link” would just be the Apps Url + the @Unique ID. So…

      var a = "Home";
      a.link("https://podio.com/my-test-company-y1mdn92ih7/reiflow-crm-v3/apps/leads/items/" + @Unique Id);

      1. When I add a “Top” link to my section header it kills the formatting. The entire section becomes bold, the line breaks disappear, and the “—” that supposedly renders a line underneath the header just shows as bold text.

        1. Post

          Hey Brad,

          Working with Markdown (which is the formatting syntax in podio) is a challenge to say the least. This is the code that I just put together that seems to work for what you are trying to do…

          var a = @Address;
          var topLink = "https://podio.com/struggling-investor-bueuc6ud77/real-estate-crm/apps/1-properties/items/" + @Unique ID + "#map";

          "# Details - [Back to Top](" + topLink + ")"
          + "\n"
          + "---"
          + "\n"
          + "The **Details Section** is where you add additional information about the property. You can add property details, do a property workup, keep track of your offers, record your contract information and also any post deal data. To create each, just click on the **Create {item} Record** for each item.";

          Let me know if you have any questions/problems.

          1. I had a feeling something I was doing was affecting the Markdown!

            Thanks for clarification, reading through some Markdown syntax whitepapers was getting ugly lol.

    1. Post
        1. Post
  2. This is amazing Scott! Had a thought though… Is there a way to put another link inside each section header to return to the ‘Top’ of the app?.. or better yet, duplicate the navigation bar inside of each section header so you could jump from section to section very quickly and avoid scrolling altogether. ??

    1. Post

      This can definitely be done and shouldn’t be that hard. You’ll have to play around with the calculation output to get it formatted correctly but it shouldn’t the be bad. If I have time this weekend I’ll come up with a video showing how to do it.

    1. Post
  3. Great STUFF Scott! I have it up and running on one app and will work on the return home function. This will be highly useful especially in my Offers App that is extremely long.


    1. Post

      To do this you have to put a calculation field in the previous app that stores the Items Unique Url. So it would be something like this for my lead app items…

      "https://podio.com/my-test-company-y1mdn92ih7/reiflow-crm-v3/apps/leads/items/" + @Unique Id

      Then in my property app, I can reference this calc field to create a link that goes back to the Lead App.

      var a = "Back to Lead";
      a.link(@All of Url);

      The @All of Url is a Podio Token that will give you the value in the Lead’s Url Calculation field which contains the link address.

      Hope that helps.

  4. Thanks Scott, this is awesome, but I noticed that it doesn’t display the navigation on my mobile devices. It just shows the long list of urls. Did I do something wrong or is this to be expected on the iphone and ipad?

    1. Post

      Hi Gary,

      You didn’t do anything wrong. The Podio mobile apps do not handle calculation fields the same way as the website does. In fact, they aren’t handled the same way in the Android App as they are in the Apple App. Frustrating to say the least. I just skip the apps and go to Podio.com on my phone.

  5. Hi Scott,

    Good Day,

    I have tried your calculation but when I click the links it will direct to a blank page. What went wrong with my calculations? Below is my calculation code

    var acqusition = ‘Acqusition Fields’;
    var disposition = ‘Disposition Fields’;
    var title = ‘Title Fields’;
    var note = ‘Note Fields’;
    var url = ‘https://podio.com/stratusland/test-stratus-workspace/apps/properties/items/’;

    acqusition.link(url + @Unique ID + ‘#field’)
    + ‘ | ‘ + disposition.link(url + @Unique ID + ‘#field-2’)
    + ‘ | ‘ + title.link(url + @Unique ID + ‘#field-3’)
    + ‘ | ‘ + note.link(url + @Unique ID + ‘#field-4’);


    1. Post
  6. Hi Scott

    I used browser in doing my calculations and testing the links. But unfortunately I get this page https://podio.com/stratusland/contacts/apps/sellers/items/SELLER0153#seller-status

    when I click the link. Below is my calculation. Could you help me pls, as I am now implementing this work to our app in our company.

    var Seller1 = “Seller Status”;
    Seller1.link(“https://podio.com/stratusland/contacts/apps/sellers/items/” + @Unique ID + “#seller-status”);

    1. Here’s what I observed, when I try to change the Unique ID into 1 digit only it definitely work, however having 2 Unique Id’s or more it will display a blank page just like this https://podio.com/stratusland/test-stratus-workspace/apps/stratus-properties/items/0002#property-info

      and when you change your Unique Id again to having a prefix and 2 or more digits it will display like this https://podio.com/stratusland/contacts/apps/sellers/items/SELLER0153#seller-status

      Does it only work having 1 unique ID? Do you have any idea on how to solve it? ๐Ÿ™

      Thank you so much

    2. Post


      Here is what is happening…

      If you navigate to an Item in your App and look at the Url for that Item you’ll see something like this => https://podio.com/reiflow/reiflow-dev/apps/leads/items/1

      Notice at the end is a number. That number is the numerical value of the @Unique Id regardless of what you set in the app settings for a prefix or padding values to show for your Unique Id.

      So you are prefixing and padding your Unique Id with SELLER and making sure that it has 4 digits. This turns a Unique ID of “1” to “SELLER0001”. Now unfortunately for my code in this tutorial, the @UNIQUE ID token returns the full Prefixed and Padded version of “SELLER0001”.

      To handle this, you have to do some data manupulation and remove the “SELLER” from the ID and then turn the “0001” into an integer “1”. You can do this like this…

      var ID = String(+(@Unique ID).replace("TEST",""));
      var Seller1 = "Seller Status";
      Seller1.link("https://podio.com/stratusland/contacts/apps/sellers/items/" + ID + "#seller-status");

      Hope that helps

        1. Post

          Hey Brian,

          Try and take a look at what the formula is doing..var ID = String(+(@Unique ID).replace(“TEST”,””));

          (@Unique ID) is the Field Token for the Item’s Unique Id. Which in my test case is TEST0001. Yours is SELLER0001 or SELLER0324.

          (@Unique ID).replace(“TEST”,””) The first thing I want to do is get rid of the prefix text “TEST” in my case (“SELLER” in yours). So the replace function takes 2 parameters, 1st is the text you want to replace and 2nd is what you want to replace it with. I’m replacing “TEST” with an empty string “” (2 double quotes). This in essence deletes TEST from the ID. You need to replace “SELLER”. This will leave you with “0001” or “0342” or what ever is the ID of the item with the leading zeros.

          +(@Unique ID).replace(“TEST”,””)) Now we need to get rid of those leading zeros. To do that you need to turn that string value “0001” into an integer value “1”. We accomplish this by puting a “+” sign in front of the calculation. So now we have “1”.

          String(+(@Unique ID).replace(“TEST”,””)); Finally, because Podio wasn’t liking having an integer value as the output, we have to turn it back into a string value by using the String() function. This was the case in my testing, but might not be necessary since we are then adding that ID to the link Seller1.link(“https://podio.com/stratusland/contacts/apps/sellers/items/” + ID + “#seller-status”)

          You should be able to figure out how your calculation should look like from the above. You only have to change my PREFIX with YOURS.

          1. Hi Scott,

            I’m sorry I’m just a beginner in Podio and I’m not a programmer. I just want to thank you for your effort explaining to. I get the code right now.

            However, just a few observation, the links only work if you manually go to your app and chose your data, but when you tried to look your data in a search bar located upper right in Podio, the links are not working anymore, it only appears a blank page. Thus this happen to you as well?

  7. Hi Scott,

    I already figured it out, thanks for your explanation. Just need to change code to String(+(@Unique ID).replace(โ€œโ€,โ€โ€)); so it can read 0009 or 0325 or 3587. I am so happy that I learned lots of things from you, and it is a big break to all of us. I will subscribe to your blog to see your different posts and learn from it. Again Thank you so much. ๐Ÿ™‚

  8. Scott,
    I am really liking your insight on Podio. It has really helped me out. I am running into some complications with what I am trying to do. What I want to do is have the Header just like what you showed in a previous training and under the solid like have “quick links” to different parts of the app. I am probably way off by this is what I have and it is telling me it is ILLEGAL…

    var database = ‘DATABASE INFO’;
    var SLNotes = ‘SL NOTES’;
    var appointment = ‘APPOINTMENT’;
    var postcall = ‘POST CALL’;
    var additionalproperty = ‘ADDITIONAL PROPERTY’;
    var url = ‘https://podio.com/valleyhomeventurescom/foundation-holdings-lead-tracking/apps/call-backs/items/’;

    + “n” (this has a back slash in front of the “n” but it will not copy over)
    + “—”
    + “n” (this has a back slash in front of the “n” but it will not copy over)
    database.link(url + @Unique ID + ‘#field’)
    + ‘ | ‘ + SLNotes.link(url + @Unique ID + ‘#field-2’)
    + ‘ | ‘ + appointment.link(url + @Unique ID + ‘#field-7’)
    + ‘ | ‘ + postcall.link(url + @Unique ID + ‘#field-8’)
    + ‘ | ‘ + additionalproperty.link(url + @Unique ID + ‘#field-5’);

    1. Post

      Hey Dustin,

      It almost looks perfect, but one thing to add and another to look out for..

      1) On this line you forgot the ‘+’ to concatinate

      + โ€œ\nโ€
      database.link(url + @Unique ID + โ€˜#fieldโ€™)


      + โ€œ\nโ€
      + database.link(url + @Unique ID + โ€˜#fieldโ€™)

      2) If you were to have cut and pasted the code from my blog the quotation marks (single and double) get replaced with something called “fancy quotes”. These do not work in Podio Calculation fields and would give you the ILLEGAL error you are getting. Go through and delete-retype all the quotes.

      I made the above changes and it worked for me. here is what I ended up with.

      var database = 'ATABASE INFO';
      var SLNotes = 'SL NOTES';
      var appointment = 'APPOINTMENT';
      var postcall = 'POST CALL';
      var additionalproperty = 'ADDITIONAL PROPERTY';
      var url = 'https://podio.com/valleyhomeventurescom/foundation-holdings-lead-tracking/apps/call-backs/items/';

      + "\n"
      + "โ€”"
      + "\n" + database.link(url + @Unique ID + '#field')
      + ' | ' + SLNotes.link(url + @Unique ID + '#field-2')
      + ' | ' + appointment.link(url + @Unique ID + '#field-7')
      + ' | ' + postcall.link(url + @Unique ID + '#field-8')
      + ' | ' + additionalproperty.link(url + @Unique ID + '#field-5');

      1. Thanks! I got it to work , but it looks like this:


        Is there a way to have it so “Phone Call Info” is on one line then the solid line then underneath the solid line would be the jump links?

  9. I have been using Podio for some time, but this is like the aha moment. Thank you. Have checked out your podio tips they are great. Keep up the awesome work.

    1. Post
  10. Hi Scott,

    Thank you for this. I am having trouble getting the “|” separator to show. At first I was having the issue that required converting the Unique ID to an integer, but I fixed that with your [var ID = String(+(@Unique ID).replace(โ€œTESTโ€,โ€โ€));] method. However, my unique id isnt padded, so I just did [var ID = (+@Unique ID)], which got the links to work properly, but the separators arent showing in the nav links.

    Full code:

    var ID =(+@Unique ID)

    var sec1 = ‘Preliminary Site Info</a?';

    var sec2 = 'Landlord Information</a?';

    var sec3 = 'Collateral Files</a?';

    var sec4 = 'Physical Site Attributes</a?';

    var sec5 = 'Road and Traffic</a?';

    var sec6 = 'Signage</a?';

    var sec7 = 'Final Economics</a?';

    var sec8 = 'Site Grading</a?';

    var sec9 = 'Competition</a?';

    var sec10 = 'Notes</a?';

    var sec11 = 'LOIs</a?';

    var sec12 = 'Other Docs</a?';

    var sec13 = 'Date Tracking</a?';

    var nav = sec1 + " | " + sec2 + " | " + sec3 + " | " + sec4 + " | " + sec5 + " | " + sec6 + " | " + sec7 + " | " + sec8 + " | " + sec9 + " | " + sec10 + " | " + sec11 + " | " + sec12 + " | " + sec13;


    Any idea?

    1. Post

      There are definitely some syntax errors in your code with regards to the double and single quotes. It gets confusing as hell when you have to use them both. So instead of trying to find the spots where you are off I redid it all…

      var ID = @Unique ID;

      var sec1 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-10' rel= 'nofollow'>Preliminary Site Info</a>";

      var sec2 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-11' rel= 'nofollow'>Landlord Information</a>";

      var sec3 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-16' rel= 'nofollow'>Collateral Files</a>";

      var sec4 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-21' rel= 'nofollow'>Physical Site Attributes</a>";

      var sec5 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-20' rel= 'nofollow'>Road and Traffic</a>";

      var sec6 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-12' rel= 'nofollow'>Signage</a>";

      var sec7 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-15' rel= 'nofollow'>Final Economics</a>";

      var sec8 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-18' rel= 'nofollow'>Site Grading</a>";

      var sec9 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-19' rel= 'nofollow'>Competition</a>";

      var sec10 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-35' rel= 'nofollow'>Notes</a>";

      var sec11 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-13' rel= 'nofollow'>LOIs</a>";

      var sec12 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-33' rel= 'nofollow'>Other Docs</a>";

      var sec13 = "<a href='https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/" + ID + "#field-24' rel= 'nofollow'>Date Tracking</a>";

      var nav = sec1 + " | " + sec2 + " | " + sec3 + " | " + sec4 + " | " + sec5 + " | " + sec6 + " | " + sec7 + " | " + sec8 + " | " + sec9 + " | " + sec10 + " | " + sec11 + " | " + sec12 + " | " + sec13;


        1. Hi Scott,

          So the nav link separators have returned, which is great, the nav links themselves are broken again. When you click on them it opens a new browser tab with a blank page. The browser nav bar displays “https://podio.com/ferrarajerumcom/tmbc/apps/deals-2/items/0175#field-16”

          Any Ideas?

          1. Post

            yeah, take out the full link and just use …href=”#field-16″

            var sec1 = "<a href='#field-10'>Preliminary Site Info</a>";

            Since the post I’ve found a better way to do these links using Markdown syntax which is simpler. You will need to us a dummy variable to trick the calculation field becuase it requires that you reference a podio field.

            var dummy = @Unique id;
            var nav = "[Contacts](#field-1) | [Properties](#field-2) | [Lead Info](#field-3) | [Other Stuff](#field-4)";

        2. Post
    1. Post

Leave a Reply

Your email address will not be published. Required fields are marked *