Use inbound webhooks to trigger Navis Ops workflows from any external service, and outbound HTTP requests to push data to any URL from within a workflow.
Webhooks let Navis Ops talk to the rest of your tool stack without a dedicated integration. Any external service that can send an HTTP POST request — Stripe, GitHub, your own backend, a serverless function — can trigger a Navis Ops workflow. Workflows can also make HTTP requests to external URLs, letting you push data out to any API or service as part of an automation.
Copy this URL. You’ll paste it into the external service that will call it.
3
Access payload data in your workflow
The request body is available as trigger variables throughout the workflow. Use the variable picker to reference fields from the payload. For example, if the incoming JSON has a customer_email field, you can reference it as {{trigger.customer_email}} in any node that follows.
4
Build the rest of the workflow
Add nodes after the trigger to act on the payload data — create tasks, send notifications, update records, or make outbound HTTP requests.
5
Activate and test
Activate the workflow and send a test request to the endpoint (see testing webhooks).
By default, your endpoint is publicly accessible to anyone with the URL. To verify that requests are coming from a trusted source, use the webhook secret.
1
Copy your webhook secret
In the webhook trigger settings panel, find the Webhook secret field. Navis Ops generates a secret automatically. Copy it.
2
Configure the sending service
In the external service (Stripe, GitHub, your own service), configure it to include the secret in a header with every request:
x-webhook-secret: <your-webhook-secret>
The header name is always x-webhook-secret.
3
Navis Ops validates every request
When a request arrives, Navis Ops checks the x-webhook-secret header. If the value doesn’t match, the request is rejected and the workflow does not run.
Treat your webhook secret like a password. Do not share it in public repositories, client-side code, or chat messages. If the secret is exposed, regenerate it from the workflow trigger settings.
Outbound webhooks: make HTTP requests from a workflow
Workflows can send data to any external URL using the HTTP Request node. This is how you push data out — call an external API, trigger a service, or forward data to your own backend — as part of an automation.
1
Add an HTTP Request node
In a workflow, click + and select HTTP Request from the node list.
2
Configure the request
In the node settings, fill in:
Method — GET, POST, PUT, PATCH, or DELETE
URL — the external endpoint to call
Headers — any headers the API requires, such as Authorization: Bearer <token> or Content-Type: application/json
Body — for POST and PUT requests, the JSON payload. Use the variable picker to include dynamic values from earlier in the workflow.
3
Use the response
The response body and status code are available as variables for subsequent nodes in the workflow.
When a payment succeeds in Stripe, this workflow creates a task in Navis Ops so your team can follow up with the customer.
1
Create a webhook-triggered workflow
Create a new workflow with a Webhook trigger. Copy the endpoint URL.
2
Add the webhook in Stripe
In the Stripe Dashboard, go to Developers → Webhooks → Add endpoint. Paste the Navis Ops endpoint URL and select the payment_intent.succeeded event. Copy the signing secret Stripe provides and paste it into the Webhook secret field in your Navis Ops trigger settings.
3
Add a Create Task node
Add a Create Task node with:
Title → Follow up with customer: {{trigger.data.object.metadata.customer_email}}
Project → select your customer success project
Due date → tomorrow
Notes → Payment of {{trigger.data.object.amount_received}} received.
4
Activate the workflow
Save and activate. The next time a payment succeeds in Stripe, the task appears in Navis Ops automatically.
During development, your workflow endpoint needs to be reachable from the external service. A few tools make this easier:
RequestBin
Capture and inspect incoming HTTP requests without any setup. Paste the RequestBin URL into your external service to see exactly what payload it sends before wiring it to Navis Ops.
ngrok
Expose a local server to the internet with a public URL. Useful if you’re building a service locally that needs to receive webhook events during development.
You can also send test requests directly from your terminal to confirm the Navis Ops endpoint is accepting requests:
curl -X POST https://<your-supabase-project>.supabase.co/functions/v1/webhook-trigger/<workflow-id> \ -H "Content-Type: application/json" \ -H "x-webhook-secret: <your-webhook-secret>" \ -d '{"event": "test", "message": "Hello from curl"}'
A 200 OK response means the endpoint is live and the workflow ran (or was queued to run). Check the Workflow runs panel to see the result.
Check that the workflow is active — inactive workflows won’t respond to webhook requests even if the endpoint is valid. Also confirm the x-webhook-secret header matches the secret in the trigger settings if you have validation enabled.
Payload fields aren't available in the variable picker
The variable picker populates from a sample payload. Send a test request to the endpoint, then go back to the workflow editor and reopen the node — the picker should now reflect the fields from your payload.
The external service is getting a timeout
Navis Ops acknowledges webhook requests immediately and processes the workflow asynchronously, so timeouts from the Navis Ops side are unlikely. If the external service is timing out, check that the endpoint URL is correct and that there are no network restrictions blocking the request.
I need to validate the signature from GitHub or Stripe instead of using the x-webhook-secret header
Use a Condition node at the start of your workflow to check the value of the service-specific signature header (for example, x-hub-signature-256 from GitHub or stripe-signature). If the condition fails, add a branch that stops the workflow without taking any action.