Appearance
Connecting S3-Compatible Storage with FluentSupport
If your helpdesk receives a lot of file attachments, storing them directly on your WordPress site can quickly eat up your server space. Many cloud storage providers speak the same "S3 language" that Amazon S3 uses. With the S3-Compatible Storage option, you can send your ticket attachments to any of these providers instead, which keeps your site light and your files safe in the cloud.
This guide shows you how to connect your storage to FluentSupport. At the end, we also walk through Backblaze B2 as an example of how to collect the details you need from a provider.
Pro feature: S3-Compatible Storage is available in FluentSupport Pro. Using Amazon S3 or Cloudflare R2? They have their own guides: Amazon S3 and Cloudflare R2.
Supported Providers
S3-Compatible Storage works with any service that offers an S3-compatible API, including:
- Backblaze B2
- DigitalOcean Spaces
- Wasabi
- MinIO (self-hosted)
- Other services that support the S3 API
What You Will Need
Before you connect, collect these details from your storage provider:
- Endpoint: The address of your provider's S3 service, such as
s3.us-west-004.backblazeb2.com. - Bucket Name: The name of the private bucket (container) where your files will be stored.
- Access Key and Secret Key: A pair of keys that can read, upload and delete files in that bucket.
Not sure where to find them? Jump to the Backblaze B2 example below to see how it is done.
⚠️ IMPORTANT: Most providers show the Secret Key only once, right after you create it. Copy both keys to a safe place before you leave that page.
Phase 1: Connecting Your Storage to FluentSupport
- Log in to your WordPress admin dashboard and go to FluentSupport > Settings.
- In the left sidebar, click on File Upload Integrations.
- Find the S3-Compatible Storage option in the list and click the Settings (gear) icon on the right side.
- A pop-up window named Configure S3-Compatible Storage Settings will appear. Carefully fill in your information:
- Endpoint: Paste your provider's endpoint, for example
s3.us-west-004.backblazeb2.com. Do not add the bucket name. If you paste it withhttps://, FluentSupport removes that for you. - Region: Optional. Leave it empty and FluentSupport reads the region from the endpoint for Backblaze B2, DigitalOcean Spaces and Wasabi. For other providers, type your bucket's region.
- Access Key: Paste the access key (for Backblaze, the keyID).
- Secret Key: Paste the secret key (for Backblaze, the applicationKey).
- Bucket Name: Type the exact name of your bucket, for example
fluentsupport. - Addressing Style: Keep Virtual-hosted (bucket.endpoint) for most providers. Choose Path-style (endpoint/bucket) only if your provider requires it, as MinIO usually does.
- Custom Domain (Optional): You can leave this empty.
- Path Prefix: Keep
fluent-support. This is the folder inside your bucket where your files will be organized.
- Endpoint: Paste your provider's endpoint, for example
- Click the Save & Connect button.
FluentSupport now checks that it can reach your bucket with these keys. If everything is correct, you will see the message Storage settings have been saved.
Phase 2: Making It Your Active Storage
Saving the settings connects your storage, but FluentSupport will not use it until you switch it on.
- Close the pop-up to return to the File Storage Settings page.
- On the S3-Compatible Storage option, turn on the toggle switch.
- An Active badge appears next to the name, and the Default WordPress Storage switches off.
Only one storage can be active at a time. New uploads go to the active storage, while files uploaded earlier stay where they were saved and keep opening as usual.
Optional: Upload in the background. Below the storage list, you will find the Upload in the background switch. When it is on, replies are saved right away and the files are copied to your remote storage a few seconds later. This is helpful if you often upload large files.
Test Your Connection
- Open any ticket and add a reply with a small attachment, such as an image.
- Open the attachment from the ticket. It should open or download as usual.
- In your provider's dashboard, open your bucket. You should see the file inside the
fluent-supportfolder, in a sub-folder named after the ticket.
Example: Collecting Your Details from Backblaze B2
The screens differ from provider to provider, but the idea is always the same: create a private bucket, create a key for it, and copy the endpoint. Here is how it looks in Backblaze B2.
Step 1: Create a Bucket
- Log in to your Backblaze account. In the left sidebar, under B2 Cloud Storage, click on Buckets.
- Click the Create a Bucket button.
- In the Bucket Unique Name box, type a name for your bucket, such as
fluentsupport. The name must be unique across all of Backblaze and at least 6 characters long. - Under Files in Bucket are, make sure Private is selected. FluentSupport never needs public access to your files, because it opens them through short-lived secure links.
- Leave the other options as they are and click Create a Bucket.
Step 2: Copy the Endpoint
Your bucket now appears on the Buckets page. Look for the Endpoint line on the bucket card and copy its value. This is what you paste into the Endpoint field in FluentSupport.
Note: Your endpoint can be different from the example, depending on the region of your account. Always copy the exact value shown on your own bucket.
Step 3: Create an Application Key
- In the left sidebar, click on Application Keys.
- Scroll down to the Your Application Keys section and click Add a New Application Key.
Please don't use the Master Application Key. It has full access to your whole Backblaze account. Always create a separate key for FluentSupport, so you can limit it to one bucket.
- In the pop-up window, fill in the details:
- Name of Key: Type a name you will recognize, such as
fluentsupport-key. - Allow access to Bucket(s): Select the bucket you created in Step 1.
- Type of Access: Choose Read and Write. This lets FluentSupport upload, open and delete files.
- Name of Key: Type a name you will recognize, such as
- Leave the other options empty and click Create New Key.
- Backblaze now shows a green success box with your new keyID and applicationKey.
⚠️ IMPORTANT: The applicationKey appears only once. Click Copy to Clipboard or copy both values into a safe notepad right now. If you leave this page without saving them, you will have to create a new key.
Step 4: Add Them to FluentSupport
Now go back to Phase 1 and paste your details. Here is how the Backblaze names match the FluentSupport fields:
| Backblaze | FluentSupport |
|---|---|
| Endpoint (on the bucket card) | Endpoint |
| Bucket name | Bucket Name |
| keyID | Access Key |
| applicationKey | Secret Key |
Other Providers
For other providers, follow the same idea. Create a private bucket, create a key that can read and write to it, and copy the provider's endpoint. Common endpoint formats are:
| Provider | Endpoint format | Example | Addressing Style |
|---|---|---|---|
| Backblaze B2 | s3.<region>.backblazeb2.com | s3.us-west-004.backblazeb2.com | Virtual-hosted |
| DigitalOcean Spaces | <region>.digitaloceanspaces.com | nyc3.digitaloceanspaces.com | Virtual-hosted |
| Wasabi | s3.<region>.wasabisys.com | s3.eu-central-1.wasabisys.com | Virtual-hosted |
| MinIO | Your MinIO server's address | minio.yourdomain.com | Path-style |
For Backblaze B2, DigitalOcean Spaces and Wasabi, you can leave Region empty. For other providers, an empty Region is treated as us-east-1, so type your region if your provider uses a different one.
MinIO and private servers: The endpoint must be a public address that your WordPress site can reach over the internet. A MinIO server on
localhostor on a private local network address is not accepted. To allow a private endpoint, a developer can add this filter to your site:phpadd_filter('fluent_support_pro/storage_allow_private_endpoint', '__return_true');
Keep Your Keys Out of the Database (Optional)
You can define the settings in your wp-config.php file instead of the settings screen. When the access key constant exists, FluentSupport uses these values and shows the settings as read-only.
php
define('FLUENT_SUPPORT_S3C_ENDPOINT', 'nyc3.digitaloceanspaces.com');
define('FLUENT_SUPPORT_S3C_ACCESS_KEY', 'your-access-key');
define('FLUENT_SUPPORT_S3C_SECRET_KEY', 'your-secret-key');
define('FLUENT_SUPPORT_S3C_BUCKET', 'your-bucket');You can also set these optional constants:
FLUENT_SUPPORT_S3C_REGIONFLUENT_SUPPORT_S3C_PATH_STYLE:'yes'for path-style addressingFLUENT_SUPPORT_S3C_CUSTOM_DOMAINFLUENT_SUPPORT_S3C_PATH_PREFIX
Troubleshooting
If FluentSupport cannot connect, the pop-up shows a message that starts with Connection failed: followed by the reason. Common causes:
- Bucket does not exist: Check the Bucket Name and make sure it matches the bucket that belongs to your Endpoint.
- Access denied to bucket: Check your Access Key and Secret Key. Also make sure the key is allowed to use that bucket with read and write access.
- The endpoint host could not be found or is not a public address: Check the Endpoint for typos, and remove the bucket name and any
https://from it. - Please enter the secret key again when changing where files are stored: When you change the Endpoint, type the Secret Key again before saving.
If a file could not be uploaded, FluentSupport keeps it safely on your WordPress server and shows a warning on the storage option. After fixing the problem, click Retry now to upload those files again.
Changing or Disconnecting the Connection
Once connected, the pop-up shows a Reconnect button and a Disconnect button.
- To update your keys or bucket, change the fields and click Reconnect.
- To stop using this storage, click Disconnect and confirm.
Files that were already uploaded stay in your bucket, and FluentSupport remembers how to reach them. They keep opening from their tickets after you change the connection or disconnect, as long as the bucket and its keys still exist with your provider. To learn more, see How Remote Files Are Handled.
Congratulations! Your FluentSupport is now connected to your S3-compatible storage, and new ticket attachments will be stored in your bucket.

