Troubleshooting
Use this Notion template to check quick fix guides for known issues. Covers core fixes like habit check-in heatmap alignment, clipper button failures, and Homepage navigation jump errors.
Due to the enormous volume of the FLO.W system, there may be some errors in various detailed corners. This document is established to fix these errors.
Clipper Complete Button Error Fix
Important
If your template was duplicated after 2025.11.03, you don't need to handle this fix
Issue Manifestation
In the clipper article, clicking the [Complete] button cannot change the reading status to [Completed]

Solution
Click the [Complete] property, and the following prompt will pop up

Then click [Edit Property - Edit Automation], then click where the error appears

Change [Deleted Option] to [Completed]

Finally click the save button

Habit Check-in Heatmap Error Fix
Important
If your template was duplicated after 2025.11.03, you don't need to handle this fix
Issue Manifestation
When the month reaches November or December, the heatmap display cannot align correctly, as shown below:

Solution
Copy the following code, then overwrite the original code
/* ========== Check-in Statistics Dashboard (Based on Current Month) - Integrated Habit Categories and Monthly Goals ========== */
lets(
/* --- Core Variables --- */
boardReferenceDate, now(), /* Dashboard always based on current date and time */
currentYear, boardReferenceDate.formatDate("YYYY"), /* Current year string */
currentMonth, boardReferenceDate.formatDate("MM"), /* Current month string */
boardYearMonth, currentYear + "/" + currentMonth, /* Current year-month, e.g., "2025/05" */
/* --- Today's Check-in Status --- */
todayDateText, now().formatDate("YYYY/MM/DD"),
allRecords, prop("Check-in Records"), /* All check-in records */
isCheckedInToday, allRecords.filter(current.prop("Date").formatDate("YYYY/MM/DD") == todayDateText).length() > 0,
todayCheckInStatusText, if(isCheckedInToday, "✅ Checked in today", "❌ Not checked in today"),
habitCategory, prop("Habit Category"), /* Get habit category */
monthlyLimitTarget, prop("Goal/Limit"), /* Get monthly upper or lower limit target value */
/* Adjust marker and color based on habit category */
triggerMark, if(habitCategory == "Good Habit", "✓", "x"),
userDefinedColorForHabit, prop("Habit Color"),
triggerColor, if(
habitCategory == "Good Habit",
"green",
empty(userDefinedColorForHabit) ? "red" : userDefinedColorForHabit
),
/* --- 1. Calculate monthly trigger/completion count --- */
/* allRecords defined above */
monthlyTriggers,
allRecords.filter(
current.prop("Date").formatDate("YYYY/MM") == boardYearMonth
).length(),
/* --- 2. Build first line habit info string display (for both good and bad habits) --- */
habitInfo,
lets(
baseText, format("This month ") + monthlyTriggers + " times",
actualSuffixText, /* Initialize suffix text */
if(empty(monthlyLimitTarget),
"", /* If no goal/limit set, suffix is empty */
if(habitCategory == "Good Habit",
lets(
neededForTarget, monthlyLimitTarget - monthlyTriggers,
if(neededForTarget <= 0,
"|Goal reached",
"|Need " + format(neededForTarget) + " more times"
)
),
/* When it's a bad habit */
lets(
remainingCount, monthlyLimitTarget - monthlyTriggers,
if(remainingCount >= 0,
"|" + format(remainingCount) + " times remaining",
"|Exceeded " + format(abs(remainingCount)) + " times"
)
)
)
),
(baseText + actualSuffixText).style("b", "u") /* Combine and apply style */
),
/* --- 3. Month and weekday headers --- */
monthHeader,
lets(
monthNum, boardReferenceDate.formatDate("MM").toNumber(),
monthText, if(monthNum >= 11,
boardReferenceDate.formatDate("MMM"), /* Use abbreviation for Nov, Dec */
boardReferenceDate.formatDate("MM") /* Use numbers for Jan-Oct */
),
monthText.style(
triggerColor + "_background", "c", "b", triggerColor
)
),
dayAbbreviations, ["M", "T", "W", "T", "F", "S", "S"],
weekHeader, dayAbbreviations.map(
lets(
dayAbbr, current,
dayIndex, index,
systemToday, now().day(),
isToday, (systemToday == 0 && dayIndex == 6) || (systemToday != 0 && systemToday - 1 == dayIndex),
dayAbbr.style(
triggerColor + "_background", "c", "b",
isToday ? ((triggerColor == "yellow" || triggerColor == "pink" || triggerColor == "green" || triggerColor == "gray") ? "brown" : "white") : triggerColor
)
)
).join(" "),
fullHeader, monthHeader + " " + weekHeader,
/* --- 4. Weekly check-in heatmap --- */
firstDayOfBoardMonth, parseDate(currentYear + "-" + currentMonth),
startDayOfWeekForBoardMonth, firstDayOfBoardMonth.day(),
week1StartDate, firstDayOfBoardMonth.dateSubtract((startDayOfWeekForBoardMonth + 6) % 7, "days"),
weekDaysOffsets, [0, 1, 2, 3, 4, 5, 6],
weekOffsetsForMap, [0, 7, 14, 21, 28, 35],
allWeekViewsRendered, weekOffsetsForMap.map(
lets(
daysToAdd, current,
currentWeekStartDate, week1StartDate.dateAdd(daysToAdd, "days"),
currentWeekIndex, index,
isThisWeekPotentiallyRelevant, currentWeekStartDate.formatDate("YYYY/MM") == boardYearMonth || currentWeekStartDate.dateAdd(6, "days").formatDate("YYYY/MM") == boardYearMonth,
displayThisWeek, (currentWeekIndex < 5) || (currentWeekIndex == 5 && isThisWeekPotentiallyRelevant),
weekViewContent, displayThisWeek ? (
(currentWeekStartDate.formatDate("WW") + "Week").style(
currentWeekStartDate.formatDate("YYYY/WW") == now().formatDate("YYYY/WW") ? triggerColor + "_background" : "",
"c", "b", triggerColor
) + " " +
weekDaysOffsets.map(
lets(
dayOffset, current,
currentDayInGrid, currentWeekStartDate.dateAdd(dayOffset, "days"),
isCurrentDisplayMonth, currentDayInGrid.formatDate("YYYY/MM") == boardYearMonth,
dailyTriggersCount, isCurrentDisplayMonth ?
allRecords.filter(
current.prop("Date").formatDate("YYYY/MM/DD") == currentDayInGrid.formatDate("YYYY/MM/DD")
).length() : 0,
isActualToday, currentDayInGrid.formatDate("YYYY/MM/DD") == todayDateText, /* Use todayDateText for comparison */
(dailyTriggersCount > 0 ? triggerMark : (isCurrentDisplayMonth ? "·" : " ")).style(
dailyTriggersCount > 0 ? triggerColor + "_background" : (isActualToday && isCurrentDisplayMonth ? "blue_background" : ""),
"c", "b",
dailyTriggersCount > 0 ? triggerColor : (isCurrentDisplayMonth ? (isActualToday ? "white" : "gray") : "")
)
)
).join(" ")
) : "",
weekViewContent
)
).filter(current != "").join("\n"),
/* --- Build monthly goal/limit text line (for summary) --- */
monthlyTargetDisplayLine,
if(empty(monthlyLimitTarget),
"", /* If goal/limit is empty, this line is empty */
if(habitCategory == "Good Habit",
format("Monthly goal ") + format(monthlyLimitTarget) + " times",
format("Monthly limit ") + format(monthlyLimitTarget) + " times"
)
),
/* --- Calculate last month and annual statistics (for summary) --- */
dateForLastMonth, boardReferenceDate.dateSubtract(1, "months"),
lastMonthYearMonth, dateForLastMonth.formatDate("YYYY/MM"),
lastMonthTriggers, allRecords.filter(
current.prop("Date").formatDate("YYYY/MM") == lastMonthYearMonth
).length(),
percentageChangeText, /* Adjust wording for "increase from 0" */
if(lastMonthTriggers == 0,
/* When last month was 0 */
if(monthlyTriggers > 0,
"Increased " + format(monthlyTriggers) + " times this month", /* Fix: remove duplicate "last month 0" */
"No change" /* If this month is also 0, then no change */
),
/* When last month is not 0, calculate percentage */
lets(
diff, monthlyTriggers - lastMonthTriggers,
percentage, round(diff / lastMonthTriggers * 100),
if(percentage == 0,
"No change",
if(percentage > 0,
"Increased " + format(percentage) + "%",
"Decreased " + format(abs(percentage)) + "%"
)
)
)
),
lastMonthSummary, "Last month " + format(lastMonthTriggers) + " times|" + percentageChangeText,
thisYearTriggers, allRecords.filter(
current.prop("Date").formatDate("YYYY") == currentYear
).length(),
thisYearSummary, "Total this year " + format(thisYearTriggers) + " times",
/* --- 5. Final assembly of all parts --- */
finalOutput,
todayCheckInStatusText + "\n" +
habitInfo + "\n" +
fullHeader + "\n" +
allWeekViewsRendered + "\n\n" +
if(empty(monthlyTargetDisplayLine), "", monthlyTargetDisplayLine + "\n") +
lastMonthSummary + "\n" +
thisYearSummary + "\n",
finalOutput
)Clipper - Relation Property Last Edited Time
Important
If your template was duplicated after 2025.11.02, you don't need to handle this fix
Issue Manifestation
Open an article in the Clipper module, find the [Relation Property Last Edited Time] property, click it and find the following error:

