Integrations
Plan Notion page, database and block requests
notion-integration is a selected-action workflow adapter for Notion.
overview
What notion-integration does
Supply the selected resource, operation and page/database fields. Dry-run returns a planned API request without calling Notion. Normal execution may read, create, update or archive data depending on the operation.
Source-declared actions: databasePage.create, databasePage.get, databasePage.getAll, databasePage.update, page.create, page.archive, block.append.
A FILE of JSONL results, with an ok field per processed item. Dry-run rows include dry_run: true and planning fields, not a provider response or proof of execution. The registered contract also exposes a FOLDER output. Payload and text fields may contain supplied content; use synthetic data for shared examples.
Native executable tests cover all 7 declared actions using owned loopback HTTP fixtures, plus credential/error cases. No real provider calls were made. A private three-node platform workflow passed with downloaded dry-run plan and verifier outputs. This verifies planning and typed file flow, not provider HTTP or execution. Public image and source/notices directions are available. The original tool entry is available in the public Library. Keep private platform planning separate from provider execution.
source hub.docker.com/r/nenadzaric/skills-integrations-notion-integration
use cases
Where notion-integration fits
Preview a page payload
Inspect the parent and properties of a synthetic page.create plan without sending it.
Read configured page data
Choose databasePage.get or databasePage.getAll deliberately; native acceptance uses fixtures rather than a production workspace.
Plan a content change
Review database-page updates, page archives or block appends before normal execution with the intended workspace access.
reference
notion-integration inputs and flags
| Name | Type | Flag | Description |
|---|---|---|---|
| items | FILE | --items | Optional. One JSON object per line (JSONL); each line is one API call. If omitted, uses upstream files in /hive/in or a single call from flags. Example: {"title":"New page","database_id":"…"} |
| token | STRING | --token | Notion integration secret ; wire to ${{vars.NOTION_TOKEN}} Supply via workflow secrets; never bake credentials into images, source, or shared inputs. |
| dry-run | BOOLEAN | --dry-run | Optional: true returns a request/message plan without provider calls; omitted/false keeps normal configured execution. This is not a live provider test. |
| page-id | STRING | --page-id | Page id or URL (get / update / archive; also parent fallback) |
| resource | STRING | --resource | Notion resource: databasePage | page | block |
| operation | STRING | --operation | Operation: create | get | getAll | update | archive | append |
| database-id | STRING | --database-id | Database id or URL (databasePage.create / getAll) |
Showing key inputs. notion-integration exposes 16 inputs in total.
Full flag reference (16 inputs)
| Name | Type | Flag | Description |
|---|---|---|---|
| items | FILE | --items | Optional. One JSON object per line (JSONL); each line is one API call. If omitted, uses upstream files in /hive/in or a single call from flags. Example: {"title":"New page","database_id":"…"} |
| limit | STRING | --limit | Max results for getAll (default: 20) |
| title | STRING | --title | Convenience title text (builds title property or paragraph block) |
| token | STRING | --token | Notion integration secret ; wire to ${{vars.NOTION_TOKEN}} Supply via workflow secrets; never bake credentials into images, source, or shared inputs. |
| blocks | STRING | --blocks | Notion blocks JSON array (children on create / block.append) |
| filter | STRING | --filter | Query filter JSON (databasePage.getAll) |
| dry-run | BOOLEAN | --dry-run | Optional: true returns a request/message plan without provider calls; omitted/false keeps normal configured execution. This is not a live provider test. |
| page-id | STRING | --page-id | Page id or URL (get / update / archive; also parent fallback) |
| block-id | STRING | --block-id | Block or page id to append children to (block.append) |
| resource | STRING | --resource | Notion resource: databasePage | page | block |
| operation | STRING | --operation | Operation: create | get | getAll | update | archive | append |
| properties | STRING | --properties | Notion properties JSON object (typed props for create/update) |
| database-id | STRING | --database-id | Database id or URL (databasePage.create / getAll) |
| parent-page-id | STRING | --parent-page-id | Parent page id (page.create) |
| title-property | STRING | --title-property | Database title property name (default: Name) |
| continue-on-error | BOOLEAN | --continue-on-error | Keep going (and exit 0) when an individual call fails |
example
Run notion-integration
notion-integration --dry-run --resource page --operation create --parent-page-id aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --title "D074 owned plan fixture" --output ./plan.jsonl{"resource": "page", "operation": "create", "ok": true, "dry_run": true, "method": "POST", "url": "https://api.notion.com/v1/pages", "payload": {"parent": {"page_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"}, "properties": {"Name": {"title": [{"type": "text", "text": {"content": "D074 owned plan fixture"}}]}, "title": {"title": [{"type": "text", "text": {"content": "D074 owned plan fixture"}}]}}}}guidance
Choosing notion-integration
Use this service-specific adapter when the selected provider action and typed fields match the workflow. Dry-run planning, native HTTP-mock acceptance and actual provider execution are separate capabilities. A generic HTTP client may suit API routes this adapter does not expose.
faq
notion-integration questions
related
More Integrations tools
github-integration
Select a GitHub resource and operation, supply its repository fields, and retain a JSONL result. The explicit dry-run input generates a request plan without calling GitHub. Normal execution uses a token and can create or change repository data.
jira-integration
Select an issue operation and supply its site and issue fields. Dry-run generates a method, URL and payload plan; it does not create a Jira issue or establish that an account has the required access.
slack-integration
Choose the Slack resource and operation, then supply message or lookup fields. Dry-run reports a message plan without contacting Slack. It does not verify a webhook, workspace membership, delivery or media content.
telegram-integration
Select message.sendMessage, message.sendPhoto or message.sendDocument and provide the intended chat and input fields. Explicit dry-run emits a plan without calling Telegram. Normal-mode media operations upload the supplied FILE using multipart requests.
Run notion-integration yourself
Complete retained JSONL plan from the current notices1 image using synthetic owned fixture data. This was dry-run planning, not a provider request or delivered message. Native HTTP-mock action coverage is recorded separately.
Facts on this page come from the live Trickest tool library.