How to Use Custom Email Templates and Conditional Triggers in Webhooks

Create a Webhook with a Custom Email Template

Webhooks send an email notification when something happens on a form, such as a worker creating, submitting, or completing it. By default, these emails use a generic message like "A worker submitted a form."

With a custom email template, you can write your own subject and message, and insert placeholders that automatically pull in real details: the worker's name, the site, the form title, and even answers from specific fields on the form. This turns generic notifications into clear, distinct emails your team can act on right away.

This article covers webhooks for Forms delivered by Email. Webhooks can also be set up for Incidents and Certificates, and can be delivered to a URL instead of an email. Those options aren't covered here.

Salus Web App › Company Settings › Webhooks

Before You Start

  • This feature is available in the Salus web app only. There is no mobile app equivalent.
  • Only Full Access (Admin) users can access Company Settings and manage webhooks.
If you do not see Company Settings, confirm you have Full Access permissions.

Step 1: Open the Create Webhook Form

  1. Click your name in the top-right corner.
  2. Select Company Settings.
  3. Click Webhooks from the top menu.
  4. Click Create Webhook.

Step 2: Choose What Triggers the Webhook

  1. Set Entity to Form.
  2. Set Event to the point you want the email sent:
    • On Create: sent when a worker starts or submits a brand-new form.
    • On Pending: sent when a form is submitted but still needs review or approval.
    • On Completed: sent when the form has finished all required steps.
  3. Set Type to either Form or Form Type, then make your selection in the field below it:
    • Form: choose one specific form template (for example, "FLHA/Pre-Job Tailgate Form"). This unlocks placeholders for that form's individual fields later in setup.
    • Form Type: choose a category (for example, Permit, Training, Safety). The webhook fires for every form in that category, but individual field placeholders aren't available, only general form details like title, status, and site.

Note: Form Type categories (Onboarding, Anonymous, Permit, Training, Safety, Job Sheets, and others) are the same across all Salus companies and can't be renamed or changed.

Note: The Anonymous category only appears in the Form Type list when Event is set to On Create. Anonymous forms don't support On Pending or On Completed, since no record exists in Salus until the form is finished.

Step 3: Add Conditions (Optional)

Conditions let you limit the webhook to specific situations, instead of firing every time the event happens.

  1. Click Add Condition.
  2. Choose a Field from the form, then an Operator and a Value. The Operator and Value options change depending on the field type you pick.
  3. To add another condition, click Add Condition again. A Combine setting appears once you have two or more conditions:
    • Match all: every condition must be true (AND).
    • Match any: the webhook fires if just one condition is true (OR).

Step 4: Set Up Recipients

  1. Set Send By to Email.
  2. Set Send To:
    • Custom Email or URL: type one or more email addresses manually. Separate multiple addresses with a comma (for example, safety@yourcompany.com, manager@yourcompany.com).
    • Users: pick one or more specific people from your company's user list.
    • Roles: pick a role, and the notification goes to everyone currently assigned that role.

Step 5: Build Your Custom Email Template

  1. Toggle Use Custom Email Template to ON.
  2. Click into the Subject or Message field, then click any placeholder button to insert it at your cursor. No typing or memorizing the placeholder format is required.
  3. Write the rest of your subject and message in plain language, adding placeholders wherever you want real data to appear.

Tip: Don't edit the text inside a placeholder once it's inserted. Salus won't recognize a placeholder if its spelling is changed.

Webhook Context Placeholders

These placeholders are always available, no matter which Type you chose.

Button LabelPlaceholderInserts
Action{{action}}The event that fired the webhook (created, pending, completed)
Company ID{{company_id}}Your company's ID in Salus
Company Name{{company_name}}Your company's name
Form Instance ID{{form_instance_id}}ID of this specific form submission
Form Template ID{{form_id}}ID of the form template itself
Form Title{{form_title}}The title of the form
Form Status{{form_status}}The form's current status
Form Type{{form_type}}The category the form belongs to
Form Created Date{{form_created_date}}Date the form was created
Form Created Time{{form_created_time}}Time the form was created
Webhook Trigger Date{{hook_trigger_date}}Date this webhook fired
Webhook Trigger Time{{hook_trigger_time}}Time this webhook fired
Form Updated Time{{updated_at}}When the form was last updated
Site ID{{site_id}}ID of the site the form was submitted on
Site Name{{site_name}}Name of the site
Site Job Number{{site_job_number}}Job number tied to the site
ID of Triggering User{{user_id}}ID of the worker who triggered the event
Name of Triggering User{{user_name}}Name of the worker who triggered the event
Link to Form{{view_link}}A clickable link straight to the form

Note: Site ID and ID of Triggering User here refer to the site and worker tied to this specific submission. They're different from a Site Field or User Field answered inside the form itself (see below).

Form Fields Placeholders

When Type is set to Form and a specific template is selected, a second group of placeholder buttons appears: one for each field on that form. These buttons are named after the actual question on the form (for example, "First and last name of Site Lead"), so clicking one inserts that exact answer.

Warning: Form Fields placeholders are only available when Type is set to Form. If Type is set to Form Type, this group won't appear, since the webhook could apply to many different form templates at once.

Supported field types:

  • Boolean Field
  • Date Field
  • Decimal Field
  • Text Field
  • Time Field
  • Toggle Field
  • Asset Field
  • Document Field
  • Selection
  • User Field
  • Site Field
  • Variable Field

Note: More complex, structured field types, such as Matrix or Table fields, currently can't be pulled into a webhook email.

Example Template

Subject

New Form Submitted by {{user_name}} at {{site_name}}

Message

Hello,

A new {{form_title}} has been submitted.

Form Status: {{form_status}}
Completed By: {{user_name}}
Company: {{company_name}}
Site: {{site_name}}
Date: {{form_created_date}}

View the form here:
{{view_link}}

Thank you!

Resulting Email

Subject: New Form Submitted by Andrew Smith at North Project Site

Hello,

A new Daily Safety Inspection has been submitted.

Form Status: Completed
Completed By: Andrew Smith
Company: BuildRight Construction Ltd.
Site: North Project Site
Date: 2025-02-14

View the form here:
https://app.salusworks.io/forms/12345

Thank you!

Step 6: Limit the Webhook to Specific Sites (Optional)

Under Scope, you can narrow which sites this webhook applies to. You can use one of the following, not both:

  • Site Specific: turn this on to pick individual sites. The webhook only fires for forms on those sites.
  • Filter by Site Tags: turn this on to limit the webhook to sites carrying specific tags.

📷 Screenshot Needed

The Scope section showing the Site Specific and Filter by Site Tags toggles.

Step 7: Create the Webhook

  1. Review your Subject and Message. Both are required if Use Custom Email Template is on.
  2. Click Create.

What Happens Next

Your webhook is saved and appears in the Webhooks list. From now on, whenever the Event you selected happens (and any Conditions are met), Salus automatically sends an email to your chosen recipients using your custom subject and message, with placeholders replaced by real data from that submission.

You can go back into the webhook at any time to edit the recipients, template, conditions, or scope.

Frequently Asked Questions

Why isn't the value I entered in a form field showing up in my webhook email?

This depends on how the webhook is set up. If Type is set to Form (a single, specific template), you can pull individual field values, like a location, permit number, or any custom question, directly into the subject or message.

If Type is set to Form Type (covering every form in a category), those field-level placeholders aren't available. Form Type webhooks only support general details like form title, status, and site, not answers from inside the form. If you need specific field values, set the webhook up against a single Form instead.

Are there field types that can't be pulled into a webhook email?

Yes. Simple field types, text, numbers, dates and times, toggles, users, assets, sites, documents, and list or selection fields, can be included as placeholders. More complex, structured field types, such as Matrix or Table fields, currently can't be pulled in this way.

Why did my anonymous form webhook fire later than I expected?

For forms started through an anonymous QR code, no record exists in Salus until the form is actually finished, so On Create fires at the point the form is completed, not when someone first scans the code and starts it. This is different from a regular form, where On Create fires as soon as the form exists on the server, before any review. If you're setting up a webhook for anonymous forms, keep in mind that On Create will behave like a completion notification rather than a start notification.

Why can I only pick "On Create" for my anonymous form webhook?

Anonymous forms currently only support the On Create event. On Pending and On Completed aren't available once Anonymous is selected. You can only set up webhooks for anonymous forms using Type set to Form Type.

Why didn't I get a webhook when a subcontractor submitted a form on my site?

If a subcontractor submits a form on a site that was originally created by a different company, your webhooks and auto-emails won't trigger for that submission. This is expected behavior tied to site ownership, not a bug. Webhooks are scoped to the company that owns the site.

What's the difference between "Match all" and "Match any" for conditions?

Match all requires every condition you've added to be true before the webhook fires. Match any fires the webhook if just one of your conditions is true. This only matters once you've added two or more conditions; with a single condition, both settings behave the same.

Why didn't my webhook fire when a worker submitted a form offline?

Forms created while a device is offline don't trigger a webhook until the device reconnects and the form syncs to the server. Expect a delay in webhook delivery for offline submissions. This is expected, not a malfunction.

Who can create or edit webhooks?

Only Full Access (Admin) users can access Company Settings and manage webhooks. There's no mobile app equivalent, webhook setup is web-only.

Was this article helpful?
0 out of 0 found this helpful