This guide walks you through connecting an S3-compatible object storage bucket hosted on your own account to HeftySend. The steps below use Cloudflare R2 as the example provider, but any S3-compatible storage with similar setup options will follow the same general pattern.
Custom storage requires a Premium or Ultra plan. See Using your own storage with HeftySend for an overview.
Step 1: Create your bucket
- Log in to your storage provider dashboard
- Navigate to the object storage section and create a new bucket
- Give it a name and choose a location
Step 2: Set up CORS
- Open your bucket settings and find the CORS policy section
- Add the following CORS configuration:
[
{
"AllowedOrigins": ["*"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
"AllowedHeaders": ["*"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3000
}
]
CORS must be set on the bucket or uploads from the browser will be blocked. Wait 2 to 3 minutes after saving for the changes to take effect.
Step 3: Create an API token
- Go to the API tokens or access keys section of your storage account
- Create a new token with Object Read and Object Write permissions
- Scope it to your specific bucket
- Save the Access Key ID and Secret Access Key
The Secret Access Key is only shown once. Copy it to a safe place before closing the window.
Step 4: Find your endpoint
Your S3-compatible endpoint is shown in your account dashboard. For R2-style storage it follows the format:
https://[ACCOUNT_ID].r2.cloudflarestorage.com
Replace [ACCOUNT_ID] with your actual account identifier.
Step 5: Connect to HeftySend
- Go to Settings > Storage in your HeftySend dashboard
- Click "Configure S3 Storage"
- Enter your endpoint URL
- Enter your Access Key ID and Secret Access Key
- Enter your bucket name
- Select your region from the dropdown
- Click "Test Connection" then "Save"
Available regions
| Region code | Location |
|---|---|
| wnam | Western North America |
| enam | Eastern North America |
| weur | Western Europe |
| eeur | Eastern Europe |
| apac | Asia Pacific |
Troubleshooting
If connection fails, double-check your endpoint URL and credentials. For CORS errors, confirm the CORS policy was saved correctly and give it a few minutes to propagate.