How to Connect Notion to Other Apps
The Complete Guide to Notion's API Rate Limits, Zapier and Make Integration, Relation and Rollup Limitations, and Reliable Data Sync

A business builds an entire operation inside Notion: a content calendar, a lightweight CRM, a project tracker, a client portal, an internal wiki. It works beautifully as long as everything stays inside Notion itself. The moment that same data needs to reach Slack, a CRM, a spreadsheet, an email platform, or a custom application, things get considerably more complicated than most people expect.
Notion was never built as a general-purpose integration hub the way a dedicated CRM or automation platform is. It has real, specific technical limits: a genuinely strict API rate limit, incomplete support for certain field types through common no-code tools, and constraints on exactly how much content can move through a single request. Understanding these limits before building an integration, rather than discovering them mid-project, is what separates a reliable Notion automation from one that silently stops working with no visible error at all.
01How The Notion API Actually Works

Notion organizes content into workspaces, pages, and databases. A database contains pages, each page has properties, and those properties can be text, numbers, dates, select options, relations connecting to other databases, rollups aggregating data from related pages, and formulas calculating values from other properties. An integration authenticates using an internal integration token, generated from Notion's own integration settings, and that specific integration then needs to be explicitly added as a connection on whichever specific page or database it should actually have access to; simply having a valid token does not automatically grant access to your entire workspace.
02Notion API Rate Limits

