Skip to main content

Setting up CSV Files to Support Attendance Improvement Plus

How to set up the files required for automated attendance notifications: the calendar file, daily attendance file, and period attendance file. Covers daily and period-level attendance, file timing, and delivery.

Updated this week

Applies to: Partners with the TalkingPoints Attendance product | TPC partners only — attendance requires TPC rostering

PowerSchool partners: this article does not apply to you. If your district uses PowerSchool, both attendance events and calendar data are managed through the TalkingPoints PowerSchool Plugin — no CSV files required. If you have questions about your attendance setup, reach out to your implementation contact.


Overview

TalkingPoints Attendance automates absence and tardy notifications to families. When a student is marked absent or late, TalkingPoints sends a message to their guardian automatically.

To make this work, TalkingPoints needs three data inputs:

  1. Rostering — student and guardian data, already handled by your TPC connector

  2. A calendar file — tells the system which days school is in session, so messages are suppressed on holidays and weekends

  3. An attendance file — the daily absence or period-level events that trigger notifications

This article covers the calendar file and both types of attendance file. Your implementation contact will tell you which attendance type applies to your district.

Important: Attendance is only compatible with TPC rostering. If your site uses Clever, ClassLink, or CSV upload for rostering, attendance notifications are not currently supported.


Before you start: attendance code classification

Before configuring either type of attendance file, you'll need to work with your implementation team to classify every absence code your SIS uses. TalkingPoints maps codes into four categories:

Category

What it means

Used for

Unexcused without a reason

Unexcused absences with no documented explanation from families

Automated daily messaging — this is the most common trigger for family notifications

Unexcused

All other unexcused absences

Included in "All Unexcused Absences" in the dashboard

Excused

Approved absences with a documented reason

Included in "All Absences" in the dashboard

Filter out

Not true absences (e.g., Present, School Activity, In-School Suspension)

Excluded from your file entirely to keep processing fast

Your implementation team may provide a template to help you complete this mapping. Have your full absence code list ready — this is a required step before your attendance sync can be fully configured.


Part 1: Calendar file

What it does

The calendar file defines every date in your school year and whether school is in session on that date. TalkingPoints uses it to know when to send notifications and when to suppress them. It does not need to be sent daily — only when your calendar changes.

File format

File must be named exactly: calendar.csv

Field

What to put here

school_id

Unique ID for the school. Must exactly match the sourcedId in your rostering orgs.csv. This is the most common source of processing errors — confirm with your IT contact before sending.

calendar_date

The date. Format: YYYY-MM-DD

calendar_events

Session status for that date. Use exactly: In Session or Not in Session — these values are case-sensitive. Include both in-session and non-session dates.

school_year_id

Unique ID for the school year. Must match academicSessions.sourcedId from your rostering data.

Multi-school districts

If your district has multiple schools with different calendars, include one row per school per date. The same calendar_date may appear multiple times in the file — once for each school — with the appropriate calendar_events value for each.

Synergy API note: The Synergy OneRoster API does not include the year-level academicSessions.sourcedId in its data model. Calendar file dates must instead be mapped to the active term-level academicSessions.sourcedId (e.g., quarter, trimester, or semester). Your implementation team can confirm the correct value to use if you are unsure.

When to send the calendar file

Unlike the attendance file, the calendar file does not need to be sent on a daily schedule. Send it when you initially set up attendance, and again any time your school calendar changes — at the start of a new term, when a the school year dates shift due to cancellations, or when summer school dates are confirmed.


Part 2: Daily attendance file

What it does

The daily attendance file delivers one absence record per student per day. TalkingPoints processes it and sends family notifications based on your configured absence codes and messaging rules.

Use this file type if: your SIS records attendance using a single daily code per student (one code marks a student absent for the whole day). Common in elementary and middle schools.

File format

File must be named exactly: attendance.csv

Field

What to put here

school_id

Unique ID for the school. Must match your rostering orgs.sourcedId exactly.

student_id

Unique student ID. Must match users.sourcedId in your rostering data.

