SharePoint lists work like a lightweight database — each list is a table, columns are metadata fields — but built for collaborative, permission-aware environments rather than raw relational data. Here’s the built-in list types, the template IDs for creating them programmatically, and how to work with them in code.
In this post: Built-in list types · Template IDs for creating lists programmatically · Working with lists in code · When would you actually use this?
Built-in list types
| List Type | Description | Example Use Cases |
|---|---|---|
| Custom List | A blank list where you define the columns. | Task tracking, project management, or reporting. |
| Issue Tracking | A pre-configured list for managing issues or problems. | Bug tracking, support ticket management. |
| Task List | A list designed for tracking tasks, complete with start and due dates. | Project task assignments, personal to-do lists. |
| Calendar | A list for scheduling events, complete with a calendar view. | Meeting schedules, event planning. |
| Contacts | A list for managing contact information. | Employee directories, vendor contact lists. |
| Announcements | A list for posting announcements or messages. | Team updates, company-wide notifications. |
| Links | A list to store and organize URLs. | Resource hubs, knowledge base links. |
| Promoted Links | A visually enhanced list of links, often used for navigation. | Intranet quick links, navigation menus. |
| Survey | A list for collecting feedback with a series of questions. | Employee feedback, customer surveys. |
| Document Library | A specialized list for storing and managing documents, with version control and metadata. | File repositories, policy libraries. |
Official reference: Microsoft SharePoint documentation.
Template IDs for creating lists programmatically
| List template type | Template ID | Base type | Description |
|---|---|---|---|
| Custom List | 100 | 0 | A basic list that can be adapted for multiple purposes. |
| Document Library | 101 | 1 | Contains a list of documents and other files. |
| Survey | 102 | 4 | Fields on a survey list represent questions asked of participants. Items represent responses. |
| Links | 103 | 0 | Contains a list of hyperlinks and their descriptions. |
| Announcements | 104 | 0 | Contains a set of simple announcements. |
| Contacts | 105 | 0 | Contains a list of contacts used for tracking people in a site. |
| Calendar | 106 | 0 | Contains single and recurring events, with calendar views. |
| Tasks | 107 | 0 | Contains finished and pending work items. |
| Discussion Board | 108 | 0 | Contains discussion entries and replies. |
| Picture Library | 109 | 1 | A library adapted for storing and viewing digital pictures. |
| Form Library | 115 | 1 | Contains XML documents and forms/rules for editing them. |
| No Code Workflows | 117 | 1 | Additional workflow definitions without code-based extensions. |
| Wiki Page Library | 119 | 1 | Contains a set of editable web pages. |
| Project Tasks | 150 | 0 | Tasks with a Gantt chart view. |
| Issues Tracking | 1100 | 5 | Contains a list of items to track issues. |
Full reference: SharePoint List Template Types Documentation.
Working with lists in code
REST, CSOM, and PnP PowerShell all work. Creating an item via REST:
fetch("https://yourdomain.sharepoint.com/_api/web/lists/getbytitle('Tasks')/items", {
method: "POST",
headers: {
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose",
"X-RequestDigest": document.getElementById("__REQUESTDIGEST").value
},
body: JSON.stringify({
Title: "New Task",
StartDate: "2025-01-01",
DueDate: "2025-01-10"
})
}).then(response => response.json()).then(data => console.log(data));
Beyond CRUD: customize the UI with JSON column formatting, SPFx, or Power Apps; automate around list events (like sending an alert when an item changes) with Power Automate.
SharePoint lists throttle past roughly 5,000 items unless you’ve indexed and filtered properly.
When would you actually use this?
- You need a quick help desk / ticket system without standing up real software — an Issue Tracking list handles status and priority out of the box.
- You want a centralized, searchable knowledge base of links or docs that any team member can update — a Links or Document Library list, not a shared spreadsheet.
- You’re building a project tracker and don’t need a full project management tool — a Custom or Task List with the right columns covers most of it.
- You need to create lists programmatically (via provisioning scripts or SPFx) — that’s what the template ID table above is for.
Worth knowing before you lean on lists heavily: they throttle past roughly 5,000 items unless you’ve indexed and filtered properly, fine-grained permissions get messy at scale, and lookup columns are not a substitute for real relational data. For anything approaching that scale or complexity, a real database is the better call.
That 5,000 number is a specific, real thing — the List View Threshold — not an approximate slowdown. It’s a hard limit on how many items a single query (a view, a filter, most REST/CSOM calls) can process in one operation; cross it without help and the operation is blocked outright with an error, not just slow. Indexed columns are the fix: mark the column you’re actually filtering or sorting by as indexed (List Settings > Indexed columns > Create a new index), and queries filtered on that column can skip the threshold because SharePoint can use the index instead of scanning the whole list. A view or query that filters on a non-indexed column still hits the wall regardless of how the data is otherwise organized — folders don’t help, and neither does simply having “fewer columns.” If a list is approaching this size, indexing the columns people actually filter and sort by isn’t an optimization, it’s the difference between the list working and returning an outright error.
Worth bookmarking for next time. Drop a question below if needed.
App Catalog Authentication Automation Backup Compliance Content Type CSS Flows Google Javascript Limitations List Metadata MFA Microsoft Node NodeJs O365 OneDrive Permissions PnP PnPJS Policy PowerApps Power Automate PowerAutomate PowerPlatform PowerShell React ReactJs Rest API Rest Endpoint Security Send an HTTP Request to SharePoint SharePoint SharePoint List SharePoint Modern SharePoint Online SPFX SPO Sync Tags Teams Termstore Versioning


