Notion API Debut Introduction

An introduction to Notion's long awaited API and different use cases in which you can utilize Notion's API to increase the possibilities of your Notion pages.
Tools mentioned
No items found.
Tutorial overview

I. Introduction

  • Brief overview of the tutorial and what the viewer can expect to learn

II. What's an API?

  • Explanation of what an API is and how it works

III. What can you do with the Notion API?

  • Overview of the various ways the Notion API can be used to automate tasks and integrate with other tools

IV. Who uses the Notion API?

  • Examples of how different types of users, such as individual users, teams, and businesses, use the Notion API

V. Share a page with an integration

  • A step-by-step guide on how to share a page with an integration in Notion

VI. The first three integrations

  • Overview of the first three integrations available for Notion, and how to use them

VII. Send Typeform submissions to Notion

  • A guide on how to use the Notion API to send Typeform submissions to a Notion page

VIII. Zaps and Bots

  • An introduction to the concept of "zaps" and "bots" and how they can be used to automate tasks in Notion

IX. Zapier vs. Automate.io

  • Comparison of the pros and cons of using Zapier and Automate.io for Notion API integration

X. Configure Automate.io

  • A step-by-step guide on how to configure Automate.io for use with the Notion API

XI. Configure Zapier

  • A step-by-step guide on how to configure Zapier for use with the Notion API

XII. Optimize your workspace for the API

  • Tips and best practices on how to optimize your Notion workspace for use with the API

XIII. Automate.io Example: Automate the Full Name property

  • An example of how to use Automate.io to automate the "Full Name" property in Notion

XIV. Zapier Example: Add Google Contacts to Notion

  • An example of how to use Zapier to add Google contacts to a Notion database

XV. Integration ideas

  • A list of creative ideas for using the Notion API to automate tasks and integrate with other tools

Transcript

For many, the lack of an API has been a competitive disadvantage for Notions. It deterred potential users and for those of us who did adopt the tool, the API has been the most requested feature by far and a daily topic in online conversations. However, every time we'd get a hint of a release, days, weeks, or months would pass without an update.

Finally, our wish came true this May when the Notions API entered public beta. This milestone is really worth the hype as it opens a world of new opportunities in Notions. Let's explore the fundamentals of the API and how to use it with a few simple examples. In subsequent posts and videos, I'll dive deeper into more complex implementations of the API. So be sure to subscribe to the newsletter at notion.vip and to this YouTube channel.

API stands for Application Programming Interface, and APIs allow apps to integrate with other apps, where they can exchange information and make updates to each other. For example, apps that schedule social media posts use the Facebook and Twitter APIs, accounting apps use your bank's API, and tools that merge your cloud drives do so with the APIs of Google Drive, Dropbox, and other services. Pretty much anytime you see the term 'sync' or 'integration' in a service, it's likely using an API.

The Notions API gives you two overarching capabilities. The first is that you can connect Notions with other apps to exchange information and make updates, where if you make an update in one app, the change is reflected in the other app. That means you can sync your contacts, your calendar events, your expenses, and other information from a variety of sources. The API also gives you the ability to create automations within your workspace. For example, another widely requested feature among Notion users has been recurring tasks and with the API, you can automatically recreate or reschedule a task when it's completed.

The Notions API has two primary types of users. Developers access it directly to build integrations between Notions and their apps, and then everyday users configure those integrations without needing to code. We're going to focus on those everyday non-coders, and the Notion integrations function like a special type of user. Once an administrator has added an integration, then users of the workspace can then grant that integration access to a page from the pages share menu. Remember when you grant a user or in this case, an integration access to a page, then that integration is going to gain access to all of that page's sub-pages as well.

Within the people database, we can click on the share menu and see that it has access to three different integrations. For any of those integrations, we can remove access. If we go into the add people, email groups and integrations option, here at the bottom of the list, we can see the available integrations. Those that have been configured by an administrator. So if we choose one, we can click invite and that's going to give the integration access to this database.

Remember, when you grant a user or an integration access to a page or a database, it's going to gain access to all of the inner pages of that page as well.

At the debut of the API, Notion offers three official integrations. One is Typeform, which is a tool used for creating online forms. Through the integration, you can send submissions from the form directly to a Notion database. The other two integrations are services that allow you to create custom integrations with apps that don't yet have official integrations. One of those services is Zapier, and the other is called Automate.io.

Let's look first at the Typeform integration. Here we have a Typeform that collects contact information and a Notion, we have a people database that contains contact information for each person. This database contains a property for each question of the Typeform.

Once the form is published and the database is configured with a property that corresponds with each question of the Typeform, we can go into the connect area of Typeform and search for Notion and we'll click connect within Notion. Then we'll authenticate the Typeform account and authenticate the Notion account.

When you authenticate Notion, you're going to choose the pages that you want the integration to be able to access. You can be selective about this, but I generally just choose the entire workspace because that's going to allow the integration to access any database for future needs. You click allow access and then in this third step, it will refresh and that's going to allow us to choose the database for this particular use of the integration. In our case, it's the people database.

