Käyttöönotto-opas

Clockify-tuntihälytys n8n:ssä: vaiheittainen opas

Clockify Retainer Hours Alert vertaa Clockifyyn kirjattuja tunteja Google Sheetsissä oleviin kuukausittaisiin tuntirajoihin. Kun asiakkaan käyttö saavuttaa hälytysrajan, työnkulku lähettää Gmaililla kootun ilmoituksen. Tässä oppaassa tuot valmiin työnkulun omaan n8n:ään, kokeilet ensin esimerkkidataa ja etenet sen jälkeen omiin tietoihin.

Kaavio: Clockify lähettää tunnit n8n:ään, joka lukee ja päivittää Google Sheetsiä ja lähettää ilmoituksen Gmaililla.

Työnkulku tarkoittaa tässä valmista tehtäväketjua. Sen osat eli solmut ovat jo yhteydessä toisiinsa. Sinun tehtäväsi on tuoda tiedosto, valita omat palveluyhteydet ja täyttää asetukset.

Ennen aloittamista

Tarvitset toimivan n8n Cloud -tilin tai jo käytössä olevan itse ylläpidetyn n8n:n, Clockify-työtilan sekä Google-tilin Sheetsiä ja Gmailia varten. Clockify-yhteyteen tarvitaan työtilan omistajan tai ylläpitäjän API-avain eli palvelun yhteysavain. Tämä opas ei sisällä oman n8n-palvelimen perustamista.

Latauspaketti on ilmainen. Palvelutilauksista, palvelimesta tai palvelujen käytöstä voi tulla kuluja. Tarkista oman tilisi ehdot erikseen.

Paketti seuraa kalenterikuukauden tunteja, enintään kymmentä asiakasriviä. Se ei siirrä käyttämättömiä tunteja seuraavaan kuukauteen. Hälytysviesti, solmujen nimet ja taulukon sarakenimet ovat englanniksi myös suomenkielisessä paketissa. Suomenkieliset ohjeet eivät muuta n8n:n käyttöliittymän kieltä.

Huomioi kuukauden vaihtuminen: laskenta päättyy eiliseen, ja uuden kuukauden ensimmäinen päivä ohitetaan. Kuukauden viimeisen päivän tunnit jäävät siksi tämän version hälytysten ulkopuolelle. Käytä kuukauden lopulliseen tuntien ja laskutuksen tarkistukseen myös Clockifyn raporttia.

Clockify antaa tunnit, Sheets tuntirajat ja Gmail toimittaa ilmoituksen. Sheetsiin tallennetaan myös tieto jo ilmoitetuista rajoista.

1. Lataa paketti ja pura ZIP

Avaa suomenkielinen lataussivu ja lataa paketti sivun ohjeella. Pura ZIP omalle koneellesi ennen tuontia n8n:ään.

Lue mukana olevat LUEMINUT.txt, VAATIMUKSET.txt, TESTAUS.txt ja VERSIO.txt. Ensimmäinen selittää käytön, toinen tarvittavat tilit, kolmas kokeet ja viimeinen paketin version. test-data/retainers-template.csv on taulukon varapohja.

n8n:ään tuotava tiedosto on clockify-retainer-hours-alert-fi.json. JSON-tiedosto sisältää valmiin työnkulun rakenteen. Älä tuo koko ZIP-tiedostoa. Jos et löydä JSON-tiedostoa, varmista että avasit puretun kansion.

2. Luo uusi työnkulku ja tuo JSON

Kirjaudu omaan n8n:ään. Avaa uusi tyhjä työnkulku Overview-näkymän Create workflow -painikkeesta tai plusvalikon New workflow -valinnasta.

Avaa työnkulun nimen vierestä … / More actions → Import → From file. Valitse puretun paketin JSON-tiedosto. Valikon sijainti voi vaihdella hieman n8n:n versioittain.

Onnistuneen tuonnin jälkeen työalueella näkyvät valmiiksi yhdistetyt solmut ja viisi ohjelappua. Lue laput ennen omien asetusten täyttämistä. Jos tuonti epäonnistuu, varmista tiedoston pääte ja kokeile uudessa tyhjässä työnkulussa.

n8n:n työnkulkuvalikko, jossa Import avaa tuonnin alavalikon.

Import-alavalikon From file -valinta.

3. Kokeile ensin esimerkkidataa

Avaa Configuration, eli työnkulun yhteiset asetukset. Jätä run_mode arvoon fixture. Se tarkoittaa sisäänrakennettua harjoitusta, joka ei lue Clockifya tai Sheetsiä eikä lähetä sähköpostia.

