Documentation

Webhook Setup Guide

Cajari automatically pulls Amazon Seller Central reports that are not available via Amazon's API.

You select a Skill (report type), and when the report is ready, Cajari sends a webhook notification to your system so you can retrieve and process the data.


1. Claude Code + VS Code No Developer Required

Want a custom webhook handler but don't have a developer? Claude Code will write it for you. You describe what you want, it writes the code.

Already using Claude Code? Open it in VS Code, describe what you want to do with your Cajari reports, and it'll build the handler for you.

What you'll need

  • VS Code
  • Claude Code for VS Code
  • Somewhere to run the code. Locally is the easiest place to start, but you'll need ngrok to make your machine reachable from the internet. If you want something always-on, Railway or Render are simple options.

Step 1 — Open a new folder in VS Code

Create an empty folder. That's your project.

Step 2 — Open Claude Code and paste this prompt

Fill in the last line with what you want to do. Not sure what to write? Try one of these:

  • "Download the report and save it to a Postgres database"
  • "Forward the report data to a Slack channel"
  • "Append the report fields to a Google Sheet"
  • "Save the raw JSON to an S3 bucket"

Step 3 — Let Claude build it

Claude will ask a few questions if it needs to, then write the code, explain how to install dependencies, and set up your API key as an environment variable so it's never hardcoded.

Step 4 — Deploy it

Ask Claude how to deploy. Something like "How do I deploy this to Railway?" or "How do I run this as an AWS Lambda function?" works fine.

Running locally first? Ask: "How do I use ngrok to test this webhook locally?"

Once it's live, paste the URL into Cajari under Account Settings → API & Integrations.

Example prompt

I need a webhook endpoint that receives POST requests from a
service called Cajari.

Here is an example payload:

{
  "seller_central_account_id": "05MM1234",
  "merchant_name": "Demo Merchant",
  "marketplace_name": "United States",
  "skill": "shipping_performance",
  "outcome": "success",
  "format": "json",
  "report_location": "https://api.cajari.com/v1/reports/05Q6JA4G"
}

Security: The request includes an Authorization: Bearer <token>
header. The token is an MD5 hash of my API key. Reject requests
where it doesn't match.

When a report arrives: [DESCRIBE WHAT YOU WANT TO DO]
               

2. Direct Webhook

If you know your way around APIs and webhooks, this is the fastest path.

Step 1 — Add your webhook URL

Go to Account Settings → API & Integrations. Enter your endpoint URL.

https://yourdomain.com/cajari-webhook

Step 2 — Grab your API key

Copy it from the same page. Cajari will send a POST request when a report is ready. It includes an Authorization: Bearer <token> header. That token is an MD5 hash of your API key. Your job is to compute the MD5 hash of your API key, compare it to the token, and reject the request if they don't match.

What to do when you receive it

Validate the token. Check that outcome is success. Then fetch the report from report_location and process it however you like.

Example payload

{
  "seller_central_account_id": "05MM1234",
  "seller_central_account_name": "Demo Merchant United States",
  "merchant_name": "Demo Merchant",
  "marketplace_name": "United States",
  "merchant_marketplace_id": "05MM1234",
  "merchant_id": "05MR5678",
  "customer_id": "customer-abc",
  "seller_central_email": "example@yourdomain.com",
  "obtained_at": "2025-05-21 21:53:41",
  "skill": "shipping_performance",
  "outcome": "success",
  "format": "json",
  "size": 1194,
  "report_location": "https://api.cajari.com/v1/reports/05Q6JA4G"
}
               

3. n8n Example: Send Reports to Google Sheets

No backend? n8n gives you real flexibility without much code.

Set up a Webhook node with method POST. n8n gives you a URL. Paste it into Cajari Account Settings.

Add a Function node to validate the request. Compare the Authorization header to the MD5 hash of your API key. Stop the workflow if they don't match.

Fetch the report with an HTTP Request node. Use the report_location URL from the payload and add your Cajari API credentials. Optionally reshape the JSON into rows and map fields to columns.

Connect a Google Sheets node, pick your spreadsheet and tab, and append rows.

Once it's running, you don't touch it. Cajari fires the webhook, n8n grabs the report, data shows up in your sheet.


4. Zapier

Zapier is quicker to set up but less flexible. It's a good fit if you're routing data into tools you already use.

Start with a Webhooks by Zapier trigger set to Catch Hook. Zapier gives you a URL. Drop it into Cajari Account Settings.

Zapier won't verify the webhook automatically. To do it yourself, add a Code by Zapier step. Compute the MD5 of your API key, compare it to the Authorization header, and throw an error if it doesn't match.

To fetch the report, add a Webhooks by Zapier Custom Request step. Set the method to GET, use the report_location field as the URL, and add your Cajari API key.

Then route the data wherever you need it. Google Sheets, Airtable, Slack, and most other SaaS tools have Zapier integrations ready to go. After that it runs itself.


Which option is right for you?

Option Best For
Claude Code + VS Code You want custom code but don't have a developer. Claude writes it for you.
Direct Webhook You have developers and want full control
n8n You want flexibility and structured workflow transformations
Zapier You want fast setup routing data into SaaS tools