When you choose the database, you'll then have the option to map each question of the Typeform to its corresponding property. I want to note that if you have a multiple-choice question that maps to a select or multi-select property in Notion, you're going to want to make sure that those options are pre-configured within the Notion database.

With each Typeform question mapped to its corresponding property in the Notion database, we can click save mapping and the integration is finalized. So when we make submissions using the form, they'll appear within that database. So let's give it a quick demonstration here.

With the form submitted, we can pop over to the people database and we can see that Tim Cook has been populated. In a demonstration coming up shortly, we'll talk about how we can programmatically populate the full name.

As I mentioned, Zapier and Automate.io are services where you can create custom integrations with apps that don't yet offer official integrations. In Zapier, you create Zaps, and in Automate.io, you create bots. Each Zap and bot has a trigger followed by one or more actions and basically, you're creating a formula that says if trigger, do actions. Zaps and bots can be triggered by Notion, by other apps, or by these sorts of internal monitors you can configure in Zapier and Automate.io, and in Notion.

You can trigger a Zap or a bot by adding an item to a database in Automate.io. Additionally, you can also trigger a bot by updating an item in a database, which is a considerable advantage of Automate.io over Zapier.

A couple of examples of this include updating a meeting within an events database or adding a new contact within a context database. You can also trigger Zaps and bots from other apps, in which case your actions would occur in Notion. A couple of examples here include favoriting a song in Spotify and updating a contact in Salesforce or creating an event in a Google Calendar.

Zapier and Automate.io also include internal monitors that can trigger your Zaps and bots, so you can use these to set a recurring schedule to receive emails and more. For example, you can trigger your Zap on the first day of each month or whenever a provided email address receives an email containing a new task. That task can be added to a tasks database.

We can trigger Zaps and bots within Notion, within other apps, and through these internal monitors. Those triggers initialize one or more actions, which like triggers can occur within Notion, within other apps, or within internal functions of Zapier and Automate.io. Almost always, actions are going to reference information provided by the trigger, such as the ID of the page that was updated or a personal trait of a contact that was added.

In Notion, your actions will typically be adding or updating database items. So, if your trigger is an updated Salesforce contact, for example, you can update the same contact in your contacts database in Notion. And if your trigger is a song favorited in Spotify, you can add that song to a songs database in Notion. Then, if your zapper bot is triggered in Notion, you'll often want the actions to occur in other apps. Some examples here are if a person is added to your contacts database in Notion, add that contact to Salesforce. And if a meeting is added to an events database in Notion, create the event in Google Calendar.

Zapier and Automate.io offer a variety of internal actions that often serve as interim steps before other actions. For example, you can reformat information to make it more suitable for its destination. You could reformat a birthday from its numeric format to its written format and then apply that written format to an email that is sent in a subsequent action. Additionally, you can also perform calculations, such as determining the age of a person from that person's birthday, and then that age could then be applied to an age property in the final destination.

Zapier and Automate.io also allow you to filter content and proceed only if certain conditions are met. So, you might want to publish a social media post only if its status property is final. Zapier also allows you to create sequences where certain actions are taken if the filter is true and then alternative actions are taken if it's false.

Going to be one of the advantages of Zapier over Automate.io. So I've mentioned a few of these subtle differences between Zapier and Automate.io which you'll want to consider when choosing the right automation service for your particular needs.At the launch of the API, Automate.io allows you to trigger bots from updated database items, whereas Zaps are only triggered from new database items. However, Zapier allows you to create these conditional paths for various outcomes of your filters. Although you could technically create paths and automate that in Automate.io by chaining odds, Zapier also supports more apps, but overall, you'll find it to be more expensive than Automate.io.For a more detailed comparison of these services, you can review their pricing pages, which I'll link to within the notes of this video.

An admin will configure the Automate.io integration when creating a bot. When you want to use Notion for the first time in Automate.io, whether as the trigger app or the action app, you'll search for Notion, choose it under Add a new app, and then I typically leave the default name just Notion, and click authorize. At this point, once again, you'll select the pages that you want to grant the integration access to, and I typically choose all pages of my workspace, but you can be more selective. Then you'll click Allow access and then Save, and that finalizes the integration. So you can now use Notion within bots as both the trigger apps and the action apps.

One note on using Notion with Automate.io is that a lot of times when you choose a Notion database, Automate.io will want that database to have a created time and/or a last edited time property for reasons of tracking updates and so forth. So what you'll do in your database is that these are special types of properties. If you want to add a created time, you can name it, and then under the advanced options for property types, you can choose created time here. And then we can also add a last edited time, and then these are automatically populated according to when the items were created or last edited. And then you can just hide these properties from all views of your workspace if you never want to see them. And so when you choose Notion and then you choose a database, you can map those last edited and created times properties where requested in Automate.io and that'll give it the information that it needs.

The Zapier integration is a little bit more cumbersome to configure. An admin will visit notion.so/my-integrations and there, the admin will create a new integration. I like to format service with an arrow and then the workspace that you integrated with. So in this case, it would be Zapier and an arrow and we're using the Nut labs workspace. And then you can optionally upload a logo. And then you'll want to make sure to indicate the workspace for this particular instance of the integration and then click submit. And then you'll be given a secret.

