# Get started with Site Manager

> Create a site in Site Manager, share it, and control who can see the Rippling data it uses.

A site is a custom website hosted within Rippling that you can build with AI or upload from another tool, then share with a controlled audience. You manage access in Rippling.

* * *

## Choose between a site, a custom app, and a dashboard

Decide which tool you need before you create anything.

Build a [custom app](https://developer.rippling.com/documentation/rippling-platform/custom-apps/get-started) when you create and update records over time, with forms, approvals, and audit history. Build a site when you need a custom layout, a readout, a calculator, or a microsite. Build a [dashboard](https://developer.rippling.com/documentation/rippling-platform/dashboards/getting-started) when you need metrics with exact filters and drill-down. Combine them when you need both: store records and enforce the process in a custom app, and then build a site that reads that data through the Platform APIs to summarize or present it. If a site is mostly charts with no narrative, build a dashboard instead.

| Feature | Sites | Custom apps | Dashboards |
| --- | --- | --- | --- |
| Built with | HTML, CSS, JavaScript | Custom objects, canvas pages, functions | Dashboard builder or Rippling AI |
| Data access | Platform APIs | Native object data | Native object data |
| Permissions | The API enforces each viewer's permissions | Native, across records, pages, fields, and roles | Native |
| Custom layout and design | Yes | Rippling components only | No |
| Exact filters and drill-down | No | Yes, with an embedded dashboard | Yes |
| Create and edit records | Limited, through the REST APIs | Yes | No |
| Backend or scheduled logic | No | Yes, through workflows and functions | No |

A project works as a site only when it can run in the browser.

| A site can | A site can't |
| --- | --- |
| Run in the browser from HTML, CSS, and JavaScript files | Use a backend server, database, scheduled job, webhook, or a sign-in flow outside Rippling |
| Use hard-coded data, files a viewer uploads, or calculations that run in the browser | Need a command such as `npm start`, `python server.py`, or `rails server` |
| Call the Rippling Platform APIs | Read files from your computer. Include those files in the site instead |
|  | Store data in the browser with `localStorage`, `sessionStorage`, or `cookies` |
|  | Load content or call APIs from other websites, such as map tiles |

To view sites, select **Sites** in the sidebar. Your recently visited sites are listed there. Click **All sites** to see the rest.

To create and manage sites, navigate to **Tools > Site Manager**.

* * *

## Requirements

Before you begin, you need:

-   **Sites creator** to create a site, including one that shows Rippling data. This permission doesn't grant access to other apps or data. Everyone has it by default.
-   **Sites creator with write API access** to create a site that adds, updates, or deletes Rippling data. Everyone has this permission by default too.
-   Rippling AI, if you want to build or edit sites with Rippling AI. Uploading a site you built with another tool works without it.

**Manage all sites** lets someone manage every site at the company. No one has it by default. Super admins and full admins always can.

* * *

## Create a site

You can build a site with Rippling AI, or upload one you built with another tool.

### Build a site with Rippling AI

Use Rippling AI in Site Manager to create the first draft.

1.  Navigate to **Tools > Site Manager**.
2.  In **Build a site with Rippling AI**, describe the site you want. You can also click **Build with AI**.
3.  Rippling AI builds a first draft. Keep chatting to make changes.

### Upload a site

Prepare the files before you upload them.

-   For one page, use a single `.html` or `.htm` file.
-   For more than one file, use a `.zip` that includes an `index.html` file. Link between pages and files with relative paths, such as `./page2.html`.
-   A site can be up to 25 MB and include up to 200 files.

Data saved in the files isn't protected by Rippling permissions. Load sensitive data through the Platform APIs. See [Control who can see and change data](https://developer.rippling.com/documentation/rippling-platform/sites/get-started#control-who-can-see-and-change-data).

If you build with another AI tool, tell it to use the Platform APIs for any Rippling data. Paste this prompt into that tool:

```text
I want to deploy this app as a site in Rippling Sites.
Build it so it runs entirely in the browser from these files: index.html, CSS, JavaScript, and any local assets. Keep it free of backend servers, databases, environment variables, scheduled jobs, webhooks, and build or runtime servers. Avoid localStorage, sessionStorage, and cookies, and keep all content local instead of loading it from other websites.
If the app uses Rippling data, load it when the page runs instead of saving it in the files. Use fetch to call the Rippling Platform APIs at https://rest.ripplingapis.com, and leave out any Authorization header or API token, because Rippling adds the viewer's access automatically. Show a clear message when the viewer doesn't have permission to see something.
Use the Rippling API docs to find the endpoints for the data I need: https://developer.rippling.com/documentation/rest-api
When it's ready, give me a folder with index.html at the root and tell me which files to upload.
If the app can't run this way, tell me why, then suggest the closest version that can.
```

Upload the file:

1.  Navigate to **Tools > Site Manager**.
2.  Click **Upload site**.
3.  Enter a **Name**. Rippling creates the API name from it. You can't change the API name later.
4.  Enter a **Description**. This is optional.
5.  Drag your `.html`, `.htm`, or `.zip` file into **Upload site**, or click to select it.
6.  Click **Create site**.

The site opens. Only you can see it until you share it.

> **Missing index.html:**
> If you see "Entry path index.html was not found," the `.zip` doesn't include an `index.html` file. Add one and upload again.

* * *

## Manage a site

You can manage a site when any one of these is true:

-   You created it.
-   You have **Collaborator** access to it.
-   You have a permission profile with **Manage all sites**.
-   You are a super admin or a full admin.

### Control who can create and manage sites

Super admins, full admins, and full permissions admins can change these permissions in the Permissions app.

| Permission | What it allows | Who has it by default |
| --- | --- | --- |
| **Sites creator** | Create sites, including sites that show Rippling data | Everyone |
| **Sites creator with write API access** | Create sites that add, update, or delete Rippling data | Everyone |
| **Manage all sites** | Manage every site at the company | No one. Super admins and full admins always can. |

To limit who can create sites, or who can build sites that change data:

1.  Navigate to **Company settings > Permissions**.
2.  Select the **Feature access** tab.
3.  In the **Sites creator** or **Sites creator with write API access** row, click **Edit access**.
4.  Select **Custom access**.
5.  Replace **All - Everyone** with the people or groups who should keep access.
6.  To leave people out, add them under **Except**.
7.  Click **Save**.

To let someone manage all sites:

1.  Navigate to **Company settings > Permissions**.
2.  Select the **Permission profiles** tab.
3.  Click **New permission profile**.
4.  Click **Start from scratch**.
5.  Enter a name.
6.  Set the scope.
7.  Click **Next**.
8.  Click **Select app privileges**.
9.  Expand **Tools > Site Manager**.
10.  Select **Manage all sites**.
11.  Finish creating the profile.
12.  Assign the profile to the people who need it.

Open a site to update it, change its files, download it, share it, or delete it.

The site details page has **View site**, **Manage access**, **Edit with AI**, **Manage files**, and **Download all**. People see a site after you share it.

### Open a site

Open a site to see its details.

1.  Navigate to **Tools > Site Manager**.
2.  In the site's row, click the pencil icon.

The details page shows **API name**, **Created by**, **Owned by**, **Created at**, and the files under **All files**. Click **View site** to open the site.

### Update a site with Rippling AI

You can use Rippling AI to edit any site, including one you uploaded.

1.  On the site's details page, under **All files**, click **Edit with AI**.
2.  Describe the changes you want.

### Edit the name or description

Change the name or description from the site details page.

1.  On the site details page, click the three dots next to **Manage access**.
2.  Select **Edit site details**.
3.  Update the name or description.
4.  Save your changes.

### Add or change files

To add files or folders:

1.  On the site's details page, click **Manage files**.
2.  Select **Add folder** or **Upload files**.

To change one file:

1.  In the file's row, click the three dots.
2.  Select **Rename**, **Download**, **Move**, or **Delete**.

To replace the whole site:

1.  On the site's details page, click **Manage files**.
2.  Select **Replace entire site**.
3.  In the **Replace site** dialog, drop or select a `.zip`, `.html`, or `.htm` file.
4.  Click **Confirm**.

Everyone with access sees the new version right away.

### Download a site

Download every file in the site.

On the site's details page, click **Download all**.

### Share a site

Only you can see the site until you share it. Collaborators can manage it.

1.  On the site's details page, click **Manage access**.
2.  Add the people who can view the site.
3.  Add the people who can manage it.

### Delete a site

Delete the site from its details page.

1.  On the site details page, click the three dots next to **Manage access**.
2.  Select **Delete site**.
3.  Confirm that you want to delete the site.

* * *

## Update Rippling data from a site

This is separate from the [Sites API](https://developer.rippling.com/documentation/rest-api/guides/sites), which creates and manages the site itself from code. A site doesn't call the Sites API.

A site calls other Platform APIs directly with `fetch`, without an `Authorization` header or an API token. Rippling adds the viewer's access when someone opens the site at `app.rippling.com/sites/<api_name>`, so these calls only work there. If you open the files on your computer, they fail.

Customize the following code for your setup. This example updates one field on a [custom object](https://developer.rippling.com/documentation/rippling-platform/custom-objects/getting-started) record with [Update a custom object record](https://developer.rippling.com/documentation/rest-api/reference/update-custom-objects-custom-object-api-name-records). Replace `project`, `recordId`, and `status` with your object's API name, the record id, and a field API name from that object.

```javascript
async function updateProjectStatus(recordId, status) {
  const response = await fetch(
    `https://rest.ripplingapis.com/custom-objects/project/records/${recordId}/`,
    {
      method: 'PATCH',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ status }),
    },
  );

  if (!response.ok) {
    throw new Error(`Couldn't update the record: ${response.status}`);
  }

  return response.json();
}
```

A site calls the Platform APIs directly as the viewer, so there's no need to route those calls through a function. A site also can't call other websites.

Viewers see a notice before a site can change data. See [Sites that change Rippling data](https://developer.rippling.com/documentation/rippling-platform/sites/get-started#sites-that-change-rippling-data).

### Use a function for backend work

A site can't run scheduled jobs or backend logic. For that, use a [function](https://developer.rippling.com/documentation/rippling-platform/developer/functions/getting-started) that writes the data to a custom object. The site then reads that custom object through the Platform APIs, and each viewer only sees the records their permissions allow.

For example, a function runs every night, calculates each team's open headcount, and saves the results to a `headcount_summary` custom object. A site reads those records with `GET https://rest.ripplingapis.com/custom-objects/headcount_summary/records/` and shows them as a dashboard.

