Skip to content

Webhooks and Integrations

Use webhooks and integrations when automation needs to communicate outside the current app. This can mean receiving work from an external system, sending an approved record to another system, handing work to another NotionApps app, or waiting for Make so the already-open tab can refresh.

Use Linked App Exchange when work moves between apps.

Create a webhook secret first

  1. Open Automation → Workflows.
  2. Use a workflow whose trigger is Webhook received.
  3. In External webhook intake, name the secret (for example Make production) and pick a term: 30, 90, 180, or 365 days, or no expiry.
  4. Click Generate secret and copy the value immediately. It is not shown again.
  5. In Make or Zapier, send x-notionapps-webhook-token: {secret}.

After this app has an active secret, the old shared platform token stops working for it. You can keep up to five active secrets so you can rotate without downtime. Full steps: Webhook Technical Reference.

When to use external automation

Use a webhook or linked app handoff when:

  • A form outside NotionApps should create a record.
  • An approved request should notify another system.
  • A customer app should send work to an internal operations app.
  • A completed workflow should update another tool.
  • A failed external delivery should create an exception.
  • A button must call Make, then Refresh or Open screen on the same open tab.

Two outbound webhook steps

Step Behavior Use when
Notify (channel = Webhook) Fire-and-forget POST. The run continues in the background. Another system should hear the result. The open tab does not need to wait.
Call webhook and wait POST, wait up to 8 seconds (max 12s) for a JSON Webhook response, then continue Refresh / Open screen / Show message on the same tab. Request Revision, “build the cart,” or any button that must wait for Make before the open tab updates.

Do not use Notify webhook when the open tab must update after Make. Inbound webhooks Make fires back at NotionApps still cannot refresh an already-open tab.

Maker setup pattern

  1. Generate a webhook secret and store it in Make/Zapier.
  2. Decide the event that should send or receive data.
  3. Choose the source record.
  4. Map only the fields the destination needs.
  5. Define success status.
  6. Define failure status.
  7. Show delivery result in Workflow Status, Linked App Exchange, or Exception Resolution.
  8. If the open tab must update after Make: use Call webhook and wait, and end the Make scenario with Webhook response JSON.
  9. Test with realistic data.
  10. Confirm no secrets are exposed to app users.

Call webhook and wait (Make)

  1. Add Call webhook and wait and paste the Make webhook URL.
  2. Leave the sync timeout at 8000 ms unless you need a shorter wait (max 12 seconds on the tap).
  3. In Make, end with Webhook response and return JSON, for example { "ok": true, "cart_record_id": "…" }.
  4. Map later Open screen record id to context.<this_step_id>.cart_record_id when Make returns one.
  5. Follow with Refresh / Open screen / Show message.

What the user sees:

  • Make answers within 8 seconds: the following UI steps run on the open tab.
  • Make is still going: Working… then the app polls the run for 45 seconds.
  • Still pending: “This is taking longer. Refresh to see the cart.”
  • 4xx / 5xx in the sync window: error, no refresh, no retry.

Full HTTP shapes, secrets, and inbound testing: Webhook Technical Reference.

Verification

External automation is ready when the sending app shows success, the receiving system has the expected data, and failed delivery creates a visible exception.

Call webhook and wait is ready when a button tap either updates the open tab from Make’s JSON, or shows Working… / the fallback refresh message — not a silent no-op.