Examples
Five Notion node configurations: create a task page, query incomplete tasks, append meeting notes, team digest email, and page-added trigger.
Example 1: Create a Task Page in a Notion Database
{
"Resource": "database",
"Operation": "createPage",
"DatabaseId": "{{ env.NOTION_TASKS_DATABASE_ID }}",
"Properties": {
"Name": {
"title": [{ "text": { "content": "{{ vars.issue_summary }}" } }]
},
"Status": {
"select": { "name": "To Do" }
},
"Priority": {
"select": { "name": "{{ vars.priority_level }}" }
},
"Due Date": {
"date": { "start": "{{ vars.target_resolution_date }}" }
},
"Assignee": {
"people": [{ "id": "{{ vars.assignee_notion_user_id }}" }]
},
"Tags": {
"multi_select": [
{ "name": "{{ vars.issue_category }}" },
{ "name": "customer-reported" }
]
},
"Source URL": {
"url": "{{ vars.form_submission_url }}"
}
},
"Blocks": [
{
"object": "block", "type": "heading_2",
"heading_2": { "rich_text": [{ "text": { "content": "Issue Description" } }] }
},
{
"object": "block", "type": "paragraph",
"paragraph": { "rich_text": [{ "text": { "content": "{{ vars.issue_description }}" } }] }
},
{
"object": "block", "type": "heading_2",
"heading_2": { "rich_text": [{ "text": { "content": "Customer Details" } }] }
},
{
"object": "block", "type": "bulleted_list_item",
"bulleted_list_item": { "rich_text": [{ "text": { "content": "Customer: {{ vars.customer_name }}" } }] }
},
{
"object": "block", "type": "bulleted_list_item",
"bulleted_list_item": { "rich_text": [{ "text": { "content": "Email: {{ vars.customer_email }}" } }] }
}
],
"Icon": "📋"
}
Expected outcome: A new row is created in the Notion database with all properties set and a structured page body containing the issue description and customer details. The output
url field is passed to a Slack node to notify the team of the new task.Example 2: Query Database for Incomplete Tasks and Process Them
{
"Resource": "database",
"Operation": "query",
"DatabaseId": "{{ env.NOTION_TASKS_DATABASE_ID }}",
"Filter": {
"and": [
{
"property": "Done",
"checkbox": { "equals": false }
},
{
"property": "Due Date",
"date": { "on_or_before": "{{ formatDate(now(), 'YYYY-MM-DD') }}" }
},
{
"property": "Status",
"select": { "does_not_equal": "Cancelled" }
}
]
},
"Sorts": [
{ "property": "Due Date", "direction": "ascending" },
{ "property": "Priority", "direction": "descending" }
],
"ReturnAll": true
}
Expected outcome: Returns all overdue, incomplete, non-cancelled tasks sorted by due date and priority. The
results array is passed to a Loop node that processes each task — extracting the assignee's email from the properties.Assignee field, constructing a reminder email body, and sending via the Email SMTP node.Example 3: Append Meeting Notes to an Existing Page
{
"Resource": "block",
"Operation": "appendChildren",
"BlockId": "{{ vars.project_page_id }}",
"Blocks": [
{
"object": "block", "type": "divider",
"divider": {}
},
{
"object": "block", "type": "heading_2",
"heading_2": { "rich_text": [{ "text": { "content": "Meeting Notes — {{ formatDate(now(), 'MMMM D, YYYY') }}" } }] }
},
{
"object": "block", "type": "callout",
"callout": {
"rich_text": [{ "text": { "content": "Attendees: {{ vars.attendees_list }}" } }],
"icon": { "emoji": "👥" }
}
},
{
"object": "block", "type": "heading_3",
"heading_3": { "rich_text": [{ "text": { "content": "Key Decisions" } }] }
},
{
"object": "block", "type": "paragraph",
"paragraph": { "rich_text": [{ "text": { "content": "{{ vars.key_decisions_summary }}" } }] }
},
{
"object": "block", "type": "heading_3",
"heading_3": { "rich_text": [{ "text": { "content": "Action Items" } }] }
},
{
"object": "block", "type": "to_do",
"to_do": {
"rich_text": [{ "text": { "content": "{{ vars.action_item_1 }}" } }],
"checked": false
}
},
{
"object": "block", "type": "to_do",
"to_do": {
"rich_text": [{ "text": { "content": "{{ vars.action_item_2 }}" } }],
"checked": false
}
}
]
}
Expected outcome: A dated meeting notes section is appended to the project page, separated by a divider. The section includes a callout with attendees, key decisions in paragraph form, and unchecked action items as to-do blocks that team members can check off directly in Notion.
Example 4: Get All Workspace Users and Send Weekly Digest
Step 1 — Get all users:
{
"Resource": "user",
"Operation": "getMany",
"ReturnAll": true
}
Step 2 — For each user (in a Loop node), query their tasks:
{
"Resource": "database",
"Operation": "query",
"DatabaseId": "{{ env.NOTION_TASKS_DATABASE_ID }}",
"Filter": {
"and": [
{
"property": "Assignee",
"people": { "contains": "{{ loop.current.id }}" }
},
{
"property": "Done",
"checkbox": { "equals": false }
}
]
},
"Sorts": [
{ "property": "Due Date", "direction": "ascending" }
],
"ReturnAll": true
}
Expected outcome: Each workspace member receives a personalised email listing their open Notion tasks sorted by due date. Users with no open tasks receive a congratulatory "all clear" message. The digest includes direct Notion page URLs for each task so recipients can navigate directly to items.
Example 5: Trigger Workflow When New Page Added to Project Database
{
"Resource": "trigger",
"Operation": "pageAdded",
"DatabaseId": "{{ env.NOTION_FEATURE_REQUESTS_DATABASE_ID }}",
"PollingInterval": 60
}
The trigger output provides the full page object. Downstream nodes can reference the new page's properties:
{
"Resource": "page",
"Operation": "get",
"PageId": "{{ trigger.output.id }}",
"Simplify": true
}
Expected outcome: The workflow polls the feature requests database every 60 seconds. When a new page is detected, it retrieves the full page properties in simplified format, uses them to create a Jira epic via the Jira node, and posts a formatted Slack message to the #product channel with the Notion page URL and Jira epic link. The polling interval can be reduced to 30 seconds for higher-urgency databases.