diff --git a/docs/widgets.md b/docs/widgets.md
index 3fa60a79..e86d7d61 100644
--- a/docs/widgets.md
+++ b/docs/widgets.md
@@ -32,6 +32,7 @@ Dashy has support for displaying dynamic content in the form of widgets. There a
- [Pi Hole Stats](#pi-hole-stats)
- [Pi Hole Queries](#pi-hole-queries)
- [Recent Traffic](#recent-traffic)
+ - [Stat Ping Statuses](#stat-ping-statuses)
- [Dynamic Widgets](#dynamic-widgets)
- [Iframe Widget](#iframe-widget)
- [HTML Embed Widget](#html-embedded-widget)
@@ -747,6 +748,28 @@ Shows number of recent traffic, using allowed and blocked queries from [Pi-Hole]
---
+### Stat Ping Statuses
+
+Displays the current and recent uptime of your running services, via a self-hosted instance of [StatPing](https://github.com/statping/statping)
+
+

+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL to your StatPing instance, without a trailing slash
+
+##### Example
+
+```yaml
+- type: stat-ping
+ options:
+ hostname: http://192.168.130.1:8080
+```
+
+---
+
## Dynamic Widgets
### Iframe Widget
diff --git a/src/components/Widgets/StatPing.vue b/src/components/Widgets/StatPing.vue
new file mode 100644
index 00000000..7fa4be5c
--- /dev/null
+++ b/src/components/Widgets/StatPing.vue
@@ -0,0 +1,192 @@
+
+
+
+
+
+ {{ service.name }}:
+ Online
+ Offline
+
+
+
+
![]()
+
![]()
+
+
+
+
+ Failed Pings
+ {{ service.totalFailure }}/{{ service.totalSuccess }}
+
+
+ Last Success{{ service.lastSuccess }}
+
+
+ Last Failure{{ service.lastFailure }}
+
+
+ Avg Response Time
+ {{ service.responseTime }} ms
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Widgets/WidgetBase.vue b/src/components/Widgets/WidgetBase.vue
index 9d02647a..142ddf71 100644
--- a/src/components/Widgets/WidgetBase.vue
+++ b/src/components/Widgets/WidgetBase.vue
@@ -179,6 +179,13 @@
@error="handleError"
:ref="widgetRef"
/>
+