Portal Community

Example 1: Create a Task Page in a Notion Database

Scenario: A customer support form submission triggers a workflow. Create a new task row in the team's Notion project database with all relevant details pre-populated.

{
  "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

Scenario: A daily scheduled workflow at 8 AM queries the project database for all tasks that are overdue and not yet completed, then sends a reminder email to each assignee.

{
  "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

Scenario: After an AI-assisted meeting summary workflow completes, append the structured meeting notes to the relevant project page in Notion.

{
  "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

Scenario: A Monday morning scheduled workflow retrieves all workspace users, then for each user queries their assigned open tasks and sends a personalised weekly digest email.

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

Scenario: The product team uses a Notion database as an intake form. Whenever a new feature request is added, automatically create a corresponding Jira epic and post a Slack notification.

{
  "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.