[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Weekly Thought Industries course completion report

> Get who completed Thought Industries courses, who earned a certificate and who lost access each week, in Claude Code, n8n or a script. Hosted.

Source: https://cotlet.dev/integrations/thought-industries-api-mcp-server/weekly-course-completion-report

Every Monday a manager asks who finished the compliance course, and an admin opens the Content Actions Log, sets the dates and pastes the rows into a message.

Cotlet does it in your own Thought Industries account with list\_content\_actions, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=thought-industries) [All Thought Industries tools](https://cotlet.dev/integrations/thought-industries-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Thought Industries do this on its own?

The Content Actions Log is a default report in Reporting, the REST API serves the same events through GET /v2/events/courseAction, and the BI Connector feeds Tableau, Power BI and Looker (checked 23 Oct 2026). Each one needs a person to run the report or a developer to write the call. The announced MCP server cannot be connected today.

## How you do it in Thought Industries today

1. An admin opens Reporting > Reports and, in the Learner Actions section, clicks Content Actions Log. The report generates by itself.
2. The admin sets filters: any date range, client, content, learner, type, source and course group, then clicks Update in the top right.
3. Completions are rows with type status\_change and source course\_completed. Certificates are rows with type certificate\_grant.
4. To share the result, the admin downloads the report as CSV or JSON and filters it again in a spreadsheet.
5. The steps repeat every week with new dates, and lost access hides in the same log under the type revoked\_access, where it is easy to miss.

## How to weekly Thought Industries course completion report

Prompt

```
Every Monday, list who completed a course last week in Thought Industries, count completions per course and tell me who lost access.
```

1. 01  
### Set the window  
list\_content\_actions runs with since set to last Monday and until set to Sunday, filtered to type status\_change and source course\_completed. You can name one course or one Panorama to narrow it.
2. 02  
### Read every page  
The agent follows the cursor until it comes back empty, so a busy week is counted whole and not from the first page.
3. 03  
### Add certificates  
A second call with type certificate\_grant shows who earned one. Completions with no certificate row are listed, because a course may not issue one.
4. 04  
### Check lost access  
A third call with type revoked\_access names the learners who lost a course this week, so a completion count is not read next to learners who can no longer open it.
5. 05  
### Group and report  
The agent counts per course and per Panorama and lists emails only for the course you ask about. It sends nothing to anyone, so the call needs no approval.

### What you get back

Example data

```
Week 12 to 18 Oct
Completed: 9 (Safety basics 6, Onboarding 101 3)
Certificates granted: 7
Completed without a certificate: 2 (Onboarding 101)
Access revoked: 1 (tom.becker@example.com, Safety basics)
```

### Other ways to ask

- Every Friday, list who enrolled by purchase and who was enrolled by a manager.
- Show everyone in the Retail Panorama who started Safety basics and has not completed it.
- List all certificate grants this month as a table I can paste into a spreadsheet.

## What Thought Industries allows, and what to know first

- The Content Actions Log lists enrollments, status changes, certificate grants and access revocations, with the types enrollment, status\_change, certificate\_grant and revoked\_access.
- Each row shows the learner email, Panorama name, content type, content title, type, source and timestamp.
- Every source belongs to one type. Examples: course\_started and course\_completed for status\_change, manager\_course\_enrollment and course\_purchase for enrollment.
- Auto Assignment enrollments appear with the source auto\_enrollment, and automatic unenrollments with auto\_unenrollment.

Every tool here only reads, so it can run weekly from n8n, Make, Zapier or cron without waiting for your OK.

Sources: [Thought Industries Help: Generating a Content Actions Log Report](https://support.thoughtindustries.com/hc/en-us/articles/360046309533-Generating-a-Content-Actions-Log-Report) · [Thought Industries Help: Auto Assignment](https://support.thoughtindustries.com/hc/en-us/articles/30400538282519-Auto-Assignment) · [Thought Industries developer docs: REST API](https://developer.thoughtindustries.com/docs/rest/)

## Call list\_content\_actions from a script

curl

```
curl "https://cotlet.dev/api/v1/thought-industries/content-actions?since=2026-10-12&until=2026-10-18&type=status_change&source=course_completed" \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

Example response

```
{
"actions": [
{
"email": "priya.nair@example.com",
"panorama": "Retail",
"content_type": "course",
"content_title": "Safety basics",
"type": "status_change",
"source": "course_completed",
"timestamp": "2026-10-13T14:02:00.000Z"
},
{
"email": "sam.okafor@example.com",
"panorama": "Field",
"content_type": "course",
"content_title": "Safety basics",
"type": "status_change",
"source": "course_completed",
"timestamp": "2026-10-15T09:41:00.000Z"
}
],
"next_cursor": null
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is thought\_industries\_read → list\_content\_actions. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/thought-industries-api-mcp-server.md#automations)

## Thought Industries tools this automation uses

__Cotlet Thought Industries tools used to weekly Thought Industries course completion report__
| Tool | Parameters |
| ---------------------- | -------------------------------------------------------------- |
| list\_content\_actions | since, until, type, source, content, learner, panorama, cursor |

[All 11 Thought Industries tools with descriptions](https://cotlet.dev/integrations/thought-industries-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Thought Industries to Cotlet?

Yes. You sign in to Thought Industries yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Thought Industries once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Thought Industries automations

- [Enroll new hires in Thought Industries courses](https://cotlet.dev/integrations/thought-industries-api-mcp-server/enroll-new-hires-in-courses.md)
- [Enroll a learner in a Thought Industries course](https://cotlet.dev/integrations/thought-industries-api-mcp-server/enroll-learner-in-course.md)
- [Thought Industries API and MCP server: every tool](https://cotlet.dev/integrations/thought-industries-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Thought Industries.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Thought Industries.

[Sign up free](https://cotlet.dev/app/signup?app=thought-industries)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
