How to Onboard New Deputy Employees from a Webhook
Receive a new-hire HTTP POST, create the employee in Deputy, open a Monday.com onboarding item, and post a Slack welcome, all in one Spojit workflow.
What This Integration Does
When a new person is hired, the same handful of tasks happen every time: add them to your scheduling and time-tracking system, create an onboarding checklist for HR, and let the team know who is starting. This Spojit workflow stitches those tasks together so a single new-hire signal from your HR system or a custom hire form does all three at once. You stop copying names between tabs, and nobody is forgotten because a manager was out of the office.
The workflow runs on a Webhook trigger: an external system sends an HTTP POST with the new hire's details, Spojit verifies the request, and the parsed JSON body becomes your starting data. Spojit then creates the employee record in Deputy, opens an onboarding item on a Monday.com board, and posts a welcome message to a Slack channel. The webhook returns 202 with an executionId immediately, so the caller does not wait for the downstream steps. Each POST runs independently; re-sending the same hire creates a second set of records unless you turn on the trigger's event-id dedup, so send each new hire once.
Prerequisites
- A Deputy connection with permission to create employee records.
- A Monday.com connection and the board ID of your onboarding board, plus the IDs of any columns you want to populate (status, start date, owner).
- A Slack connection and the channel ID of the channel where welcomes should post.
- A signing connection for the Webhook trigger (scheme
SpojitorCustom) so incoming POSTs can be verified by HMAC. See the article on setting up a webhook trigger linked below. - Agreement on the exact JSON your HR system or hire form will send (field names for first name, last name, email, role, and start date).
Step 1: Add the Webhook trigger
Start a new workflow and set the Trigger node type to Webhook. Pick the signing connection that matches what your sender will use, then copy the generated workflow URL. The trigger output is the parsed JSON body, available as {{ input }}. Design your sender to post a flat payload like this:
{
"firstName": "Ada",
"lastName": "Lovelace",
"email": "ada@example.com",
"mobile": "+61 400 000 000",
"role": "Barista",
"startDate": "2026-07-01"
}
You will reference these as {{ input.firstName }}, {{ input.email }}, and so on throughout the workflow.
Step 2: Create the employee in Deputy
Add a Connector node in Direct mode, choose the Deputy connector, and select the create-employee tool. This tool takes a single employee object whose fields map to Deputy's employee record (FirstName, LastName, Email, Mobile, and so on). Map the trigger values into it:
{
"FirstName": "{{ input.firstName }}",
"LastName": "{{ input.lastName }}",
"Email": "{{ input.email }}",
"Mobile": "{{ input.mobile }}"
}
Set the node's Output Variable to something like employee so later steps can read the new record, for example its returned Id as {{ employee.Id }}.
Step 3: Open an onboarding item in Monday.com
Add another Connector node in Direct mode, choose the Monday.com connector, and select the create-item tool. Set boardId to your onboarding board's ID and name to the new hire's full name:
Onboard: {{ input.firstName }} {{ input.lastName }}
Optionally set groupId to drop the item into a specific group (for example a "Starting soon" group). To fill columns such as start date, role, or status, use columnValues, an object keyed by your column IDs. Replace the keys below with your real column IDs:
{
"date_col": "{{ input.startDate }}",
"text_role": "{{ input.role }}",
"status": { "label": "Onboarding" }
}
Name the Output Variable onboardingItem.
Step 4: Post a Slack welcome
Add a third Connector node in Direct mode, choose the Slack connector, and select the send-message tool. Set channel to your welcome channel's ID and text to a friendly message that pulls from the upstream data:
Welcome {{ input.firstName }} {{ input.lastName }} to the team!
Role: {{ input.role }} | Starting: {{ input.startDate }}
Onboarding checklist is live in Monday.
Connect the nodes in order so Deputy runs first, then Monday.com, then Slack. If you prefer to record the Monday.com item link in Slack, reference the item ID from {{ onboardingItem }} in the message text.
Step 5: Add a Slack update with the Deputy record (optional)
If you want the welcome to confirm the Deputy record was created, add a Condition node before the Slack step that checks whether {{ employee.Id }} exists, and only post the welcome on the true branch. On the false branch, add a Send Email node to alert your HR address that the Deputy step did not return a record, so a person can follow up. The Send Email node sends from Spojit's built-in mail service; set Recipients to your HR inbox and reference upstream values like {{ input.email }} in the body. External recipients must be on your org allowlist under Settings > General > Email recipients.
Step 6: Reuse the onboarding logic as a subworkflow (optional)
If several hire sources (a form, your HRIS, a recruiter spreadsheet importer) all need the same Deputy, Monday.com, and Slack steps, move steps 2 to 4 into their own workflow with a Manual trigger and call it from each source using a Subworkflow node. In the parent, set the Subworkflow node's Workflow to your onboarding workflow and pass the hire details as Input, for example {{ input }}. The parent pauses while the child runs through its own nodes, then the child's final output returns to the parent. Children appear as separate execution-history entries, and any edit to the child takes effect immediately for every parent that calls it. Keep nesting shallow.
Tips
- Keep the three connector calls in Direct mode since each is a single, predictable tool call. Direct mode is deterministic and costs no AI credits.
- If your HR system can attach a stable hire ID to each event, turn on the Webhook trigger's opt-in dedup via an event-id header so accidental re-sends do not create duplicate Deputy employees.
- Ask Miraxa, the intelligent layer across your automation, to scaffold the canvas: "Build a workflow with a Webhook trigger that creates a Deputy employee, then a Monday.com item, then a Slack message." Then fine-tune each node's fields in the properties panel.
- Store the Monday.com board ID and Slack channel ID where they are easy to confirm, since wrong IDs are the most common cause of items or messages landing in the wrong place.
Common Pitfalls
- Field name drift. Deputy expects PascalCase keys (
FirstName,Email); your webhook payload may use camelCase. Map explicitly in theemployeeobject rather than passing{{ input }}straight through. - Column IDs vs column titles. Monday.com's
columnValuesare keyed by column ID, not the human-readable column title. Open your board's column settings to find the real IDs, or the values will be silently ignored. - Webhook replays. The trigger returns
202and runs asynchronously, so a sender that retries on timeout can fire the workflow twice. Use the event-id dedup or make your sender fire once per hire. - Slack channel access. The Slack connection must be able to post to the target channel. Private channels require the connection to be a member first, or
send-messagewill fail.
Testing
Before pointing your live HR system at the workflow, send a single test POST to the workflow URL with a clearly fake hire (for example "Test Newhire"). Confirm the run appears in execution history, then check that the employee shows up in Deputy, the item appears on the correct Monday.com board and group, and the welcome lands in the right Slack channel. Inspect each step's output in the run detail to verify your variable mappings resolved. Once one clean pass works end to end, delete the test records and switch your real hire source over.