Skip to main content
Custom webhooks let you connect Invoca to any system with an API, including systems not featured on the Certified integrations list.
In most cases, follow the integration installation guide for your specific Certified integration partner instead — but if you need something more customized, or want to connect to a system without a guided setup, use this guide. Custom webhooks can be harder for Invoca’s team to troubleshoot if something goes wrong.

Step 1: Access your webhooks

Log in to Invoca. In the sidebar, click Integrations, then Manage Integrations, then the Custom Webhooks tile. Click New webhook to create one, or click an existing webhook’s name to edit it. To clone a webhook, use the menu button in the Actions column and select Clone.
NoteIf you see an error like <FIELD> has unknown substitution parameters, a parameter in the webhook has been deprecated. Remove it and save again.

Step 2: Choose the webhook type

  • Pre-transfer webhooks send data as soon as a caller places a call, before they’re connected — useful for time-sensitive data like giving your call center caller information before the call starts. These are part of the Invoca PreSense package.
  • Post-call webhooks send data immediately after the call ends — useful for in-call conversion information and Signal insights.
  • Real-time routing webhooks (available in some packages) send data before the call connects, like pre-transfer webhooks, but are used to intelligently route calls within your call centers based on call data.
You can’t change a webhook’s type after creation — delete and recreate it instead if needed, and reconfigure any integration that referenced the old webhook.

Step 3: Name your webhook and set its address and HTTP verb

  1. Enter a name that makes clear what data you’re sending and to which system.
  2. Choose an HTTP verb: GET (request data), POST (create new records), PUT (create or override matching records), PATCH (edit matching records), or DELETE (delete matching records).
  3. Paste the destination API’s URL, found in that system’s API documentation.
  4. If you need to pass a dynamic value in the URL, click Add Param < > — though sending data in the Body tab instead is usually easier to troubleshoot.

Step 4: Choose the data to send or request

Consult the destination system’s API documentation for its parameter or field names. In the Headers tab, you can add metadata headers — most setups won’t need this. Each header has a Name and a Value; click + Add New for more rows, and use the < > button to populate a Value dynamically from the call that triggered the webhook. POST, PUT, and PATCH webhooks default to a Content-Type: application/x-www-form-urlencoded header. In the Body tab, choose a format: Form Values, JSON, XML, or Plain Text. With Form Values, each row’s Name is typically the destination API’s parameter name, and the Value is an Invoca substitution parameter. The “Omit post parameters with empty values” checkbox helps avoid accidentally overwriting data during post-call events, particularly for webhooks fired by All Transactions or Signals.

Step 5: Set firing conditions

By default, a webhook fires for every call. In the Firing Conditions tab, you can narrow this down:
  • Profile — only fire for calls in a specific Profile
  • All calls — fire for every call
  • All transactions — fire whenever call data changes, including Signal or post-call adjustments
  • Paid calls — for performance marketing customers, fire only for calls resulting in a payout
  • Signal — fire only when a specific Signal occurs
Use the Host Whitelist field to authorize an external system’s IP address to send responses back to Invoca — typically only needed when troubleshooting. Post-call webhooks can also enable “Retry if first attempt fails,” which retries up to 10 times over a 32-hour window without blocking other transactions from firing.

Step 6: Authentication

If your destination requires authentication, click the Authentication tab and select an existing OAuth credential that matches the destination app. Click Save when finished. Your webhook is now active and will fire whenever its conditions are met. To pause, unpause, or delete a webhook, see the basic webhooks overview article.

Where to go next

Last modified on September 25, 2026