# Plays

## What are Webhooks? <a href="#what-are-webhooks-0" id="what-are-webhooks-0"></a>

Webhooks are user-defined HTTP callbacks that allow different systems to communicate with each other in real-time. When an event occurs in a source system, it sends an HTTP POST request to a predefined URL in the destination system, allowing for immediate data transfer and action.

***

## Webhooks for Inbound <a href="#webhooks-for-inbound-2" id="webhooks-for-inbound-2"></a>

Orbital webhook triggers are a way to initiate Orbital inbound workflows in real- time. When a webhook is triggered, it can activate a series of actions within Orbital, including:

* Data enrichments
* Customer engagements AI agent interactions
* Custom workflow processes

Orbital webhooks are highly scalable mechanisms designed to handle large volumes of real-time data processing. They enable synchronous operations, allowing you to process customer data and take action immediately as events occur in your other systems.

### Setting up Webhooks for Inbound <a href="#setting-up-webhooks-for-inbound-6" id="setting-up-webhooks-for-inbound-6"></a>

To configure a webhook in Orbital, follow these steps:

\
**1. Create a New Inbound Workflow**

* Log in to your Orbital account
* Navigate to the Inbound section
* Click on "Create New Inbound"
* Give your workflow a descriptive name

\
**2. Select Webhook as the Trigger Type**

* In the workflow editor, locate the trigger section
* Click on "Select Trigger"
* Choose "Webhook" from the available trigger types and edit Settings

  <figure><img src="https://assets.usepylon.com/e6cde654-d0d4-45d5-9eee-34263ece997e%2F1756836995311-Screenshot2025-09-02at11.45.31PM.png?Expires=253370764800&#x26;Signature=bnkVi19tWNOyycShfmhPZQFuXW2GYGdgCjeUMOGPWCd8VMVOIVyDoZmRbnlbbZLaZc11eZuS0LLmeMDjfN4~S0s0zvGiuAn~xq6Cvrvn7vR11gdpNf1yeHbE6y~yaAPZ6sas9BZbMZioLDIWo8D7FjimDdQN-2HdaPCIHepBbBSzBU-YkEUj-fum7Yx4RV3vTor6uRALy6YtShEN3gfuq8ljUXj0Cjj2R2VYfwd1ICe~CEwhbMeW8ks3KBEeeVOylS67yckir7i0r-lJJbnb87oSvDIyS2YNWfwNJo4Ofk33lKk19wUP598pUeORdR~QMb-egKMN3M29yxVWeG024Q__&#x26;Key-Pair-Id=K3NV4LZ47N8M46" alt=""><figcaption></figcaption></figure>
* Define your webhook schema (see below)
* Configure any additional webhook settings if required

\
**3. Defining Your Webhook Schema**

When setting up a webhook trigger, you must define the schema for the data you'll be sending:

* In the workflow trigger settings, define the expected JSON payload structure
* The schema can be nested, path to the field can be defined
* You can include as many fields as needed in your schema
* Each field should have a defined data type

<figure><img src="https://assets.usepylon.com/e6cde654-d0d4-45d5-9eee-34263ece997e%2F1756837442203-Screenshot2025-09-02at11.49.39PM.png?Expires=253370764800&#x26;Signature=SL11Uog5qavE~TI1cMtjxwXiLNboC6jR-HZIAHEzhQGz32jo59Eof29WeAnp7zGT7nL~rt6-rDG-Qi7y911gnLu0dWZP81PDoOcN5P-KIwwX8wILE30QffghzMRHAFfPRrdrpTF6BEgPcCtUMZtg-Nq6F-WvKu75uEsHP-1S1g6H-KrgMCFokyvAEfeFbkoQzuK-Q8sStcXG~Rmq6q8-ZOWw6wbWK9Yi24LuEivTMYHvteGTHo6WggNAU1AjwDM1WfkFWJmUXIO8~GACnrDlSkly~2lfC~4Z8awWuDeoCpAXnFXXWZ57p4Ic6FQU6brt51d09lEV6iDkhmgOV0tjUw__&#x26;Key-Pair-Id=K3NV4LZ47N8M46" alt="Screenshot 2025-09-02 at 11.49.39 PM.png"><figcaption></figcaption></figure>

<figure><img src="https://assets.usepylon.com/e6cde654-d0d4-45d5-9eee-34263ece997e%2F1756837546455-Screenshot2025-09-02at11.55.31PM.png?Expires=253370764800&#x26;Signature=vh~C28xAtK06Es1FcByxMk7bOkxJVsN8tZh~wdxxG~XUoVQN7Y9D-OQTwN5NRcnkuoJByPeCZDUZ-~Y3njeAyrsQfZqb-PQ~omcdkusWNFQ12Coxa-gUPpdudrsy5tVcpm0s76VFMkFRgZq6qdgKFomEM5UsNAM-j5t7jukpKIPM0oBwi6HorVBZwZ9~zzj8898X6Vd2QvvkavoHtZ0IDg-apk4anchTb5BgGh16A5ifavSR-oAECfvN0nMQLoB77wN7yMJ5GVSScR~TUZ5kIH0wbBDwuEI5eaR~7meqso-3-zEiSe1zVEijUEHYrOzzxaWqFdaBSUMGEjP3MFIYbQ__&#x26;Key-Pair-Id=K3NV4LZ47N8M46" alt=""><figcaption></figcaption></figure>

