> For the complete documentation index, see [llms.txt](https://3dpaws.comet.ucar.edu/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://3dpaws.comet.ucar.edu/accessing-the-data/particle-chords-integrations.md).

# Particle / CHORDS Integrations

Guide to sending 3D-PAWS observations from the Particle Cloud to a CHORDS portal using Particle webhooks.

### Overview

Particle-based 3D-PAWS stations transmit observations to the Particle Cloud.

A **Particle webhook** forwards those observations from the Particle Cloud to the CHORDS portal associated with the station or observation network.

The data flow is:

**3D-PAWS Sensors → Particle Data Logger → Particle Cloud → Webhook → CHORDS → Grafana**

The webhook must be configured with information for both the Particle device and the destination CHORDS portal.

***

#### How the Integration Works

When a 3D-PAWS Particle data logger publishes an event, the Particle Cloud receives the event and checks for a matching webhook.

The webhook then sends the observation to the configured CHORDS URL.

For the integration to work correctly:

1. The Particle device must be online and publishing events.
2. A webhook must be configured for the appropriate event.
3. The webhook must contain the correct CHORDS portal information.
4. CHORDS must recognize the API key and instrument ID.
5. The observation must be successfully received by CHORDS.

{% hint style="info" %}
If the Particle device is publishing observations but they are not appearing in CHORDS, the webhook is an important point to check during troubleshooting.
{% endhint %}

***

#### Particle Webhook Training

The training slides below provide a walkthrough of Particle webhooks and their use with 3D-PAWS.

{% embed url="<https://docs.google.com/presentation/d/1JQQpRib1JzjuH940h61ls5MLCOkYerSNbst-YOyfXnM/edit?usp=sharing>" %}
Click the dots icon to enlarge by entering full screen
{% endembed %}

{% hint style="info" %}
Use the presentation controls to open the slides in full screen for easier viewing.
{% endhint %}

***

#### CHORDS Webhook Template

The webhook template must be customized for the Particle device and CHORDS portal being used.

Before creating the webhook, identify the following information:

| Variable        | Description                                                                                                      |
| --------------- | ---------------------------------------------------------------------------------------------------------------- |
| `instrument_id` | CHORDS instrument ID assigned to the station                                                                     |
| `deviceID`      | Particle device ID                                                                                               |
| `name`          | Name used to identify the Particle webhook/device                                                                |
| `key`           | API key for the destination CHORDS portal                                                                        |
| `event`         | Particle event associated with the station configuration, such as `FS` for Full Station or `SG` for Stream Gauge |
| `url`           | URL of the CHORDS portal receiving the observations                                                              |

{% hint style="warning" %}
The values in the template are examples. Replace all station-, device-, and portal-specific values before using the webhook.

In particular, make sure the **CHORDS URL**, **API key**, and **instrument ID** correspond to the destination portal for your observation network.
{% endhint %}

If UCAR/COMET configured the CHORDS portal for your project, contact the project team for the appropriate API key and configuration information.

***

#### Webhook Template

Copy the JSON template below into a plain-text editor and replace the required values with those for your Particle device and CHORDS portal.

{% embed url="<https://docs.google.com/document/d/1-JZLgsLOY9b2fxWdEgkbFyIihc1vPE3IFHjKVfiO9Y0/edit?usp=sharing>" %}

{% hint style="info" %}
Do not modify the observation-variable mappings in the `query` section unless the station firmware or CHORDS configuration requires different variables.
{% endhint %}

***

#### Verify the Integration

After creating the webhook, verify the complete data path.

1. Confirm that the Particle device is online.
2. Confirm that the expected event is being published in the Particle Console.
3. Confirm that the webhook is triggered by the event.
4. Check the webhook response for errors.
5. Open the appropriate CHORDS portal.
6. Confirm that new observations are appearing for the correct instrument.
7. Check that timestamps and sensor variables are updating as expected.

{% hint style="info" %}
Successful publication in the Particle Cloud does not necessarily mean that the observation has reached CHORDS. Verify the observation at the destination portal before considering the integration complete.
{% endhint %}

***

#### If Data Is Not Reaching CHORDS

If Particle events are being published but observations are not appearing in CHORDS, check:

* the webhook is enabled
* the webhook event matches the event published by the device
* the CHORDS `url` is correct
* the `instrument_id` is correct
* the API `key` is correct
* the Particle `deviceID` is correct
* the webhook response for an error from CHORDS

For detailed diagnostic procedures, see **Troubleshooting**.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://3dpaws.comet.ucar.edu/accessing-the-data/particle-chords-integrations.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
