> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://fastpix.com/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fastpix.com/docs/_mcp/server.

# Upload, embed, and manage WordPress video

> Upload, embed, and manage FastPix video in WordPress: add files or URLs, embed with a block or shortcode, protect playback, and view analytics.

Once the FastPix plugin is [installed and connected](/docs/integrations/wordpress), you can add videos, embed them in posts and pages, control who can watch, read analytics, and run live streams, all from the WordPress admin.

If you haven't connected the plugin yet, start with [Integrate FastPix with WordPress](/docs/integrations/wordpress).

\


## Upload videos

After you connect your FastPix account, you can add videos from three sources: a file, a URL, or your existing Media Library.

### Upload a file

1. In your WordPress admin panel, go to **FastPix** > **Add media**.
2. Do one of the following:
   * Drag one or more video or audio files into the upload area.
   * Click **Browse** and select files from your computer.
3. Click **Next** to name the batch and choose settings.
4. Configure the following media settings:
   * **Title**: An optional batch title. Leave it blank to use each file's name.
   * **Who can watch**: **Anyone**, **Private** (signed tokens), or **DRM**.
   * **Quality**: **Standard**, **Pro**, or **Premium**. This is locked after upload.
   * **Top resolution**: The highest rendition FastPix produces. Defaults to 1080p.
   * **Allow downloads**: **Off**, **Video (MP4)**, **Audio only (M4A)**, or **Video + audio**.
   * **Even out volume**: Normalizes audio loudness.
   * **Subtitles**: On by default in your site language when FastPix supports it.
   * **Lock to this site**: Restricts playback to your domain. Add other domains you own under **Allow on**, or switch to a block list under **Sites not on the list**.
5. Click **Upload**.

Uploads are resumable and run in the browser in 5 MB chunks. You can leave the page after starting. If the browser is closed mid-upload, the library shows a **Resume upload** action that asks for the same file again and continues from where it stopped.

> **NOTE:** Nothing uploads until you click **Upload**. If FastPix is not responding, the screen pauses uploads rather than queueing a file it cannot reliably send.

### Upload from a URL

1. On the **Add media** screen, paste a public video URL under **Or upload using video URL**.
2. Click **Upload**.

FastPix fetches the file directly. See [Supported platforms](https://fastpix.com/docs/upload-videos/upload-videos-from-a-url) for the sources FastPix can ingest.

### Move existing Media Library videos

The migration tool moves videos that already live in your WordPress Media Library to FastPix while keeping the originals.

1. Go to **FastPix** > **Videos** and click **Move existing video**.
2. Click **Scan** to find video attachments. The scan runs in the background.
3. Review the list. Choose **Migrate all** or **Choose which ones**, then click **Migrate**. You can **Pause** and **Resume** at any time.

4) Watch the progress as each video is submitted, processed, and made ready. When every item passes verification, **Cleanup** becomes available. It removes the local files.

Migration never edits post content. Existing embeds of a migrated attachment play from FastPix at render time. Until you run cleanup, any item can be reverted to its local file.

> **NOTE:** Cleanup is only offered for a batch whose items passed verification. After cleanup, there is nothing to revert to.

\


## Embed videos in posts and pages

You can add FastPix videos to any post or page with the Gutenberg block or the shortcode. Both use the same renderer and the same per-embed options. Nothing edits your post content: embeds render at view time.

### Add a video with the block

1. In the block editor, add the **FastPix Video** block from the **Media** category.

2) Pick a video from your library, or upload one now.
3) Adjust the player options in the block sidebar.

The block saves a static fallback (poster and link) in the post, so published pages degrade gracefully if the plugin is ever deactivated. Public videos show the poster and a link; private and DRM videos show a short message.

### Add a video using the shortcode

```
[fastpix id="playback_ID"]
```

#### Shortcode parameters