attendance_event_date

Date of the attendance entry. Format: YYYY-MM-DD

attendance_event_category

Type of attendance event. Use consistent casing across all records. Examples: Excused Absence, Unexcused Absence, Tardy

attendance_event_duration

Decimal (0–1) indicating the portion of the school day missed. A full-day absence = 1.

attendance_event_reason

Short reason for the absence. Examples: Illness, Medical Appointment, Truancy, No Call

attendance_event_description

Optional. Internal notes or raw SIS codes.

What to include — and what to leave out

Include all excused and unexcused absence events for the entire school year to date. The attendance dashboard and trends charts rely on full historical data to generate accurate visualizations.

Exclude any codes your team has classified as "Filter Out" — specifically, Present records and any event type that doesn't represent a true absence. Keeping the file lean directly reduces processing time, which matters more as the file grows through the year.


Part 3: Period/section attendance file

What it does

The period/section attendance file delivers one record per student per class period per day. It enables period-level trend reporting in the attendance dashboard and supports targeted period-specific notifications.

Use this file type if: your SIS tracks attendance at the class period level rather than as a single daily code OR you want to be able to see historical trends on which periods in your school schedule are most frequently attended/missed. Common in high schools.

File format

File must be named exactly: periodattendance.csv

Field

What to put here

school_id

Unique ID for the school. Must match your rostering orgs.sourcedId exactly.

student_id

Unique student ID. Must match users.sourcedId in your rostering data.

student_name

Not required but can speed up troubleshooting if records need to be traced.

attendance_event_date

Date of the attendance entry. Format: YYYY-MM-DD

section_id

The class/section ID. Must match the section as it appears in your rostering data. This is how TalkingPoints connects an absence event to the correct class.

period or section expression

Period number or label. Examples: 1, 2, A, 3B. The period trends dashboard supports a maximum of 10 unique period values — if your school has more than 10, work with your implementation contact to determine the best approach.

attendance_event_category

Type of attendance event. Use consistent casing. Examples: Excused Absence, Unexcused Absence, Tardy

attendance_event_duration

Decimal (0–1) representing the portion of the school day missed — not the individual period. If a student misses one period out of eight, this value represents the full-day proportion, not 1. Your implementation contact will help confirm the correct calculation for your school's schedule.

attendance_event_reason

Short reason for the absence. Examples: Illness, Family Emergency, No Call

attendance_event_description

Optional. Raw SIS codes or internal notes.

What to include — and what to leave out

Same rules apply as the daily file: include all excused and unexcused absence events for the school year to date, and exclude any codes classified as "Filter Out."

Optimizing the file is especially important for period-level data, since high schools generate significantly more records per day than daily-code schools.


File delivery and timing

How files get to TalkingPoints

Your IT team will configure an automated export from your SIS that deposits the attendance file on TalkingPoints' SFTP server each school day. The calendar file can be delivered the same way or manually when updates are needed. Your implementation contact will provide SFTP server credentials separately to your technical contact via a secure email.

How processing works

When your file lands on the SFTP server, it moves through a processing pipeline before data becomes visible in TalkingPoints and automated messages can send. Understanding this chain is important for scheduling your file delivery correctly:

  1. File pickup — TalkingPoints checks for newly processed files on our server approximately every 10 minutes.

  2. Processing — Once picked up, the file is ingested and validated. For most partners this takes 7–20 minutes. For larger districts or later in the school year when files are bigger, this can extend to 20–45 minutes.

  3. Dashboard and message refresh — The attendance dashboard and automated messaging queue refresh every 10 minutes once processing completes.

  4. Attendance Trends refresh — The historical charts in the Trends tab update on a separate, less frequent cycle (approximately every hour). A temporary mismatch between your dashboard data and your Trends charts is expected and normal — it is not a sign that data is missing.

Scheduling your file delivery

The goal is to have your file fully processed and your data updated on your attendance dashboard before your automated messages are scheduled to send. Build in a minimum 30-minute buffer between your file send time and your message send time. For larger districts, 45 minutes is safer, particularly later in the school year when files are largest.