Käynnistä käsin Execute workflow. Jos käyttöliittymä pyytää valitsemaan käynnistimen, valitse Run Now. Avaa ajon jälkeen Compute Alerts ja katso sen Output-tulosta.

EsimerkkiOdotettu tulos
Acme32,4 / 40 tuntia, 81 %, uusi hälytysraja 80
Beta21 / 20 tuntia, 105 %, uudet rajat 50, 80 ja 100
GammaTarkoituksellinen Project ID not found -rivivirhe
DeltaSeuranta pois päältä

Tuloksessa status on ok ja new_alert_count on 2. Esimerkki käyttää kiinteää päivää 7.10.2026 ja laskee tunnit 6.10. asti. Päivä ei vaihdu tämän päivän mukaan.

Jos tulos poikkeaa, tarkista ensin fixture-tila ja mukana toimitettu TESTAUS.txt. Älä siirry oikeaan lähetykseen ennen kuin harjoitus vastaa odotettua. Valmiiksi näkyvä palveluyhteys ei vielä todista sen toimivan: esimerkkiajo ei käytä sitä.

Compute Alerts -solmun todellinen JSON-tulos: fixture, Acme 81 prosenttia, Beta 105 prosenttia ja kaksi uutta hälytystä.

Gamma-rivin tarkoituksellinen virhe näkyy samassa tuloksessa.

4. Tee oma taulukkokopio

Avaa paketin ohjeen Google Sheets -pohjalinkki ja tee siitä oma kopio. Säilytä Retainers-välilehden nimi ja kaikki sarakeotsikot täsmälleen ennallaan. Kopioi oman taulukkosi osoite talteen.

Pidä esimerkkirivit pois käytöstä, kunnes olet korvannut niiden projektitunnisteet omilla tunnisteillasi. Verkkopohjan esimerkkirivit ovat valmiiksi pois päältä. Paketin CSV-varapohjassa osa esimerkkiriveistä on päällä (TRUE), joten tarkista jokainen rivi, jos tuot taulukon CSV:nä.

Tee oikeaa lähetyskoetta varten erillinen testitaulukko. Näin kokeen ilmoitusleimat eivät muuta varsinaisen seurannan tilaa.

Julkisen Sheets-pohjan esimerkkirivit: enabled-ruudut tyhjinä, projektitunnisteiden paikkamerkit ja tuntirajat 40 ja 20.

Tyhjä enabled-ruutu tarkoittaa, ettei rivi ole mukana seurannassa. Kuvan projektitekstit ovat paikkamerkkejä.

5. Yhdistä omat palvelusi

n8n käyttää nimitystä credential palveluun tallennetusta käyttöyhteydestä. Valitse oma oikea yhteytesi jokaisessa alla olevassa solmussa. Solmujen välisiä viivoja ei tarvitse piirtää uudelleen.

PalveluSolmut, joihin valitset yhteyden
ClockifyGet Clockify Projects; Get Clockify Summary; List Clockify Workspaces; List Clockify Projects
Google SheetsRead Retainers; Save Alert State
GmailSend Test Email; Send Alert Email; Send Technical Notice

Clockifyn API-avain kuuluu n8n:n palveluyhteyden salattuun kenttään. Älä lisää sitä taulukkoon tai artikkelin kuvaksi.

Avaa Get Clockify Projects → Credential → Create new credential ja käytä Clockify API -yhteyttä. Hanki avain Clockifyn profiilivalikosta Preferences → Advanced, API-avainten hallinnasta. Nykyinen hallintapolku on kuvattu Clockifyn omassa API-avainohjeessa. Kopioi uusi avain heti talteen ja syötä se vain n8n:n API Key -kenttään. Tallenna yhteys ja valitse se kaikkiin neljään yllä lueteltuun Clockify-solmuun.

Google-yhteydet luodaan eri tavalla n8n Cloudissa ja itse ylläpidetyssä n8n:ssä. Valitse alta oma polkusi. Kummassakin tapauksessa yhteyden toimivuus varmistuu vasta seuraavissa palvelutesteissä, ei pelkästä yhteyden nimestä.

Luo Google-yhteydet n8n Cloudissa

Avaa Read Retainers ja sen palveluyhteyden valinta. Luo uusi Google Sheets OAuth2 -yhteys. Käytä hallittua kirjautumista (Managed OAuth2) ja valitse Sign in with Google. Kirjaudu tilille, jolla on oikeus omaan taulukkokopioosi, ja hyväksy pyydetyt oikeudet. Tallenna yhteys ja valitse sama yhteys myös Save Alert State -solmuun.

