Skip to content

Contactum

  • Home
  • Features
  • Integrations
  • Pricing
  • Templates
  • Blog
  • Contact
Contactum

Contactum

1
  • Contactum Admin Overview

Integrations

36
  • Zoho CRM Integration
  • Trello Integration
  • Sendinblue (Brevo) Integration
  • SendFox Integration
  • Salesforce Integration
  • Moosend Integration
  • Pipedrive Integration
  • MailerLite Integration
  • iContact Integration
  • HubSpot Integration
  • Campaign Monitor Integration
  • GetResponse Integration
  • Drip Integration
  • ConvertKit Integration
  • Constant Contact Integration
  • AWeber Integration
  • Airtable Integration
  • ActiveCampaign Integration
  • Amazon S3 Integration
  • Mailchimp Integration
  • Webhook Integration
  • CleanTalk Integration
  • Cloudflare R2 Integration
  • WooCommerce Integration
  • Twilio Integration
  • Zapier Integration
  • n8n Integration
  • Notion Integration
  • Google Sheets Integration
  • Google Calendar Integration
  • Google Analytics Integration
  • Google Drive Integration
  • OneDrive Integration
  • Dropbox Integration
  • Mailjet Integration
  • Help Scout Integration
View Categories
  • Home
  • Docs
  • Integrations
  • Cloudflare R2 Integration

Cloudflare R2 Integration

4 min read

Automatically upload files from a form’s File Upload field to a Cloudflare R2 bucket — S3-compatible object storage without egress fees. Cloudflare R2 requires Contactum Pro with the module enabled.


Requirements #

  • Contactum Pro, with the Cloudflare R2 module active (Contactum → Modules)
  • An active Cloudflare account with an R2 bucket already created
  • An R2 API Token with Object Read & Write permission

1. Get Your R2 Credentials #

  1. In your Cloudflare dashboard, note your Account ID (shown on the R2 overview page).
  2. Create an R2 API Token with Object Read & Write permission, and copy the resulting Access Key ID and Secret Access Key.
  3. Note the name of the bucket you want to upload into.
  4. If you want uploaded files to be publicly linkable, note your bucket’s r2.dev Public Development URL or connected custom domain — R2 buckets are private by default.

2. Connect Cloudflare R2 in Contactum #

  1. Go to Contactum → Settings → Integrations → Cloudflare R2.
  2. Fill in:
    • Account ID
    • Access Key ID
    • Secret Access Key
    • Bucket Name
    • Public Base URL (optional) — your r2.dev URL or custom domain, if you want a public link stored for each upload. Leave blank to skip.
    • Path Prefix (optional) — a leading folder applied to every upload, e.g. contactum/uploads/ (default). Include the trailing slash.
  3. Click Save & Test Connection.

Contactum writes and immediately deletes a tiny test object in your bucket to confirm the credentials work. On success you’ll see a confirmation and the status badge turns green. Unlike some integrations, these fields stay visible and editable even after a successful connection, so you can update any value without needing to “disconnect” first.

To disconnect, click Disconnect Cloudflare R2 — this clears the stored credentials and stops all uploads until reconnected.


3. Enable Cloudflare R2 on a Specific Form #

  1. Open the form in the builder.
  2. Go to Form Settings → Integrations.
  3. Toggle Enable R2 for this form on, then click Configure.

4. Configure Upload Settings #

Field Description
Folder Prefix A folder path appended after the global Path Prefix, e.g. form-7/ (leave blank to use just the global default)
Delete local copy after upload Removes the file from your WordPress server once it’s safely uploaded to R2

No field mapping — this integration handles files only.


5. How It Works #

Uploads happen as soon as a visitor selects a file in a File Upload field, not when the form is finally submitted:

  1. Contactum checks the global connection is active and this form has R2 enabled.
  2. The destination key is built from the global Path Prefix + this form’s Folder Prefix + the original filename.
  3. The file is uploaded to your R2 bucket.
  4. On success, Contactum always stores the object’s storage key on the file’s WordPress attachment. It additionally stores a public link only if you set a Public Base URL in the global settings — without one, the file stays private in your bucket with no public link recorded.
  5. If Delete local copy after upload is enabled, the file is removed from your server after a successful upload.

A failed upload does not block form submission, and is recorded in Contactum’s API Log for review.

Unlike Amazon S3, R2 has no per-file public/private toggle. Visibility is controlled entirely at the bucket/domain level — either your bucket has a public URL connected (the Public Base URL field) and every uploaded file is reachable through it, or it doesn’t and nothing is.


Troubleshooting #

“Your settings could not be verified” #

  • Reconfirm the Account ID, Access Key ID, Secret Access Key, and Bucket Name are all correct, and that the API Token has Object Read & Write permission.

Files aren’t uploading #

  1. Confirm the form has Enable R2 for this form toggled on and saved.
  2. Confirm the global connection still shows verified.
  3. Check the API Log (Contactum → Tools → API Log, if available) for a logged failure and its error message.

Uploaded files have no public link #

  • This is expected if you left Public Base URL blank. Set it to your bucket’s r2.dev URL or connected custom domain if you want files to be publicly linkable.

I enabled “Delete local copy” and now a file is missing #

  • If an upload to R2 fails, don’t rely on the local copy having been deleted — but a successful upload followed by deletion is permanent. If this happens repeatedly, disable Delete local copy after upload until you’ve confirmed uploads are reliably succeeding.

Notes #

  • Requires Contactum Pro with the Cloudflare R2 module active — not available in the free plugin.
  • Auth method: static Access Key ID + Secret Access Key (R2 API Token) — S3-compatible signing, not OAuth.
  • Credentials storage: all fields are stored in wp_options under the key contactum_r2.
  • A failed submission never blocks the form — the visitor’s experience is unaffected by an R2 outage or misconfiguration.
Updated on September 16, 2026

What are your Feelings

  • Happy
  • Normal
  • Sad

Share This Article :

  • Facebook
  • X
  • LinkedIn
  • Pinterest
CleanTalk IntegrationWooCommerce Integration

Powered by BetterDocs

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Table of Contents
  • Requirements
  • 1. Get Your R2 Credentials
  • 2. Connect Cloudflare R2 in Contactum
  • 3. Enable Cloudflare R2 on a Specific Form
  • 4. Configure Upload Settings
  • 5. How It Works
  • Troubleshooting
    • "Your settings could not be verified"
    • Files aren't uploading
    • Uploaded files have no public link
    • I enabled "Delete local copy" and now a file is missing
  • Notes

Contactum

The free WordPress form builder with unlimited entries, built-in spam protection, and 36+ Pro integrations.

Information

  • Features
  • Integrations
  • Templates
  • Pricing
  • Home
  • Features
  • Integrations
  • Pricing
  • Templates
  • Blog
  • Contact