Skip to main content

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


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.

MethodEndpointDescription
GET/api/workspaces.list?workspace_id={id}List all workspaces
GET/api/workspaces/{id}Get workspace details

Current Workspace ID: pacingagency

Lists

MethodEndpointDescription
GET/api/lists.list?workspace_id={id}List all lists
GET/api/lists/{id}?workspace_id={id}Get list details
POST/api/listsCreate 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

MethodEndpointDescription
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.upsertCreate 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)

MethodEndpointDescription
GET/api/broadcasts.list?workspace_id={id}List all broadcast campaigns
GET/api/broadcasts/{id}?workspace_id={id}Get campaign details
POST/api/broadcastsCreate a new campaign
PUT/api/broadcasts/{id}Update campaign
DELETE/api/broadcasts/{id}Delete campaign
POST/api/broadcasts/{id}/sendSend campaign

Response Format: {"broadcasts": [...]}

Email Templates

MethodEndpointDescription
GET/api/templates.list?workspace_id={id}List all templates
GET/api/templates/{id}?workspace_id={id}Get template details
POST/api/templatesCreate a new template
PUT/api/templates/{id}Update template
DELETE/api/templates/{id}Delete template

Response Format: {"templates": [...]}

Transactional API

MethodEndpointDescription
POST/api/transactional/sendSend 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 configuration
  • scripts/resources/notifuse/fetch-lists.sh - Export all lists with contact counts
  • scripts/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 summary
  • exports/contacts-summary-{timestamp}.json - Contacts summary
  • exports/contacts/all-contacts-{timestamp}.json - All contacts export
  • exports/contacts/list-{id}-{name}-{timestamp}.json - Contacts per list
  • exports/lists-{timestamp}.json - Lists export
  • exports/templates-{timestamp}.json - Templates export
  • exports/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

FieldTypeDisplay Name
custom_string_1Stringuser-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