Demo mode: explore freely. Some actions are disabled and all data resets every hour.
Skip to content
Votedesk

Documentation

Get Votedesk running

Install on shared hosting or a VPS, set up background tasks, and embed the feedback widget in your product.

Requirements

ComponentMinimum
PHP8.3 or newer
DatabaseMySQL 8.0 / MariaDB 10.6
PHP extensionsBCMath, Ctype, cURL, DOM, Fileinfo, GD, Mbstring, OpenSSL, PDO MySQL, Tokenizer, XML, Zip
Web serverApache (mod_rewrite) or Nginx

Node.js is not required on the server. Compiled assets ship in the public/build folder.

Installation

Shared hosting (cPanel)

  1. Create a MySQL database and user in cPanel → MySQL Databases.
  2. Upload the contents of the package to your domain folder and point the document root to the public folder.
  3. Open https://yourdomain.com/install in your browser and follow the installer.
  4. Add the cron job shown on the last installer step.

VPS

git clone your-repository votedesk && cd votedesk
composer install --no-dev --optimize-autoloader
cp .env.example .env && php artisan key:generate
php artisan migrate --force

Cron & queue

Votedesk sends emails and digests in the background. Add one cron entry that runs every minute:

* * * * * php /path/to/votedesk/artisan schedule:run >> /dev/null 2>&1

The scheduler also processes the database queue, so no separate worker is needed on shared hosting. On a VPS you can run a Supervisor worker instead for faster delivery.

Widget API

Paste this snippet before the closing body tag of your app. It adds a floating feedback button with Submit, Ideas and What’s new tabs.

<script src="https://votedesk.devwhite.com/widget/votedesk.js"
        data-workspace="your-workspace" defer></script>
AttributeDescription
data-workspaceYour workspace slug (required).
data-positionbottom-right or bottom-left
data-labelText on the launcher button.
data-sso-tokenSigned JWT that identifies the current user (optional).

You can also control the widget from JavaScript:

Votedesk.open('submit');   // 'submit', 'ideas' or 'changelog'
Votedesk.close();
Votedesk.identify(token);  // sign a user in after page load

Widget single sign-on

Sign a JWT with HS256 on your server using the SSO secret from Workspace → Widget. Never expose the secret in the browser.

{
  "id": "user_123",
  "email": "lucas@example.com",
  "name": "Lucas Meyer",
  "avatar": "https://example.com/avatar.png"
}

Updating

  1. Back up your database and the .env file.
  2. Upload the new files, keeping your .env and storage folder.
  3. Open Super admin → System & updates and click Run update to apply new migrations.

Still stuck? Contact us.