You can modify your webhook schema at any time by returning to the workflow trigger settings\
\
**4.** **Activate the Webhook and Publish the Workflow**

* Configure the subsequent steps in your workflow (enrichments, engagements, AI agents, etc.)
* Review your complete workflow
* Click "Activate" to enable the webhook
* Publish your workflow by clicking "Publish"<br>

**5.** **Obtain your Webhook URL**

After publishing the workflow, Orbital will generate a unique webhook URL for your workflow. This URL will be used to send data to Orbital and trigger your workflow.

* Locate the webhook URL in the workflow details
* Copy this URL to use in your source systems

The format will be: “app.withorbital.com/\<workspace-id>/\<webhook>ˮ

***

## Technical Implementation Details <a href="#technical-implementation-details-23" id="technical-implementation-details-23"></a>

### **Webhook URL Structure**

The webhook URL automatically identifies your:

* Orbital workspace
* Specific workflow

This means you don't need to include additional authentication parameters in your requests - the URL itself contains the necessary identification information<br>

### **Security Considerations**

* **Treat the URL as a secret**: The webhook URL contains built-in authentication identifiers and should be treated like an API key. Store it securely and never share it publicly.
* **Access control**: Only share the webhook URL with systems and personnel that need to trigger the workflow<br>

### **Protocol Requirements**

* **HTTPS only**: All webhook requests must be sent over HTTPS. HTTP requests will be rejected.
* **POST method**: Webhooks should be triggered using the HTTP POST method.
* **Content-Type header**: All requests must include the *Content-Type: application/json* header
* **JSON body**: The request body must be valid JSON format.

### **Request Format**

When triggering an Orbital webhook, send your data in the following format:

<figure><img src="https://assets.usepylon.com/e6cde654-d0d4-45d5-9eee-34263ece997e%2F1756838133386-Screenshot2025-09-03at12.05.21AM.png?Expires=253370764800&#x26;Signature=dsHKLeZ-x6OE6OE~EUgk0gYm-4d8Fq0hH8yixatzOo3yKKWto73Iq3CPYUS4mmxXg7qxSiTqIOH82ih4ExJyX2eEmnDZQzn9XanM965RSAOe0ppi0e5ggRun74RkZda51r0-p3f6fkKA1VNIAxXH4t4g1uPbuo8e~92oUzXamrtd8fSBW4XzbU2QaguUHDSE5Jd1OQToZnQDdfBndhh~Oh1wyEEVlw5coJL0eG7axYi2xBo7iNYJkPpGl7xDR7oUegJI2Ev2kTU7e3ViAEjhcH5XjD1vg9Q788aNMwkCX-aD1OQRsdFvnNf4qQ3CO9teLzAVcBo-SSQ-KoXz0cTDVQ__&#x26;Key-Pair-Id=K3NV4LZ47N8M46" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}

### **Important Payload Requirements**

* The JSON payload **must** exactly match the schema defined in your workflow trigger settings
* Nested JSON structures are not allowed - all values must be at the top level
* No additional keys or metadata should be included beyond what is defined in your schema
* Requests with payloads that don't match the defined schema will be rejected
  {% endhint %}

### Response Handling <a href="#response-handling-37" id="response-handling-37"></a>

Orbital webhooks return standard HTTP status codes:

* **200 OK**: The webhook was successfully received and the workflow was triggered.
* **400 Bad Request**: The request was improperly formatted.
* **401 Unauthorized**: The webhook URL is invalid or has been deactivated.
* **429 Too Many Requests**: You've exceeded the rate limit for your workspace.
* **500 Internal Server Error**: An error occurred while processing the webhook.

### Parallel Processing and Workflow Execution <a href="#parallel-processing-and-workflow-execution-40" id="parallel-processing-and-workflow-execution-40"></a>

* **Parallel Processing**: Webhook requests can be triggered in parallel and will be processed asynchronously.
* **No Guaranteed Ordering**: The order of execution is not guaranteed when multiple webhooks are triggered simultaneously.
* **Monitoring Runs**: Once a workflow is triggered, you can monitor its execution in the Orbital dashboard under the "Runs" section.

### Rate Limiting <a href="#rate-limiting-42" id="rate-limiting-42"></a>

Webhook requests are subject to rate limits based on your workspace:

* Each workspace has a specific limit on the number of webhook requests allowed per minute
* Exceeding this limit will result in a 429 Too Many Requests response
* Consider implementing backoff and retry logic in your systems for rate limit handling

### Best Practices <a href="#best-practices-45" id="best-practices-45"></a>

* **Payload Structure**
  * Keep your payload data structured and consistent
  * Include only necessary data to optimize performance
  * Use descriptive field names for easier mapping in Orbital workflows
* **Error Handling**
  * Implement retry logic in your source systems
  * Monitor webhook responses to ensure successful delivery Set up alerts for failed webhook deliveries
* **Testing**\
  Before implementing a webhook in Production
  * Test your webhook with sample data
  * Verify the workflow behaves as expected
  * Check that all downstream actions are correctly triggered

### Troubleshooting <a href="#troubleshooting-47" id="troubleshooting-47"></a>

Common Issues:

* **Webhook not triggering workflow**: Verify the workflow is published and the webhook is activated
* **Receiving error responses**: Check your payload format and ensure it matches the expected structure
* **Workflow not processing data**: Examine your workflow configuration for mapping errors


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.withorbital.com/basics/plays.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