Luo Send Test Email -solmussa vastaavasti Gmail OAuth2 -yhteys lähettävälle Google-tilille. Valitse se myös Send Alert Email- ja Send Technical Notice -solmuihin. Gmailin lähettäjä ja Configuration-solmun owner_email ovat eri asioita: ensimmäinen lähettää, jälkimmäinen vastaanottaa.

Cloudin hallittu kirjautuminen ei edellytä omaa Google Cloud -projektia tai Client Secret -arvon hankkimista. Jos lomake pyytää näitä, tarkista valittu yhteystapa ja käytätkö Cloudia vai itse ylläpidettyä n8n:ää. Tarkemmat vaiheet ovat n8n:n virallisessa ohjeessa.

Oma Google-yhteys itse ylläpidetyssä n8n:ssä

Itse ylläpidetyssä n8n:ssä tarvitset oman Google OAuth -määrityksen eli luvan, jolla n8n käyttää Google-tiliäsi. Sheets tarvitsee Sheets API:n lisäksi Drive API:n, Gmail oman API:nsa. Valmistele Google Cloud -projekti, tarvittavat API:t ja OAuth-suostumus virallisen asennusohjeen mukaan. Luo Web application -tyyppinen OAuth-asiakas. Sen Authorized redirect URIs -osoitteen täytyy vastata täsmälleen oman n8n-yhteytesi näyttämää OAuth Redirect URL -arvoa. Syötä Client ID ja Client Secret vain n8n:n yhteyslomakkeeseen ja viimeistele Google-kirjautuminen.

Pidä Sheets- ja Gmail-yhteydet erillisinä ja valitse ne kaikkiin yllä lueteltuihin solmuihin. Tarkista oikeudet ja yhteyksien toimivuus seuraavissa testeissä. Jos saat redirect_uri_mismatch-virheen, vertaa paluuosoitteita merkki merkiltä; jos kirjautuminen estetään Testing-tilassa, tarkista että oma tilisi on lisätty testikäyttäjäksi. External/Testing-tilassa oleva sovellus voi myös vaatia kirjautumisen uusimista seitsemän päivän jälkeen, joten selvitä tämä ennen jatkuvaa ajoa.

Lomakkeen löydät näin: avaa Read Retainers, valitse Credential → Create new credential ja tarkista yhteystyypiksi Google Sheets OAuth2 API. Tyhjässä lomakkeessa ovat Client ID ja Client Secret. Valitse tallennettu yhteys myöhemmin myös toiseen Sheets-solmuun. Pelkkä lomakkeen avaaminen ei vielä yhdistä Google-tiliä.

Itse ylläpidetyn n8n:n uuden Google-yhteyden tyhjä Client ID -kenttä.

6. Hae työtilan ja projektien tunnisteet

Vaihda Configuration-solmussa run_mode arvoon list_ids, poistu muokattavasta kentästä ja käynnistä käsin. Avaa onnistuneen ajon jälkeen Your Clockify IDs. Tila lukee Clockifya; se ei lähetä viestejä tai kirjoita ilmoitustilaa.

workspace_id tarkoittaa Clockify-työtilasi tunnistetta. Asiakasrivin project_ids tarkoittaa siihen kuuluvaa yhtä tai useampaa projektia. Projektin nimi ei korvaa tunnistetta. Usean projektin tunnisteet erotetaan pilkulla taulukon samassa solussa.

Etsi tuloksesta oikea workspace_name ja project_name. Kopioi saman rivin workspace_id Configuration-solmuun ja project_id oman taulukkosi project_ids-sarakkeeseen. Tunnistehaun voi tehdä ennen oman workspace_id:n täyttämistä: se listaa yhteyden näkemät työtilat ja projektit. Jos odottamasi projekti puuttuu, tarkista käytetty Clockify-yhteys ja käyttöoikeudet.

Avaa Your Clockify IDs onnistuneen list_ids-ajon jälkeen ja valitse Output → Table. Kopioi tunnisteet saman projektirivin kentistä.

7. Täytä asetukset ja tarkista kaksi aikavyöhykettä

Täytä Configuration-solmuun omat arvosi:

AsetusMitä siihen tulee
workspace_idValitun Clockify-työtilan tunniste
owner_emailOma osoitteesi, johon testit ja hälytykset tulevat
sheet_urlOman taulukkokopiosi osoite; kokeessa erillinen testitaulukko
billing_timezoneTuntien laskennan aikavyöhyke, Suomessa esimerkiksi Europe/Helsinki
run_modeTämänhetkinen testivaihe; seuraavaksi test_email tai dry_run

