Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/carkeek-studios/gravity-forms-bunny-stream-upload/archive/refs/heads/main.zipAdds a Bunny Video field to Gravity Forms that lets visitors upload videos directly from their browser to Bunny Stream via the tus resumable-upload protocol — no server-side buffering required.
Installation
- Download or clone this repository and zip it.
- Go to WordPress Admin → Plugins → Add New → Upload Plugin.
- Upload the zip and activate Gravity Forms Bunny Stream Upload.
Configuration
Credentials are resolved in this order of priority:
wp-config.phpconstants (most secure)- Form settings (per-form override)
- Plugin settings (global defaults)
Method 1: wp-config.php constants (recommended for security)
define( 'BUNNY_STREAM_API_KEY', 'your-api-key-here' );
define( 'BUNNY_STREAM_LIBRARY_ID', '123456' );
define( 'BUNNY_CDN_HOSTNAME', 'vz-xxxxxxxx-xxx.b-cdn.net' );
Constants always win and never touch the database.
Method 2: Plugin settings (global defaults)
Go to Forms → Settings → Bunny Stream Upload and enter:
| Field | Description |
|---|---|
| API Key | Found in Bunny.net dashboard → Stream → Your Library → API |
| Library ID (default) | Numeric ID of your Stream library |
| CDN Hostname (default) | e.g. vz-xxxxxxxx-xxx.b-cdn.net |
These act as global defaults for all forms that do not have their own library configured.
Method 3: Per-form settings
Each form can target a different Bunny Stream library:
- Open a form in the Gravity Forms editor.
- Go to Settings → Bunny Stream Upload.
- Enter the Library ID (and optionally CDN Hostname and API Key) for that form.
- Leave fields blank to inherit the global plugin defaults.
This allows you to upload videos from different forms into separate Bunny libraries.
Getting Your Bunny Stream Credentials
- Log in at dash.bunny.net.
- Click Stream in the sidebar.
- Select or create a library.
- Open the API tab of the library:
- API Key — copy the key shown there.
- Library ID — the numeric value shown in the URL or library details.
- In the library CDN settings, copy the Video CDN Hostname (e.g.
vz-12345-678.b-cdn.net).
Adding the Field to a Form
- Go to Forms → New Form (or edit an existing form).
- In the field picker, find Bunny Video Upload under Advanced Fields.
- Drag it onto your form.
- In the field settings sidebar you can configure:
- Allowed File Extensions — comma-separated (e.g.
mp4,mov,webm). Leave blank to allow all video types. - Max File Size (MB) — browser-side size check before upload begins. Leave blank for no limit.
- Allowed File Extensions — comma-separated (e.g.
How It Works
- The visitor selects a video file — the field validates extension and size in the browser immediately.
- On form submit, the field intercepts the submission and calls the server to create a video object in Bunny Stream (using the library configured for that form).
- The browser uploads directly to Bunny Stream over tus (resumable, chunked, 50 MB chunks by default) — the video never passes through your server.
- Once the upload completes, the hidden field is populated with
filename|videoGuid|libraryIdand the form submits normally. - The Gravity Forms entry stores that value, which the plugin renders as links to the Bunny Stream dashboard and the video player.
Displaying Videos
The entry detail view automatically renders links for each uploaded video:
- View on Bunny Stream — opens the video in the Bunny dashboard.
- Play — opens the iframe player URL.
To embed a video in a template or shortcode, use the helper function:
// $entry_id — the Gravity Forms entry ID
// $field_id — the ID of the Bunny Video field
echo gf_bunny_get_video( $entry_id, $field_id, 640, 360 );
Support
- Gravity Forms: https://www.gravityforms.com/support/
- Bunny Stream: https://support.bunny.net/
- This plugin: Check the WordPress debug log (
WP_DEBUG_LOG).
License
Provided as-is for integration purposes.
Releases
1 release.
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.