Recued
Menu
← Back to recipes

Log hours

by recued-core v2 53 views

Use “Log hours” in Recued. Record one block of work against an engagement. It uses the connections and settings you choose when you run it.

Complete workflow

Billable Hours 5 pinned recipes

Use Billable Hours in Recued for time tracking, invoicing, freelance, and consulting. It includes 11 built-in actions and 4 ready-to-run workflows. Actions that change data use Recued's approval controls.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Log hours
This recipe

Use “Log hours” in Recued. Record one block of work against an engagement. It uses the connections and settings you choose when you run it.

pack:billable-hourstime-trackingbillablerecords
by recued-core pinned v2

Use “Open an engagement” in Recued. Record a client and the hourly rate you bill them. Keyed on the label, so re-running with the same one converges instead of opening a second engagement at a different rate.

pack:billable-hourstime-trackingbillablerecords
by recued-core pinned v2

Use “Show unbilled hours” in Recued. What you have worked and not yet billed, per task. Hours and entry count come from the store over every matching row; the per-task money breakdown covers the entries fetched, and the card says when those differ.

pack:billable-hourstime-trackingboardrecords
by recued-core pinned v2

Use “Bill a period” in Recued. Group a period's unbilled billable hours by task, stamp each entry with your invoice reference, and produce invoice lines whose amounts add up to the total. Entries already carrying an invoice reference are left alone, so running it twice cannot charge the same hour twice.

pack:billable-hourstime-trackingbillableinvoicing
by recued-core pinned v3
View pack details, dependencies, and permissions →

Logging time

Give the engagement, the date, how many minutes, and what you did.

⛔ Minutes, not hours, and that is deliberate. 1.75 hours stored as a float and multiplied by a rate is how money quietly drifts; 105 minutes is exact. The conversion to money happens once, at the point a figure is stated, and is rounded to two decimals there.

⚠ There is no start/stop timer. This records a block you already know the length of. A stopwatch would need the recipe to run twice with state in between, and a half-open timer is worse than no timer — it looks like tracked time and is not.

⚠ Billable off still records the time. Non-billable work is worth knowing about; it simply never reaches an invoice and is counted separately on the board.

⚠ Nothing here prevents overlapping entries. Two blocks covering the same wall-clock hour are both kept — the pack does not know your calendar, and refusing honest double-entry would be worse than showing it. The board totals what you logged.

How it works 30 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Process (30 steps)
■ engagement_id trim
Trim whitespace from setting engagement id
■ id_present compare
Check if engagement id has data
⚠ id_guard guard
Stop if id present equals
◆ engagement recued-core.billable-hours.engagement.get
Get engagement on billable hours
■ found compare
Check if engagement record id has data
⚠ found_guard guard
Stop if found equals
■ is_active compare
Check if engagement record status equals active
⚠ active_guard guard
Stop if is active equals
■ minutes_whole round
Round setting minutes to 0 decimal places
■ minutes_positive compare
Check if minutes whole is greater than 0
⚠ minutes_guard guard
Stop if minutes positive equals
■ date_in trim
Trim whitespace from setting worked on
■ now_iso date_add
Add 0 seconds to
■ today date_format
Format as a date
■ worked_on default
Apply default
■ date_len string_length
Apply string_length
■ date_ok compare
Check if date len equals 10
⚠ date_guard guard
Stop if date ok equals
■ date_parts split
Split worked on into parts
■ period template
Generate text from a template
■ description trim
Trim whitespace from setting description
■ task_ref trim
Trim whitespace from setting task ref
■ engagement_ref template
Generate text from a template
■ logged_at date_add
Add 0 seconds to
◆ create recued-core.billable-hours.entry.create
Create entry on billable hours
■ hours_decimal math
Calculate: {{step.minutes_whole}} / 60
■ hours_shown round
Round hours decimal to 2 decimal places
■ amount_raw math
Calculate: {{step.minutes_whole}} * {{step.engagement.record.rate_per_hour}} / 60
■ amount round
Round amount raw to 2 decimal places
■ card to_summary
Format results as a summary card
▼
Output
summary card
Settings 6 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

minutes setting = 0
billable setting = true
task ref setting =
worked on setting =
description setting =
engagement id setting = [object Object]

Uses (2 operations)

Pack operation Get engagement on billable hours recued-core.billable-hours.engagement.get
Pack operation Create entry on billable hours recued-core.billable-hours.entry.create

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

What it's allowed to do

Write Pack Billable Hours external change
Read: engagement.get · No approvalWrite: entry.create · No approval

About

Tags

pack:billable-hourstime-trackingbillablerecordsv2

Details

30 steps 6 configurable settings recipe_id: log-hours