How to Test a Webhook via Terminal (Troubleshooting Guide)

Edited

This guide will help you successfully receive webhooks from calls recorded with Fathom. It provides some initial checks and shows you how to manually send a webhook event to your endpoint using Terminal.

Note: You can find our additional documentation on webhooks with Fathom in our API documentation: https://fathom-e4df0608.mintlify.app/


Why this matters:

If a webhook wasn’t received, you’ll want to determine whether:

  • The endpoint is misconfigured, inactive, or unreachable

    or

  • The external system simply never sent the event

By simulating the webhook event yourself, you can confirm whether your endpoint is capable of receiving and processing requests and quickly narrow down whether the issue is with the webhook itself or with the system sending the event.


Initial Checks (Before Testing)

Please confirm the following:

  1. Endpoint is configured as a POST endpoint

    • Not GET

  2. Production URL is being used

    • Not a Test URL

  3. If using n8n: the workflow toggle is green and says Active

    • Inactive workflows often return errors when engaged directly

  4. The webhook URL displayed in Fathom’s settings page matches the intended destination


Simulating a Webhook Event

You can use the following cURL command to simulate a webhook event.

⚠️ Note for n8n users: if the response you get is Workflow started you'll need to check the execution in n8n (Executions/History) and inspect the run output/logs.

Important: Replace the following values

  • Replace https://server.cloud/webhook/<uuid> with:

    • The full URL of your listening endpoint

  • Replace these values with real data obtained from Fathom’s API via a GET request to the Meetings endpoint:

    • recording_id

    • url

    • share_url


⚠️ Important: Real Values Are Required

If you do not replace the example values, your endpoint may still return a 2xx response (e.g., 200 or 202).

This does not confirm that the workflow is working correctly.

A 2xx response only confirms that:

  • The endpoint received the request

  • The server accepted it

It does not confirm:

  • That the data was valid

  • That downstream logic executed correctly

  • That the workflow processed the real recording

To properly test your setup, you must use real recording_id, url, and share_url values from your Fathom account.

Otherwise, you may receive a false positive.


Mac / Linux

curl --request POST <https://server.cloud/webhook/><uuid> \\
--header "Content-Type: application/json" \\
--header "webhook-signature: test-signature" \\
--data '{"recording_id":123456789,"url":"<https://fathom.video/meeting/123456789","share_url":"https://fathom.video/share/abcde12345","type":"meeting_content_ready>"}'

Windows

curl -X POST <https://server.cloud/webhook/><uuid> ^
-H "Content-Type: application/json" ^
-H "webhook-signature: test-signature" ^
-d "{\\"recording_id\\":98765432,\\"url\\":\\"<https://fathom.video/meeting/123456789\\\\",\\\\"share_url\\\\":\\\\"https://fathom.video/share/abcde12345\\\\",\\\\"type\\\\":\\\\"meeting_content_ready\\\\"}">