[{"data":1,"prerenderedAt":415},["ShallowReactive",2],{"navigation":3,"\u002Fguide\u002Fimport":80,"\u002Fguide\u002Fimport-surround":410},[4,9,14,50,75],{"title":5,"path":6,"stem":7,"icon":8},"Getting started","\u002Fgetting-started","1.getting-started","i-lucide-rocket",{"title":10,"path":11,"stem":12,"icon":13},"Installation","\u002Finstallation","2.installation","i-lucide-hard-drive-download",{"title":15,"path":16,"stem":17,"children":18,"page":49},"Guide","\u002Fguide","3.guide",[19,24,29,34,39,44],{"title":20,"path":21,"stem":22,"icon":23},"Timer & entries","\u002Fguide\u002Ftimer-and-entries","3.guide\u002F1.timer-and-entries","i-lucide-timer",{"title":25,"path":26,"stem":27,"icon":28},"Projects, clients & tasks","\u002Fguide\u002Fprojects-clients-tasks","3.guide\u002F2.projects-clients-tasks","i-lucide-git-branch",{"title":30,"path":31,"stem":32,"icon":33},"Reports & calendar","\u002Fguide\u002Freports-calendar","3.guide\u002F3.reports-calendar","i-lucide-chart-column",{"title":35,"path":36,"stem":37,"icon":38},"Theme editor","\u002Fguide\u002Ftheme-editor","3.guide\u002F4.theme-editor","i-lucide-palette",{"title":40,"path":41,"stem":42,"icon":43},"Importing data","\u002Fguide\u002Fimport","3.guide\u002F5.import","i-lucide-hard-drive-upload",{"title":45,"path":46,"stem":47,"icon":48},"Team & organizations","\u002Fguide\u002Fteam","3.guide\u002F6.team","i-lucide-users",false,{"title":51,"path":52,"stem":53,"children":54,"page":49},"Reference","\u002Freference","4.reference",[55,60,65,70],{"title":56,"path":57,"stem":58,"icon":59},"Data model","\u002Freference\u002Fdata-model","4.reference\u002F1.data-model","i-lucide-database",{"title":61,"path":62,"stem":63,"icon":64},"API routes","\u002Freference\u002Fapi","4.reference\u002F2.api","i-lucide-route",{"title":66,"path":67,"stem":68,"icon":69},"Environment variables","\u002Freference\u002Fenv","4.reference\u002F3.env","i-lucide-settings-2",{"title":71,"path":72,"stem":73,"icon":74},"Security","\u002Freference\u002Fsecurity","4.reference\u002F4.security","i-lucide-shield",{"title":76,"path":77,"stem":78,"icon":79},"About","\u002Fabout","5.about","i-lucide-info",{"id":81,"title":40,"body":82,"description":404,"extension":405,"meta":406,"navigation":407,"path":41,"seo":408,"stem":42,"__hash__":409},"docs\u002F3.guide\u002F5.import.md",{"type":83,"value":84,"toc":393},"minimark",[85,101,118,123,128,135,146,150,157,163,167,170,329,336,340,343,378,382],[86,87,88,92,93,96,97,100],"p",{},[89,90,91],"strong",{},"Settings → Import"," moves your history into Tick in three steps: pick a source and file → review a ",[89,94,95],{},"dry-run preview"," (nothing is written yet) → commit. Files up to ",[89,98,99],{},"5 MB"," are accepted.",[102,103,104],"note",{},[86,105,106,107,112,113,117],{},"Behind a reverse proxy, make sure the proxy allows a body that big — both ",[108,109,111],"a",{"href":110},"\u002Finstallation#reverse-proxy","shipped configs"," set an 8 MB limit. The commit step is one of the operations ",[108,114,116],{"href":115},"\u002Finstallation#demo-mode","demo mode"," blocks; preview keeps working there.",[119,120,122],"h2",{"id":121},"supported-formats","Supported formats",[124,125,127],"h3",{"id":126},"toggl-track","Toggl Track",[86,129,130,131,134],{},"Export from Toggl via ",[89,132,133],{},"Reports → Detailed → Export → CSV",". Keeps client, project, task, tags and the billable flag. Expected columns:",[136,137,142],"pre",{"className":138,"code":140,"language":141},[139],"language-text","Email, Client, Project, Task, Description, Billable,\nStart date, Start time, End date, End time, Duration, Tags\n","text",[143,144,140],"code",{"__ignoreMap":145},"",[124,147,149],{"id":148},"clockify","Clockify",[86,151,152,153,156],{},"Export via ",[89,154,155],{},"Reports → Detailed → Export → Save as CSV",". Keeps project, client, task, tags and the billable flag. Expected columns:",[136,158,161],{"className":159,"code":160,"language":141},[139],"Project, Client, Description, Task, Tags, Billable,\nStart Date, Start Time, End Date, End Time, Duration (h)\n",[143,162,160],{"__ignoreMap":145},[124,164,166],{"id":165},"generic-csv","Generic CSV",[86,168,169],{},"Anything else — a spreadsheet, another tracker, a script. Header row:",[171,172,173,189],"table",{},[174,175,176],"thead",{},[177,178,179,183,186],"tr",{},[180,181,182],"th",{},"Column",[180,184,185],{},"Required",[180,187,188],{},"Format",[190,191,192,206,224,240,252,264,276,288,317],"tbody",{},[177,193,194,200,203],{},[195,196,197],"td",{},[143,198,199],{},"name",[195,201,202],{},"no",[195,204,205],{},"entry description",[177,207,208,213,218],{},[195,209,210],{},[143,211,212],{},"start",[195,214,215],{},[89,216,217],{},"yes",[195,219,220,221],{},"ISO datetime, e.g. ",[143,222,223],{},"2025-03-14T09:00:00",[177,225,226,231,235],{},[195,227,228],{},[143,229,230],{},"end",[195,232,233],{},[89,234,217],{},[195,236,237,238],{},"ISO datetime; must be after ",[143,239,212],{},[177,241,242,247,249],{},[195,243,244],{},[143,245,246],{},"client",[195,248,202],{},[195,250,251],{},"client name",[177,253,254,259,261],{},[195,255,256],{},[143,257,258],{},"project",[195,260,202],{},[195,262,263],{},"project name",[177,265,266,271,273],{},[195,267,268],{},[143,269,270],{},"task",[195,272,202],{},[195,274,275],{},"task name",[177,277,278,283,285],{},[195,279,280],{},[143,281,282],{},"tags",[195,284,202],{},[195,286,287],{},"comma- or semicolon-separated",[177,289,290,295,297],{},[195,291,292],{},[143,293,294],{},"billable",[195,296,202],{},[195,298,299,302,303,306,307,302,309,306,311,302,314],{},[143,300,301],{},"true","\u002F",[143,304,305],{},"false",", ",[143,308,217],{},[143,310,202],{},[143,312,313],{},"1",[143,315,316],{},"0",[177,318,319,324,326],{},[195,320,321],{},[143,322,323],{},"rate",[195,325,202],{},[195,327,328],{},"$\u002Fh, becomes the entry's rate override",[86,330,331,332,335],{},"The CSV parser is forgiving about the mechanics: UTF-8 BOM, quoted fields, escaped quotes (",[143,333,334],{},"\"\"","), commas and newlines inside quotes, and CRLF\u002FLF\u002FCR line endings all work.",[119,337,339],{"id":338},"the-preview","The preview",[86,341,342],{},"Uploading runs the whole import as a dry run and shows:",[344,345,346,350,365,368],"ul",{},[347,348,349],"li",{},"Entry count and the date range they span.",[347,351,352,355,356,360,361,364],{},[89,353,354],{},"Catalog reconciliation",": which clients, projects, tasks and tags will be ",[357,358,359],"em",{},"matched"," to existing rows (by case-insensitive name, within your org, trash excluded) and which will be ",[357,362,363],{},"created",".",[347,366,367],{},"The first 10 rows as they will land.",[347,369,370,373,374,377],{},[89,371,372],{},"Warnings",": rows that will be skipped, each with its line number and reason (unparseable dates, ",[143,375,376],{},"end ≤ start",", …). Bad rows never abort the import — they are simply left out, and the commit result reports the skip count.",[119,379,381],{"id":380},"after-commit","After commit",[86,383,384,385,389,390,392],{},"Commit creates the missing catalog rows, inserts the entries (each pointing at its deepest reference per ",[108,386,388],{"href":387},"\u002Fguide\u002Fprojects-clients-tasks#rule-1-store-only-the-deepest-reference","Rule 1","), attaches tags, and reports what happened: entries inserted, created vs matched counts per entity, and rows skipped. Imported entries behave exactly like native ones — rates resolve per Rule 2 unless the row carried an explicit ",[143,391,323],{}," override.",{"title":145,"searchDepth":394,"depth":394,"links":395},2,[396,402,403],{"id":121,"depth":394,"text":122,"children":397},[398,400,401],{"id":126,"depth":399,"text":127},3,{"id":148,"depth":399,"text":149},{"id":165,"depth":399,"text":166},{"id":338,"depth":394,"text":339},{"id":380,"depth":394,"text":381},"Bring entries in from Toggl Track, Clockify, or any CSV — with a dry-run preview before anything is written.","md",{},{"icon":43},{"title":40,"description":404},"RQFgGSUtV7cY4m7_4gW-3cwwYi45y3uOPQ1EqAeYUNk",[411,413],{"title":35,"path":36,"stem":37,"description":412,"icon":38,"children":-1},"Presets, palettes, radius, fonts and the starfield — everything applies live, per user.",{"title":45,"path":46,"stem":47,"description":414,"icon":48,"children":-1},"Orgs, member roles, per-member rates, invites, and the password-reset flow.",1790777312388]