# Introduction

Hookshot is a managed platform for delivering Webhooks to your users. It provides robust reliability and deliverability, while making it trivial to delivery a great developer experience to your customers.

{% hint style="info" %}
This documentation is still a work in progress as we onboard initial clients. Feel free to email <support@hookshothq.com> with any questions, or suggestions.
{% endhint %}


# What are Webhooks?

Webhook can be thought of as a Reverse API for your system. An API consists of your users making requests to you *to make something happen*, while webhooks consist of you making requests to your users *when something happens*.


# Installation

Installing Hookshot into your application is very straight forward. All you need is your Hookshot API token, which can be found on the Security page in your dashboard

We currently have clients for the following languages, however Hookshot can be accessed via REST API if we do not have a client for your language.

### **Python**

```
pip install hookshothq
```

In your application:

```
import hookshot

hookshothq.api_key = os.getenv("HOOKSHOT_API_TOKEN")

# Create an Event

hookshot.Event.create(
    event="order.created",
    realm=current_context.user_id,
    payload={
        "id": "o_1234",
        "value": "100000",
        "item_count": 4,
        "recurring": False,
    }
)
```

{% hint style="info" %}
The "payload" attribute is the content which will be used as the body of your webhook when it is delivered to the end user.
{% endhint %}


# Hosted Management Pages

Hosted Management Pages are temporary pages which you can create to allow your customer to add new endpoints, debug delivery failures, and inspect/replay past webhooks deliveries.

Hosted Management Pages are the easiest way to get started with Hookshot.

### Creating a Management Session

A management session can be created with our Hookshot Client, or through the API.

{% hint style="warning" %}
Note that when creating a Management Session URL, it is highly recommended to redirect the user to the session directly. Do not email, text, or deliver in another way the session URL to the user, as the session URL can be utilized as a credential.
{% endhint %}

Python:

```
import hookshot

hookshothq.api_key = os.getenv("HOOKSHOT_API_TOKEN")

# Create a Management Session

management_session = hookshot.ManagementSession.create(
    realm=current_context.user_id,
)

# Redirect the User to `management_session.get("url")`
```


# Embeddable Management Components

> Coming Soon! These components are current under active development

Embeddable Management Components are a set of Javscript Framework Components which you can embed within your application in order to allow your customers to manage their webhook settings directly against Hookshot, without leaving your application.


# Demo Application

Hookshot maintains a "demo" application running at <https://demo.hookshothq.com>.

This basic "Todo List" application is meant as an example of a **user facing application** which uses Hookshot to allow it's users to configure and receive webhooks. It utilized the Hosted Management Pages feature of Hookshot.

At the moment, this demo application allows for public access to the Hookshot dashboard via shared credentials. You can use these credentials in order to explore the layout and functionality of the dashboard.

{% hint style="danger" %}
Any information entered into this demo application should be considered public information. Any configured webhooks should be considered public.
{% endhint %}