* * *

## Control who can see and change data

When a site loads Rippling data through the Platform APIs, each viewer sees only the data their own permissions allow. Rippling handles authentication for you, so there's no API token to create. For example, if a manager can see compensation only for their direct reports, a compensation site shows them only their direct reports.

> **Sites follow the viewer's permissions:**
> A site can't do anything the viewer couldn't do in Rippling themselves. If a viewer doesn't have permission to update a record, the site can't update it for them.

Rippling AI loads Rippling data live whenever it can. When it can't, it saves the data in the site, and everyone you share the site with can see it. Before you share a site, check that it doesn't show data some viewers shouldn't see.

> **Data saved in the files isn't filtered:**
> Anyone you share the site with can see data saved in the site's files, regardless of their permissions. Load sensitive data through the Platform APIs instead.

### Sites that change Rippling data

With **Sites creator**, you can build sites that show Rippling data. To build a site that also adds, updates, or deletes Rippling data, you need **Sites creator with write API access**.

If a site can add, update, or delete Rippling data, viewers see a notice before they use it. **I understand** sends the request. **Go back** closes the notice and the request isn't sent. They see the notice again each time the site is updated.

Rippling checks **Sites creator with write API access** for the last person who updated the site. If someone without that permission updates the site, calls that add, update, or delete Rippling data fail until someone with that permission updates the site again. The person who created the site can still update the site's files.

