> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hooksnode.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Create a project, add a destination and send your first event.

In this guide you create a project, add a destination and send an event with `curl`. It takes about five minutes.

<Steps>
  <Step title="Create an account">
    Go to [hooksnode.com/register](https://hooksnode.com/register). Sign up with email, Google or GitHub. If you use email, enter the six-digit code that we send to you.
  </Step>

  <Step title="Create a workspace and a project">
    A workspace holds your team, projects and bill. A project holds sources, destinations and events. The dashboard asks for both on first sign-in.

    Each project starts with one **webhook source**. Its URL is:

    ```text theme={null}
    https://hooksnode.com/p/<source-id>
    ```

    Copy the URL from the project page.
  </Step>

  <Step title="Add a destination">
    A destination is the URL that gets your events. Open **Destinations** and add one.

    To test, use an echo endpoint such as `https://httpbin.org/post`.

    <Warning>
      On the Free plan, a project with no destination refuses events with `400`. Add a destination before you send events.
    </Warning>
  </Step>

  <Step title="Send an event">
    ```bash theme={null}
    curl -X POST https://hooksnode.com/p/<source-id> \
      -H "Content-Type: application/json" \
      -H "X-Idempotency-Key: evt_001" \
      -d '{"event":"payment.succeeded","amount":5000}'
    ```

    hooksnode answers:

    ```json theme={null}
    { "status": "accepted", "callback_id": 1042, "enqueued": 1 }
    ```

    `enqueued` is the number of destinations that got a delivery.
  </Step>

  <Step title="See the event">
    Open **Events** in the dashboard. The event is there, with its headers, body and the delivery attempt to your destination.
  </Step>
</Steps>

## Connect a real provider

Paste the source URL into your provider's webhook settings:

* **Paystack:** Settings → API Keys & Webhooks.
* **Flutterwave:** Settings → Webhooks.
* **Stripe:** the Webhooks page of the Developers dashboard.
* **GitHub:** repository Settings → Webhooks → Payload URL.

hooksnode stores the provider's headers with the event and sends them on to your destinations. Your endpoint can still check the provider's own signature.

## Next steps

<CardGroup cols={2}>
  <Card title="Add more sources" icon="plug" href="/sources/overview">
    Connect WhatsApp, mailboxes and URLs.
  </Card>

  <Card title="Filter and transform" icon="filter" href="/destinations/filters">
    Send each destination only the events it needs.
  </Card>

  <Card title="Verify signatures" icon="shield-check" href="/destinations/signing">
    Check that a request came from hooksnode.
  </Card>

  <Card title="Develop locally" icon="terminal" href="/cli/listen">
    Send live webhooks to your laptop.
  </Card>
</CardGroup>
