Vue Integration Guide
Complete guide to integrate MyFormCapture with Vue
Add a MyFormCapture contact form to a Vue 3 app with the Composition API. Submit with FormData and fetch — no custom backend required.
Prerequisites
- A MyFormCapture account — sign up here
- A form created in your MyFormCapture dashboard with its UUID copied
- A Vue 3 project (Vite or similar)
-
Basic familiarity with the Composition API (
ref,<script setup>)
Integration Methods
Composition API + fetch
Build a contact form with <script setup>, then POST FormData to MyFormCapture. Do not JSON.stringify the fields.
Copy your form UUID
- Log in to your MyFormCapture dashboard
- Open the form you want to use
- Copy the form UUID (e.g.
550e8400-e29b-41d4-a716-446655440000)
Important Note
Add a Vue 3 contact form component
FormData to your form endpoint.
- Create
ContactForm.vue(or add the form to an existing view) - Replace
YOUR_FORM_UUIDwith your form UUID - Import and render the component on your contact page
<script setup>
import { ref } from 'vue'
const endpoint = 'https://myformcapture.com/f/YOUR_FORM_UUID'
const status = ref('idle')
const errorMessage = ref('')
async function onSubmit(e) {
e.preventDefault()
status.value = 'loading'
errorMessage.value = ''
try {
const res = await fetch(endpoint, {
method: 'POST',
headers: {
Accept: 'application/json',
'X-Requested-With': 'XMLHttpRequest'
},
body: new FormData(e.target)
})
if (!res.ok) throw new Error('Submission failed')
status.value = 'success'
e.target.reset()
} catch {
status.value = 'error'
errorMessage.value = 'Something went wrong. Please try again.'
}
}
</script>
<template>
<p v-if="status === 'success'">Thanks — we will be in touch soon.</p>
<form v-else action="https://myformcapture.com/f/YOUR_FORM_UUID" method="POST" data-mfc="true" @submit="onSubmit">
<label for="name">Name *</label>
<input id="name" name="name" type="text" required />
<label for="email">Email *</label>
<input id="email" name="email" type="email" required />
<label for="message">Message</label>
<textarea id="message" name="message" rows="4"></textarea>
<button type="submit" :disabled="status === 'loading'">
{{ status === 'loading' ? 'Sending…' : 'Send Message' }}
</button>
<p v-if="status === 'error'">{{ errorMessage }}</p>
</form>
</template>
Important Note
new FormData(e.target) — do not set Content-Type manually. Do not JSON.stringify the payload.
Run and verify
- Start your Vue app and open the contact page
- Fill in the form and click Submit
- Check your MyFormCapture dashboard under Leads or Form Responses
Important Note
http://localhost:5173) in the dashboard.
Related Integrations
References & Official Documentation
Next Steps
Configure MyFormCapture
- Set up your timezone
- Configure lead notifications
- Set up advanced spam detection
- Add team members to your account
Advanced Features
- Use our custom form templates
- Try AI Insights for Leads
- Integrate with your CRM
- Set up automated workflows