Platform guide

n8n

Create your first receipt with a Manual Trigger, Edit Fields, and one HTTP Request node.

Start with sample data

For your first test, use sample data only. The goal is to confirm that n8n can create a receipt before you connect real emails, tickets, documents, customers, or actions.

Automation Receipts records what happened in the automation. Approval inside Automation Receipts is optional: approval can happen in Automation Receipts, n8n, Slack, email, another tool, or not be required at all.

1. Trigger Manual Trigger

Run the workflow by hand while testing.

2. Test data Edit Fields

Add sample receipt values that the HTTP Request node can send.

3. Send receipt HTTP Request

POST the JSON body to Automation Receipts.

4. Check the receipt Receipt created

Open the run detail page and confirm the timeline and review state.

HTTP Request settings

Method
POST
URL
https://automationreceipts.com/api/v1/runs
Body type
JSON
Authentication
Send your API key in the Authorization header.

Required headers

Authorization: Bearer aar_live_REPLACE_ME
Content-Type: application/json

Create an API key in Automation Receipts and use the full key value here. Do not paste API keys into screenshots, chat, public docs, or shared examples.

Edit Fields values

Most values in Edit Fields are strings. The exception below is approval_required: send it as a real JSON boolean, not the string "true" or "false".

FieldExample valueTypeNotes
automation_namen8n First ReceiptStringName shown in Automation Receipts.
run_uidn8n-first-receipt-{{$execution.id}}StringMust be unique for each run.
source_typen8nStringUse this for n8n workflows.
trigger_typemanual_testStringGood label for a Manual Trigger connection test.
statuscompleted or needs_reviewStringUse needs_review when the run is waiting on a person.
risk_levellowStringUse low-risk sample data for the first test.
input_summaryManual n8n connection test with sample input.StringOne summary is required.
output_summaryA sample receipt payload was prepared.StringKeep it short and plain.
approval_requiredfalse or trueBooleanSend a JSON boolean, not a quoted string.
approval_statusnot_required or pendingStringUse pending when review is requested.
final_actionNo real action takenStringBe clear about what did or did not happen.

Dynamic run UID

Use a value that changes every time the workflow runs, such as n8n-first-receipt-{{$execution.id}}.

Automation Receipts uses run_uid to prevent duplicate receipts in the same workspace. If you run the same hardcoded run_uid twice, the second request is rejected as a duplicate.

No review needed example

Use this for the first connection test. It records a completed sample run where no review was needed.

{
  "automation_name": "n8n First Receipt",
  "run_uid": "n8n-first-receipt-{{$execution.id}}",
  "source_type": "n8n",
  "trigger_type": "manual_test",
  "status": "completed",
  "risk_level": "low",
  "input_summary": "Manual n8n connection test with sample input.",
  "output_summary": "A sample receipt payload was sent from n8n to Automation Receipts.",
  "model_used": "none",
  "approval_required": false,
  "approval_status": "not_required",
  "final_action": "No real action taken",
  "events": [
    {
      "event_type": "trigger_received",
      "event_label": "Manual test started",
      "event_summary": "The n8n workflow was started by a Manual Trigger."
    },
    {
      "event_type": "action_taken",
      "event_label": "Receipt logged",
      "event_summary": "n8n sent a sample receipt to Automation Receipts."
    }
  ]
}

Review requested example

Use this when the workflow output should wait for a recorded review outcome. The review may happen in Automation Receipts or somewhere else.

{
  "automation_name": "n8n Review Example",
  "run_uid": "n8n-approval-review-{{$execution.id}}",
  "source_type": "n8n",
  "trigger_type": "manual_test",
  "status": "needs_review",
  "risk_level": "medium",
  "input_summary": "Manual n8n connection test with sample input.",
  "output_summary": "A sample draft was created and is waiting for review.",
  "model_used": "none",
  "approval_required": true,
  "approval_status": "pending",
  "final_action": "Draft created and waiting for review",
  "events": [
    {
      "event_type": "trigger_received",
      "event_label": "Manual test started",
      "event_summary": "The n8n workflow was started by a Manual Trigger."
    },
    {
      "event_type": "output_generated",
      "event_label": "Sample draft created",
      "event_summary": "The workflow prepared sample output for review."
    },
    {
      "event_type": "approval_requested",
      "event_label": "Review requested",
      "event_summary": "The sample draft is waiting for a review outcome."
    }
  ]
}

n8n save notes

Depending on your n8n version and account, workflows may autosave. Some node panels do not show a separate Save button.

After editing a node, close the node panel and check that the workflow itself is saved or autosaved before running the test again.

Troubleshooting

ProblemWhat it usually meansFix
401 unauthorized The Authorization header is missing, wrong, or uses a revoked key. Use Authorization: Bearer aar_live_... with the full active API key. Keep the key out of screenshots, chat, public docs, and shared examples.
422 validation error A required field is missing or a value is not allowed. Check automation_name, run_uid, and at least one of input_summary or output_summary. Check allowed values in Payload fields.
Duplicate run_uid A receipt with that run ID already exists in the workspace. Use a dynamic value such as n8n-first-receipt-{{$execution.id}} instead of a hardcoded ID.
Invalid JSON body The HTTP Request body is not valid JSON. Use JSON body mode. Check commas, quotes, brackets, and n8n expressions that may output blank or malformed text.
Boolean values sent as strings approval_required was sent as "true" or "false" instead of a JSON boolean. Send true or false without quotes. In n8n, make sure the final JSON body contains a real boolean.

Related docs