Skip to main content

TimeCampus Event Trigger

The TimeCampus Event trigger starts a workflow when TimeCampus reports something about your time. It is the bridge between TimeCampus' time triggers ("when my focus today is below 40%, nudge me") and anything a workflow can do: post to Slack, block time on a calendar, open a ticket, log a row.

Like every event trigger it runs the workflow's Active version only. Save the workflow, activate it, and the trigger is live within about 15 seconds.

Events​

Pick one Event on the node:

EventFires whenWho it is about
One of my time triggers fired (timecampus.trigger.fired)One of your TimeCampus time triggers fires, on its schedule or when you click Check now on the TimeCampus Triggers page. A time trigger fires at most once per day.You
My day closed (timecampus.time.day_closed)TimeCampus' daily summary closes one of your days (needs the daily summary turned on in TimeCampus).You
My week closed (timecampus.time.week_closed)TimeCampus' weekly digest closes one of your weeks.You
The workspace reached a milestone (timecampus.activation.milestone_reached)The workspace reaches a TimeCampus milestone for the first time, such as its first time entry or first invoice.The workspace

Filters​

For One of my time triggers fired you can narrow which firings start the workflow. Empty filters accept everything.

  • Time Trigger IDs: only these triggers (comma-separated ids, as returned by the timeCampusMyTimeTriggers GraphQL query). Most workflows do not need it: the metric and direction filters are usually enough.
  • Metrics: only triggers on these metrics: tracked hours, focus %, context switches, or longest focus block.
  • Direction: only triggers that fire when the value drops below or rises above the threshold.

For The workspace reached a milestone, Milestones takes milestone keys such as FIRST_PROJECT, FIRST_TIME_ENTRY, FIRST_POMODORO, FIRST_EXPENSE, FIRST_APPROVAL, FIRST_CLIENT_PORTAL_SHARE or FIRST_INVOICE.

Privacy​

  • Events about your time only start your own workflows. A time trigger firing, a closed day and a closed week start workflows that you created, never a colleague's, even in a shared workflow.
  • Their runs are private to you. Other people who can see the workflow do not see these runs or their data.
  • Only numbers and ids reach the workflow. TimeCampus publishes aggregates (hours, ratios, counts, the metric's value and threshold), never window titles, application names, URLs or anything you typed.
  • Workspace boundaries hold. An event of one workspace never starts a workflow in another.
  • Milestone events are about the workspace, so they start the matching workflows of every member.

What a run receives​

The trigger's output ($json in the next node) carries:

FieldEventsMeaning
timeCampusEventallThe event, for example timecampus.trigger.fired
eventIdallA stable id: the same firing or period always has the same id, so it never starts two runs
occurredAtallWhen TimeCampus fired the trigger or closed the period
userIdtrigger, day, weekThe member the event is about (you)
triggerId, firingIdtriggerThe time trigger that fired, and this firing
metrictriggerTRACKED_HOURS, FOCUS_PERCENT, CONTEXT_SWITCHES or LONGEST_FOCUS_MINUTES
comparator, threshold, valuetriggerBELOW or ABOVE, the trigger's threshold and the value that crossed it, in the metric's unit
day, sourcetriggerYour local day (YYYY-MM-DD) and SCHEDULED or MANUAL
periodday, weekThe closed period, plus the day's aggregate figures for a closed day
milestonemilestoneThe milestone key; actorId is who reached it
eventCategory, eventAction, eventSource, eventTimestamp, triggerTimealltimecampus, the event without its prefix, wspace-timecampus, and when it was published and when the run started

For example, a focus trigger firing produces:

{
"timeCampusEvent": "timecampus.trigger.fired",
"triggerId": "4b0e…",
"metric": "FOCUS_PERCENT",
"comparator": "BELOW",
"threshold": 40,
"value": 22.5,
"day": "2026-11-07",
"source": "SCHEDULED"
}

Template: focus dropped, post to Slack and block an hour​

timecampus-focus-dropped.json is a ready-made workflow:

  1. Focus dropped: a TimeCampus Event trigger on One of my time triggers fired, filtered to the Focus % metric and the below direction.
  2. Post to Slack: sends "Focus is at 22.5% today (threshold 40%). Blocking the next hour for deep work." to a channel.
  3. Block an hour: creates a one-hour "Focus block" event on your primary Google Calendar, starting in five minutes.

To use it:

  1. In TimeCampus, install the Time Triggers applet and create a trigger such as Focus % below 40, from 14:00.
  2. Import the template: download the file and run fluidgrids import timecampus-focus-dropped.json, or pass its contents to the importWorkflow GraphQL mutation. It is created as a Draft.
  3. Open it in the builder. On Post to Slack, pick your Slack connection and set the channel. On Block an hour, pick your Google Calendar connection and, if you like, your own time zone.
  4. Optionally put your trigger's id in Time Trigger IDs so only that one trigger starts it.
  5. Save and Activate. Click Check now on the trigger in TimeCampus to try it: if its condition holds and it has not fired today, the workflow runs.

When it does not fire​

  • Is the workflow Active? Drafts never start from events.
  • Did the time trigger fire? A time trigger fires at most once a day, and only when its condition holds. The TimeCampus Triggers page shows its last check, value and firing.
  • Who created the workflow? Events about a member only start that member's own workflows.
  • Check the registration. The platformEventTriggers(workflowKey) GraphQL query lists what each event trigger of a workflow listens to; a TimeCampus Event trigger shows eventCategory: "timecampus" and its subject and filters.
  • Out of runs? Event-started runs count against the workspace's monthly run quota; when it is used up, events start nothing until it resets.

Next steps​