Triggers define when workflows start executing. Choose from event-based,
scheduled, manual, or webhook triggers to automate your practice.

Trigger Types
| Type | Description | Example |
|---|
| Event | Fires when something happens | Appointment booked |
| Schedule | Fires at specific times | Daily at 9am |
| Manual | User initiates | Button click |
| Webhook | External system calls | Xero invoice paid |
| Invoice Event | Invoice lifecycle events | Invoice overdue, payment received |
| Client Event | Client-specific events | Client created, risk flagged |
| Form Event | Form submitted, started, or expired | Intake form completed |
| Feedback Event | Feedback ticket events | Feedback submitted, resolved |
| Email Event | Inbound email received | Enquiry email arrives |
| Signal Event | Generic inbound signal | External system signal |
Event Triggers
Event triggers fire automatically when specific actions occur in Praxi.
Client Events
| Event | Fires When | Data Available |
|---|
| Client created | New client added | Client details |
| Client updated | Client info changed | Old/new values |
| Client archived | Client archived | Client ID, reason |
| Client risk flagged | Risk indicator added | Risk level, type |
| Client birthday | Client's birthday | Client details |
| Client inactive 30d | No activity for 30 days | Client ID |
| Client inactive 90d | No activity for 90 days | Client ID |
Intake & Pipeline Events
| Event | Fires When | Data Available |
|---|
| Intake created | A new intake/enquiry arrives | Intake details |
| Intake accepted | An intake is accepted | Intake details |
| Intake declined | An intake is declined | Reason |
| Intake waitlisted | An intake is moved to the waitlist | Intake details |
| Intake SLA approaching | An intake nears its response deadline | Deadline, urgency |
| Intake SLA breached | An intake misses its response deadline | Deadline, urgency |
| Intake completeness updated | Required intake information changes | Completeness state |
| Pipeline stage changed | A client moves between pipeline stages | Old/new stage |
| Pipeline gate failed | A stage-gate requirement fails | Gate details |
| Pipeline auto-advanced | A client auto-advances a stage | Old/new stage |
Appointment Events
| Event | Fires When | Data Available |
|---|
| Appointment created | Appointment booked | Full appointment |
| Appointment updated | Appointment changed | Old/new values |
| Appointment cancelled | Appointment cancelled | Reason, who |
| Appointment arrived | Client checks in | Check-in time |
| Appointment completed | Session ends | Outcome |
| Appointment no-show | Client didn't attend | Marked time |
| Appointment reminder (24h) | 24 hours before session | Appointment data |
| Appointment reminder (1h) | 1 hour before session | Appointment data |
| Appointment overdue | Session past due | Appointment data |
| Appointment series started | First in a recurring series | Series details |
| Appointment series completed | Last in a recurring series | Series details |
| Telehealth started | Video session begins | Session details |
| Telehealth ended | Video session concludes | Session details |
Clinical Events
| Event | Fires When | Data Available |
|---|
| Note created | Note started | Note ID, client |
| Note signed | Note finalised | Signer, timestamp |
| Note amended | Addendum added to signed note | Amendment details |
| Assessment completed | Assessment finished | Scores, flags |
| Assessment scored | Assessment scoring calculated | Score details |
| Assessment sent | Assessment sent to client | Assessment details |
| Treatment plan created | New treatment plan | Plan details |
| Treatment plan updated | Plan modified | Old/new values |
| Treatment plan review due | Scheduled review approaching | Plan, due date |
| Goal created | New treatment goal added | Goal details |
| Goal completed | Goal marked as achieved | Goal, outcome |
| Goal progress updated | Progress recorded on goal | Progress data |
| Diagnosis added | New diagnosis recorded | Diagnosis details |
| High risk assessment | High risk identified | Risk details |
Billing Events
| Event | Fires When | Data Available |
|---|
| Invoice created | Invoice generated | Invoice details |
| Invoice sent | Invoice emailed | Send timestamp |
| Invoice paid | Payment received | Payment details |
| Invoice overdue (7 days) | 7 days past due | Days overdue |
| Invoice overdue (30 days) | 30 days past due | Days overdue |
| Payment received | Any payment recorded | Payment details |
| Payment refunded | Refund processed | Refund details |
| Bulk billing submitted | Medicare bulk bill lodged | Claim details |
| Bulk billing paid | Bulk bill payment received | Payment details |
| Medicare claim submitted | MCOL claim lodged | Claim details |
| Medicare claim approved | MCOL claim approved | Approval details |
| Medicare claim paid | MCOL claim payment landed | Payment details |
| Medicare claim rejected | MCOL claim rejected | Rejection reason |
| DVA claim submitted | DVA claim lodged | Claim details |
| DVA claim approved | DVA claim approved | Approval details |
| DVA claim rejected | DVA claim rejected | Rejection reason |
Medicare and DVA claim triggers fire once MCOL claiming is active for your
practice (Praxi's Services Australia certification is in progress).
Team Events
| Event | Fires When | Data Available |
|---|
| Credential expiring | Approaching expiry date | Credential type |
| Credential expired | Credential has expired | Credential type |
| Leave requested | Leave request created | Leave details |
MHCP Events
| Event | Fires When | Data Available |
|---|
| MHCP session claimed | Session claimed against plan | Session count |
| MHCP limit approaching | Nearing session limit | Sessions left |
| MHCP limit reached | All sessions used | Plan details |
| MHCP plan created | New Mental Health Care Plan | Plan details |
| MHCP plan expired | Plan has expired | Plan details |
Other Events
Praxi supports many additional trigger events across other areas:
| Category | Events |
|---|
| Outcome Measures | Improving, worsening, stable, reassessment due |
| Consent | Consent given, revoked, expired |
| Waitlist | Added to waitlist, contacted, converted to appointment |
| Forms | Form submitted, started, expired |
| Files | Uploaded, tagged, shared, retention expiring |
| Tasks | Task created, task completed |
| Transcription | Started, completed, failed, note created, refined |
| Packages | Purchased, expiring, expired, completed, transferred |
| Vouchers | Purchased, redeemed |
| Feedback | Submitted, stage changed, blocking submitted, resolved |
| Group Sessions | Scheduled, completed, cancelled |
Configuring Event Triggers
- Add a Trigger node to your workflow
- Select Event trigger type
- Choose the event category
- Select specific event
- Optionally add filters

Event Filters
Filter which events trigger the workflow:
| Filter | Example | Use Case |
|---|
| Client type | New clients only | Welcome workflows |
| Appointment type | Initial consults | Intake automation |
| Practitioner | Specific staff | Individual workflows |
| Location | Melbourne office | Location-specific |
| Funding source | NDIS clients | Funding workflows |
Event: appointment.created
Filters:
- appointment_type = "Initial Consultation"
- client.is_new = true
Schedule Triggers
Schedule triggers run workflows at specific times.
Schedule Types
| Type | Description | Example |
|---|
| Daily | Once per day | Daily report |
| Weekly | Specific day(s) | Monday reminders |
| Monthly | Specific date(s) | Month-end billing |
| Custom (Cron) | Complex schedules | Every 2nd Tuesday |
Common Schedules
| Schedule | Cron Expression | Use Case |
|---|
| Daily 9am | 0 9 * * * | Morning reports |
| Weekdays 8am | 0 8 * * 1-5 | Business hours |
| Monday 9am | 0 9 * * 1 | Weekly review |
| 1st of month | 0 9 1 * * | Monthly billing |
| Last Friday 5pm | 0 17 * * 5L | End of week |
Configuring Schedule Triggers
- Add a Trigger node
- Select Schedule trigger type
- Choose frequency (daily, weekly, monthly, custom)
- Set time and timezone
- Save configuration
Schedule Options
| Option | Description |
|---|
| Timezone | Your practice's timezone (defaults to Australia/Sydney) |
All schedules run in your practice's configured timezone. Daylight saving is
handled automatically.
Manual Triggers
Manual triggers require a user to start the workflow.
Use Cases
| Use Case | Example |
|---|
| On-demand tasks | Generate report now |
| User-initiated | Send bulk message |
| Testing | Test workflow before automating |
| Exception handling | Run manually when auto-trigger missed |
Where Manual Triggers Appear
| Location | Access |
|---|
| Workflow page | Workflows (Practice sidebar) |
Configuring Manual Triggers
- Add a Trigger node
- Select Manual trigger type
- Define input parameters (optional)
- Configure who can run it
- Set where it appears
Manual triggers can request information:
| Parameter Type | Example |
|---|
| Text | Reason for action |
| Select | Choose priority |
| Date | Schedule for date |
| Checkbox | Confirm action |
Manual Trigger: "Send Bulk Message"
Inputs:
- message_template (select)
- custom_note (text, optional)
- include_inactive (checkbox)
Webhook Triggers
Webhook triggers let external systems start workflows.
Use Cases
| External System | Trigger Use Case |
|---|
| Xero | Invoice paid notification |
| Stripe | Payment success/failure |
| Online booking | New booking received |
| Form tool | Form submission |
| Zapier | Any connected app |
Setting Up Webhooks
- Add a Trigger node
- Select Webhook trigger type
- Copy the generated webhook URL
- Configure the external system to call this URL
- Map incoming data to workflow variables
Webhook Security
| Security Feature | Description |
|---|
| HMAC-SHA256 signature | Verifies request authenticity (enabled by default) |
| IP allowlist | Only accept requests from known IP addresses |
| Allowed methods | Restrict to specific HTTP methods (GET, POST, PUT) |
| HTTPS only | All webhook URLs use encrypted transmission |
| Rate limiting | Prevents abuse from excessive requests |
By default, all webhook triggers require HMAC-SHA256 signature validation. Only
disable this for trusted internal systems where signature verification is not
possible.
Webhook Payload
Expected JSON format:
{
"event": "custom.event.name",
"timestamp": "2024-01-15T14:30:00Z",
"data": {
"client_id": "abc123",
"amount": 150.0,
"custom_field": "value"
}
}
Testing Webhooks
- Go to workflow settings
- Click Test Webhook
- Send sample payload
- Verify workflow executes correctly
- Review execution log
Trigger Data
Available Variables
Each trigger type provides data to subsequent nodes:
| Trigger Type | Variables Available |
|---|
| Event | Event data, entity details |
| Schedule | Run time, schedule info |
| Manual | User inputs, runner info |
| Webhook | Full payload, headers |
Accessing Trigger Data
In subsequent nodes, reference trigger data:
{{trigger.data.client.first_name}}
{{trigger.data.appointment.datetime}}
{{trigger.timestamp}}
{{trigger.user.name}}
One Trigger Per Workflow
Each workflow has exactly one trigger node. If you need the same logic to run
from different starting points, clone the workflow and change the trigger on the
copy:
| Scenario | Solution |
|---|
| Event + manual fallback | Clone workflow, set one as event, one as manual |
| Schedule + webhook | Clone workflow with each trigger type |
| Event + catch-up schedule | Clone with event trigger and schedule trigger |
Best Practices
Trigger Selection
- Event triggers - Real-time automation
- Schedule triggers - Batch processing, reports
- Manual triggers - Testing, exceptions
- Webhooks - External integrations
- Use specific events - Avoid broad triggers
- Add filters - Reduce unnecessary executions
- Test thoroughly - Before activating
- Monitor execution counts - Track usage
Security
- Rotate webhook tokens - Periodically change
- Use IP allowlists - For known sources
- Validate payloads - Check data format
- Log all executions - Audit trail
Troubleshooting
Trigger Not Firing
- Verify workflow is active
- Check event type matches exactly
- Review filter conditions
- Check permissions
- Review execution history
Schedule Not Running
- Verify timezone is correct
- Check schedule syntax
- Confirm not paused on holidays
- Review server status
- Check execution history
Webhook Not Working
- Test URL is accessible
- Verify secret token
- Check IP not blocked
- Validate payload format
- Review webhook logs