NetNXT Logo

How to Configure Twingate Access Request Notifications in Slack with Approve and Reject Actions

June 8, 2026
6 min read
ByVed Sharma

Overview

This guide walks you through setting up a Slack Workflow Builder workflow that receives Twingate access request notifications via webhook and posts them to an admin channel — complete with Approve and Reject buttons that link directly to your Twingate Admin Console.

ℹ️  How It Works

1.  Twingate sends a JSON payload to a Slack Workflow Builder webhook URL

2.  Workflow Builder maps the payload fields to variables

3.  A message is posted to your chosen admin channel

4.  Admins click Approve or Reject — buttons open the Twingate Admin Console directly

Prerequisites

Slack Plan

Pro, Business+, or Enterprise Grid (Workflow Builder not on Free plan)

Slack Permission

Member or above; Workspace Owner may be needed to publish

Twingate Role

Admin access to the Twingate Admin Console

Browser

Chrome or Edge recommended for Workflow Builder

Create a New Workflow in Slack

1.       Tools → Workflow Builder: Open Slack and click

2.       Create (top-right corner): Click

3.       TG Demo Access Requests: Enter a workflow name, e.g.

4.       "From a webhook" as the trigger and click Next: Select

Set Up Webhook Variables 

Click Set Up Variables and add all 10 variables exactly as shown below. These must match the JSON keys that Twingate sends — spelling and case must be identical.

Variable Name

Description

user_url

Profile URL of the Twingate user making the request

version

Payload schema version sent by Twingate

requested_at

Timestamp of when the access request was made

reason

Reason provided by the user for the access request

type

Type of access request event

resource_url

URL of the Twingate resource being requested

resource_name

Display name of the Twingate resource

user_name

Display name of the user making the request

request_id

Unique ID of the access request

request_url

Admin Console URL for this request (used in buttons)

 5.       Save Click

6.       Webhook URL that appears — you will paste this into Twingate in Step 4

Add a 'Send a Message' Step 

7.       "Send a message to a channel "Click "Add Step" →

8.       Select a channel, choose your admin channel (e.g. #twingate-access-requests) In

9.       "Insert a variable" (bottom-right) to insert your variables In the message editor, click

Build your message using the template below:

🚨 A new access request has come in from  {user_name} !

{Time when workflow started}

 

• version:        {version}

• type:           {type}

• request_id:     {request_id}

• request_url:    {request_url}

• user_url:       {user_url}

• resource_name:  {resource_name}

• reason:         {reason}

• requested_at:   {requested_at}

10.   Save to save this step: Click 

Add Approve & Reject Buttons 

Still inside the message step, add interactive buttons so admins can act directly from Slack.

Button

Label

Color

Link (Open link behavior)

✅ Approve

Approve

Green

{request_url}&access_request_approve=true

❌ Reject

Reject

Red

{request_url}&access_request_approve=false

💡  How the buttons work

The {request_url} variable is populated by Twingate with a direct link to that specific

access request in your Admin Console. The query string appended to it (&access_request_approve=true)

tells the Admin Console whether the admin clicked Approve or Reject.

11.   "Add Another Button" to add the Reject button Click

12.   Done when both buttons are configured Click

 Publish the Workflow 

13.   Publish (top-right of Workflow Builder) Click

14.   Active Confirm the workflow status shows

15.   Webhook URL ready — you will paste it into Twingate next Keep the

Configure Twingate to Send Notifications 

16.   Twingate Admin Console at https://<your-network>.twingate.com Log in to your

17.   Settings → Notifications (or Integrations) Go to

18.   Add Notification → select Webhook Click

19.   Webhook URL from Step 2 Paste the

20.   Content-Type to application/json Set

Twingate will send this exact JSON payload — ensure these keys match your Workflow Builder variables:

{

  "user_url":       "Example text",

  "version":        "Example text",

  "requested_at":   "Example text",

  "reason":         "Example text",

  "type":           "Example text",

  "resource_url":   "Example text",

  "resource_name":  "Example text",

  "user_name":      "Example text",

  "request_id":     "Example text",

  "request_url":    "Example text"

}

21.   Save in Twingate: Click

Test the Integration

22.   Test Notification In Twingate Notifications settings, click

23.   Check your admin Slack channel — the message with Approve/Reject buttons should appear within 30 seconds

24.   Verify all variables display correctly in the message

🧪  Manual Test via cURL (if Twingate test button unavailable)

curl -X POST \

  -H "Content-Type: application/json" \

  -d '{

    "user_url": "https://example.twingate.com/users/abc",

    "version": "1",

    "requested_at": "2026-06-06T10:00:00Z",

    "reason": "Need access for project",

    "type": "access_request",

    "resource_url": "https://example.twingate.com/resources/xyz",

    "resource_name": "Internal Dashboard",

    "user_name": "John Smith",

    "request_id": "req_12345",

    "request_url": "https://example.twingate.com/requests/req_12345"

  }' \

  YOUR_WORKFLOW_BUILDER_WEBHOOK_URL

Expected response: HTTP 200 OK

Troubleshooting

⚠️  Invalid Payload Error

Cause:  Variable name mismatch between Workflow Builder and Twingate JSON keys

Fix:    Open Workflow Builder → edit the webhook trigger → verify all variable names

        match the JSON keys exactly (case-sensitive). E.g. user_name ≠ user_Name

❓  No Message Appearing in Slack

1.  Confirm the workflow is Published (not in Draft state)

2.  Verify the full webhook URL is correctly pasted in Twingate (not truncated)

3.  Ensure the bot has access to the channel — invite it: /invite @Workflow Builder

4.  Check Workflow Builder run history: open workflow → click Activity

✅  Quick Checklist

□  Workflow Builder workflow created with 'From a webhook' trigger

□  All 10 variables added with exact spelling and lowercase names

□  Workflow is Published (Active status)

□  Webhook URL copied and pasted into Twingate Notifications

□  Content-Type set to application/json in Twingate

□  Message template built using Insert a Variable

□  Approve button link: {request_url}&access_request_approve=true

□  Reject button link:  {request_url}&access_request_approve=false

□  Test notification sent and message appears in Slack channel

 FAQ

1) How do I integrate Twingate access requests with Slack?

Create a Slack Workflow Builder workflow using a webhook trigger, map Twingate JSON variables, and configure Twingate notifications to send requests to the Slack webhook URL.

2) Can administrators approve Twingate access requests directly from Slack?

Yes. Slack messages can include Approve and Reject buttons that open the corresponding access request directly in the Twingate Admin Console.

3) Why am I getting an "Invalid Payload" error in Slack Workflow Builder?

The most common cause is a mismatch between Slack Workflow Builder variable names and the JSON keys sent by Twingate. Variable names must match exactly, including capitalization.

4) What Slack plan is required for Twingate Workflow Builder integrations?

Slack Workflow Builder webhook triggers require a Slack Pro, Business+, or Enterprise Grid subscription. The feature is not available on the Slack Free plan.

5) How do I troubleshoot missing Twingate notifications in Slack?

Verify the workflow is published, confirm the webhook URL is correctly configured in Twingate, ensure the Workflow Builder bot has channel access, and review workflow activity logs.

Was this article helpful?