Connect n8n to Fondoo
n8n is a workflow automation tool. This connection works the other way round from most Fondoo connections: you add Fondoo into n8n with a Fondoo API key. Your n8n workflows can then create support tickets, add subscribers, draft newsletter issues and read your sites, and a Fondoo event (a new ticket, a paid order, a form submission) can start a workflow.
The Fondoo nodes are a package called n8n-nodes-fondoo. It is not published on npm and not verified by n8n. You install it yourself as a private node on a self-hosted n8n. It has not been tested against a running n8n yet, so treat it as early software.
What Fondoo can do with it
The package adds two nodes and one credential.
Fondoo node (actions). Each choice calls one Fondoo operation:
| Resource → Operation | Fondoo operation | API key scopes it needs |
|---|---|---|
| Site → List Businesses | list_businesses | businesses:read |
| Site → Get Site | get_site | sites:read |
| Subscriber → Add | import_subscribers | email:write |
| Support Ticket → Create / Reply / Add Note | support_create_ticket / support_reply / support_add_note | support:write (Reply also needs email:write) |
| Support Ticket → Get Many / Get | support_list_tickets / support_get_ticket | support:read |
| Newsletter → Create Issue | create_newsletter_issue | email:write, pages:write, sites:write, analytics:write |
| Newsletter → Get Status | get_newsletter_status | email:read |
| Event → Get Many / List Types | list_events / list_event_types | events:read |
| Custom Operation → Call | any operation in Fondoo's automation list (create_checkout_link, create_contact, draft_newsletter, get_contact, list_pages, list_products, publish_site, schedule_social_posts, search_contacts, send_email, support_update_ticket, tag_contacts, update_contact, upsert_product and the ones above) | the scopes of that operation |
Write actions have Options → Dry Run (preview only, nothing changes) and Options → Idempotency Key (a retried run cannot repeat the action; map something unique such as the Fondoo event ID). The node is marked as usable by n8n AI agents as a tool, but this has not been tested.
Every result includes fondooStatus:
completed: Fondoo did it.dry_run: preview only. Nothing changed.pending_approval: not done yet. The owner must approve in Fondoo first.connection_required: not done. Fondoo needs another connection first (for example an email or support provider). The result includes aconnectUrl.
What needs your approval: Fondoo applies the same rules as for your agent. Money actions (such as upsert_product) and sensitive support replies return pending_approval. Complaints, refunds and legal tickets stay human-only. Adding a subscriber needs a written consent statement, and Fondoo still sends its own double opt-in email.
Fondoo Trigger node. Starts a workflow when Fondoo sends a signed event. See Webhooks.
Before you start
- A self-hosted n8n. n8n's docs say unverified community nodes "aren't available on n8n cloud and require self-hosting n8n" (n8n community nodes). n8n Cloud cannot run this package.
- For the trigger, a public HTTPS address for n8n on port 443 with a real hostname. Fondoo refuses webhook addresses that are
localhost, an IP address, another port or a private network. Behind a reverse proxy, set n8n'sWEBHOOK_URL(n8n webhook URLs). - Shell access to the n8n server, plus Node.js, pnpm and npm to build the package.
- The Fondoo source code containing
apps/n8n-node(MIT licensed). - Your Fondoo API base URL. Hosted Fondoo:
https://api.getfondoo.com(no/v1). It must be HTTPS. Plain HTTP works only forlocalhosttesting. - n8n itself is free to self-host. Check n8n's pricing for paid editions.
Step by step: get your credentials
1. Build and install the package
- In the Fondoo source folder, run
pnpm install, thenpnpm --filter n8n-nodes-fondoo build. - In
apps/n8n-node, runnpm pack. This makesn8n-nodes-fondoo-0.1.0.tgz. - On the n8n server, go to
~/.n8n/custom(create it if needed) and runnpm install /path/to/n8n-nodes-fondoo-0.1.0.tgz. For Docker, follow n8n's private node guide, which copies the built files into the container's~/.n8n/custom/. If your custom nodes live elsewhere, pointN8N_CUSTOM_EXTENSIONSat that folder (n8n node variables). - Restart n8n. Search the nodes panel for Fondoo.
2. Create a scoped Fondoo API key
Give the key only the scopes your workflows use, from the table above. Always include events:read (the credential test uses it). Add webhooks:write if you use the trigger. Keys can never get owner or admin access. Fondoo shows the key once, so copy it straight into n8n. See Connect it in Fondoo for the ways to create it.
3. Add the credential in n8n
- In n8n, create a new credential of type Fondoo API.
- Base URL: your Fondoo API base URL, without
/v1. - API Key: the
fondoo_...key. - Save. n8n tests it by calling the read-only
list_event_typesoperation.
Connect it in Fondoo
n8n is not a Fondoo connector. You won't find it under Connections, and connect_service({provider:"n8n"}) does not work. On the Fondoo side you only create an API key.
(a) In the dashboard: open Settings → API keys → Create key, enter a name and pick an access level. The form currently offers only one read level at a time (Read analytics, Read sites or Read pages). That is not enough for n8n, because the credential test needs events:read. Use (b) or (c) until the form offers more. This may differ for your account.
(b) By asking your agent:
Create a Fondoo API key called "n8n" with the scopes events:read, webhooks:write, support:read and support:write.
The agent calls:
create_api_key({ name: "n8n", scopes: ["events:read", "webhooks:write", "support:read", "support:write"] })For an agent, this always returns pending_approval with an approvalId and an approval link. An agent can only grant scopes it holds itself. Only a signed-in human owner can approve it, and never through MCP. The new key appears once, in the approval result, so the agent never sees it. Note: approving from the Needs your OK card on the Home page currently shows only "Approved." and does not display the key. If that happens, revoke the key and use the approval link or option (c). This may differ for your account.
(c) Over REST with an owner key (for example the owner key a self-hosted install creates at bootstrap). It returns the key at once:
POST https://api.getfondoo.com/v1/ops/create_api_key
Authorization: Bearer <owner key>
Content-Type: application/json
{"name":"n8n","scopes":["events:read","webhooks:write","support:read","support:write"]}The reply includes id, key and scopes. Workspaces that enforce owner two-factor authentication reject owner keys.
To manage keys later: list_api_keys shows names, scopes and last use (never the key itself). revoke_api_key({keyId}) revokes a key; for agents it needs approval. In the dashboard, use Settings → API keys → Revoke.
Webhooks
The Fondoo Trigger node manages its own Fondoo webhook. You do not create one by hand.
- When you activate the workflow, the node calls
POST /v1/webhooks(thesubscribe_webhookoperation) with n8n's webhook URL, your chosen Events and an optional Site ID. It stores the returned webhook ID and signing secret in the workflow. Leave Events empty to receive everything. - When you deactivate it, the node calls
DELETE /v1/webhooks/{id}(unsubscribe_webhook). - Every delivery is verified. Fondoo sends
Fondoo-Signature: t=<unix seconds>,v1=<hex>, where hex is HMAC-SHA256 of<t>.<raw body>with the secret. The node compares in constant time and rejects anything older than 300 seconds. Unsigned, invalid or stale requests get401and start nothing. A retried event ID starts the workflow only once.
Event types you can pick: ticket.created, ticket.updated, ticket.solved, complaint.opened, refund.requested, csat.received, site.published, page.published, page.updated, deploy.rolled_back, form.submitted, contact.created, contact.updated, contact.deleted, signup.recorded, order.paid, subscription.started, subscription.updated, subscription.canceled, payment.failed, refund.recorded, dispute.opened, email.sent, email.delivered, email.bounced, email.complained, email.opened, email.clicked, email.unsubscribed, post.scheduled, post.published, post.failed, seo.issue.found, seo.issue.resolved, index.status.changed, ranking.changed, alert.raised, approval.requested, approval.decided, usage.threshold.reached, domain.registered, purchase.completed, release.ingested, content.page.generated, operation.completed, asset.uploaded, asset.deleted, webhook.test, entitlement.updated, order.created.
Other webhook tools your agent can use: list_webhooks (subscriptions and failure status, no secrets), list_webhook_deliveries({webhookId}) (attempts and response codes), replay_webhook_delivery({deliveryId}), send_test_event({webhookId}) and rotate_webhook_secret({webhookId}). Do not rotate a secret the trigger uses: the node keeps the old one. Deactivate and reactivate the workflow instead, which creates a new subscription.
Test that it works
- Save the Fondoo API credential and check that n8n's test passes.
- Add a Fondoo node: Event → List Types. Run it. You should see the event catalog with
fondooStatus: completed. - Try a write with Dry Run on, for example Support Ticket → Create. Expect
fondooStatus: dry_run. - Build a workflow with Fondoo Trigger, pick
webhook.test, and activate it. Ask your agent to runlist_webhooks, thensend_test_event({webhookId}). A new execution should appear in n8n.
Troubleshooting
- Fondoo isn't in the nodes panel. Check the package is in
~/.n8n/custom(or yourN8N_CUSTOM_EXTENSIONSfolder) and restart n8n. On n8n Cloud it cannot be installed. - "Base URL must use https://". Use the HTTPS base URL without
/v1. HTTP is allowed only forlocalhost. FORBIDDEN/ "Missing required scope". The key lacks a scope for that action. Create a new key with the right scopes and revoke the old one.- Activating the trigger fails with "Webhook requires a public HTTPS hostname on port 443". n8n's webhook URL is local or uses another port. Set
WEBHOOK_URLto your public HTTPS address. - The trigger never fires, or Fondoo shows
401deliveries. Checklist_webhook_deliveries. A401with "Raw request body unavailable" means n8n did not pass the raw body, so the node cannot verify the signature and refuses the delivery. Fondoo disables a webhook after three days of failures; fix it, then usereplay_webhook_delivery. - Result says
pending_approval. Nothing happened yet. Approve it in Fondoo, or branch onfondooStatusin your workflow.
Limits, data and security
- Rate limits: the Fondoo API allows by default 120 requests per minute per key and 600 per minute per IP address, and answers
429withRetry-Afterwhen exceeded. Hosted limits may differ. - Webhook delivery: 10-second timeout, no redirects. Failed deliveries retry with growing delays (up to 6 hours apart). Deliveries may count toward your plan's event usage.
- What is stored where: your API key is stored in n8n's credential store. Fondoo keeps only a hash of the key. The webhook secret is encrypted in Fondoo and kept in the workflow's static data in n8n.
- Rotate: create a new key, update the n8n credential, then revoke the old key. Disconnect: deactivate trigger workflows (this deletes their subscriptions) and revoke the key.
- Every action runs through the same Fondoo executor as your agent, so scopes, approvals, dry runs, audit logs and usage metering all apply.
Official links
- n8n private nodes: https://docs.n8n.io/connect/create-nodes/deploy-your-node/install-private-nodes.md
- n8n community nodes (Cloud vs self-hosted): https://docs.n8n.io/integrations/community-nodes/installation-and-management.md
- n8n node environment variables: https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/nodes
- n8n webhook URLs behind a proxy: https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-webhook-urls-with-reverse-proxy
- n8n community node verification: https://docs.n8n.io/connect/create-nodes/deploy-your-node/submit-community-nodes.md
