Notifuse
id: tool-notifuse title: notifuse
id: tool-notifuse title: Notifuse
Purpose: Open source email sending platform for transactional and marketing emails.
Last verified: December 2025
Account Details
- Notes: Open source email sending platform for transactional and marketing emails. Self-hosted on Hetzner Cloud.
- Category: SELF_HOSTING
- Account type: INTERNAL, CLIENT_ACCESS
- Created: December 2025
- Access URL: https://email.pacing.agency/console/workspace/pacingagency
- Account owner: Ben Power
- Documentation Email: documentation@email.pacing.agency
Hosting
Provider: Hetzner Cloud
Project: notifuse-pacing1 (Project ID: 12336267)
Server: notifuse-email (Server ID: 112183676)
Public IP: 91.99.193.35
Location: Nuremberg, Germany (nbg1-dc3)
Server Specifications:
- Type: CPX21
- vCPUs: 3 cores (shared)
- RAM: 4 GB
- Disk: 80 GB (local storage)
- Monthly Cost: €7.05
- OS: Ubuntu 22.04
Infrastructure Details: See tools/hetzner.md for complete server configuration and management commands.
Project Repository: /Users/benpower/VSC/notifuse-pacing1/ (ops workspace)
API Access
Base URL: https://email.pacing.agency/api
API Key: Stored in project .env file as NOTIFUSE_API_KEY
API Key Token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiYTVhM2IxOTYtOTlhYS00ZDkyLTg3ZGEtMTI5YWE3MTNkODdmIiwidHlwZSI6ImFwaV9rZXkiLCJlbWFpbCI6ImRvY3VtZW50YXRpb25AZW1haWwucGFjaW5nLmFnZW5jeSIsImV4cCI6MjA4MDY3MTE4OSwibmJmIjoxNzY1MzExMTg5LCJpYXQiOjE3NjUzMTExODl9.wM8WoiRMjfe8ozrwaJpYmD_AkvciSw8rLnjmPkbFgxM
Authentication: Include API key in request headers:
Authorization: Bearer ${NOTIFUSE_API_KEY}
Security notes:
- Treat tokens as secrets; API keys are workspace-scoped
- Tokens expire in 2080 (long-lived token)
- Generate new tokens in Settings → API Keys when needed
API Endpoints
Workspaces
Note: Notifuse API uses dot notation for list endpoints and requires workspace_id as a query parameter.
| Method | Endpoint | Description |
|---|---|---|
GET | /api/workspaces.list?workspace_id={id} | List all workspaces |
GET | /api/workspaces/{id} | Get workspace details |
Current Workspace ID: pacingagency
Lists
| Method | Endpoint | Description |
|---|---|---|
GET | /api/lists.list?workspace_id={id} | List all lists |
GET | /api/lists/{id}?workspace_id={id} | Get list details |
POST | /api/lists | Create a new list |
PUT | /api/lists/{id} | Update list |
DELETE | /api/lists/{id} | Delete list |
List Statuses: Active, Pending, Unsubscribed, Bounced, Complained
Response Format: {"lists": [...]}
Contacts
| Method | Endpoint | Description |
|---|---|---|
GET | /api/contacts.list?workspace_id={id}&limit={1-100} | List all contacts (limit required, max 100) |
GET | /api/contacts.list?workspace_id={id}&list_id={id}&limit={1-100} | List contacts in a specific list |
GET | /api/contacts.getByEmail?workspace_id={id}&email={email} | Get contact by email |
POST | /api/contacts.upsert | Create or update contact |
PUT | /api/contacts/{id} | Update contact |
DELETE | /api/contacts/{id} | Delete contact |
Custom Fields:
custom_string_1(String) - user-id
Response Format: {"contacts": [...]}
Campaigns (Broadcasts)
| Method | Endpoint | Description |
|---|---|---|
GET | /api/broadcasts.list?workspace_id={id} | List all broadcast campaigns |
GET | /api/broadcasts/{id}?workspace_id={id} | Get campaign details |
POST | /api/broadcasts | Create a new campaign |
PUT | /api/broadcasts/{id} | Update campaign |
DELETE | /api/broadcasts/{id} | Delete campaign |
POST | /api/broadcasts/{id}/send | Send campaign |
Response Format: {"broadcasts": [...]}
Email Templates
| Method | Endpoint | Description |
|---|---|---|
GET | /api/templates.list?workspace_id={id} | List all templates |
GET | /api/templates/{id}?workspace_id={id} | Get template details |
POST | /api/templates | Create a new template |
PUT | /api/templates/{id} | Update template |
DELETE | /api/templates/{id} | Delete template |
Response Format: {"templates": [...]}
Transactional API
| Method | Endpoint | Description |
|---|---|---|
POST | /api/transactional/send | Send transactional email |
Example API Usage
List all lists:
curl -X GET "https://email.pacing.agency/api/lists.list?workspace_id=pacingagency" \
-H "Authorization: Bearer ${NOTIFUSE_API_KEY}" \
-H "Content-Type: application/json"
List all contacts (limit required, max 100):
curl -X GET "https://email.pacing.agency/api/contacts.list?workspace_id=pacingagency&limit=100" \
-H "Authorization: Bearer ${NOTIFUSE_API_KEY}" \
-H "Content-Type: application/json"
Get contact by email:
curl -X GET "https://email.pacing.agency/api/contacts.getByEmail?workspace_id=pacingagency&email=user@example.com" \
-H "Authorization: Bearer ${NOTIFUSE_API_KEY}" \
-H "Content-Type: application/json"
Upsert contact:
curl -X POST "https://email.pacing.agency/api/contacts.upsert" \
-H "Authorization: Bearer ${NOTIFUSE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"workspace_id": "pacingagency",
"email": "user@example.com",
"first_name": "John",
"last_name": "Doe",
"custom_string_1": "user-123"
}'
List broadcast campaigns:
curl -X GET "https://email.pacing.agency/api/broadcasts.list?workspace_id=pacingagency" \
-H "Authorization: Bearer ${NOTIFUSE_API_KEY}" \
-H "Content-Type: application/json"
Automation Scripts
See scripts/resources/notifuse/ for scripts to:
- Fetch workspace configuration and settings
- Export lists and contacts
- Backup campaign data
- Monitor email provider status
Main scripts:
scripts/resources/notifuse/fetch-account-info.sh- Fetch workspace, lists, contacts, and email provider configurationscripts/resources/notifuse/fetch-lists.sh- Export all lists with contact countsscripts/resources/notifuse/fetch-contacts.sh- Export contacts from lists (or all contacts)scripts/resources/notifuse/fetch-campaigns.sh- Export broadcast campaigns
Output Location: All JSON export files are saved to scripts/resources/notifuse/exports/ directory:
exports/account-summary-{timestamp}.json- Complete account summaryexports/contacts-summary-{timestamp}.json- Contacts summaryexports/contacts/all-contacts-{timestamp}.json- All contacts exportexports/contacts/list-{id}-{name}-{timestamp}.json- Contacts per listexports/lists-{timestamp}.json- Lists exportexports/templates-{timestamp}.json- Templates exportexports/workspace-info-{timestamp}.json- Workspace information
See scripts/resources/notifuse/README.md for detailed usage instructions.
Email Provider Configuration
Current Provider: Resend - SMTP - Transactional
Configuration:
- Name: Resend - SMTP - Transactional
- Senders: Pacing Agency <info@updates.pacing.agency> (Default)
- Used for: Transactional Emails
- SMTP Host: smtp.resend.com:587
- SMTP User: resend
- TLS Enabled: Yes
- Rate Limit for Marketing: 25 emails/min (≈ 1,500 emails per hour, ≈ 36,000 emails per day)
Supported Providers: Amazon SES, Mailgun, Postmark, SparkPost, Mailjet, SMTP
Features
Email Marketing
- Visual email builder with drag-and-drop editor (MJML components)
- Campaign management with scheduling and targeting
- A/B testing for subject lines, content, and send times
- List management with advanced segmentation
- Contact profiles with custom fields
Transactional API
- REST API for automated email delivery
- Webhook integration for real-time event notifications
- Liquid templating with variables (e.g.,
{{ contact.first_name }})
Analytics & Insights
- Open and click tracking
- Real-time analytics dashboard
- Campaign performance reports
- Delivery rate monitoring
Advanced Features
- S3 file manager with CDN delivery
- Notification Center (embedded subscription management)
- Responsive email templates
- Multi-tenant workspace support
- Blog feature with custom themes
Workspace Configuration
Workspace Name: pacingagency
Custom Endpoint URL: https://email.pacing.agency
Blog Feature: Available (can be enabled in Settings → Blog)
Notification Center:
- Automatically renders when users click unsubscribe links
- Multi-language support (English, French, Spanish, German, Chinese, Hindi, Arabic, Portuguese, Russian, Japanese)
- Uses workspace logo and website URL from settings
Custom Fields
| Field | Type | Display Name |
|---|---|---|
custom_string_1 | String | user-id |
Integration Notes
- n8n: Can be integrated via HTTP Request nodes using the API
- Webflow: Forms can submit to Notifuse API to add contacts
- TwentyCRM: Can sync contacts via API webhooks
- GTM: Can track email opens/clicks via webhook events
References
- Official Documentation: https://docs.notifuse.com
- API Documentation: https://docs.notifuse.com (API Reference section)
- Project Repository:
/Users/benpower/VSC/notifuse-pacing1/ - Infrastructure: See
tools/hetzner.mdfor server management