A customizable webhook trigger app for DeskThing that allows you to create up to 6 configurable action buttons to send HTTP requests to external services, APIs, and automation platforms.
Vibe coded with Cursor based on Riprod's DeskThing app template.
- 6 Configurable Buttons - Enable/disable and customize up to 6 action buttons
- Custom Labels - Add personalized labels that display prominently on each button
- HTTP Requests - Send POST/PUT requests to any URL endpoint
- Centralized Configuration - Single settings panel with dropdown button selection
- No Authentication - For public endpoints
- Bearer Token - For API key authentication
- Basic Auth - Username/password authentication
- Custom Colors - Color picker options
- Button Labels - Clear text labels for each button
- Custom Headers - Add/remove HTTP headers as needed
- JSON Payloads - Configure request bodies with JSON validation
- Response Feedback - Visual success/error indicators
- Activity Logging - Real-time request monitoring
- Download or clone the ActionThing app
- Install dependencies:
npm install
- Build the app:
npm run build
- Install in DeskThing using the generated package
- Open ActionThing in DeskThing
- Click "Configure Actions" to open the settings panel
- Select a button (1-10) from the dropdown menu
- Enable the button and configure its settings
For each button, you can configure:
- Label - Display name shown on the button
- Request Type - POST or PUT HTTP method
- URL - Target endpoint (webhook, API, etc.)
- Authentication - Choose authentication method:
- None
- Bearer Token (enter your API key)
- Basic Auth (username/password)
- Headers - Custom HTTP headers
- Request Body - JSON payload for the request
- Button Color - Visual customization
- Single Click - Trigger the configured HTTP request
- Double Click - Open configuration panel
- Logs - Detailed request history in right panel
- Control smart devices via webhooks
- Trigger scenes and automations
- Integration with Home Assistant, OpenHAB
- Trigger Microsoft Power Automate flows
- Activate Zapier workflows
- Custom business process automation
- Quick API endpoint testing
- Webhook payload validation
- Development workflow triggers
- OBS scene switching
- Stream alerts and notifications
- Chat bot commands
- Arduino/Raspberry Pi triggers
- Custom device endpoints
- Sensor data collection
Label: Start Weekly Report
Method: POST
URL: https://prod-xx.eastus.logic.azure.com/workflows/.../triggers/manual/paths/invoke
Headers: Content-Type: application/json
Body: {"reportType": "weekly", "department": "sales"}
Auth: None
Label: Good Night Scene
Method: POST
URL: http://homeassistant.local:8123/api/webhook/goodnight
Headers: Authorization: Bearer YOUR_LONG_LIVED_TOKEN
Body: {"scene": "goodnight", "rooms": ["bedroom", "living_room"]}
Auth: Bearer Token
Label: Alert Team
Method: POST
URL: https://discord.com/api/webhooks/.../...
Headers: Content-Type: application/json
Body: {"content": "Action triggered from DeskThing!", "username": "ActionThing"}
Auth: None
- Node.js 16+
- npm or yarn
- DeskThing development environment
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Lint code
npm run lintActionThing/
โโโ src/
โ โโโ components/ # React components
โ โ โโโ ActionButton.tsx # Individual button component
โ โ โโโ SettingsPanel.tsx # Configuration interface
โ โโโ types/
โ โ โโโ action.ts # TypeScript definitions
โ โโโ App.tsx # Main application
โ โโโ main.tsx # Entry point
โ โโโ index.css # Styles
โโโ server/
โ โโโ index.ts # DeskThing server module
โ โโโ setupSettings.ts # DeskThing settings module
โโโ deskthing/
โ โโโ manifest.json # App metadata
โ โโโ icons/
โ โโโ actionthing.svg # App icon
โโโ package.json
Buttons not triggering:
- Check URL is accessible
- Verify authentication credentials
- Review request headers and payload format
- Check logs for error details
Authentication failures:
- Ensure Bearer token is valid and not expired
- Verify Basic auth username/password
- Check if endpoint requires specific headers
CORS errors:
- Server-side requests bypass CORS restrictions
- Ensure target endpoint accepts requests from your network
Configuration not saving:
- Ensure valid JSON in request body
- Check all required fields are filled
- Restart DeskThing if issues persist
- Use the logs - Check bottom-left corner for detailed error messages
- Test endpoints - Use tools like Postman to verify your configurations
- Start simple - Begin with GET requests to public APIs
- Check network - Ensure DeskThing device can reach target URLs
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source. See LICENSE file for details.
- Issues: Report bugs and feature requests via GitHub issues
- Documentation: Additional guides available in the wiki
- Community: Join the DeskThing Discord for support and discussion
Made for DeskThing - Enhance your smart display with powerful webhook automation!