Avaa myös työnkulun Settings → Timezone ja valitse sama aikavyöhyke. Toinen asetus määrää tuntien päivärajan, toinen ajastuksen kellonajan. Tarkista molemmat: tuodun paketin oletuksiin ei kannata luottaa.

Onnistuneessa valmistelussa työtila, vastaanottaja ja taulukko ovat varmasti omiasi ja molemmat aikavyöhykkeet samat. Jos jokin on epäselvä, palaa siihen ennen lähetyskoetta.

Configuration-solmun alkuasetukset: fixture, tyhjät omat kohteet ja Europe/London-laskenta-aikavyöhyke.

Kuva näyttää tyhjät alkuasetukset. Vaihda aikavyöhyke omaasi ja tarkista erikseen myös työnkulun Settings-asetus; kuvan Europe/London ei tarkoita Suomen aikaa.

8. Lisää yksi oma asiakasrivi

Täytä aluksi vain yksi rivi omaan testitaulukkoon. Käytä projektia, johon sinulla on lupa ja jonka tunnit voit tarkistaa Clockifyn raportista.

SarakeMitä täytät
retainer_idRivin yksilöllinen ja pysyvä tunniste, esimerkiksi testi-01
enabledTRUE, kun haluat ottaa rivin seurantaan
client_labelIlmoituksessa näkyvä nimi, esimerkiksi Testiasiakas
project_idsOikea Clockify-projektin tunniste tai pilkulla erotetut tunnisteet
monthly_hoursKuukaudelle sovittu positiivinen tuntimäärä
pace_enabledFALSE aluksi; valinnainen kulutustahdin seuranta jää pois

Jätä uuden testirivin ilmoitus- ja tilasarakkeet tyhjiksi. Työnkulku täyttää ne myöhemmin. Sama projekti saa kuulua vain yhdelle aktiiviselle riville.

Aloita kokonaisluvulla, esimerkiksi 40. Jos tarvitset desimaalitunteja, varmista että solu sisältää luvun. Suomalaisella taulukkoasetuksella käyttäjän syötteen tavoin tallennettu 12,5 palautui käytännön kokeessa n8n:ään numerona 12.5, ja tuntiraja käsiteltiin oikein. Pilkullinen tekstiarvo, esimerkiksi tekstiksi pakotettu 12,5, hylätään. Älä lisää soluun sanaa ”tuntia”; tarkista syötteen toiminta dry_run-ajossa.

9. Lähetä yksi testiviesti itsellesi

Tarkista owner_email ja valitse run_mode-arvoksi test_email. Käynnistä käsin. Tämä vaihe lähettää oikean sähköpostin.

Tarkista viesti omasta postilaatikostasi sekä lähettäjä ja vastaanottaja. Jos viestiä ei näy, katso roskapostikansio ja n8n:n Executions, eli ajohistoria. Tarkista Gmail-solmun tulos ennen uutta yritystä.

10. Vertaa omia tunteja ilman lähettämistä

Valitse dry_run ja käynnistä käsin. Nyt työnkulku lukee omaa testitaulukkoa ja Clockifya mutta ei lähetä hälytyksiä tai tallenna ilmoitustilaa.

Vertaa Compute Alerts -tulosta Clockifyn raporttiin. Valitse raporttiin samat projektit, kuun alku ja tuloksen ilmoittama viimeinen mukana oleva päivä. Tarkista myös aikavyöhyke ja tuntien rajaus. Tämän päivän tunnit eivät kuulu eiliseen päättyvään vertailuun.

Clockifyn Summary-raportissa valitse kalenterista alku- ja loppupäivä, rajaa Project-suodatin samoihin projekteihin ja paina APPLY FILTER. Tarkista Clockifyn profiilivalikosta Preferences → Time zone, että raportin aikavyöhyke vastaa laskentaa. Älä käytä pyöristettyjä tunteja täsmälliseen vertailuun.

Clockifyn oikea Summary-raportti testiprojektille ajalta 1.–21.10.2026: kokonaisaika 21:08:24.

Oppaan testiprojektissa raportin 21:08:24 vastasi täsmälleen työnkulun 76104 sekuntia. Desimaalitunteina tulos on pyöristettynä 21,14 h, ei 21 tuntia 14 minuuttia. Tämä on yhden testiprojektin varmennettu vertailu, ei esimerkkilupaus omasta tuntimäärästäsi.

Jos luvut eroavat, tarkista nämä rajaukset ennen live-tilaa. Tuntematon projektitunniste näkyy rivivirheenä; korjaa tunniste tai käyttöoikeus, älä jätä virhettä huomiotta.

