Each form has its own integrations. Open Forms → your form → Integrations in the dashboard.
The pattern is the same for every connector: paste a URL or token, hit Save, then click Send test to push a fake submission through and confirm it landed. Integrations are per-form, so set them up on each form you want them on.
Integration secrets are encrypted at rest with AES-256-GCM. Neither our support team nor anyone reading the database directly can recover them without the instance's master key.
Webhook
The most flexible option. We POST JSON to any URL; you do whatever you want with it.
- URL — your endpoint. Must respond with 2xx to acknowledge.
- Signing secret — auto-generated. Verify incoming signatures with this.
Retries: 8 attempts, exponential backoff. Each attempt is logged in the delivery panel.
Slack
- In Slack: Apps → Incoming Webhooks → Add to channel, copy the URL (starts with
hooks.slack.com/services/...). - In TruForms: Slack → paste URL → Save → Send test to confirm.
Each submission arrives as a Block Kit message with a header for the form name and a two-column layout of every field.
Discord
- In Discord channel settings: Integrations → Webhooks → New Webhook, copy the URL.
- In TruForms: Discord → paste URL → Save → Send test.
Messages use Discord embed fields (up to 25 fields per submission).
Telegram
Telegram requires a bot:
- Talk to @BotFather →
/newbot→ copy the token. - Add the bot to your group or channel; promote it so it can post.
- Find your chat ID — DM the bot and fetch
https://api.telegram.org/bot<TOKEN>/getUpdates, or use@getidsbot. - In TruForms: Telegram → bot token + chat ID → Save.
Messages are MarkdownV2-formatted.
Google Sheets
Each submission appends a row: [timestamp, submission_id, form_name, ...payload fields].
- Create a Google Sheet, note the spreadsheet ID from its URL (
docs.google.com/spreadsheets/d/<ID>/edit). - In Google Cloud Console:
- Create a project (or reuse one).
- Enable Google Sheets API.
- Service Accounts → Create, then Keys → Add key → JSON, download the JSON.
- Share the spreadsheet with the service account's email (
[email protected]) as Editor. - In TruForms: paste the spreadsheet ID, sheet name (default
Sheet1), and the full JSON contents into the Service account JSON field.
The JSON is encrypted before storage. We never log or return its contents.
Test-fire and delivery log
Every integration has a Send test button that fires a synthetic payload ({"test":true,"name":"Test","email":"[email protected]","message":"Hello from TruForms"}) through the real pipeline. Useful for verifying connectivity without generating a fake submission.
The Delivery log panel on the Webhook integration lists the last 50 attempts: status, HTTP code, error string, relative timestamp. It auto-refreshes every 10 seconds while open.
Enabling and disabling
Each integration has an Enabled toggle. Disabled integrations are preserved but skipped — submissions still hit the form, they just don't fan out here. Flip the switch back and new submissions resume delivery.
Further reading
- Slack — Sending messages using incoming webhooks — the webhook URL format used above.
- Discord — Webhook resource — embed fields and limits.
- Telegram — Bot API —
getUpdates, chat IDs, andsendMessage. - Google Sheets API and service accounts — the Sheets connector's auth model.