Security
Last updated: 26 September 2026. This page summarises how CourseFoundry stores, processes, and protects your data. For enterprise customers, a signed Data Processing Agreement (DPA) is available on request - see our DPA template.
The database, file storage, authentication and application are hosted in the United States (Supabase US-East and Vercel US regions), and so is rendered course output.
AI processing takes place in the regions of the selected AI provider. EU data residency is not currently available. Where an organisation routes all AI to its own Azure endpoint, AI processing follows that endpoint's region.
| Database & authentication | Managed PostgreSQL with row-level security enabled on every table, and managed authentication (email and password, or sign-in with an existing external account). |
|---|---|
| File storage | Managed object storage in the same project as the database. |
| Course publishing | Published courses are served by CourseFoundry from their rendered output, or published as a static site from a repository you own, so that copy stays in your own infrastructure. |
EU data residency is on the roadmap for Enterprise and is not yet available. Every workspace's data is stored in the US today. If you need EU residency, contact us.
| Data at rest | AES-256 managed encryption for the database and file storage, in the United States. |
|---|---|
| Authentication data | User credentials and sessions are held by the managed authentication service in the same United States project. |
| Applicable regulation | GDPR Chapter V (International transfers) - EU personal data transferred to the US is covered by our standard SCCs; EU-US Data Privacy Framework self-certification is in progress. |
CourseFoundry stores some AI content, depending on the feature and on your workspace's settings. The list below shows each kind of stored AI data, when it is stored, who can read it and how long it is kept.
| What is stored | When and what | Who can read it | How long it is kept |
|---|---|---|---|
| AI usage records | When and what For every AI request. Who made the request, which feature it came from and, for a course, which course, the model and provider, token counts, cost in credits, response time, the outcome, and for a failed request the first 120 characters of the error message. | Who can read it
| How long it is kept Kept until the account is deleted. |
| Prompt summaries | When and what Only when an organisation turns on prompt logging. A short description of each request: the feature used and any course, lesson and title text it concerned, up to 60 characters each, plus the length of any content sent. Never the full prompt. | Who can read it
| How long it is kept Kept until the account is deleted. |
| Captured prompts and responses | When and what Only when a user turns on capture for themselves, or an organisation turns it on for its members. The full request: system prompt, messages, the AI response and any tool calls. Images are replaced with a short placeholder. Teaching Guide material is also replaced with a short placeholder, and so is the AI response to a request that used it. Where the guide is available to the AI, earlier AI replies in the conversation, and any reply that follows them, are replaced too. This is because the guide is private to its author. Email addresses and phone numbers are redacted only when the organisation turns on personal-data redaction. | Who can read it
| How long it is kept Deleted automatically after the chosen period of 1 to 365 days (default 30). The period is fixed when the prompt is captured, so changing the setting later does not change when prompts already captured expire. |
| Prompts held for image processing | When and what When the selected AI model cannot process an image at the time of the request. The full prompt and conversation turns, with the images held separately in private storage. | Who can read it
| How long it is kept The images are deleted automatically after 30 days unless the request has been retried. The prompt text is kept until the account is deleted. When the account is deleted the prompt record is removed, but the held images are not automatically deleted. |
| Saved Programme Designer answers and reviews | When and what Only when a user chooses to save a Programme Designer answer or review. The full answer or review text, up to 100,000 characters, with its findings and, for a saved answer, the question asked. | Who can read it
| How long it is kept Kept until the programme is deleted. |
| Opening text of Help and Programme Designer questions | When and what For every question asked of the Help assistant or the Programme Designer. The first 300 characters of the question, with the feature and time it was asked. Never the answer. | Who can read it
| How long it is kept Kept until the account is deleted. |
| Learner questions to the course AI tutor | When and what When a learner's question leads the course AI tutor to search or read the course. The shortened text the tutor searched the course for and the name of the tool it used, with no learner identity. The learner's conversation is never stored. | Who can read it
| How long it is kept Kept until the course is deleted. |
| Course AI chat history | When and what Whenever an author uses the AI chat in a course's editor. Each author's AI chat for a course, saved as part of the course in the file _coursefoundry/chat/history.jsonl, with images removed. | Who can read it
| How long it is kept Kept until the course is deleted. |
| Standard | Status |
|---|---|
| SOC 2 Type II | In progress - Vanta tooling engaged, audit scheduled Q3 2026 |
| ISO/IEC 27001 | Planned Q4 2026, following SOC 2 Type I |
| Cyber Essentials Plus | In progress |
| EU-US Data Privacy Framework | Self-certification in progress |
| GDPR (EU) | Compliant - DPA available on request for Enterprise customers |
| UK GDPR | Compliant - UK IDTA available on request |
CourseFoundry uses the third parties below to provide the service. Each is listed with where it processes data and what it is used for; uses that apply only when you turn on a feature or supply your own provider key are listed separately. Customers who have signed our DPA receive 30 days' prior written notice of any new subprocessor, with the right to object, and every addition, removal or correction to this list is recorded in the change history below.
| Third party | Location | Purpose and data |
|---|---|---|
| Supabase | Location USA | Purpose and data Database, authentication (including SAML single sign-on) and file storage for the whole platform Data: Account details (name, email, username); Course, programme and file content; AI usage records and stored AI data; Sign-in and session data Always |
| Vercel | Location USA + Edge | Purpose and data Application hosting and serverless functions Data: All request data, including IP address and the content of each request Always Web Analytics: page views and visit counts Data: Pages visited; Referrer; Device, browser and country, derived from the request Always Speed Insights: page performance measurements Data: Page URL; Performance timings; Device and browser type Always Retention: Vercel states that on the Hobby plan CourseFoundry uses, Web Analytics data is guaranteed to be kept for a 1-month reporting window, and that Vercel may store data for longer Vercel states: On the Hobby plan, Web Analytics data is guaranteed to be stored and viewable for a 1-month reporting window, and Vercel may store data for longer. Source, checked 26 September 2026. |
| Stripe | Location USA | Purpose and data Payment processing and subscription management Data: Name and email; Billing address; Payment card details, entered directly with Stripe; Subscription and purchase history Always |
| Resend | Location USA | Purpose and data Transactional email delivery Data: Recipient email address and name; Email content Always Retention: Resend states it retains email data for 30 days Resend states: Email data, including content, metadata, delivery events and logs, is retained for 30 days on all standard plans. Source, checked 24 September 2026. |
| Cloudflare | Location Global CDN | Purpose and data Turnstile bot protection on sign-up, sign-in, password reset and enquiry forms Data: IP address; Browser and TLS fingerprint; User agent Always |
| jsDelivr | Location Global CDN | Purpose and data Loads the Mermaid diagram and Alpine.js interactivity scripts used by published courses, from the learner's browser Data: IP address; User agent (browser type and version); Referring site (domain only); The script requested Always jsDelivr states: The CDN is operated by Volentio JSD Limited, a company registered in England and Wales. Source, checked 25 September 2026. jsDelivr states: All CDN traffic is served by Cloudflare, Fastly and Gcore, which see the IP address and other information the browser sends. Source, checked 25 September 2026. jsDelivr states: Non-aggregated usage data, which may include IP address, browser, referrer domain and requested URL, is kept until it is analysed and then deleted, unless it is used for security or to improve the service or the law requires longer; aggregated usage data is kept indefinitely. Source, checked 25 September 2026. |
| Anthropic | Location USA (data at rest); inference may run globally | Purpose and data Default AI provider for AI Forge, chat, agent, workflows, the learner tutor and the Programme Designer Data: Prompts, including course and programme content; Pasted images; AI responses Always Anthropic states: API inputs and outputs are deleted within 30 days of receipt, or kept up to 2 years if flagged for a usage-policy violation. Source, checked 24 September 2026. Anthropic states: API inputs and outputs are not used to train its models by default. Source, checked 24 September 2026. |
| OpenAI | Location Not stated by the provider | Purpose and data Search indexing of programme outcomes (embeddings), used for outcome search and benchmarking, on the platform account, whichever AI provider an organisation selects Data: Programme outcome text Always Search indexing of course content (embeddings) and voice transcription, on the platform account, whichever AI provider an organisation selects Data: Course content; Voice recordings for dictation and recordings Always OpenAI states: API data is kept in abuse-monitoring logs for up to 30 days and is not used to train its models. Source, checked 24 September 2026. |
| Google Fonts | Location Not stated by the provider | Purpose and data Web fonts, loaded by the browser from Google Fonts on every page Data: IP address; User agent Always |
| Third party | Location | Purpose and data |
|---|---|---|
| Cloudflare | Location Global CDN | Purpose and data Serves the Font Awesome icon stylesheet (cdnjs) that courses built from the interactive R or Python template load in the learner's browser Data: IP address; User agent (browser type and version); Referring site (R template pages only); The file requested When you enable: Interactive R or Python course templates |
| jsDelivr | Location Global CDN | Purpose and data Loads the reveal.js slide library in an author's browser when a slide deck is previewed in the classic editor or the pop-out preview Data: IP address; User agent (browser type and version); Referring site (domain only); The script requested When you enable: Slide deck preview (classic editor and pop-out preview) Loads the pdf.js library in an author's browser to read a PDF being imported Data: IP address; User agent (browser type and version); Referring site (domain only); The script requested When you enable: PDF imports Loads the MathJax maths renderer in the learner's browser when a published course page contains mathematics Data: IP address; User agent (browser type and version); Referring site (domain only); The script requested When you enable: Mathematics in course pages Loads the Pyodide Python runtime (Python template) and the Monaco code editor (R and Python templates) in the learner's browser, for courses built from the interactive R or Python template Data: IP address; User agent (browser type and version); Referring site (domain only); The files requested When you enable: Interactive R or Python course templates jsDelivr states: The CDN is operated by Volentio JSD Limited, a company registered in England and Wales. Source, checked 25 September 2026. jsDelivr states: All CDN traffic is served by Cloudflare, Fastly and Gcore, which see the IP address and other information the browser sends. Source, checked 25 September 2026. jsDelivr states: Non-aggregated usage data, which may include IP address, browser, referrer domain and requested URL, is kept until it is analysed and then deleted, unless it is used for security or to improve the service or the law requires longer; aggregated usage data is kept indefinitely. Source, checked 25 September 2026. |
| Shields.io | Location Not stated by the provider | Purpose and data Serves the "Built with Course Foundry" badge when an author previews the course README in the editor Data: IP address; User agent (browser type and version); The badge requested When you enable: Course README preview in the editor Shields.io states: It does not store logs of visits or requests and uses no cookies. Source, checked 25 September 2026. Shields.io states: It is hosted on fly.io, with Cloudflare for DNS and CDN services. Source, checked 25 September 2026. |
| webR | Location Not stated by the provider | Purpose and data Serves the webR runtime and R packages that courses built from the interactive R template load in the learner's browser Data: IP address; User agent (browser type and version); Referring site; The files requested When you enable: Interactive R course template |
| GitHub | Location USA (primarily) | Purpose and data Course snapshots, publishing via GitHub Pages and code repositories Data: Course content; GitHub username and access token When you enable: GitHub connection Programme backups Data: Programme content; GitHub username and access token When you enable: GitHub connection Sign in with GitHub, through Supabase Auth Data: GitHub account name and email When you enable: Sign in with GitHub |
| Zotero | Location USA | Purpose and data Reference library sync Data: Zotero user id and API key; Library collections and citations When you enable: Zotero sync |
| OpenAI | Location Not stated by the provider | Purpose and data AI features, when OpenAI is the selected provider or an author supplies their own OpenAI key Data: Prompts, including course and programme content; Pasted images; AI responses With your own provider key OpenAI states: API data is kept in abuse-monitoring logs for up to 30 days and is not used to train its models. Source, checked 24 September 2026. |
| Location Any country (Google states Gemini API data may be processed in any country where it or its agents operate) | Purpose and data Gemini AI features, when an organisation or author supplies its own Gemini key Data: Prompts, including course and programme content; Pasted images; AI responses With your own provider key Export of lessons and slides to Google Drive, Docs and Slides Data: Exported course content; Google account access token When you enable: Google Docs export Sign in with Google, through Supabase Auth Data: Google account name and email When you enable: Sign in with Google Google states: Prompts and responses on paid-tier keys are not used to improve its products; free-tier prompts and responses are used to improve its products and may be read by human reviewers. Source, checked 24 September 2026. | |
| YouTube | Location Not stated by the provider | Purpose and data Plays a YouTube video that the course author chooses to embed in a course page, in the learner's browser Data: IP address; User agent (browser type and version); The video requested When you enable: Embedded YouTube videos |
| Microsoft | Location The geography of the organisation's own Azure resource | Purpose and data AI features routed to an organisation's own Azure OpenAI or Foundry deployment, authenticated with Microsoft Entra Data: Prompts, including course and programme content; Pasted images; AI responses; Entra client credentials With your organisation's own AI endpoint Audit log export to an organisation's Azure Blob Storage or Log Analytics workspace Data: Audit events, including user identifiers and actions taken When you enable: Azure audit export Microsoft states: Prompts and completions are not used to train its models, and Standard deployments process data in the geography the customer chose. Source, checked 24 September 2026. |
| Replicate | Location Not stated by the provider | Purpose and data AI image generation for course media Data: Image prompts written by the author When you enable: AI image generation Replicate states: Predictions created through the API are deleted after one hour. Source, checked 24 September 2026. Replicate states: Its terms (section 5.2) grant it a licence to use customer data, including to train and generate customer derivative models. Source, checked 24 September 2026. |
| Date | Party | Change | Reason |
|---|---|---|---|
| 26 September 2026 | Party All statements | Change Updated | Reason Statements about stored AI data, retention, account deletion, hosting and zero data retention corrected to match the platform. |
| 26 September 2026 | Party Cloudflare | Change Previously undisclosed; now listed | Reason Receives data for Turnstile bot protection on sign-up, sign-in, password reset and enquiry forms; previously omitted from this list. |
| 26 September 2026 | Party jsDelivr | Change Previously undisclosed; now listed | Reason Serves the diagram and interactivity scripts that published courses load in learners' browsers, and the slide preview and PDF import libraries loaded in authors' browsers; previously omitted from this list. |
| 26 September 2026 | Party Shields.io | Change Previously undisclosed; now listed | Reason Serves the badge in the course README when an author previews it in the editor; previously omitted from this list. |
| 26 September 2026 | Party webR | Change Previously undisclosed; now listed | Reason Serves the webR runtime and R packages that courses built from the interactive R template load in learners' browsers; previously omitted from this list. |
| 26 September 2026 | Party OpenAI | Change Previously undisclosed; now listed | Reason Receives data for search indexing and voice transcription whichever AI provider is selected, and for AI features when OpenAI is selected; previously omitted from this list. |
| 26 September 2026 | Party Google | Change Previously undisclosed; now listed | Reason Receives data for Gemini with an own key, Google Drive export and Google sign-in; previously omitted from this list. |
| 26 September 2026 | Party Google Fonts | Change Previously undisclosed; now listed | Reason Serves the web fonts every page loads in the browser; previously omitted from this list. |
| 26 September 2026 | Party YouTube | Change Previously undisclosed; now listed | Reason Plays YouTube videos that course authors choose to embed, in learners' browsers; previously omitted from this list. |
| 26 September 2026 | Party Microsoft | Change Previously undisclosed; now listed | Reason Receives data for AI routed to an organisation's own Azure deployment and for Azure audit export; previously omitted from this list. |
| 26 September 2026 | Party Replicate | Change Previously undisclosed; now listed | Reason Receives image prompts for AI image generation; previously omitted from this list. |
| 26 September 2026 | Party Supabase | Change Updated | Reason SAML single sign-on now named explicitly under authentication; data categories and use condition now published. |
| 26 September 2026 | Party Vercel | Change Updated | Reason Now also listed for Speed Insights page performance measurements; data categories now published. |
| 26 September 2026 | Party Stripe | Change Updated | Reason Data categories and use condition now published; purpose and region unchanged. |
| 26 September 2026 | Party Resend | Change Updated | Reason Data categories and use condition now published; purpose and region unchanged. |
| 26 September 2026 | Party GitHub | Change Updated | Reason Now also listed for Sign in with GitHub, code repositories and programme backups. |
| 26 September 2026 | Party Zotero | Change Updated | Reason Data categories now published; purpose, region and use condition unchanged. |
| 26 September 2026 | Party Anthropic | Change Updated | Reason Now also listed for the agent, workflows, the learner tutor and the Programme Designer; region corrected from USA to USA for data at rest, with inference that may run globally; provider terms now published. |
| What | What happens | Details |
|---|---|---|
| Your account and the records that belong to it | What happens Removed | Details Account deletion is self-service in Settings and takes effect immediately in the live system. Your profile, any courses you created and their files, your AI usage records, captured prompts, Help and Programme Designer question records, saved Programme Designer answers and reviews you wrote, and the records of prompts held for image processing are removed at once. Two kinds of stored file are not removed from storage when the account is deleted: images held for deferred AI processing, and rendered course output. |
| Security and activity audit events | What happens Kept | Details Kept as a security record, and the link to your account is removed. An event can still contain your email address (for example, invitation and module-invite events), your IP address and your browser details. Events in an organisation stay readable by that organisation's owners and administrators. |
| Programme change-log entries | What happens Kept with your account link removed | Details The author link is removed; the entry is otherwise kept in the programme's change history. |
| Beta feedback messages | What happens Kept | Details The feedback text is kept to improve the product, with your email address and username removed. |
| Database backups | What happens Kept in backups until they expire | Details Backups may still hold deleted data for up to 7 days, after which it is gone. |
| An organisation's view of a member who leaves | What happens Kept | Details AI usage records and captured prompts made in an organisation stay visible to that organisation's owners and administrators after the member leaves, until the account or the organisation is deleted. |
Security questions: security@coursefoundry.com
Privacy & data requests: privacy@coursefoundry.com
Enterprise DPA requests: enterprise@coursefoundry.com