Which you can show and copy and you'll use that in Zapier, but before you use that in Zapier, you're going to want to go to the database where the integration will need access, at least for this first use of it.

So, what you'll do is you go to the share menu and you'll click the add people option. You'll see that new integration that you just created. You'll choose that and then click invite. That gives the Zapier integration access to this particular database. Now, you'll need to do that for each database that you want the integration to access or grant it high level access to sort of a parent page of multiple databases. And, therefore, you won't have to do it on a database by database basis.

Then, in Zapier, when you're building your zap when you use notion for the first time, you can search for it among the apps. You'll indicate your trigger event, which is going to be a new database item. The initial configuration will ask you to sign in to notion and this is where you'll paste the secret that you copied. So, you'll paste it and click continue. That's going to allow you to proceed with the creation of your zap and we'll be looking at an example here momentarily.

Before we look at some of those examples, I want to mention a strategy that you can use to optimize your workspace for the API. If you're familiar with my resources, you know I approach every Notion workspace with a single core tenant. And, in the simplest terms, that is to use databases, not pages. Long before the API, this strategy afforded numerous benefits, and it's the crux of my bulletproof methodology, which is the most widely employed framework and top-selling template among Notion users. And, the API makes this database first approach even more advantageous.

You'll notice a constant in all of the integration examples that we discuss, and that is databases. So, integrations almost always match a property of a Notion database to a value in another app. For example, the first name of a person in your contacts database with the first name of a contact in Salesforce. And, therefore, if you uphold this database-centric strategy, you'll position your workspace to leverage all of the current and future integrations. You can dive deeper into this concept in my post dedicated to optimizing your workspace for the API which I'll link to within the video description.

So, we saw a practical implementation of the Typeform integration in our contact details form and people database. Now, let's build on that with two more simple examples, one using Zapier and the other using Automate.io. And, in my future resources, I'll cover more complex configurations. So, do stay tuned to my newsletter, YouTube channel, and Twitter feed.

So, we'll start with the Automate.io example. Now, you'll recall that our contact form sends new contacts to our people database, and that's going to populate all of the properties but it leaves the full name property blank. And, what we can do with Automate.io.

The text describes a process for using a tool called Automate.io to automatically populate a "full name" property in a database managed by another tool called Notion. The process involves creating a new Automate.io bot and configuring it to trigger when a new person is added to the "people" database. The action taken by the bot is to update a database item in Notion, using the "first name" and "last name" properties from the trigger to populate the "full name" property.

The text also mentions that the process can be tested by submitting a test submission through a form and that the Automate.io bot will ping the Notion workspace at a certain frequency to check for updated or added items in the database.

The text continues to describes a similar process but with a different tool, Zapier, that can be used to add contacts from Google Contacts to Notion. The suggestion is to use label in the google contact called notion sync that will trigger the process of adding the contact to notion.

Tidy because google contacts can get a little junky so the first step is going to be to create a sample contact. So we have our sample contact saved and the next step is going to be configuring that zapier integration for the first time.

As we saw previously, we will add a new integration. We'll call it zapier and the name of the workspace. Leave no logo, we'll confirm that our workspace is selected, and click submit.

So that gives us our token to copy. Then we'll come back to our people database, share it with our zapier integration and then go to zapier and create a new zap. So, our trigger in this case is going to be google contacts and the event is going to be a new or updated contact.

I have already configured google contacts in zapier because we're focused on notion, but that is pretty straightforward. You'll just sign into your account and then we'll test our trigger and we can see here that we have all of the information associated with that sample contact the first name, the last name, and the email address that we entered. And then you can see that notion sync is listed within the groups so that's precisely the sample contact we wanted.

And then we'll continue and add our action. Now, what we want to do is if a contact in google contacts is added or updated we only want to proceed if that group contains the notion sync group. So we're going to use an internal app here to filter the contacts. So, we only want to proceed if the group contains motion sync. Then we'll continue and we see that this sample contact would have met that rule so we can close this action and add another one by selecting that plus sign.

And then this is where we want to create an action in notion. So, type notion choose it, and the event is going to be to create a database item and continue. This is where we'll need to configure notion for the first time. So we'll paste that token and continue. So, the database that we want is the people database which is the only database available because that was the only one we granted access to. And then we're going to want to match each property of the database with the data from google contacts. So, in this case we just used the first name, last name, and email address. So, we will click within here and then search for those particular items within the google contact data.

And we can actually replicate that full name feature that we created in automate.io by just adding first name and last name here separated by a space. So, that's all the information that we'll use in our example here. So, we'll continue and we can see all of the information that we're going to be using in our test. And so we'll click test and review.

If we go to our people database, we can see that care swisher has been added including the full name which comprises the first name and last name separated by a space. So with that successfully in place, we can turn on the zap and our zap is fully configured.

Lastly, here's a quick list of popular implementations of the notion api to give you a sense of how you can use it and to inspire your own implementation. You can reschedule or recreate recurring tasks, you can aggregate contacts from google contacts, a crm, an online store, and a membership platform. You can sync your calendar with an events database, you can send tasks to notion by email or from voice assistants, you can aggregate transactions from banks, online stores, and other financial services.