Solution
Copy the following code, then completely overwrite it
lets(
project,prop("Related Project").map(current.prop("Last Edited Time")),
task,prop("Related Task").map(current.prop("Last Edited Time")),
extract,prop("Related Extract").map(current.prop("Last Edited Time")),
author,prop("From").map(current.prop("Last Edited Time")),
category,prop("Book List Category").map(current.prop("Last Edited Time")),
subArea,prop("Sub-Area").map(current.prop("Last Edited Time")),
note,prop("Related Note").map(current.prop("Last Edited Time")),
Area,prop("Area").map(current.prop("Last Edited Time")),
content,prop("Last Edited Time"),
[Area,note,subArea,category,author,author,extract,task,project,content].flat().unique().sort().reverse().first()
)This change doesn't affect any functionality, just removes a piece of useless code.
Homepage Navigation Error Fix
Important
If your template was duplicated after 2025.09.14, you don't need to handle this fix
Issue Manifestation
In some cases, if you open a database and click the [Homepage] button at the top
But it jumps to some place on the web
Please follow the method below to fix.
Solution
Wishlist Button Fix
Important
If your template was duplicated after 2025.09.14, you don't need to handle this fix
Issue Manifestation
In the [Life - Wishlist] module, there's an [Add to Purchased] button
If clicking this button causes an error, it may be that a step in this button has an error
Solution
Follow the method shown below to re-edit this button

Import Troubleshooting
Use this Notion template and encounter problems during import? Here are various causes of copy failures and their solutions to ensure a smooth start to your productivity journey.
Technical Support
Use this Notion template to get comprehensive technical support. Learn how to upgrade by paying the price difference, get Lark group join links, and master efficient question-asking guidelines to reduce troubleshooting time.
MkSaaS Docs