# What is a plugin?

Plugins are a tool that allows users to develop and extend the platform's features and functionalities in order to meet particular needs not addressed natively by Ubidots.

## Context

Ubidots is not an open source platform, so users can't modify it to meet their particular requirements. Even if it were, users would have to have a vast knowledge of the several technologies that conform the platform in order to modify it.

## Motivation

We wanted to empower our users with a tool that allows them to develop features according to their needs and integrate them into their accounts.

## When to use plugins?

When a certain need or requirement is not offered natively by Ubidots.

## Plugin types

Plugins are categorized into t*ypes,* according to their purpose, thus allowing different platform customization levels.&#x20;

In general terms, they embed specific logic according to their type:&#x20;

<table data-full-width="true"><thead><tr><th width="201.2" align="center">Type</th><th align="center">Purpose</th><th align="center">Example</th></tr></thead><tbody><tr><td align="center">Cron</td><td align="center">Periodically executes some logic.</td><td align="center">Retrieve data every 20 minutes from an external weather API and bring it into Ubidots.</td></tr><tr><td align="center">Webhook</td><td align="center">Executes some logic triggered by an HTTP request.</td><td align="center">Decode a LoRaWAN payload every time an uplink is received on Ubidots from an LNS.</td></tr><tr><td align="center">Widget</td><td align="center">Allows developing custom widgets that are made available as if they were native to Ubidots.</td><td align="center">Create a line chart using HighchartsJS that meet specific visualization requirements beyond the customization options offered by Ubidots' Line Chart widget.</td></tr><tr><td align="center">Device</td><td align="center">Allows creating custom Ubidots devices with embedded logic, and user-defined filters and categories for visualization purposes.</td><td align="center">Create a device with custom thumbnail and properties.</td></tr></tbody></table>


---

# 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://dev.ubidots.com/plugins/what-is-a-plugin.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.
