HytaleCharts Integration
Learn how to receive and verify webhooks from HytaleCharts for vote notifications.
Webhook URL
Configure your webhook URL in the HytaleCharts dashboard:
https://hooks.votepipe.com/{org_slug}/hytalechartsExample: https://hooks.votepipe.com/your-org/hytalecharts
Webhook Verification
HytaleCharts uses HMAC-SHA256 signatures to verify webhook authenticity. Every webhook request includes headers you can use to verify the request came from HytaleCharts.
Request Headers
| Header | Description |
|---|---|
X-HytaleCharts-Event | Event type (vote) |
X-HytaleCharts-Signature | HMAC-SHA256 signature in format sha256={hex} |
X-HytaleCharts-Timestamp | Unix timestamp when the webhook was sent |
Content-Type | application/json |
Signature Format
sha256={hmac_hex}The signature is computed by concatenating the timestamp and JSON body with a period, then computing HMAC-SHA256 with your secret.
Webhook Events
HytaleCharts sends webhooks for vote events:
voteSent when a user votes for your server
Vote Payload Format
HytaleCharts sends vote data in the following format:
{
"event": "vote",
"voter": {
"username": "mrkayjaydee",
"discord_id": "370940770225618954",
"last_vote_at": "2026-01-05T07:06:52+00:00",
"discord_username": "mrkayjaydee",
"total_votes_for_server": 35
},
"server_id": 31,
"timestamp": "2026-01-06T07:50:59+00:00",
"server_name": "Mythlane",
"server_slug": "mythlane",
"server_stats": {
"total_votes": 104,
"weighted_votes": 103
}
}The voter name is extracted from voter.username.
Payload Fields
Root Fields
| Field | Type | Description |
|---|---|---|
event | string | Event type: vote |
server_id | integer | Your server's unique database ID |
server_name | string | Your server's display name |
server_slug | string | URL-friendly identifier for your server |
timestamp | string | ISO 8601 timestamp when the event occurred |
Voter Object (Vote Events)
| Field | Type | Description |
|---|---|---|
username | string | HytaleCharts username |
discord_id | string | User's Discord ID (use for in-game rewards) |
discord_username | string | User's Discord username |
total_votes_for_server | integer | Total votes this user has cast for your server |
last_vote_at | string | ISO 8601 timestamp of the previous vote |
Server Stats Object
| Field | Type | Description |
|---|---|---|
total_votes | integer | Total vote count for your server |
weighted_votes | number | Weighted vote score |
Setup Instructions
Step 1: Create Provider in VotePipe
- Go to Add Provider and select HytaleCharts
- Copy the generated webhook URL (it will look like:
https://hooks.votepipe.com/your-org/hytalecharts) - Keep this page open - you'll need to paste the webhook secret in the next step
Step 2: Configure Webhook in HytaleCharts
- Log in to your HytaleCharts.com account
- Navigate to Server Settings → Webhooks
- Paste your VotePipe webhook URL in the Vote Webhook URL field
- Copy your Webhook Secret from HytaleCharts (click "Show" to reveal it)
- Save the webhook secret (you'll need it for the next step)
Step 3: Complete Provider Setup in VotePipe
- Go back to the VotePipe provider creation page
- Paste the Webhook Secret from HytaleCharts into the Auth Value field
- Click Create Provider
- Click Test in HytaleCharts to verify the connection
Important
HytaleCharts generates the webhook secret. Copy it from your HytaleCharts dashboard (Server Settings → Webhooks → Webhook Secret) and paste it into the Auth Value field in VotePipe when creating the provider.
Troubleshooting
Webhook not receiving votes
- Verify the webhook URL is correct in HytaleCharts settings
- Make sure you're using the Vote Webhook URL field (not Discord Webhook)
- Ensure your provider is enabled in VotePipe
- Click the Test button in HytaleCharts to send a test webhook
Authentication errors (401)
- Make sure you copied the Webhook Secret from HytaleCharts (not generated by VotePipe)
- Click "Show" to reveal the secret and copy the full value
- Check there are no extra spaces before or after the secret
- The secret should be pasted in the Auth Value field in your VotePipe provider
Signature mismatch
- The signature is computed as:
sha256=HMAC({timestamp}.{json_body}, secret) - Ensure your server's clock is synchronized (signature includes timestamp validation)
- Check the webhook logs in HytaleCharts to see the actual request/response
Still having issues? Check our general troubleshooting guide.
API Management
You can manage providers programmatically using the API: