Skip to content

Notion entry changed ​

Starts the workflow when an entry of a Notion database is created or changed, checking at a regular interval. The entry lands in data.notion, with no triggering email. Nothing to set up in Notion.

The Notion entry changed trigger checks a Notion database at regular intervals and starts one run for each entry created or edited since the previous check. Nothing has to be set up in Notion beyond sharing the database with the connection: no webhook subscription. The entry arrives under data.notion, in the same shape as the "Entries created or edited since…" operation of the Notion node.

Prefer Notion — event when you can create a webhook subscription in Notion: it reacts within seconds instead of at the next check.

The run has no triggering email: nodes that act on the triggering email (reply in the thread, Move, Flag) cannot be used after this trigger, and the editor reports them as a blocking error. Send still works when you choose the sending mailbox on the node.

At a glance ​

  • Type: trigger.notion_changes · version 1
  • Category: Triggers
  • Kind: Trigger — starts a run
  • Effect: No external effect (none) — nothing is written outside Mankomail; safe to replay
  • Needs a carrier email: No
  • Connection: Notion
  • Outputs: main

Connection ​

This node needs a Notion connection.

Parameters ​

connection ​

Notion connection — The Notion connection to use. Create it once in Connections; its key never appears in the workflow.

  • Type: Connection (credential)
  • Required: Yes
  • Default: "" (empty)

database ​

Database — The one you see in Notion. You can also paste its URL.

  • Type: Remote resource (resourceLocator)
  • Required: Yes
  • Ways to choose: pick from a list, type an ID, paste a URL (notion.database)
  • Listed with the connection in: connection

dataSource ​

Data source — The schema belongs to the source, not to the database. Most databases only have one.

  • Type: Remote resource (resourceLocator)
  • Required: Yes
  • Ways to choose: pick from a list, type an ID (notion.dataSource)
  • Listed inside: database
  • Listed with the connection in: connection

changeType ​

Trigger on

  • Type: One choice (options)
  • Required: Yes
  • Default: any
  • Options:
    • any — An entry created or changed
    • created — A new entry: Creations only, by the page’s creation time.
    • edited — A changed entry only: Leaves out what was just created: a creation does not count twice.

everyMinutes ​

Check every (minutes) — Each check costs one request. Notion has no monthly quota, but the integration is shared by every workflow of the workspace.

  • Type: Number (number)
  • Required: No
  • Default: 15
  • Whole number, from 5 to 1440

Outputs ​

  • main — Taken once per new or changed entry found by a check: each entry starts its own run.

Data produced ​

What this node adds to the run data, and how to read it in an expression. <step> stands for the step key: the node name turned into an identifier (see Data and expressions).

  • {{ data.notion.pageId }} — string. Identifier of the entry (the Notion page). data.notion.id holds the same value.
  • {{ data.notion.title }} — string. The entry's title, as plain text.
  • {{ data.notion.properties }} — object. The entry's properties as simple values, keyed by property name: text, number, true/false, option name; lists become comma-separated text; a date range reads start..end. {{ data.notion.properties.Status }} reads the Status property.
  • {{ data.notion.url }} — string. Link to the entry in Notion.
  • {{ data.notion.changedAt }} — string. The time that made the entry count: its creation time when the trigger watches new entries only, its last edit time otherwise. ISO 8601.
  • {{ data.notion.createdTime }} — string. Creation time of the entry, ISO 8601. data.notion.lastEditedTime holds its last edit time.
  • {{ data.notion.inTrash }} — boolean. true when the entry is in the trash.
  • {{ data.notion.dataSourceId }} — string. Identifier of the data source checked.

Example ​

A team logs incoming requests in a Notion database with a Status property and an Email property. To send a confirmation when an entry is added, set:

database       Requests
dataSource     Requests
changeType     created
everyMinutes   15

Every 15 minutes, each new entry starts one run on the main port. A Send node writes to {{ data.notion.properties.Email }} with the subject Request received: {{ data.notion.title }} and a link to {{ data.notion.url }}.

Tips ​

  • What counts. "An entry created or changed" follows the last edit time. "A new entry" follows the creation time. "A changed entry only" leaves out entries never edited since their creation, so a creation does not count twice.
  • Start position. On publication the trigger starts "from now": existing entries are not replayed. Publishing again keeps the position already reached, and an entry edited while a check is running is not skipped.
  • Cadence. Between 5 and 1,440 minutes, 15 by default. The instance may impose a higher floor (INTEGRATION_POLL_MIN_MINUTES, see environment variables). Each check costs one request; Notion has no monthly quota, but the integration's rate limit is shared by every workflow that uses it.
  • Volume. A check returns at most 100 entries; the rest waits for the next check and is not lost.
  • No duplicates. A run is identified by the entry and the time that made it count: checking the same change twice never starts a second run. An entry edited again later starts a new one.
  • Loops. A workflow that edits the database it watches triggers itself again. Notion does not tell who edited an entry here: set a property from the workflow ("Processed on", a status) and stop the branch with a Condition when it is already set.
  • Property names. {{ }} paths only accept names made of unaccented letters, digits, _ and $, not starting with a digit. A property named Due date or Échéance cannot be read with {{ data.notion.properties.… }}; give the properties you need such names.
  • Sharing. The connection only sees databases shared with it in Notion ("···" menu, "Connections"). An unshared database cannot be checked.
  • Errors. A temporary error leaves the position unchanged and the next check retries. A permanent error (revoked connection, unshared or deleted database, missing data source) sends you a notification, once per outage.
  • Pause. A paused workflow keeps its arming but stops checking; resuming does not require publishing again.
  • Testing. Testing from this trigger in the editor really queries Notion and runs the draft, in a test run, on the most recently changed entry. The test never moves the position (see Test runs).