Description
n8n-nodes-notion-set-icon
This is an n8n community node that allows you to set custom icons for Notion pages.
n8n is a fair-code licensed workflow automation platform.
Table of Contents
- Key Features
- Quick Start
- Installation
- Operations
- Credentials
- Compatibility
- Usage
- Troubleshooting
- Documentation
- Development
- Testing
- Changelog
- Security
- Contributing
- License
- Built With
- Support
Key Features
- ๐จ Custom Page Icons – Set icons via external URL or file upload
- ๐ Filesystem Binary Mode Support (v1.2.0+) – Compatible with
N8N_DEFAULT_BINARY_DATA_MODE=filesystem - ๐ฆ Large File Handling – Works seamlessly with S3 and filesystem-based binary storage
- ๐ Flexible Page ID Format – Accepts Notion URLs, UUIDs with/without hyphens, or raw hex
- ๐งช Production Tested – Comprehensive Playwright test suite with Docker e2e integration tests
- โก Automated Releases – Built-in release automation with bumpr
Quick Start
After installation, create a simple workflow:
- Add Notion Set Icon node to your workflow
- Configure credentials (token_v2, space_id, user_id) – see how
- Enter Page ID:
214c413b-2a68-800f-9f9a-d234e37d1380(or paste full Notion URL) - Choose Icon Source: URL or Upload File
- Execute โ
๐ก Tip: Extract Page ID from any Notion URL – the node handles formatting automatically
Installation
Follow the installation guide in the n8n community nodes documentation.
- Go to Settings > Community Nodes.
- Select Install.
- Enter
n8n-nodes-notion-set-iconin Enter npm package name. - Agree to the risks of using community nodes: select I understand the risks of installing unverified code from a public source.
- Select Install.
After installing the node, you can use it like any other node. n8n displays the node in search results in the Nodes panel.
Operations
This node supports the following operations:
Page
- Set Icon: Set a custom icon for a Notion page using either:
- External image URL
- Upload a local image file (supports memory, filesystem, and S3 binary storage modes)
Credentials
This node requires Notion Set Icon API credentials. You need to provide:
- Token V2: Your Notion
token_v2cookie value - Space ID: Your Notion workspace space ID
- User ID: Your Notion user ID
How to get credentials
-
Token V2:
- Open your browser's developer tools while logged into Notion
- Go to Application/Storage > Cookies > https://www.notion.so
- Find and copy the
token_v2value
-
Space ID & User ID:
- In the same cookies section, look for
notion-space-idandnotion-user-id - Or inspect network requests to find these values in API calls
- In the same cookies section, look for
Compatibility
Requirements
| Component | Version | Notes |
|---|---|---|
| n8n | โฅ1.56.0 | Tested up to latest |
| Node.js | โฅ18.10 | Required for dependencies |
| Binary Mode | All modes | โ Memory, Filesystem, S3 (v1.2.0+) |
Performance
- ๐ฆ Small files (<1MB): Any version works
- ๐ฆ Large files (>1MB): Requires v1.2.0+ for filesystem mode compatibility
- ๐ Bulk operations: Rate limited by Notion API (~3 req/sec)
This node was developed and tested with n8n version 1.56.0+ and supports Node.js 18, 20, and 22.
Usage
Setting an icon from URL
- Add the Notion Set Icon node to your workflow
- Configure your credentials
- Set Icon Source to "URL"
- Enter the Page ID (can be extracted from Notion page URL)
- Enter the Icon URL pointing to your image
Uploading and setting an icon from file
- Add the Notion Set Icon node to your workflow
- Configure your credentials
- Set Icon Source to "Upload File"
- Enter the Page ID
- Specify the Input Binary Field containing your image data
Page ID formats supported
The node accepts page IDs in multiple formats:
- Full UUID:
214c413b-2a68-800f-9f9a-d234e37d1380 - Notion URL:
https://www.notion.so/workspace/page-title-214c413b2a68800f9f9ad234e37d1380 - Raw hex:
214c413b2a68800f9f9ad234e37d1380
Troubleshooting
Common Issues
| Problem | Solution |
|---|---|
| โ "Not authenticated" | Refresh your token_v2 – it expires after ~90 days of inactivity |
| โ "Block not found" | Verify page ID format and ensure you have access to the workspace |
| โ "No permission" | Ensure the user has edit rights to the target page |
| โ Large file upload fails | โ v1.2.0+ fixed this! Update to latest version for filesystem binary mode support |
| โ Invalid page ID error | Check page ID format – node accepts URLs, UUIDs, or 32-char hex strings |
Still stuck? Check our Technical Specification or open an issue.
Documentation
Comprehensive documentation is available in the docs/ directory:
- ๐ Technical Specification – Deep dive into Notion API internals (460+ lines)
- ๐ Security Policy – Credential management and security best practices
- ๐ค Contributing Guide – Development workflow and contribution guidelines
- ๐งฌ Binary Mode Compatibility – Filesystem storage mode explained
- ๐งช Test Suite Documentation – E2E and integration test documentation
Development
Local Testing Environment
This project includes a local n8n test environment for development and testing:
-
Setup Environment Variables:
cp .env.example .env # Fill in your actual Notion credentials in the .env file -
Start Test Environment:
pnpm start # or ./start-n8n.sh -
Development Workflow:
# Make changes to the node code pnpm build # Rebuild the node pnpm start # Restart n8n (changes auto-available) -
Access n8n: Open
http://localhost:5678in your browser
Code Quality
pnpm lint # Check for linting errors
pnpm lintfix # Auto-fix linting errors
pnpm format # Format code with Prettier
Release Process
This project uses a custom bumpr tool for automated releases:
pnpm release # Patch: 1.3.0 โ 1.3.1
pnpm release:minor # Minor: 1.3.0 โ 1.4.0
pnpm release:major # Major: 1.3.0 โ 2.0.0
The bumpr tool automatically handles:
- Version bumping in package.json
- Git commit and tagging
- Pushing to remote repository
- Creating GitHub releases
- Triggering npm publication via CI/CD
Testing
Running Tests
pnpm test # Run all Playwright tests
pnpm test:docker # Docker e2e tests
pnpm test:headed # UI mode for debugging
pnpm test:debug # Debug mode
pnpm test:ui # Interactive UI mode
Test Coverage
This project includes comprehensive test coverage:
- โ E2E Workflow Tests – Complete workflow execution validation
- โ Docker Integration Tests – Full n8n environment tests
- โ Direct Notion API Tests – Raw API interaction tests
- โ Production NPM Package Tests – Real-world installation validation
Test Suite Highlights:
- Playwright-based browser automation
- Docker containerized n8n environment
- Fixture-based test data management
- Cookie and credential handling tests
- Network packet capture for debugging
See Test Documentation for detailed information.
Prerequisites for Testing
- Docker and Docker Compose
- Node.js 18+ and pnpm
.envfile with Notion credentials:NOTION_TOKEN_V2SPACE_IDNOTION_USER_ID
Changelog
See Releases for detailed version history.
Recent Updates
- v1.3.0 (Sep 2025) – Integrated
bumprfor automated release management - v1.2.0 (Sep 2025) – ๐ฏ Critical: Filesystem binary mode compatibility for large files and S3 storage
- v1.1.2 (Jun 2025) – Production test improvements and npm installation fixes
- v1.1.1 (Jun 2025) – Icon path fixes for production builds
- v1.1.0 (Jun 2025) – Docker setup enhancements and type improvements
Security
Security Notice
โ ๏ธ Important: The token_v2 credential provides full access to your Notion workspace.
Best Practices:
- ๐ Store credentials in n8n's encrypted credential system
- ๐ Rotate tokens every 90 days
- ๐ซ Never commit credentials to git or version control
- ๐ Monitor API usage for anomalies
- ๐ Use environment variables for local development
See Security Policy for detailed security guidelines.
Reporting Vulnerabilities
If you discover a security vulnerability, please report it responsibly:
- Do not open a public GitHub issue
- Contact the maintainer directly (see Support section)
- Include description, reproduction steps, and potential impact
Contributing
Contributions are welcome! Please see our Contributing Guide for:
- Development setup instructions
- Code style guidelines
- Pull request process
- Testing requirements
Quick contribution workflow:
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Run
pnpm lint && pnpm build - Submit a pull request
License
Copyright (c) 2025 Oriol Rius
Built With
- TypeScript – Type-safe node development
- n8n-workflow – n8n node framework
- Playwright – E2E testing framework
- GitHub Actions – CI/CD automation
- bumpr – Custom release automation tool
- Docker – Integration test environment
- pnpm – Fast, disk space efficient package manager
Special Thanks:
- n8n community for the workflow automation platform
- Notion for the (unofficial) internal API
Support
If you encounter any issues or have questions:
- ๐ Check the Documentation section
- ๐ Open an issue on GitHub
- ๐ฌ Review existing issues
Useful Resources:
Note: This is a community implementation using reverse-engineered Notion internal APIs. Notion may change these endpoints at any time without notice. The node is provided as-is under the MIT license.