Skip to content

Spreadsheet Report ​

For boards and accreditors that have no data feed but want a file: a completions spreadsheet, in the columns they ask for, delivered on a schedule you set.

Not every reporting destination is an API. A state board, a pharmacy benefit manager or a university registrar often wants a weekly or monthly spreadsheet of who completed what, laid out their way. A Spreadsheet Report builds that file from inside LecturePanda and delivers it on a schedule, with no export by hand and no Zapier flow to babysit.

It is an accreditation type because it behaves like one: attach it to the credits that should be reported, and every completion of those credits is recorded against it and carried in the next scheduled file. Each completion is reported exactly once, so nobody is dropped for finishing the night before a send and nobody is sent twice.

Setting it up ​

Go to Organization Settings → Accreditations and add an accreditation of type Spreadsheet Report. The page has three parts, top to bottom: Credit fields, Report and Delivery. Nothing is stored until you save the accreditation.

Then attach it to a credit in the credit's Accreditation & Reporting field, exactly as you would CE Broker or ACPE. A credit can carry a Spreadsheet Report alongside another accreditation. The file is one row per credit completed, so a course with two reported credits produces two rows per learner.

Credit fields ​

Some files need a value per credit that LecturePanda does not otherwise store, such as the activity or course number a board assigned to that credit. Define it here once: a label, an optional hint for the person filling it in, and whether it is required. Each credit attached to the report then gets an input for it on the credit form, and a column with the source Credit report field writes that value on every row. A required field that is still blank stops the credit from saving while the report is attached.

Report ​

The Report section shows the file as it will be sent: your columns rendered over up to 25 real rows, with a line above saying where the rows came from (completions waiting for the next send when there are any, otherwise recent completions). While a column is unfinished it lists what is missing instead.

Edit report opens the column builder. Start from defaults fills in name, email, course, credit, hours and completion date; delete what the recipient does not want. Each column has a header, typed exactly as the recipient expects it, a source and optional formatting steps.

SourceWhat you can pick
RegistrationName, first and last name, email, registration date, member ID, type, and every registration field you collect
CourseTitle, start, end, location, address, timezone, categories
CreditCredit name, hours, type, and the identifiers it carries for other reporting systems
Credit report fieldA value typed on each credit just for this file (see above)
CompletionThe completion date, or date and time
Fixed valueThe same text on every row, such as your provider number
CombineSeveral sources joined into one cell, with an optional separator

Formatting steps run in order on the value: upper, lower or title case; trim; digits only or letters only; pad on the left so a zip code typed as 8901 becomes 08901; keep the first N characters; replace text; a default when blank; read as a date and write it in a given pattern; a number with a set number of decimals.

Date of birth from two fields

Pharmacy programs often collect the ACPE birthday as MMDD and the year separately. Combine the two fields with no separator, then add Read as a date with the pattern %m%d%Y and Write the date as %m/%d/%Y.

Each destination chooses its own file format, CSV or Excel. In both, every cell is written as text so license numbers and zip codes keep their leading zeros, and a value that starts with a formula character is written as text rather than run.

Delivery ​

The Delivery section starts with one sentence saying when the file goes out, such as Sends completions_{date} every Monday at 6:00 AM (America/Detroit). Edit schedule sets the schedule (every day, a weekday each week, or a day each month, at an hour in the report's timezone), the file name pattern ({date}, {datetime}, {year}, {month} and {name} are filled in at send time; no extension, each destination adds .csv or .xlsx to match its format) and what to do when empty: skip the send, or send an empty file so the recipient knows the report ran.

Below that is the list of destinations. Each send goes to every one; Edit opens a destination's settings, and Add destination adds one of the chosen type. Every destination has a Format: CSV or Excel (.xlsx) for a file, and for a web address also JSON.

  • Email sends the file to a list of addresses with your subject and message. The file can be attached, sent as a download link that works without signing in, or both; a board that works in Excel gets an .xlsx, one that imports gets a CSV. A link stops working after the number of days set on that destination, so the data does not sit in an inbox forever; this is the safer choice when the file carries personal information.
  • Google Drive folder puts the file in a folder of yours. Share the folder with the service account address shown in the settings, create the empty verification file named there inside it, and paste the folder's link. A folder on a Shared Drive is best, so the files belong to your organization. Nothing else in your Drive is visible to LecturePanda.
  • SFTP server uploads the file to a folder on your server with a password or an unencrypted private key. The file is written under a temporary name and renamed when complete, so a process watching the folder never sees a half-written file. The server's host key is pinned on the first connection, and connections come from a fixed address shown in the settings, for your firewall.
  • Web address (HTTP POST) posts to an https URL of yours, with an optional shared secret for signing each request. CSV file and Excel file arrive as a multipart upload with the report name, period, row count and file name beside the file. JSON sends the rows themselves: a JSON body with the same details plus a columns list and a rows list of objects keyed by your column headers, which is what a Zapier catch hook, Make, n8n or a script of your own wants.

Passwords, keys and secrets are stored separately from the rest of the settings and never shown again.

Testing it ​

Once saved, Send a test on the Accreditations list emails you the file, or delivers it to any one destination, so a folder share or firewall rule is proven before the first scheduled send. A test carries the same rows the Report section shows and never counts as reported.

What happens at send time ​

Every hour LecturePanda checks whether a report's scheduled send has passed. When it has, it gathers every completion of the attached credits that has not been in a file yet, renders the file, stores a copy, marks those completions as reported, and delivers the file to each destination. A destination that cannot be reached is retried against the same stored file; the others are not sent twice. A period with more than 10,000 completions goes out as several files, one after another, with _part2, _part3 on the file name and a matching label in Send History.

Send History, reached from the Accreditations list, lists every send with the period, the row count, each destination and whether it got the file, a download of the rows as CSV or Excel, and Resend, which sends the same rows again in each destination's current format. Files stay available for one year, long enough to correct a bad file with the recipient. Completions recorded before the report was attached to a credit are not picked up; export them once from Reports & History to cover the gap.