HytaleCharts Integration
Connect HytaleCharts to VotePipe for vote notifications. HytaleCharts supports two integration methods: Webhook (HTTPS) and Votifier (TCP).
Webhook Integration
Receive votes via HTTPS webhooks with HMAC-SHA256 signature verification.
Webhook URL
https://hooks.votepipe.com/{org_slug}/hytalechartsExample: https://api.votepipe.com/hooks/your-org/hytalecharts
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://api.votepipe.com/hooks/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
- Go to https://hytalecharts.com/dashboard
- Click Edit Server next to your server
- Scroll down to the Vote Webhook URL field
- Paste your VotePipe webhook URL into the field
- Scroll to the bottom of the page and click Save
- Copy your Webhook Secret from the same page (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 (Edit Server page, Vote Webhook URL section, then Webhook Secret) and paste it into the Auth Value field in VotePipe when creating the provider.
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.
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 |
Votifier Integration
Receive votes via the Votifier protocol over raw TCP. VotePipe supports both V1 (RSA) and V2 (HMAC).
Protocol
| Property | Value |
|---|---|
| Protocol | Votifier V1 (RSA 2048-bit) & V2 (HMAC-SHA256) |
| Transport | Raw TCP |
| Default Port | 8192 |
| Key Management | Auto-generated by VotePipe, rotatable from dashboard |
Connection Details
When you create a HytaleCharts (Votifier) provider in VotePipe, the following credentials are auto-generated:
| Field | Description |
|---|---|
Host | The VotePipe Votifier server address |
Port | TCP port (default: 8192) |
Public Key | RSA 2048-bit public key (PEM format, for V1) |
Token | HMAC token (for V2 protocol) |
Setup Instructions
Step 1: Create Provider in VotePipe
- Go to Add Provider and select HytaleCharts (Votifier)
- VotePipe will auto-generate your RSA keypair and HMAC token
- Copy the Host, Port, and Public Key shown in the provider details
Step 2: Configure HytaleCharts
- Go to https://hytalecharts.com/dashboard
- Click Edit Server on your server
- Scroll down to the Votifier Settings section
- Enable Votifier and select a protocol version:
- V1 (RSA) — paste the Public Key from VotePipe
- V2 (HMAC) — paste the Token from VotePipe
- Fill in the Address (Host) and Port (default: 8192) using the values from your VotePipe provider
- Click Save to apply the settings
Step 3: Verify
- Cast a test vote on HytaleCharts for your server
- Check the VotePipe dashboard to confirm the vote was received
- Votes will now flow: HytaleCharts → Votifier TCP → VotePipe → Discord + Callbacks + Plugin
Key Rotation
You can rotate your RSA keys and HMAC token at any time from the VotePipe dashboard (Providers → your HytaleCharts Votifier provider → Rotate Keys). After rotating, update the public key on HytaleCharts.
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
Votifier votes not arriving
- Verify the host and port match exactly what VotePipe shows
- Ensure the public key was copied completely (including BEGIN/END markers)
- Check that port 8192 is accessible (not blocked by firewall)
- Ensure the provider is enabled in VotePipe
Signature mismatch / decryption errors
- For webhooks: the signature is computed as
sha256=HMAC({timestamp}.{json_body}, secret) - For Votifier: the public key on HytaleCharts must match the one shown in VotePipe
- If keys were rotated, update the public key on HytaleCharts
- Try rotating keys in VotePipe and re-configuring HytaleCharts
Still having issues? Check our general troubleshooting guide.
API Management
You can manage providers programmatically using the API: