All Integrations

Webhooks Integration

Register your own HTTPS endpoint and Standard Time® will POST a signed, real-time notification the instant a project, task, time log, expense, or any of eight other record types is created, updated, or deleted. No Zapier account, no BI tool, no third-party platform required.


How Native Webhooks Work

Native webhooks are a direct, one-way notification feed: the moment a record changes in Standard Time®, the server sends an HTTPS POST straight to a URL you provide — no middleman platform in between. This is intentionally simpler than the Zapier integration: webhooks only push notifications out of Standard Time®. If you need Standard Time® to create or update records in response to something happening elsewhere, use Zapier instead.

Diagram showing Standard Time sending a signed HTTPS POST directly to your endpoint, which can forward into Power Automate, Webhooks by Zapier, Make, n8n, Atlassian Automation, or your own server
Standard Time® → one signed HTTPS POST → any endpoint you control

Every subscription you register is scoped to one event type — for example project.created — and one target URL. You can register as many subscriptions as you need, mixing event types and destinations freely.


Supported Event Types

All 11 record types available elsewhere in the Standard Time® API — the same set exposed through OData and Zapier — are available here, each with three events: created, updated, and deleted. That's 33 event types in total. The deleted event is unique to native webhooks — Zapier has no equivalent, since a deleted record can't be queried for field data.

Grid of all 11 Standard Time record types, each supporting created, updated, and deleted webhook events, for 33 total event types
Projects, Tasks, Time Logs, Subprojects, Expenses, Clients, Users, Inventory, Categories, Invoices, and Billing Rates — each with created / updated / deleted events

A deleted payload is intentionally minimal, since the record no longer exists to query:

{ "event": "project.deleted", "id": "41984ad9-9efd-4af2-9212-037a49a736fc" }

created and updated payloads carry the full field set for that record type — the same column names used by the OData feed (e.g. ProjectID, ProjectName, ClientID for projects).


Security: HMAC Signing

When a subscription has a secret, Standard Time® signs the request body with HMAC-SHA256 and adds it as a header, using the same convention popularized by GitHub and Stripe:

X-ST-Webhook-Signature: sha256=<lowercase hex digest>
Diagram showing a webhook POST request broken into headers (Content-Type, X-ST-Webhook-Signature) and a JSON body, with a note on how to verify the signature
Recompute the HMAC over the raw request body using your secret, then compare it to the signature header

Verification is the same pattern in any language — recompute the HMAC over the exact raw request body using your secret, then compare to the header value:

// Node.js
const crypto = require('crypto');
const expected = 'sha256=' + crypto.createHmac('sha256', secret)
    .update(rawBody, 'utf8')
    .digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(receivedHeader))) {
    // reject — signature mismatch
}
# PowerShell
$key  = [System.Text.Encoding]::UTF8.GetBytes($secret)
$msg  = [System.Text.Encoding]::UTF8.GetBytes($rawBody)
$hmac = New-Object System.Security.Cryptography.HMACSHA256 @(,$key)
$hash = $hmac.ComputeHash($msg)
$expected = "sha256=" + (($hash | ForEach-Object { $_.ToString("x2") }) -join "")
Unsigned subscriptions are allowed: If you leave the secret blank, the X-ST-Webhook-Signature header is simply omitted. Signing is optional but strongly recommended for any endpoint reachable from the public internet.

Create a Webhook Subscription

  1. Open the Tools ribbon → Integration dropdown → Webhooks API.
    In the top ribbon, click the Tools tab. In the Integration panel, click the Integration dropdown and choose Webhooks API. Standard Time Tools ribbon with the Integration dropdown open, showing Google Integration, OData API Key, Webhooks API, and Zapier API Key menu items
  2. Fill in the event type, target URL, and secret.
    Choose an event type (e.g. project.created) from the dropdown, paste your endpoint's URL into Target URL, and leave Auto-generate checked for the secret unless you already have one in mind. Click Add Subscription. Webhook Subscriptions dialog showing the Add Subscription form fields and a list of three active subscriptions — project.created, project.updated, and project.deleted — each with Test and Delete buttons
  3. Copy the secret immediately — it is shown only once.
    A panel appears with your HMAC secret. Copy it into your endpoint's configuration now; Standard Time® never displays it again. The subscriptions list shows *** in place of the secret from then on.
  4. Use the Test button any time to fire a sample payload.
    Each row in the list has a Test button that POSTs a representative sample record to your endpoint immediately, without waiting for a real record change — useful for confirming your endpoint is reachable and your signature verification code is correct. Delete removes a subscription; the Active column shows whether it's currently live.

Smoke-Test with webhook.site

webhook.site is a free tool that hands you a unique URL and logs every incoming request — headers and body — with no signup or local setup. It's the fastest way to confirm a subscription is working before pointing it at a real endpoint.

Want the full walkthrough? This section covers the basics. For a complete step-by-step guide — including verifying the HMAC signature, testing the delete event, and a troubleshooting table — see Smoke-Test Your Webhooks Subscriptions.
  1. Open webhook.site and copy "Your unique URL."
    Go to webhook.site in a new tab. Copy the URL shown under Your unique URL — it looks like https://webhook.site/d3cb1088-6609-.... webhook.site landing page showing Your unique URL, unique email address, and unique DNS name, with the request list empty and Waiting for the first request
  2. Register a project.created subscription pointing at that URL.
    Back in Standard Time®'s Webhook Subscriptions dialog, select event type project.created, paste the webhook.site URL, keep Auto-generate checked, and click Add Subscription. Copy the secret when it appears.
  3. Save a new project in Standard Time®.
    Any name works. Switch back to the webhook.site tab within a few seconds — a new entry should appear in the left-hand request list.
  4. Inspect the request.
    Click the new entry. The right-hand pane shows the request headers — including x-st-webhook-signature — and the raw JSON body, which should contain an "event" field matching your subscription. The example below shows what a delivered project.updated event looks like on webhook.site. webhook.site request detail pane showing a POST request for a project.updated event, with a x-st-webhook-signature header and a JSON body containing event and id fields
  5. Click Test in the Standard Time® dialog to fire a sample payload.
    A second request should appear on webhook.site immediately, using sample data rather than a real record.
  6. Delete the project, then confirm the deleted payload.
    A third request should arrive with a minimal body: { "event": "project.deleted", "id": "..." }.
  7. Delete the subscription and confirm the feed stops.
    Remove the subscription from the dialog, save another project, and confirm no further requests reach webhook.site. This confirms the subscription — not something else — was the source of the traffic.
Copy the right URL: Use the URL shown under Your unique URL on the page, not the browser's address bar once you've clicked into a request — the address bar shows a #!/view/... route used by webhook.site's own single-page app, which returns a 404 if used as a delivery target.

Connecting to Popular Apps

Most enterprise automation platforms can catch an arbitrary JSON webhook and route it into their own workflows — posting to a chat channel, creating a ticket, or updating a spreadsheet. Each one gives you a URL to paste into the Target URL field in Standard Time®. Because our payload is plain JSON with no fixed schema requirements on the receiving end, any generic "catch webhook" trigger works.

Microsoft Power Automate

Best route into Microsoft Teams, SharePoint, Outlook, or Dynamics.

  1. Create a new flow and choose the trigger When an HTTP request is received.
  2. Save the flow once — Power Automate generates the HTTP POST URL at that point.
  3. Copy the generated URL into Standard Time®'s Target URL field.
  4. Add a Parse JSON action to break the payload into fields, then chain any action — post to a Teams channel, add a SharePoint list item, send an email.

Webhooks by Zapier

An alternative to the dedicated Standard Time® Zapier app when you want the raw JSON payload instead of Zapier's structured trigger fields.

  1. Create a new Zap and search for the built-in Webhooks by Zapier app as the trigger.
  2. Choose the event Catch Hook, then continue — Zapier generates a custom URL.
  3. Copy that URL into Standard Time®'s Target URL field and register the subscription.
  4. Fire the Test button in Standard Time® once so Zapier can capture a sample payload for field mapping, then build your action step.

Make (formerly Integromat)

  1. Create a new scenario and add a Webhooks module as the first step.
  2. Choose Custom webhook, then Add to create one — Make generates a unique URL.
  3. Copy the URL into Standard Time®'s Target URL field.
  4. Run the scenario once in "listen" mode and fire the Test button in Standard Time® so Make can learn the payload structure for use in later modules.

n8n

  1. Add a Webhook trigger node to a new workflow.
  2. Set the HTTP method to POST and copy the Production URL (the Test URL only works while the editor is open and listening).
  3. Activate the workflow so the production URL stays live.
  4. Paste the production URL into Standard Time®'s Target URL field.

Atlassian Automation for Jira

Useful for turning a Standard Time® event directly into a Jira issue update.

  1. In Jira, open Project settings → Automation (or global Automation for cross-project rules) and create a new rule.
  2. Choose the trigger Incoming webhook — Jira generates a unique URL and a secret for the rule.
  3. Copy the generated URL into Standard Time®'s Target URL field.
  4. Use Jira's smart values (e.g. {{webhookData.ProjectName}}) in the rule's actions to create or transition issues based on the payload.

Slack (Workflow Builder)

Slack's classic Incoming Webhooks expect a fixed {"text": "..."} shape, so they don't accept our payload directly. Workflow Builder's webhook trigger is the better fit on paid Slack plans that support it.

  1. In Slack, open Tools → Workflow Builder and create a new workflow.
  2. Choose Webhook as the trigger and define the variables you expect (e.g. event, ProjectName) matching the JSON field names in the payload.
  3. Copy the generated webhook URL into Standard Time®'s Target URL field.
  4. Add a step to post a message to a channel using the captured variables.

Beyond Native Webhooks

Native webhooks are the right tool for a fast, one-way event feed into infrastructure you already control. Two other Standard Time® integrations cover different needs:

Need two-way automation? The Zapier integration lets other apps create or update records back in Standard Time® — something native webhooks can't do — plus dynamic dropdowns for picking Projects, Clients, and other records by name inside Zapier's UI.
Building dashboards or analyzing history? The OData & Power BI integration gives Power BI, Excel, or Tableau broad read access to every entity for reporting across thousands of records — a better fit than reacting to individual events.
Related guides:
Smoke-Test Your Webhooks Subscriptions — a full step-by-step walkthrough: register a subscription, verify delivery on webhook.site, check the HMAC signature, and test the delete event.
OData & Power BI Integration — pull live Standard Time® data into BI dashboards for reporting instead of one-at-a-time events.
Zapier Integration — need Standard Time® to receive data from other apps too, not just send it?
QuickBooks Online IntegrationAll Integrations
Back to Integrations

Ready to Wire Up Real-Time Notifications?

Start a free 30-day trial and register your first webhook subscription in minutes.

View Pricing Contact Us