11. Tee rajattu live-koe

live lähettää oikeita viestejä ja kirjoittaa tilaa taulukkoon. Varmista vielä erillinen testitaulukko ja oma vastaanotto-osoite. Älä aja samaan aikaan toista samaa taulukkoa käsittelevää työnkulkua.

Valitse testiriville positiivinen tuntiraja, jonka jo kirjatut tunnit ylittävät. Projektissa täytyy olla tunteja laskennan aikaväliltä. Tarkista odotettu hälytys ensin dry_run-tilassa ja vaihda vasta sitten liveen.

Aja käsin kerran. Tarkista saapunut viesti sekä testirivin ilmoitusleimat, esimerkiksi alerted_50_month, alerted_80_month ja alerted_100_month niiltä rajoilta, joiden odotit täyttyvän. Toista sama ajo muuttamatta tietoja. Samoista rajoista ei pitäisi tulla uutta hälytystä.

Jos viesti saapui mutta tilan tallennus epäonnistui, pysähdy selvittämään virhe ennen uusintaa: uusi yritys voi lähettää viestin uudelleen. Testikokeen jälkeen palauta testikopio fixtureen ja jätä se julkaisematta. Säilytä testitulokset erillään varsinaisesta seurannasta.

12. Ota päivittäinen ajo käyttöön vasta testien jälkeen

Julkaiseminen ottaa ajastuksen käyttöön. Tee se vasta, kun oma testitaulukko, tuntivertailu, viestit ja tilan tallennus on tarkistettu.

Valmistele varsinaiseen käyttöön oikea taulukko, normaalit tuntirajat ja live-tila. Tarkista Every Day at 08:00 -käynnistin ja työnkulun aikavyöhyke. Päivittäinen tuotantoajo käyttää julkaistua versiota; käsin tehty testi ei ota ajastusta käyttöön. Katso n8n:n julkaisuohje.

Valitse yläpalkista Publish. Tarkista julkaisuikkunan version nimi ja halutessasi kuvaus, ja vahvista ikkunan Publish-painikkeesta. Odota onnistunutta julkaisemista; yläpalkissa näkyy sen jälkeen Published. n8n ottaa ajastimet käyttöön tässä vaiheessa.

Pysäytä tuotantoajo Publish/Published-painikkeen viereisestä nuolivalikosta: Unpublish, sitten vahvistusikkunan Unpublish. Pelkkä luonnoksen muuttaminen fixtureen ei pysäytä aiemmin julkaistua live-versiota.

Publish-painikkeen viereinen valikko, jossa Unpublish pysäyttää julkaistun työnkulun.

Tarkista ensimmäisen ajastetun suorituksen jälkeen ajohistoria. Sähköpostin puuttuminen voi tarkoittaa myös sitä, ettei uusia rajoja ylittynyt. Varmista onnistuminen ajotiedoista.

Jos jokin ei toimi

HavaintoEnsimmäinen tarkistus
Clockify palauttaa 401/403Oikea yhteys, API-avaimen voimassaolo ja oikeus kyseiseen työtilaan
Clockify palauttaa 429Kutsuraja täyttyi; älä käynnistä uusia ajoja peräkkäin
Taulukkoa ei löydyOma sheet_url, Retainers-välilehden nimi ja Sheets-yhteyden lukuoikeus
Tila ei tallennuSheets-yhteyden kirjoitusoikeus ja Save Alert State -solmun virhe
Tuloksessa ei ole asiakkaitaRivin enabled-arvo, oikea taulukko, projektit ja laskennan päivämäärät
Sähköpostia ei tuleAjotila, uudet hälytysrajat, owner_email ja Gmail-solmun tulos

Tarkista ajohistoria myös silloin, kun teknistä virheviestiä ei tullut. Sama Gmail-yhteys lähettää sekä hälytykset että tekniset ilmoitukset, joten Gmailin häiriö voi estää molemmat.

Executions-ajohistorian onnistunut testisuoritus, Succeeded in 239ms.

Onnistumismerkki ei yksin osoita, että sähköposti olisi lähetetty tai ajastus olisi käytössä: avaa juuri haluamasi ajon solmut ja tarkista sen ajotila sekä tulokset.

Jatka siitä, mihin jäit

Pidä mukana toimitetut ohjeet tallessa. Jos haluat aloittaa uudelleen, palaa fixture-harjoitukseen ja etene testeissä yksi vaihe kerrallaan. Latauspaketti löytyy täältä.

Avaa lataussivu