| Parameter         | Required | Description                                                                                   | Default               |
| ----------------- | -------- | --------------------------------------------------------------------------------------------- | --------------------- |
| `id`              | Yes      | The media ID of your video. `videoid`, `media_id`, and `playback_id` are accepted as aliases. | None                  |
| `streamid`        | No       | A live stream ID instead of a media ID. See [Set up live streaming](#set-up-live-streaming).  | None                  |
| `autoplay`        | No       | Start playback on load.                                                                       | `false`               |
| `muted`           | No       | Start muted. Required by browsers for autoplay.                                               | `false`               |
| `loop`            | No       | Restart when the video ends.                                                                  | `false`               |
| `controls`        | No       | Show the control bar. `nocontrols` is a shorthand for `false`.                                | `true`                |
| `chapters`        | No       | Show chapter markers.                                                                         | `true`                |
| `transcript`      | No       | Show the transcript panel.                                                                    | `false`               |
| `captionsdefault` | No       | Turn captions on by default.                                                                  | `false`               |
| `lazyload`        | No       | Load the player only when it scrolls into view.                                               | `true`                |
| `accentcolour`    | No       | Player accent color. `accentcolor` is accepted.                                               | `#6D22CD`             |
| `poster`          | No       | Poster image URL. Wins over `thumbnailtime`.                                                  | The video's thumbnail |
| `thumbnailtime`   | No       | Second of the video used for the poster.                                                      | `1`                   |
| `starttime`       | No       | Second to start playback from.                                                                | `0`                   |
| `aspectratio`     | No       | Force an aspect ratio, for example `16:9`.                                                    | The video's own       |
| `clicktoplay`     | No       | Play on click. `noclick` is a shorthand for `false`.                                          | `true`                |
| `keyboard`        | No       | Keyboard shortcuts. `nokeys` is a shorthand for `false`.                                      | `true`                |
| `complete_at`     | No       | Lesson videos only. Percentage watched that counts as complete.                               | `90`                  |
| `track_viewer`    | No       | Lesson videos only. Record who watched.                                                       | `false`               |

Booleans accept `true` or `false`. A bare flag also works: `[fastpix id="…" autoplay muted]`.

#### Example

```
[fastpix id="abc123def456" autoplay muted accentcolour="#0055FF" starttime="30"]
```

### Find your video's media ID

1. In your WordPress admin panel, go to **FastPix** > **Videos**.
2. Find the video in the table. The **Media ID** and **Playback ID** columns show both identifiers.
3. Click the video to open its details and copy the ready-made shortcode.

When you publish your post or page, WordPress renders the FastPix player with your specified configuration. Public embeds are cached for an hour. Private and DRM embeds are signed on every render.

\


## Manage videos

You can view and manage all uploaded videos from the **Videos** screen.

### Browse the library

1. In your WordPress admin panel, go to **FastPix** > **Videos**.
2. Switch between **Table** and **Grid** view.
3. Filter by **Status** (Ready, Processing, Failed), **Access** (Public, Private, DRM), and **Source** (Upload, URL, Migrated, Dashboard, Live).
4. Search titles, transcripts, and chapters from the search box.

Authors see only the videos they uploaded. Editors and administrators see the whole workspace.

### View and edit video details

Click a video to open its details. From there you can:

* Edit the title and description.
* Add, replace, or remove subtitle tracks.
* Copy the shortcode or the media ID.
* Re-run AI enrichment to regenerate chapters, a summary, and named entities.

### Run bulk actions

Select several videos and choose an action from **Bulk actions**:

* **Re-run AI**
* **Regenerate posters**
* **Delete**

Bulk actions run in the background. You can leave the page.

> **NOTE:** Deleting a video removes it from FastPix and tombstones it locally. Posts that embed it are never edited; they show the saved fallback instead.

\


## Protect playback

Set access when you upload, or change it later from the video details.

* **Anyone**: Plays without restrictions. Public markup is cached and structured data is emitted for search engines.
* **Private**: The plugin mints a short-lived RS256 token at render time that authorizes the stream, thumbnail, and spritesheet. Tokens are never written to post content, transients, logs, or reports.
* **DRM**: Adds a second token for the license exchange. Requires a **DRM configuration ID** in **Settings** > **Video setup**. See [Configure settings](/docs/integrations/wordpress-settings-and-reference#video-setup).

Access checks are tied to the posts that embed each video. A private video plays only on a page the visitor is allowed to read.

**Private link lifetime** in **Settings** controls how long a signed token stays valid, from 2 minutes to 24 hours. The default is 15 minutes.

> **WARNING:** Pages with private or DRM video must be excluded from full-page caches. The plugin sends `DONOTCACHEPAGE`, but edge caches configured outside WordPress cannot see that header. Site Health reports the page cache it detects.

\


## View analytics

The **Analytics** screen reads a local daily rollup that the plugin pulls from FastPix Data in the background. Nothing on the screen calls FastPix at render time.

### Read the dashboard

1. In your WordPress admin panel, go to **FastPix** > **Analytics**.
2. Choose a scope: **Across the site**, **One video**, or **LMS**.
3. Pick a range from **Last 60 mins** to **Last 30 days**, or **Custom**.
4. Filter by device: **Mobile**, **Desktop**, or **Tablet**.

The dashboard shows views, unique viewers, watch time, quality of experience scores, and playback errors. Switch to **One video** to see per-video engagement, including how far viewers get and where they drop off.

### Export a CSV

1. Click **Export CSV**.
2. Choose the **Date range** and what to **Include**: every video, the per-day rows, and the device breakdown.
3. Click **Start export**.

The export runs as a background job. The file appears on the screen when it is ready.

### Watch progress and resume

The player records watch progress so a returning visitor resumes where they stopped. Progress is stored only in your WordPress database and only when the visitor's consent platform allows it. The plugin recognizes the WP Consent API, Cookiebot, OneTrust, and CookieYes.

\


## Add course features

Course features are off by default. Turn them on in **Settings** > **Video setup** > **Course features** when a supported LMS is detected: **LearnDash**, **TutorLMS**, **LifterLMS**, or **LearnPress**.

With course features on:

* Lesson videos gain a **Completion** panel in the block, or the `complete_at` and `track_viewer` shortcode attributes in classic editors.
* Completion is skip-proof. The server re-reads the threshold from the lesson's own markup and ignores beats for videos not embedded in that lesson.
* On completion, the plugin calls the LMS's own completion function to credit the lesson. The `fastpix_video_completed` action fires first for custom rules, and the `fastpix_lms_auto_complete` filter turns automatic credit off. See [Developer hooks](/docs/integrations/wordpress-settings-and-reference#developer-hooks).
* The **LMS** tab in **Analytics** shows per-course student progress.

Per-learner data is stored as a salted hash, never a name, and is pruned after the **Per-learner retention** period in **Settings** (90 days by default). It is covered by the WordPress personal-data export and erasure tools.

\


## Set up live streaming

### Create a stream

1. Go to **FastPix** > **Videos** > **Live streams** and click **Create stream**.
2. Enter a **Name**, choose **Who can watch**, and select **Record it** to keep the broadcast.
3. Click **Create**.

The stream row shows the RTMPS and SRT ingest addresses and the stream key. Paste them into your encoder, for example OBS:

| Protocol | Address                             |
| -------- | ----------------------------------- |
| RTMPS    | `rtmps://live.fastpix.com:443/live` |
| SRT      | `srt://live.fastpix.com:778`        |

### Embed a stream

```
[fastpix streamid="playback_ID"]
```

One embed handles all three states. Before the broadcast it shows a waiting card. When the stream goes live it switches to the live player. After the stream ends it serves the recording, which also lands in your library as an ordinary video.

> **NOTE:** Live streaming is feature-flagged. If the **Live streams** screen is missing, turn it on with the `fastpix_feature_live` filter. See [Developer hooks](/docs/integrations/wordpress-settings-and-reference#developer-hooks).

\


#### Frequently asked questions

The upload area accepts common video formats (including MP4, MOV, MKV, WebM) and audio formats (MP3, WAV, AAC, M4A, OGG), up to 8 hours duration of video. Uploads are resumable in 5 MB chunks.

Embed it the same way with the block or shortcode. For private videos, the plugin signs a short-lived token at render time. DRM also needs a DRM configuration ID in Settings. Keep pages with private or DRM video out of full-page caches.

\


## Troubleshoot

**Upload fails or stays paused.** The Add media screen pauses when FastPix is not responding. Click **Retry**. Verify the credentials in **Settings**, check if the video file is under 8 hours of duration and in a supported format, and try a smaller file to test the connection.

**A new video doesn't appear in the library.** Without webhooks, the sweep runs every few minutes. Run `wp fastpix sync`, or set up webhooks. See [Set up webhooks](/docs/integrations/wordpress#set-up-webhooks).

**A private video doesn't play.** Check that the page is served over HTTPS, the visitor can read the embedding post, and the page is excluded from any full-page cache. Site Health lists the page cache it found.

**DRM shows the fallback message.** Enter a **DRM configuration ID** in **Settings** > **Video setup**.

**Transcript search is unavailable.** The database lacks FULLTEXT support. Title search still works. Upgrade to MySQL 5.7 / MariaDB 10.3 or later with InnoDB.

**Analytics show nothing yet.** The rollup pulls in the background. Confirm the **Workspace key** is saved so player events reach the right workspace, then wait for the next pull.

**Live streams don't appear.** Live is feature-flagged. Add `add_filter('fastpix_feature_live', '__return_true');` to your site.

For setup and connection issues, see [Troubleshoot setup](/docs/integrations/wordpress#troubleshoot-setup). For anything else, copy the support report from **Settings** > **Copy support report** and send it to FastPix support.

\


## What's next

* [WordPress plugin settings and reference](/docs/integrations/wordpress-settings-and-reference) for settings, roles, WP-CLI, and developer hooks.
* [Upload videos from a URL](https://fastpix.com/docs/upload-videos/upload-videos-from-a-url)
* [Live streaming](https://fastpix.com/docs/live-streaming/overview) to broadcast and embed live streams that the plugin plays in WordPress.
* [Video Data](https://fastpix.com/docs/video-data/overview) to understand the analytics the plugin surfaces.