Practical examples from live partners:

  • A large district sending files at 8:30 AM can reliably schedule automated messages for 9:10–9:15 AM

  • A small district sending files at 8:50 AM targets messages for 9:15 AM

  • A district with two daily sends (mid-morning and afternoon) staggers file delivery and message timing accordingly

Key rule: If your file arrives just after the top of the hour and processing hasn't completed by the time your message is scheduled, the message will skip or be delayed. Build your schedule so files arrive with enough runway — arriving at :15 or :45 past the hour typically provides a reliable buffer.

Keep your file lean — it directly affects timing

Your attendance file grows throughout the school year because it must include cumulative year-to-date data. By spring, large districts can see processing times that are two to three times longer than at the start of the year. The single most effective thing you can do to keep processing fast is exclude records that don't drive messaging or reporting.

Specifically:

  • Exclude "Present" records. These add significant file volume with no functional benefit to TalkingPoints. Filtering to absences and tardies only can reduce file size substantially.

  • Exclude any absence codes classified as "Filter Out" in your attendance code mapping. These should not appear in your file at all.

  • Do not include unnecessary partial-day events if they won't trigger a notification or appear meaningfully in your dashboard.

If you find your processing times degrading noticeably as the year progresses, contact your implementation team — there may be additional optimizations available depending on your SIS and file structure.

Sending multiple files per day

Some partners send their attendance file more than once daily — for example, a mid-morning send after attendance is finalized and an afternoon send to capture updates. Schools within the same district may have different plans to send messages - be sure that your file sends align with each school's expectations for scheduling their automated message.

This is supported, with two requirements:

  • Use the exact same filename every time. attendance.csv must be attendance.csv on every delivery — Attendance.csv or ATTENDANCE.CSV will fail to process.

  • Stagger your sends. Sending a daily file and a period file simultaneously can cause processing conflicts. We recommend spacing them at least 10–15 minutes apart.

Disable partial exports

Ensure that partial export settings are turned off in your SIS export manager and SFTP client. A partial file that arrives intact but incomplete will process without error and produce incorrect data. Full file delivery, every time, is required for reliable results.


Infinite Campus users: courtesy SQL scripts

If your district uses Infinite Campus, TalkingPoints provides courtesy SQL scripts that queries your IC database and exports attendance events in the correct format for this file. The script pulls the fields TalkingPoints needs to populate the dashboard and trigger automated notifications.

You'll need database read access or the support of your district's IT team to run it. Before running, confirm with your implementation contact which absence and tardy codes should be included.


Common questions

How do I know which file type to use — daily or period? Your implementation contact will confirm this based on how your SIS tracks attendance. In most cases: if a student's absence is recorded once per day with a single code, use the daily file. If attendance is taken separately in each class period, use the period file.

What if my SIS has both a daily code and period codes? Some SIS setups record both — a clerk enters a full-day code when a parent calls in, and teachers enter period-level codes throughout the day. Your implementation contact will help you determine which data is more reliable and which file to use for automated messaging.

Can attendance notifications run during summer school? Yes, as long as your calendar file includes the summer session dates and you continue sending the attendance file during that period.

What if a file doesn't get sent one day? Because the file is cumulative, the next send will include all prior events. Your dashboard may show a gap for that day, but no events are permanently lost.

What happens to attendance data if a student changes schools? If a student moves to a different school within the district, there may be impacts to their historical attendance data in the dashboard. Your implementation contact can advise on what to expect during transitions.


How to submit your first file

  1. Complete the attendance code classification with your implementation team before configuring your file export.

  2. Confirm your school calendar dates (first day, last day, any non-standard breaks) and prepare your calendar file first.

  3. Send both the calendar file and a sample attendance file(s) to the TalkingPoints server via the secure link provided by the Implementation team.

  4. Your implementation team will confirm the files are processing correctly and that notifications are sending as expected before full launch.

Did this answer your question?