A contact form may look like one website feature while relying on several recurring services. The visible form, submission endpoint, spam control, email delivery, storage, file uploads, integrations, and support can each have a separate limit or renewal. Review the complete chain before deciding that a plan is inexpensive or that a free replacement is equivalent.
1. Trace one real submission path
Use a harmless test message and record every system it crosses: the website, form processor, bot check, notification mailbox, dashboard archive, customer relationship tool, automation, and any file store. Do not submit sensitive data. Note the owner and billing account for each service. A charge that appears unrelated to the form may still support delivery or routing.
2. Separate fixed charges from usage charges
For each component, record the billing interval, renewal date, included usage, overage rule, and cancellation notice. Use the current account page or vendor documentation rather than an old invoice alone. Formspree, for example, differentiates plans by monthly submissions, archive duration, file storage, team members, integrations, and other features. A form that fits a free submission allowance may still depend on a paid archive or integration.
3. Measure actual volume
Count legitimate submissions, spam, file uploads, and automated retries for several representative months. Record peaks as well as averages. Compare those observations with the plan's included allowances. Do not treat blocked spam as cost-free without checking how the provider counts it, and do not assume a quiet month represents seasonal traffic.
4. Review spam protection separately
Identify the bot-control product, the number of configured widgets or sites, and any enterprise features in use. Cloudflare documents a free Turnstile plan with limits on widgets and hostnames, while its enterprise plan adds other capabilities. Turnstile can also operate independently of other Cloudflare services. That means a reviewer should verify the exact plan and configuration rather than infer a CAPTCHA charge from the website's hosting plan.
5. Check retention and recovery
Find how long submissions remain in the provider dashboard, whether exports are available, and who can restore a missed message. Open a recent, non-sensitive submission in both the notification mailbox and provider archive. If the paid plan is being kept mainly for retention, document the retention requirement and test the approved export route before proposing a downgrade.
6. Identify paid feature dependencies
List autoresponders, custom email domains, routing rules, webhooks, customer-management connections, file uploads, team access, and priority support. Mark each feature as used, unused, or unverified. A feature should count as required only when there is a current workflow or owner decision behind it. Preserve configuration until the downstream effect of removal is known.
7. Calculate an annualized view
Put every confirmed recurring charge in one table with vendor, purpose, owner, billing interval, renewal date, annualized amount, usage limit, and evidence link. Keep one-time development work out of the recurring total. Label uncertain taxes, exchange rates, and overages as estimates rather than silently combining them with confirmed charges.
8. Test before changing anything
If a lower tier appears sufficient, write a reversible test plan that covers submission, spam handling, email delivery, storage, export, integrations, and file attachments. Stop before changing a subscription or deleting data unless the billing owner approves. The review is complete when another person can trace every recurring cost to a current feature, a measured usage level, and a named decision owner.
Sources
- Cloudflare Turnstile plans — Cloudflare
- Formspree Plans — Formspree