Notion's public API enforces an average limit of three requests per second per integration, with a secondary limit of 1,000 requests per five minutes per workspace layered on top of that. It is worth understanding directly what actually counts as a request: reading a database, updating a single page property, appending a block, and running a filtered query each count as one separate request. A simple weekly automation that reads twenty rows from a content calendar, checks each one against an external analytics tool, and writes a status update back to Notion can easily generate forty or more requests to Notion alone within a matter of seconds, which is enough to exceed the burst limit even though the total daily volume is genuinely modest. When the limit is exceeded, Notion returns an HTTP 429 status code, but this is exactly where things get quietly dangerous for anyone building on a no-code platform: Zapier can mark the overall task as successful even when the underlying Notion write actually failed, and Make frequently surfaces this as a generic timeout rather than a clear rate-limit error. The practical result is an automation that appears to be running correctly while data simply stops updating, with no obvious error message pointing anyone toward the actual cause. The correct handling for a 429 response is exponential backoff, waiting progressively longer between retries rather than immediately resending the same request, but this has to be built deliberately into a custom integration; it is not something a standard no-code Zap or Make scenario handles for you automatically.
03Notion API Payload And Content Limits
Every rich text object is capped at 2,000 characters, meaning any longer text has to be deliberately split into multiple chunks before being sent. A children array is limited to a maximum of 100 blocks, with an overall maximum of 1,000 blocks per request. Nesting is limited to two levels of nested children per request. Total payload size is capped at 500 kilobytes per request. And relation values are capped at 100 related pages per single request. These limits apply uniformly across every Notion pricing tier, with no option to pay for a higher limit, which means large-scale data operations genuinely need to be deliberately batched and chunked in code, rather than assumed to simply work if you are patient enough to wait for them to finish.
04Notion's Native Automations
Notion itself has expanded its own built-in automation capabilities considerably. Database automations can fire when a page is added, edited, or a specific property changes, which covers the large majority of common triggering needs directly inside Notion. Button blocks support manually triggered actions, useful for something like a one-click weekly review or duplicating a template on demand. Scheduled automations fire on a defined, cron-like schedule, whether daily, weekly, or monthly. And AI-powered automations, a more recent addition, can trigger a Notion AI action directly, such as summarizing content, translating it, extracting entities, or classifying it. On the action side, native automations can add a page to a database, edit any writable property, send a native Slack message without needing Zapier at all, send an email to workspace members specifically, run a Notion AI prompt against a page, and update related pages through relation rollups. It is genuinely important to know the actual boundary here directly: native Notion automations cannot make arbitrary outbound HTTP requests. There is no native outbound webhook. This means that the moment a workflow genuinely needs to reach an external system, whether a CRM, an email platform, or literally any application outside Notion itself, native automations alone are not sufficient, and an external tool such as Zapier, Make, or a custom integration using Notion's API directly becomes necessary.
05Notion And Zapier: What Actually Works
Zapier's native Notion integration supports creating and updating database pages, triggering on new or updated database items, and working with standard property types like text, numbers, dates, and select fields reasonably well. It is worth knowing directly, and this is a persistent, long-documented limitation rather than a recent or temporary bug, that Zapier's native Notion actions cannot update Relation properties at all. Rollup properties are similarly not usable through the standard integration. Status-type properties can behave inconsistently depending on how they were configured inside Notion. And directly accessing a Notion object's own unique ID, which is often genuinely useful for reliable record matching, is not straightforward through Zapier's standard actions either. The practical workaround the Notion community has settled on is using the Code by Zapier action to call the Notion API directly within a Zap, bypassing Zapier's own native action entirely for the specific operations it does not support, most commonly updating a Relation property after a standard Zapier action has already created or updated the base page itself.
06Notion And Make: What Actually Works
Make generally offers somewhat more detailed control over Notion's API than Zapier's simpler native actions, including finer-grained module configuration and more explicit control over exactly what a given request sends. Complex relation and rollup handling can still require a direct HTTP module calling Notion's API explicitly, rather than relying entirely on Make's own pre-built Notion modules, particularly for the same category of relation-property limitations that affect Zapier. Make's more visual, multi-step scenario structure does make it somewhat easier to build the kind of chunking and rate-limit-aware pacing that large Notion operations genuinely require, compared to a simpler, more linear Zapier workflow.
07Working With Notion Relations Programmatically
Since relation properties are the single most consistently unsupported field type across common no-code Notion integrations, any workflow that genuinely needs to set or update a relation reliably should plan from the start to use a direct API call, whether through Code by Zapier, a Make HTTP module, a custom script, or a fully custom integration, rather than assuming a native, no-code action will eventually support it. This means every relation-dependent Notion automation carries a genuine technical requirement, not simply a nice-to-have: someone building it needs to be comfortable working with Notion's raw API request structure for at least that specific step, even if every other part of the workflow is built entirely with simple, native no-code actions.
08Importing Data Into Notion
Notion natively supports importing CSV, Markdown, HTML, DOCX, XLSX and XLS, TSV and other delimiter-separated formats, ODS, EPUB, OPML, PDF in beta, and ZIP bundles, along with direct connectors for Confluence, Evernote, Trello, Asana, and Google Docs. It is genuinely important to understand what survives that import process and what does not. Relations, rollups, and formulas are always stripped out during import, regardless of which specific format is used; none of them survive the transition into a fresh Notion database automatically. Notion's Merge with CSV option only appends new rows; it does not update or deduplicate against existing ones, meaning re-importing the same source file will create duplicate rows rather than refreshing the existing ones. And a ZIP import containing more than roughly 10,000 files can fail silently, without producing an obvious error explaining why the import did not fully complete. Planning any large migration into Notion around these specific constraints, rather than discovering them mid-import, avoids a considerable amount of wasted effort and confusing partial results.
09Common Notion Integration Problems
Automations Appear To Succeed But Data Doesn't Update
This is most commonly a rate-limit issue specifically, since a 429 response is not always clearly surfaced by the no-code platform running the automation. Reviewing the actual request volume a given workflow generates against Notion's three-requests-per-second and 1,000-requests-per-five-minutes limits is the correct diagnostic step, rather than assuming the automation platform or Notion itself is simply unreliable.
Relations Won't Update Through Zapier Or Make
This is expected, documented behavior rather than a bug specific to your setup. Both platforms' native Notion integrations lack support for updating Relation properties directly, and the standard workaround is calling Notion's API directly through a code step within the automation, specifically for that one operation, while continuing to use the native actions for everything else the integration handles correctly.
Long Text Gets Cut Off Or Rejected
This points directly to the 2,000-character limit per rich text object. Any content longer than that needs to be deliberately split into multiple rich text objects before being sent, rather than assumed to fit as a single block regardless of length.
Bulk Imports Or Syncs Suddenly Stop Working
This is the classic symptom of hitting the secondary 1,000-requests-per-five-minutes limit specifically, which is the limit most likely to be triggered by exactly this kind of operation: a bulk import or a sync process looping through more than a few dozen records in quick succession.
Relations, Rollups, Or Formulas Disappear After Import
This is expected behavior for every supported Notion import format, not a configuration mistake. These three property types are always stripped during import regardless of the source format, and any relational structure needs to be deliberately rebuilt inside Notion after the import completes, rather than assumed to transfer automatically.
Duplicate Rows After Re-Importing A CSV
This traces directly back to Notion's Merge with CSV behavior only appending rows rather than updating or deduplicating existing ones. Any workflow that expects re-importing the same source file to refresh existing records needs its own separate deduplication logic, since Notion's own import behavior will not provide it.
10Best Practices For Reliable Notion Integrations
Design around the three-requests-per-second limit deliberately from the start, rather than discovering it once an automation is already in production. Use Notion's own native automations for anything that genuinely stays entirely within Notion, since they avoid external API calls, rate limits, and platform fees entirely for that specific portion of the workflow. Reach for Zapier, Make, or a custom integration only for the parts of a workflow that genuinely need to reach outside Notion. Plan for relation and rollup properties requiring a direct API call from the very start of the design, rather than discovering the limitation partway through a build. Chunk large text content deliberately to respect the 2,000-character rich text limit. Batch bulk operations deliberately with built-in delays to stay under both rate limits. Build genuine retry logic with exponential backoff for anything calling Notion's API directly. And test any large-scale import or sync against a small, representative sample first, specifically checking whether relations, rollups, and formulas survived, rather than assuming a small successful test guarantees the same result at full volume.
11When Notion Isn't The Right Tool
Notion is genuinely excellent for documentation, lightweight project tracking, internal wikis, and flexible team workspaces. It becomes a meaningfully more fragile foundation once a business depends on it for a genuine CRM at real volume, complex relational data requiring frequent programmatic updates to relations specifically, high-frequency automated writes that repeatedly bump against its rate limits, or business-critical workflows where a silent, unsurfaced API failure would have real consequences. Recognizing when a process has genuinely outgrown what Notion's API can comfortably support, rather than continuing to work around its limits indefinitely, is part of choosing the right tool for the actual job.
12The Bigger Problem: Notion Integrations Need To Respect Real Constraints
Businesses often ask us to simply connect Notion to another application. After reviewing the actual requirements, we frequently find workflows built without any awareness of the three-requests-per-second limit, automations that silently fail during bulk operations because Zapier or Make never surfaced the underlying rate-limit error clearly, relation properties nobody realized could not be updated through standard no-code actions, and imports that quietly lost every relation, rollup, and formula without anyone noticing until much later. The problem is very rarely Notion itself, or the automation platform connecting it to something else. It is a workflow designed without genuine awareness of the real, specific constraints both systems operate under.
13Why Businesses Reach Out To Us About This
Our team helps businesses design Notion integrations that genuinely respect Notion's API limits from the start, build custom API solutions specifically for relation and rollup properties that standard no-code actions cannot handle, implement proper rate-limit handling and retry logic, plan large-scale imports and migrations around Notion's actual, documented constraints, connect Notion reliably to CRMs, communication tools, and other business systems, and design the right split between Notion's own native automations and external tools like Zapier, Make, or a custom integration. Rather than simply connecting Notion to another app and hoping it holds up at real volume, we build integrations engineered around the platform's actual technical boundaries.
14If You're Building A Notion Integration
If you are building a Notion integration, start by understanding the three-requests-per-second and 1,000-requests-per-five-minutes limits directly, and design your automation's actual request volume around them rather than discovering the ceiling in production. Plan from the outset for relation and rollup properties to require a direct API call rather than a standard no-code action. And if you are importing or migrating data into Notion, confirm ahead of time that you are prepared to manually rebuild any relations, rollups, or formulas the import process will strip out. If you need help designing, building, or troubleshooting a Notion integration, our team can help.
15Build Around The Limits, Not Around The Symptoms
A reliable Notion integration depends on genuinely understanding the platform's real API limits, correctly distinguishing which workflows Notion's own native automations can handle directly versus which genuinely need an external tool, planning around the specific field types that standard no-code integrations do not fully support, and testing thoroughly at realistic volume rather than only against a small, clean sample.
The best Notion integration is not the one that happens to work during a quick initial test. It is the one built with a genuine understanding of Notion's actual rate limits, payload constraints, and field-type limitations from the very beginning, so it continues working reliably once real data and real volume are actually running through it.
Sources
Frequently Asked Questions
Why does my Notion automation silently stop working?+
What is Notion's API rate limit?+
Can Zapier update Notion relation properties?+
Can Make update Notion relation properties?+
What happens to relations and formulas when I import data into Notion?+
Why did my Notion CSV import create duplicates?+
Can Notion automations send data to external apps?+
What is the character limit for Notion rich text?+
Why did my bulk Notion import fail?+
Should I use Notion's native automations or Zapier?+
Stop Guessing Why Notion Data Isn't Updating. Design Around The Real Limits.
Book a free strategy call and we will help you build a Notion integration that handles rate limits, relations, and real volume reliably.