* * *

## Check which fields your site can use

A site uses only fields that the supported Platform APIs expose. Before you rely on a sensitive field, confirm it is in the API and test the response as viewers with different roles. Endpoint details are in the [REST API reference](https://developer.rippling.com/documentation/rest-api/reference/rippling-platform-api).

Some data, such as learning courses and surveys, isn't available through the APIs yet. To include it, ask Rippling AI to store that data in a [custom object](https://developer.rippling.com/documentation/rippling-platform/custom-objects/getting-started) and say who can view it. The data in the custom object doesn't update on its own. Ask Rippling AI to update it when the source data changes.

* * *

## Use cases

-   **Readouts.** A dashboard that shows live headcount by department, or a compensation tool that shows each manager pay data for their own team. Each viewer sees only the Rippling data their permissions allow.
-   **Onboarding guides.** A guide that walks through a policy, or a site for new hires. One site per new hire can include anything you can see about that person, such as courses or surveys, and you share it only with them. One site for every new hire shows each person only their own information, and that works only when the site loads data through the Platform APIs.
-   **Calculators.** A return on investment (ROI) calculator, or another calculator that runs in the browser.
-   **Handbooks and event sites.** A company handbook or an event website, shared with the people who need it.

* * *

## See also

-   [Create and manage sites](https://developer.rippling.com/documentation/rest-api/guides/sites), for creating and managing sites from code
-   [Get started with functions](https://developer.rippling.com/documentation/rippling-platform/developer/functions/getting-started)
-   [Get started with custom apps](https://developer.rippling.com/documentation/rippling-platform/custom-apps/get-started)

Source: https://developer.rippling.com/documentation/rippling-platform/sites/get-started

> For the complete documentation index, see [llms.txt](https://developer.rippling.com/llms.txt). Public pages have a Markdown version at the same URL with .md added.
