Guide
Send a workflow result to FYInbox with n8n
Keep a report's outcome, context and next step in FYInbox, where people and agents can find project notifications outside chat. This walkthrough uses a generic HTTP Request node and synthetic data.
Create a source and save its key
Choose n8n in onboarding
Sign in to FYInbox, open onboarding and choose n8n — HTTP Request. Create or select the source n8n weekly reports.
Save a source key
Create a key for the selected source and save its once-visible secret in n8n's credential manager. Keep the key out of notification data, URLs and shared workflow examples.
Set up a manual HTTP workflow
Prepare a manual sample
Create an unpublished Manual Trigger → Edit Fields (Set) → HTTP Request workflow. In Edit Fields, select JSON Output, exclude unrelated input fields and paste the complete synthetic JSON below.
Configure the request
Set Method to POST and URL to https://fyinbox.com/api/v1/notifications. Choose Generic Credential Type → Bearer Auth and select the saved source credential. Do not enter another Authorization header.
Send the JSON object
Turn Send Body on. Choose Body Content Type: JSON and Specify Body: Using JSON. Switch the JSON field to Expression and enter {{ $json }} so the object is serialized once.
- Set Response Format to JSON and Include Response Headers and Status to On. Keep Never Error and Retry On Fail off.
- Keep Pagination and Redirects off. Keep Ignore SSL Issues off so HTTPS certificates are checked.
- Set Timeout to 10000 milliseconds. n8n documents this as waiting for response headers and the start of the body, not a guaranteed total workflow deadline.
Send this synthetic report result
{
"title": "Weekly report \"A&B\" is ready ✅",
"body": "18 rows exported.\nFolder: C:\\Reports\\September\nNote: It's ready for review — not a customer result.",
"severity": "success",
"tags": [
"example",
"report"
],
"source": "n8n-weekly-report",
"externalId": "report-demo-20260908-001",
"deduplicationKey": "weekly-report:report-demo-20260908-001:ready",
"metadata": {
"runid": "report-demo-20260908-001",
"rows": "18"
},
"actions": [
{
"id": "open-report",
"type": "link",
"label": "Open sample report",
"href": "https://example.com/reports/report-demo-20260908-001",
"style": "primary"
}
]
}The sample includes quotes, line breaks, backslashes and Unicode. Its counts and report URL are illustrative. A follow-up action opens a destination; FYInbox does not generate or approve the report.
Confirm the ID and source in FYInbox
Send the sample once
Execute the manual workflow. Expect HTTP 201 with a notification UUID and created: true.
Repeat the same result
Execute again without changing the sample. Expect HTTP 200 with created: false and the same UUID. Both responses mean the result exists.
Check the exact sample
Return to FYInbox onboarding with n8n and the intended source selected. Paste the returned notification ID and choose Check notification. Confirmation requires that source and this sample's deduplication key.
Review its context
Choose Open notification after confirmation. Inspect the title, text and metadata in the inbox. Replace the illustrative destination with the actual source report when adapting the workflow.
Map a real result after the workflow succeeds
- Map title to title and summary to body. Map the stable run_id to externalId and metadata.runid.
- Build deduplicationKey as weekly-report:RUN_ID:ready, replacing RUN_ID with the stable run_id. Keep it stable across delivery retries and change it for a distinct report result.
- Convert rows to a string for metadata.rows. Require a present run ID, a nonnegative integer count and a valid HTTPS result_url.
- Map result_url to actions[0].href. Keep keys and customer records outside the payload.
{{ ({
title: $json.title,
body: $json.summary,
severity: "success",
tags: ["example", "report"],
source: "n8n-weekly-report",
externalId: $json.run_id,
deduplicationKey: "weekly-report:" + $json.run_id + ":ready",
metadata: { runid: $json.run_id, rows: String($json.rows) },
actions: [{ id: "open-report", type: "link", label: "Open sample report", href: $json.result_url, style: "primary" }]
}) }}Return an object from the expression. Do not insert unescaped free text inside a quoted JSON template or stringify missing values. Validate the incoming fields before connecting a live trigger.
Handle errors without duplicating the result
- 400 invalid_request: correct the JSON, required fields, unsupported fields or field limits. Metadata values must be strings.
- 401 unauthorized: check the source credential and Bearer format. A replacement key must belong to the intended source.
- 409 quota_exceeded: stop and resolve the source's storage limit. A retained duplicate still returns 200. Do not change its identity to bypass a quota.
- 413 payload_too_large: reduce the complete request below 128 KiB. The title allows 200 characters, body 64 KiB, metadata 50 string pairs within 32 KiB, and actions at most five; operational limits may be lower.
- 429 rate_limited: wait at least the Retry-After number of seconds before repeating the same request. Stop if that delay is missing, invalid, unavailable or greater than five minutes.
- A timeout, connection loss or 500/502/503/504 response may occur after storage. Repeat only with the same stable deduplication key and exact payload.
For this manual recipe, allow at most three attempts in total. For an ambiguous transient failure, wait at least one second before the first retry and two before the second. Keep platform retries disabled until their behavior is verified. Do not confirm an unexpected success envelope.
Primary sources
Last verified .
Frequently asked questions
- Is this a dedicated FYInbox connector?
- It uses n8n's generic HTTP Request node and the documented FYInbox HTTP contract. No SDK or product-specific node is needed.
- Does an older notification complete this walkthrough?
- No. The selected source and sample identity must match the notification ID you check. Account-wide progress alone does not confirm this workflow.
- Can people and agents use the result?
- People can review the same stored inbox through their account on different browsers. Agents can retrieve a known notification ID with its source key. These source-key HTTP operations do not list the account inbox or execute follow-up actions. Consented OAuth MCP connections offer additional account operations within approved permissions; see the MCP documentation.
Keep exploring
Put project notifications in their own inbox
Create an account and move the next notification out of chat and into one inbox for people and agents.