# Send data that is not from a device (https://logable.app/docs/guides/streams/send-non-device-data)

Create a stream with your own field names, post events to it, and chart them next to your devices.



A stream accepts data that does not come from one piece of equipment. A manual entry, a batch import, or a reading from a system Logable does not connect to directly.

1. Open **Streams**. Only a member, an admin or an owner sees this page.
2. Select **Create Stream**.
3. **Basics**: give the stream a Name, such as Raw Meal Silo Batching. Description and Category are optional.
4. **Data Schema**: add fields one at a time with **Add Field**, or switch to **Import from Sample** and paste a sample JSON payload. Logable reads the keys and infers a field for each one.
5. **Preview**: check the sample data matches the schema you built.
6. **Credentials**: Logable shows the Stream ID and the Stream Token. The token is shown once. Copy it now.

<Figure src="/docs/captures/stream-schema.webp" alt="The Data Schema step of the Create Stream wizard, with fields added and the Import from Sample tab visible" width="1344" height="1168" sizes="(min-width: 1280px) 860px, (min-width: 640px) 90vw, 100vw" caption="The Data Schema step, with fields added by hand." />

## Send an event [#send-an-event]

Post events to the stream with its own token, in the same shape as a device reading. See [Send stream events](/docs/integrate/streams-ingest) for the full reference.

```bash title="Send a stream event"
curl -X POST https://ingest.logable.app/streams/<STREAM_ID>/ingest \
  -H "Authorization: Bearer <STREAM_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"data": {"units_produced": 420}}'
```

## Chart it [#chart-it]

Add a widget to a dashboard and select **Configure**. Set Data Source to stream, pick the stream, then pick its Fields. Line, Area, Bar, Pie, Radar, Data Table and Stat widgets all accept a stream. A gauge and the equipment visuals do not, since they need a device.

<Figure src="/docs/captures/stream-chart.webp" alt="A dashboard chart widget configured with a stream as its Data Source, showing stream fields plotted over time" width="1400" height="681" sizes="(min-width: 1280px) 860px, (min-width: 640px) 90vw, 100vw" caption="A stream's fields, charted next to a device on the same dashboard." />

## Alert on it [#alert-on-it]

Open the stream's **Triggers** tab and create a rule. Choose the Data Received condition. It fires when a new event arrives, whether or not the value has changed.

## Next [#next]

* [Send stream events](/docs/integrate/streams-ingest)
* [Build a dashboard](/docs/guides/dashboards/build-a-dashboard)
* [Get alerted before a limit is crossed](/docs/guides/alerts/get-alerted-before-a-limit-is-crossed)
